From ecf858bbc7b2d41af168e9331164eac4a03ac0ef Mon Sep 17 00:00:00 2001 From: "aao-release-bot[bot]" <280565558+aao-release-bot[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 18:58:46 +0000 Subject: [PATCH] chore: snapshot docs for v3.2.0-beta.4 --- dist/docs/3.2.0-beta.4/aao/aao-admins.mdx | 70 + dist/docs/3.2.0-beta.4/aao/addie-tools.mdx | 1887 +++++++++++++++ dist/docs/3.2.0-beta.4/aao/connect-addie.mdx | 156 ++ dist/docs/3.2.0-beta.4/aao/directory-api.mdx | 245 ++ dist/docs/3.2.0-beta.4/aao/org-admins.mdx | 76 + dist/docs/3.2.0-beta.4/aao/users.mdx | 64 + dist/docs/3.2.0-beta.4/accounts/overview.mdx | 404 ++++ .../accounts/provisioning-walkthrough.mdx | 392 +++ .../accounts/tasks/get_account_financials.mdx | 233 ++ .../accounts/tasks/list_accounts.mdx | 269 +++ .../accounts/tasks/report_usage.mdx | 197 ++ .../accounts/tasks/sync_accounts.mdx | 682 ++++++ .../accounts/tasks/sync_governance.mdx | 297 +++ dist/docs/3.2.0-beta.4/ai-disclosure.mdx | 101 + .../brand-protocol/brand-json.mdx | 1470 ++++++++++++ .../brand-protocol/building-a-brand-agent.mdx | 868 +++++++ .../brand-protocol/for-advertisers.mdx | 82 + .../brand-protocol/for-rights-holders.mdx | 123 + .../3.2.0-beta.4/brand-protocol/index.mdx | 110 + .../brand-protocol/key-concepts.mdx | 298 +++ .../brand-protocol/seller-setup.mdx | 232 ++ .../brand-protocol/tasks/acquire_rights.mdx | 340 +++ .../tasks/get_brand_identity.mdx | 216 ++ .../brand-protocol/tasks/get_rights.mdx | 176 ++ .../brand-protocol/tasks/search_brands.mdx | 68 + .../brand-protocol/tasks/update_rights.mdx | 172 ++ .../tasks/verify_brand_claim.mdx | 398 ++++ .../tasks/verify_brand_claims.mdx | 163 ++ .../brand-protocol/ui-guidance.mdx | 164 ++ .../walkthrough-rights-licensing.mdx | 597 +++++ .../building/by-layer/L0/a2a-guide.mdx | 1042 ++++++++ .../by-layer/L0/a2a-profile-extension.mdx | 298 +++ .../by-layer/L0/a2a-response-extraction.mdx | 287 +++ .../by-layer/L0/a2a-response-format.mdx | 681 ++++++ .../building/by-layer/L0/index.mdx | 28 + .../building/by-layer/L0/mcp-guide.mdx | 904 +++++++ .../by-layer/L0/mcp-response-extraction.mdx | 163 ++ .../building/by-layer/L0/schemas.mdx | 467 ++++ .../building/by-layer/L1/index.mdx | 25 + .../building/by-layer/L1/request-signing.mdx | 769 ++++++ .../building/by-layer/L1/security.mdx | 2119 +++++++++++++++++ .../by-layer/L1/webhook-verifier-tuning.mdx | 149 ++ .../building/by-layer/L2/account-state.mdx | 247 ++ .../by-layer/L2/accounts-and-agents.mdx | 553 +++++ .../building/by-layer/L2/authentication.mdx | 367 +++ .../building/by-layer/L2/context-sessions.mdx | 303 +++ .../building/by-layer/L2/index.mdx | 26 + .../building/by-layer/L3/async-operations.mdx | 349 +++ .../by-layer/L3/comply-test-controller.mdx | 1175 +++++++++ .../building/by-layer/L3/error-handling.mdx | 904 +++++++ .../building/by-layer/L3/index.mdx | 32 + .../building/by-layer/L3/task-lifecycle.mdx | 295 +++ .../building/by-layer/L3/webhooks.mdx | 681 ++++++ .../building/by-layer/L4/build-a-caller.mdx | 230 ++ .../building/by-layer/L4/build-an-agent.mdx | 218 ++ .../building/by-layer/L4/choose-your-sdk.mdx | 183 ++ .../building/by-layer/L4/index.mdx | 17 + .../by-layer/L4/migrate-from-hand-rolled.mdx | 224 ++ .../building/concepts/adcp-vs-openrtb.mdx | 122 + .../concepts/how-agents-communicate.mdx | 180 ++ .../3.2.0-beta.4/building/concepts/index.mdx | 116 + .../building/concepts/industry-landscape.mdx | 140 ++ .../concepts/managing-response-size.mdx | 145 ++ .../building/concepts/protocol-comparison.mdx | 267 +++ .../building/concepts/security-model.mdx | 312 +++ .../cross-cutting/known-ambiguities.mdx | 80 + .../building/cross-cutting/sdk-stack.mdx | 340 +++ .../cross-cutting/version-adaptation.mdx | 314 +++ dist/docs/3.2.0-beta.4/building/index.mdx | 96 + .../building/operating/operating-an-agent.mdx | 128 + .../operating/orchestrator-design.mdx | 528 ++++ .../building/operating/seller-integration.mdx | 361 +++ .../operating/storyboard-troubleshooting.mdx | 148 ++ .../operating/support-recovery-runbooks.mdx | 222 ++ .../building/operating/transport-errors.mdx | 728 ++++++ .../building/schemas-and-sdks.mdx | 63 + .../building/verification/aao-verified.mdx | 368 +++ .../verification/addie-socket-mode.mdx | 196 ++ .../verification/compliance-catalog.mdx | 342 +++ .../building/verification/conformance.mdx | 284 +++ .../building/verification/get-test-ready.mdx | 224 ++ .../building/verification/grading.mdx | 87 + .../verification/how-grading-works.mdx | 202 ++ .../verification/storyboards-vs-scenarios.mdx | 85 + .../validate-with-mock-fixtures.mdx | 138 ++ .../verification/validate-your-agent.mdx | 302 +++ .../3.2.0-beta.4/community/joining-slack.mdx | 40 + .../3.2.0-beta.4/community/working-group.mdx | 48 + .../contributing/storyboard-authoring.md | 367 +++ .../contributing/testable-examples-demo.md | 87 + .../contributing/testable-snippets.md | 419 ++++ .../contributing/x-entity-annotation.md | 150 ++ .../3.2.0-beta.4/creative/accessibility.mdx | 243 ++ .../creative/ai-creative-overview.mdx | 104 + .../3.2.0-beta.4/creative/asset-types.mdx | 660 +++++ .../creative/buyer-attached-inputs.mdx | 103 + .../creative/canonical-formats-migration.mdx | 122 + .../creative/canonical-formats.mdx | 1639 +++++++++++++ .../3.2.0-beta.4/creative/catalog-schemas.mdx | 518 ++++ dist/docs/3.2.0-beta.4/creative/catalogs.mdx | 1192 ++++++++++ .../3.2.0-beta.4/creative/channels/audio.mdx | 100 + .../creative/channels/broadcast.mdx | 43 + .../creative/channels/carousels.mdx | 54 + .../3.2.0-beta.4/creative/channels/ctv.mdx | 33 + .../creative/channels/display.mdx | 81 + .../3.2.0-beta.4/creative/channels/dooh.mdx | 38 + .../3.2.0-beta.4/creative/channels/print.mdx | 70 + .../3.2.0-beta.4/creative/channels/radio.mdx | 140 ++ .../creative/channels/social-native.mdx | 32 + .../3.2.0-beta.4/creative/channels/video.mdx | 105 + .../creative/creative-libraries.mdx | 340 +++ .../creative/creative-manifests.mdx | 137 ++ dist/docs/3.2.0-beta.4/creative/formats.mdx | 130 + .../creative/generative-creative.mdx | 138 ++ .../creative/implementing-creative-agents.mdx | 703 ++++++ dist/docs/3.2.0-beta.4/creative/index.mdx | 179 ++ .../3.2.0-beta.4/creative/key-concepts.mdx | 196 ++ .../creative/multi-agent-orchestration.mdx | 134 ++ .../3.2.0-beta.4/creative/private-assets.mdx | 204 ++ .../docs/3.2.0-beta.4/creative/provenance.mdx | 663 ++++++ .../published-post-reference-creatives.mdx | 168 ++ .../sales-agent-creative-capabilities.mdx | 98 + .../3.2.0-beta.4/creative/specification.mdx | 662 +++++ .../sponsored-placement-adapter-contracts.mdx | 78 + .../task-reference/build_creative.mdx | 1407 +++++++++++ .../task-reference/get_creative_delivery.mdx | 445 ++++ .../task-reference/list_creative_formats.mdx | 78 + .../task-reference/list_creatives.mdx | 533 +++++ .../task-reference/list_transformers.mdx | 141 ++ .../preview_creative-advanced.mdx | 325 +++ .../task-reference/preview_creative.mdx | 483 ++++ .../task-reference/sync_creatives.mdx | 952 ++++++++ .../creative/template-format-ids.mdx | 65 + .../creative/universal-macros.mdx | 810 +++++++ .../3.2.0-beta.4/curation/coming-soon.mdx | 41 + dist/docs/3.2.0-beta.4/faq.mdx | 411 ++++ .../governance/annex-iii-obligations.mdx | 119 + .../governance/campaign/audit-trail.mdx | 325 +++ .../governance/campaign/index.mdx | 250 ++ .../governance/campaign/responsibilities.mdx | 89 + .../governance/campaign/safety-model.mdx | 143 ++ .../governance/campaign/specification.mdx | 1245 ++++++++++ .../campaign/tasks/check_governance.mdx | 664 ++++++ .../campaign/tasks/get_plan_audit_logs.mdx | 374 +++ .../governance/campaign/tasks/index.mdx | 23 + .../campaign/tasks/report_plan_adjustment.mdx | 144 ++ .../campaign/tasks/report_plan_outcome.mdx | 322 +++ .../governance/campaign/tasks/sync_plans.mdx | 243 ++ .../governance/collection/index.mdx | 166 ++ .../collection/tasks/collection_lists.mdx | 347 +++ .../content-standards/artifacts.mdx | 324 +++ .../implementation-guide.mdx | 424 ++++ .../governance/content-standards/index.mdx | 418 ++++ .../tasks/calibrate_content.mdx | 254 ++ .../tasks/create_content_standards.mdx | 127 + .../tasks/get_content_standards.mdx | 88 + .../tasks/get_media_buy_artifacts.mdx | 286 +++ .../tasks/list_content_standards.mdx | 71 + .../tasks/update_content_standards.mdx | 106 + .../tasks/validate_content_delivery.mdx | 185 ++ .../creative/get_creative_features.mdx | 228 ++ .../governance/creative/index.mdx | 206 ++ .../creative/provenance-verification.mdx | 585 +++++ .../governance/embedded-human-judgment.mdx | 550 +++++ .../docs/3.2.0-beta.4/governance/overview.mdx | 309 +++ .../governance/policy-attribution.mdx | 163 ++ .../governance/policy-registry-sync.mdx | 113 + .../governance/policy-registry.mdx | 365 +++ .../governance/property/adagents.mdx | 1330 +++++++++++ .../property/authorized-properties.mdx | 291 +++ .../governance/property/index.mdx | 285 +++ .../governance/property/managed-networks.mdx | 687 ++++++ .../governance/property/specification.mdx | 637 +++++ .../governance/property/tasks/index.mdx | 151 ++ .../property/tasks/property_lists.mdx | 698 ++++++ .../tasks/validate_property_delivery.mdx | 402 ++++ .../3.2.0-beta.4/governance/rfc-process.mdx | 111 + .../governance/working-group-charter.mdx | 92 + .../content-commerce-creative.png | Bin 0 -> 1410521 bytes .../guides/creator-economy/convergence.png | Bin 0 -> 1169867 bytes .../creator-economy/episode-products.png | Bin 0 -> 1357473 bytes .../play-button-progression.png | Bin 0 -> 1233029 bytes .../guides/creator-economy/three-stages.png | Bin 0 -> 1211679 bytes .../event-speakers-admin-modal.png | Bin 0 -> 74196 bytes dist/docs/3.2.0-beta.4/intro.mdx | 726 ++++++ .../explaining-agentic-advertising.mdx | 75 + .../l1-agentic-advertising.mdx | 91 + .../l2-data-brand-governance.mdx | 91 + .../l3-deciding-and-leading.mdx | 129 + .../learning/decision-makers/overview.mdx | 102 + .../learning/failure-mode-scope.mdx | 218 ++ .../foundations/a1-agentic-advertising.mdx | 98 + .../foundations/a2-protocol-architecture.mdx | 101 + .../a2b-testing-your-first-agent.mdx | 270 +++ .../foundations/a3-ecosystem-governance.mdx | 113 + .../learning/instructional-design.mdx | 315 +++ dist/docs/3.2.0-beta.4/learning/overview.mdx | 133 ++ .../learning/policies/complaints.mdx | 65 + .../policies/conflict-of-interest.mdx | 39 + .../policies/intellectual-property.mdx | 43 + .../learning/policies/learner-records.mdx | 60 + .../learning/policies/nondiscrimination.mdx | 36 + .../policies/personnel-qualifications.mdx | 42 + .../learning/policies/recertification.mdx | 142 ++ .../3.2.0-beta.4/learning/policies/refund.mdx | 33 + .../learning/specialist/brand.mdx | 200 ++ .../learning/specialist/creative.mdx | 218 ++ .../learning/specialist/governance.mdx | 194 ++ .../learning/specialist/media-buy.mdx | 394 +++ .../learning/specialist/security.mdx | 99 + .../learning/specialist/signals.mdx | 157 ++ .../specialist/sponsored-intelligence.mdx | 127 + .../buyer-briefs-and-get-products.mdx | 160 ++ .../supplements/creative-agent-workflows.mdx | 92 + .../governance-protocol-by-role.mdx | 85 + .../3.2.0-beta.4/learning/test-personas.md | 521 ++++ .../3.2.0-beta.4/learning/tracks/buyer.mdx | 322 +++ .../3.2.0-beta.4/learning/tracks/platform.mdx | 232 ++ .../learning/tracks/publisher.mdx | 272 +++ .../3.2.0-beta.4/measurement/taxonomy.mdx | 227 ++ .../advanced-topics/accountability.mdx | 233 ++ .../advanced-topics/accounts-and-security.mdx | 63 + .../agentic-execution-engine.mdx | 425 ++++ .../advanced-topics/billing-authority.mdx | 182 ++ .../media-buy/advanced-topics/index.mdx | 121 + .../advanced-topics/pricing-models.mdx | 942 ++++++++ .../media-buy/advanced-topics/sandbox.mdx | 249 ++ .../media-buy/advanced-topics/targeting.mdx | 1324 ++++++++++ .../implementing-standard-formats.mdx | 115 + .../media-buy/capability-discovery/index.mdx | 84 + .../3.2.0-beta.4/media-buy/commerce-media.mdx | 696 ++++++ .../media-buy/conversion-tracking/index.mdx | 776 ++++++ .../media-buy/creatives/index.mdx | 143 ++ dist/docs/3.2.0-beta.4/media-buy/index.mdx | 310 +++ .../media-buy/media-buys/index.mdx | 238 ++ .../media-buy/media-buys/indicators.mdx | 175 ++ .../media-buy/media-buys/lifecycle.mdx | 397 +++ .../media-buys/optimization-reporting.mdx | 1401 +++++++++++ .../media-buys/policy-compliance.mdx | 215 ++ .../product-discovery/brief-expectations.mdx | 188 ++ .../collections-and-installments.mdx | 1018 ++++++++ .../product-discovery/example-briefs.mdx | 161 ++ .../media-buy/product-discovery/index.mdx | 176 ++ .../product-discovery/media-products.mdx | 1846 ++++++++++++++ .../proposal-negotiation.mdx | 633 +++++ .../product-discovery/refinement.mdx | 366 +++ .../3.2.0-beta.4/media-buy/specification.mdx | 689 ++++++ .../task-reference/accept_proposal.mdx | 39 + .../media-buy/task-reference/buy_products.mdx | 44 + .../task-reference/control_media_buy.mdx | 88 + .../task-reference/create_media_buy.mdx | 1846 ++++++++++++++ .../task-reference/decline_proposals.mdx | 36 + .../task-reference/get_media_buy_delivery.mdx | 996 ++++++++ .../task-reference/get_media_buys.mdx | 676 ++++++ .../media-buy/task-reference/get_products.mdx | 2059 ++++++++++++++++ .../media-buy/task-reference/index.mdx | 183 ++ .../task-reference/list_products.mdx | 119 + .../media-buy/task-reference/log_event.mdx | 566 +++++ .../provide_performance_feedback.mdx | 246 ++ .../task-reference/refine_proposals.mdx | 201 ++ .../task-reference/request_proposals.mdx | 127 + .../task-reference/sync_audiences.mdx | 582 +++++ .../task-reference/sync_catalogs.mdx | 461 ++++ .../task-reference/sync_event_sources.mdx | 488 ++++ .../task-reference/update_media_buy.mdx | 1046 ++++++++ .../3.2.0-beta.4/protocol/architecture.mdx | 122 + .../protocol/calling-an-agent.mdx | 178 ++ .../protocol/capabilities-explorer.mdx | 248 ++ .../protocol/design-principles.mdx | 193 ++ .../protocol/format-references.mdx | 72 + .../protocol/get_adcp_capabilities.mdx | 1892 +++++++++++++++ .../protocol/language-and-localization.mdx | 114 + .../3.2.0-beta.4/protocol/required-tasks.mdx | 216 ++ .../protocol/snapshot-and-log.mdx | 208 ++ .../sync_agent_notification_configs.mdx | 131 + dist/docs/3.2.0-beta.4/quickstart.mdx | 311 +++ dist/docs/3.2.0-beta.4/reference/3-2-beta.mdx | 237 ++ .../docs/3.2.0-beta.4/reference/changelog.mdx | 12 + .../reference/experimental-status.mdx | 125 + dist/docs/3.2.0-beta.4/reference/glossary.mdx | 464 ++++ .../3.2.0-beta.4/reference/gmsf-reference.mdx | 167 ++ .../reference/implementor-faq.mdx | 369 +++ .../reference/known-limitations.mdx | 84 + .../reference/media-channel-taxonomy.mdx | 797 +++++++ .../reference/migration/3-0-to-3-1.mdx | 105 + .../reference/migration/3-1-to-3-2.mdx | 184 ++ .../reference/migration/asset-access.mdx | 126 + .../reference/migration/attribution.mdx | 104 + .../reference/migration/audiences.mdx | 136 ++ .../reference/migration/brand-identity.mdx | 125 + .../reference/migration/catalogs.mdx | 368 +++ .../reference/migration/channels.mdx | 183 ++ .../migration/creative-transformers.mdx | 90 + .../reference/migration/creatives.mdx | 419 ++++ .../cross-role-governance-enforcement.mdx | 83 + .../reference/migration/geo-targeting.mdx | 210 ++ .../reference/migration/index.mdx | 165 ++ .../reference/migration/media-buy-status.mdx | 103 + .../migration/optimization-goals.mdx | 195 ++ .../migration/prerelease-upgrades.mdx | 228 ++ .../reference/migration/pricing.mdx | 227 ++ .../reference/migration/signals.mdx | 177 ++ .../migration/targeting-aware-discovery.mdx | 346 +++ .../reference/migration/v3-readiness.mdx | 202 ++ .../reference/privacy-considerations.mdx | 125 + .../3.2.0-beta.4/reference/release-notes.mdx | 1660 +++++++++++++ dist/docs/3.2.0-beta.4/reference/roadmap.mdx | 112 + .../reference/schema-extensions.mdx | 162 ++ .../reference/specification-lifecycle.mdx | 124 + .../reference/test-vectors/index.mdx | 62 + .../reference/url-canonicalization.mdx | 68 + .../docs/3.2.0-beta.4/reference/v2-sunset.mdx | 71 + .../reference/verifying-protocol-tarballs.mdx | 124 + .../3.2.0-beta.4/reference/versioning.mdx | 314 +++ dist/docs/3.2.0-beta.4/reference/versions.mdx | 107 + .../reference/whats-new-in-3-1.mdx | 353 +++ .../reference/whats-new-in-3-2.mdx | 157 ++ .../reference/whats-new-in-v3.mdx | 955 ++++++++ dist/docs/3.2.0-beta.4/registry/index.mdx | 875 +++++++ .../registry/maintaining-your-agent.mdx | 154 ++ .../registry/registering-an-agent.mdx | 116 + .../3.2.0-beta.4/signals/data-providers.mdx | 728 ++++++ dist/docs/3.2.0-beta.4/signals/ecosystem.mdx | 523 ++++ .../3.2.0-beta.4/signals/key-concepts.mdx | 158 ++ dist/docs/3.2.0-beta.4/signals/overview.mdx | 212 ++ .../3.2.0-beta.4/signals/specification.mdx | 266 +++ .../signals/tasks/activate_signal.mdx | 549 +++++ .../signals/tasks/get_signals.mdx | 1221 ++++++++++ .../3.2.0-beta.4/slack-invite-recovery.js | 58 + .../snippets/compliance-error-codes.mdx | 1180 +++++++++ .../compliance-storyboard-inventory.mdx | 55 + dist/docs/3.2.0-beta.4/spec-guidelines.md | 454 ++++ .../implementing-si-agents.mdx | 270 +++ .../implementing-si-hosts.mdx | 138 ++ .../sponsored-intelligence/measurement.mdx | 33 + .../sponsored-intelligence/monetizing-ai.mdx | 121 + .../sponsored-intelligence/networks.mdx | 197 ++ .../sponsored-intelligence/overview.mdx | 257 ++ .../product-spectrum.mdx | 163 ++ .../si-chat-protocol.mdx | 496 ++++ .../sponsored-intelligence/specification.mdx | 574 +++++ .../sponsored-intelligence/tasks/index.mdx | 123 + .../tasks/si_get_offering.mdx | 408 ++++ .../tasks/si_initiate_session.mdx | 239 ++ .../tasks/si_send_message.mdx | 224 ++ .../tasks/si_terminate_session.mdx | 288 +++ .../sponsored-intelligence/workflow.mdx | 213 ++ dist/docs/3.2.0-beta.4/trust.mdx | 125 + .../trusted-match/ai-mediation.mdx | 191 ++ .../trusted-match/buyer-guide.mdx | 250 ++ .../trusted-match/context-and-identity.mdx | 230 ++ .../trusted-match/data-protection-roles.mdx | 239 ++ .../trusted-match/execution-gap.mdx | 93 + .../identity-match-implementation.mdx | 117 + .../impression-tracker-implementation.mdx | 304 +++ .../docs/3.2.0-beta.4/trusted-match/index.mdx | 247 ++ .../trusted-match/migration-from-axe.mdx | 111 + .../trusted-match/privacy-architecture.mdx | 182 ++ .../trusted-match/router-architecture.mdx | 304 +++ .../trusted-match/specification.mdx | 884 +++++++ .../trusted-match/surfaces/ai-assistants.mdx | 181 ++ .../trusted-match/surfaces/ctv.mdx | 213 ++ .../trusted-match/surfaces/mobile.mdx | 273 +++ .../trusted-match/surfaces/retail-media.mdx | 125 + .../trusted-match/surfaces/web.mdx | 296 +++ .../3.2.0-beta.4/verification/overview.mdx | 261 ++ docs.json | 686 +++--- 367 files changed, 118216 insertions(+), 343 deletions(-) create mode 100644 dist/docs/3.2.0-beta.4/aao/aao-admins.mdx create mode 100644 dist/docs/3.2.0-beta.4/aao/addie-tools.mdx create mode 100644 dist/docs/3.2.0-beta.4/aao/connect-addie.mdx create mode 100644 dist/docs/3.2.0-beta.4/aao/directory-api.mdx create mode 100644 dist/docs/3.2.0-beta.4/aao/org-admins.mdx create mode 100644 dist/docs/3.2.0-beta.4/aao/users.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/tasks/report_usage.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts.mdx create mode 100644 dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance.mdx create mode 100644 dist/docs/3.2.0-beta.4/ai-disclosure.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/brand-json.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/key-concepts.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/seller-setup.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/search_brands.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance.mdx create mode 100644 dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L1/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L1/security.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L2/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L4/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/industry-landscape.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/managing-response-size.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/concepts/security-model.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/operating-an-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/orchestrator-design.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/seller-integration.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/support-recovery-runbooks.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/operating/transport-errors.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/schemas-and-sdks.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/aao-verified.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/addie-socket-mode.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/compliance-catalog.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/conformance.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/get-test-ready.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/grading.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/how-grading-works.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures.mdx create mode 100644 dist/docs/3.2.0-beta.4/building/verification/validate-your-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/community/joining-slack.mdx create mode 100644 dist/docs/3.2.0-beta.4/community/working-group.mdx create mode 100644 dist/docs/3.2.0-beta.4/contributing/storyboard-authoring.md create mode 100644 dist/docs/3.2.0-beta.4/contributing/testable-examples-demo.md create mode 100644 dist/docs/3.2.0-beta.4/contributing/testable-snippets.md create mode 100644 dist/docs/3.2.0-beta.4/contributing/x-entity-annotation.md create mode 100644 dist/docs/3.2.0-beta.4/creative/accessibility.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/ai-creative-overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/asset-types.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/buyer-attached-inputs.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/canonical-formats-migration.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/canonical-formats.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/catalog-schemas.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/catalogs.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/audio.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/broadcast.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/carousels.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/ctv.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/display.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/dooh.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/print.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/radio.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/social-native.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/channels/video.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/creative-libraries.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/creative-manifests.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/formats.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/generative-creative.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/implementing-creative-agents.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/key-concepts.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/multi-agent-orchestration.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/private-assets.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/provenance.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/published-post-reference-creatives.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/sponsored-placement-adapter-contracts.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/build_creative.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/template-format-ids.mdx create mode 100644 dist/docs/3.2.0-beta.4/creative/universal-macros.mdx create mode 100644 dist/docs/3.2.0-beta.4/curation/coming-soon.mdx create mode 100644 dist/docs/3.2.0-beta.4/faq.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/annex-iii-obligations.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/audit-trail.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/responsibilities.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/safety-model.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/collection/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/artifacts.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/creative/get_creative_features.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/creative/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/creative/provenance-verification.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/embedded-human-judgment.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/policy-attribution.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/policy-registry-sync.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/policy-registry.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/adagents.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/authorized-properties.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/managed-networks.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/tasks/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/rfc-process.mdx create mode 100644 dist/docs/3.2.0-beta.4/governance/working-group-charter.mdx create mode 100644 dist/docs/3.2.0-beta.4/images/guides/creator-economy/content-commerce-creative.png create mode 100644 dist/docs/3.2.0-beta.4/images/guides/creator-economy/convergence.png create mode 100644 dist/docs/3.2.0-beta.4/images/guides/creator-economy/episode-products.png create mode 100644 dist/docs/3.2.0-beta.4/images/guides/creator-economy/play-button-progression.png create mode 100644 dist/docs/3.2.0-beta.4/images/guides/creator-economy/three-stages.png create mode 100644 dist/docs/3.2.0-beta.4/images/pr-screenshots/event-speakers-admin-modal.png create mode 100644 dist/docs/3.2.0-beta.4/intro.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/decision-makers/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/failure-mode-scope.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/instructional-design.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/complaints.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/conflict-of-interest.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/intellectual-property.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/learner-records.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/personnel-qualifications.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/recertification.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/policies/refund.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/brand.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/creative.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/governance.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/media-buy.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/security.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/signals.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/supplements/creative-agent-workflows.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/supplements/governance-protocol-by-role.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/test-personas.md create mode 100644 dist/docs/3.2.0-beta.4/learning/tracks/buyer.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/tracks/platform.mdx create mode 100644 dist/docs/3.2.0-beta.4/learning/tracks/publisher.mdx create mode 100644 dist/docs/3.2.0-beta.4/measurement/taxonomy.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/capability-discovery/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/commerce-media.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/creatives/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/media-buys/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources.mdx create mode 100644 dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/architecture.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/calling-an-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/capabilities-explorer.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/design-principles.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/format-references.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/language-and-localization.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/required-tasks.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/snapshot-and-log.mdx create mode 100644 dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs.mdx create mode 100644 dist/docs/3.2.0-beta.4/quickstart.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/3-2-beta.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/changelog.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/experimental-status.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/glossary.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/gmsf-reference.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/implementor-faq.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/known-limitations.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/asset-access.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/attribution.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/audiences.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/brand-identity.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/catalogs.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/channels.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/creative-transformers.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/creatives.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/geo-targeting.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/media-buy-status.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/optimization-goals.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/pricing.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/signals.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/migration/v3-readiness.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/privacy-considerations.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/release-notes.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/roadmap.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/schema-extensions.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/specification-lifecycle.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/test-vectors/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/url-canonicalization.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/v2-sunset.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/versioning.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/versions.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2.mdx create mode 100644 dist/docs/3.2.0-beta.4/reference/whats-new-in-v3.mdx create mode 100644 dist/docs/3.2.0-beta.4/registry/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/registry/maintaining-your-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/registry/registering-an-agent.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/data-providers.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/ecosystem.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/key-concepts.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/tasks/activate_signal.mdx create mode 100644 dist/docs/3.2.0-beta.4/signals/tasks/get_signals.mdx create mode 100644 dist/docs/3.2.0-beta.4/slack-invite-recovery.js create mode 100644 dist/docs/3.2.0-beta.4/snippets/compliance-error-codes.mdx create mode 100644 dist/docs/3.2.0-beta.4/snippets/compliance-storyboard-inventory.mdx create mode 100644 dist/docs/3.2.0-beta.4/spec-guidelines.md create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/networks.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/overview.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session.mdx create mode 100644 dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow.mdx create mode 100644 dist/docs/3.2.0-beta.4/trust.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/ai-mediation.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/buyer-guide.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/context-and-identity.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/execution-gap.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/index.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/router-architecture.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/specification.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media.mdx create mode 100644 dist/docs/3.2.0-beta.4/trusted-match/surfaces/web.mdx create mode 100644 dist/docs/3.2.0-beta.4/verification/overview.mdx diff --git a/dist/docs/3.2.0-beta.4/aao/aao-admins.mdx b/dist/docs/3.2.0-beta.4/aao/aao-admins.mdx new file mode 100644 index 0000000000..7e8f5edeb4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/aao-admins.mdx @@ -0,0 +1,70 @@ +--- +title: AAO for AAO Admins +description: Internal reference — editorial moderation, escalation triage, system settings, and member directory operations for AAO staff. +"og:title": "AdCP — AAO for AAO Admins" +noindex: true +--- + +# AAO for AAO Admins + +This page is for AAO staff with the global admin role — people on the AgenticAdvertising.org team who run editorial review, escalation triage, member ops, and system administration. It is intentionally narrow and operational. + +This page is indexed by Addie's `search_docs` so she can answer admin questions correctly, but is `noindex: true` for search engines and is hidden from the public docs sidebar. + +For end-user docs see [AAO for Members](/dist/docs/3.2.0-beta.4/aao/users). For org-admin docs see [AAO for Org Admins](/dist/docs/3.2.0-beta.4/aao/org-admins). For the full list of Addie's tools see the [Addie Tool Reference](/dist/docs/3.2.0-beta.4/aao/addie-tools). + +## Becoming an AAO admin + +AAO admin status is granted via `ADMIN_EMAILS` env var on the deployed app and (separately) the `is_aao_admin` column on the user record. Both must be set for full access — `ADMIN_EMAILS` lets you call admin tools from Addie; `is_aao_admin` lets you use the admin web UI at `/admin`. + +## Escalation triage + +Members and visitors can ask Addie to escalate when she can't help. Escalations land in the database and a Slack notification fires to the configured escalation channel. + +- **Review the queue.** Web UI at `/admin/addie` (Escalations tab), or ask Addie *"list open escalations"* (`list_escalations`). +- **Auto-triage suggestions.** A scheduled job in `server/src/addie/jobs/escalation-triage.ts` proposes status transitions on open escalations with evidence (URL probes, related escalation IDs). Suggestions land in `escalation_triage_suggestions` and require admin accept/reject before applying — every close has an operator behind it. +- **Resolve from any thread.** *"Resolve escalation 142, paid the invoice"* (`resolve_escalation`) — `wont_do` is the right status when a request is intentionally not actionable; `resolved` means the asked-for thing happened. +- **Categories.** `capability_gap` (Addie's knowledge needs updating), `needs_human_action` (admin had to do something), `complex_request` (multi-step / judgment), `sensitive_topic` (legal/compliance/political), `other`. + +## Editorial moderation (perspectives) + +- **Review queue.** Web UI at `/admin/perspectives` shows `pending_review`. Or ask Addie *"list pending content"* (`list_pending_content`). +- **Approve / decline.** *"Approve perspective [slug]"* (`approve_content`), *"reject perspective [slug] with reason ..."* (`reject_content`). +- **Test posts.** Test perspectives published bypassing review (incident #271) come from the older publish path; the canonical path is `propose_content` → review → approve. If you see test content live without review, file an incident — that's a real bug, not a workflow. + +## Member directory ops + +- **List / get members.** *"Show member directory for [filter]"* (`list_members`, `get_member`). Public lookups are anonymous-safe; full contact details require admin. +- **Send a payment request to a prospect.** `send_payment_request` (admin-tools.ts) issues an invite that the recipient signs in to accept. Their email is bound to the resulting Stripe customer at acceptance time, never trusted from caller-supplied input. +- **Comp / discount membership.** Use `send_payment_request` with a $0 product or a coupon. For unusual cases (chapter leads, contributors), escalate or coordinate with billing manually. +- **Promote / demote within an org.** Today this is a database operation; CLI scripts under `scripts/` cover the common cases. We're working on a tool surface. + +## Portrait management + +Members can manage their own illustrated portrait from their profile page. Addie's member-scoped portrait tools (`check_portrait_status`, `offer_portrait_generation`) only operate on the caller's own member organization context. + +Admin moderation uses the admin portrait API: + +- **List portraits.** `GET /api/admin/portraits?status=generated` returns generated portraits for review. Use `status=approved` or omit `status` to inspect other queues. +- **Map active portraits.** `GET /api/admin/portraits/map` returns the lightweight user-to-portrait mapping for directory checks. +- **Remove a portrait.** `DELETE /api/admin/portraits/:id` rejects the portrait and clears it from the member if it is their active portrait. + +## System settings + +- **Escalation channel.** `system_settings.escalation_channel` controls where Addie posts escalation notifications. Update via the admin web UI. +- **Working-group channels.** `system_settings.wg_channel_*` map each WG to its Slack channel. +- **Audit log.** `system_settings_audit` records every change — review at `/admin/audit`. + +## Internal flags and gates + +- `ADMIN_EMAILS` — comma-separated env var, controls Addie admin tool registration. +- `ALLOW_INSECURE_COOKIES` — dev only; do not set in prod. +- `ANTHROPIC_API_KEY` — required for Addie chat to function at all. +- `ANONYMOUS_DAILY_LIMIT_USD` — daily anonymous usage cap; gates `anonymousChat` model. + +## Things to escalate further (engineering, not ops) + +- Empty assistant messages on short follow-ups — investigation needed in `claude-client.ts`. +- Duplicate-message bug (#124) — same response posted twice. +- Stale `search_docs` index symptoms — run a probe via `npm run start` locally, call `searchDocs(query)` directly to confirm. +- Anonymous-mode tool refusal — Addie sometimes deflects to sign-in even when the tool is in `ANONYMOUS_SAFE_KNOWLEDGE_TOOLS`. Behavior gap, not a bug in the registry. diff --git a/dist/docs/3.2.0-beta.4/aao/addie-tools.mdx b/dist/docs/3.2.0-beta.4/aao/addie-tools.mdx new file mode 100644 index 0000000000..7a27582e00 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/addie-tools.mdx @@ -0,0 +1,1887 @@ +--- +title: Addie Tool Reference +description: Every tool Addie has access to, grouped by capability set. +"og:title": "AdCP — Addie Tool Reference" +--- + +{/* This file is auto-generated by scripts/build-addie-tool-reference.ts. Do not edit by hand. Run `npm run build:addie-tools` to regenerate. */} + +# Addie Tool Reference + +This page lists every tool Addie can call. Each tool's description is the same one that ships into Addie's prompt, so the language is router-facing rather than tutorial-style — but it tells you exactly what Addie *can* do, *when* she should reach for the tool, and *what* fields it accepts. + +Tools are grouped by **capability set** (router category). The router selects one or more sets based on the user's intent, then Addie picks specific tools within those sets. A handful of tools are *always available* regardless of routing — bug-report flow, content submission, escalation — see the **Always available** section. + +If you're an integrator or admin and you want to know whether Addie can do X: search this page first. If you can't find a tool here, Addie can't do X — please don't ask her to invent one. + +## knowledge + +Search documentation, code repos, Slack history, curated resources, GitHub issues/PRs, and validate JSON against AdCP schemas for protocol questions, implementation help, roadmap/RFC lookups, and community discussions + +### `search_docs` + +Search the AdCP documentation for relevant content. Use this to answer questions about AdCP, the protocol, tools, or how things work. + +*Source: `server/src/addie/mcp/docs-search.ts`* + +### `get_doc` + +Get the full content of a specific documentation page. Use this after search_docs to read a document in detail. + +*Source: `server/src/addie/mcp/docs-search.ts`* + +### `search_slack` + +Search Slack messages from public channels in the AAO workspace. Use this when you need community discussions, Q&A threads, or real-world implementation examples. When asked about a specific channel or working group (e.g., "Governance working group"), use the channel parameter to filter results. When asked to summarize discussions, search for relevant keywords then synthesize the results. Cite the Slack permalink when using information from results. + +*Source: `server/src/addie/mcp/knowledge-search.ts`* + +### `get_channel_activity` + +Get recent messages from a specific Slack channel. Use this when asked to summarize channel activity, see what a working group has been discussing, or get an overview of conversations in a channel. Returns messages sorted by recency. After getting results, synthesize them into a summary for the user. + +*Source: `server/src/addie/mcp/knowledge-search.ts`* + +### `search_resources` + +Search curated external resources (articles, blog posts, industry content) that have been indexed with summaries and contextual analysis. Use this for industry trends, competitor info, and external perspectives on agentic advertising. + +*Source: `server/src/addie/mcp/knowledge-search.ts`* + +### `get_recent_news` + +Get recent news and articles about ad tech and agentic advertising from curated industry feeds. Returns articles sorted by recency with summaries and analysis. Use this when users ask "what's happening in the news?", "what's new in ad tech?", or "what have we learned lately?" + +*Source: `server/src/addie/mcp/knowledge-search.ts`* + +### `fetch_url` + +Fetch and read the content of a web URL. Use this when a user shares a link and asks about it, or when you need to read external content. Returns the text content of the page. Note: Does not work for pages requiring authentication. + +*Source: `server/src/addie/mcp/url-tools.ts`* + +### `read_slack_file` + +Download and read a file that was shared in Slack. PROACTIVELY use this whenever a user shares a file (PDF, document, text file, image, etc.) - don't wait to be asked. Users expect you to see what they shared. Provide the file URL from the shared file info. + +*Source: `server/src/addie/mcp/url-tools.ts`* + +### `list_github_issues` + +Search or list GitHub issues and PRs to find open items on a topic, check RFC/epic status, or answer "what is being worked on for X" questions. Pass `query` for keyword search (GitHub search syntax, but `repo:`/`org:`/`user:`/`is:` qualifiers are rejected — use the `repo` param instead). Returns title, number, state, labels, author, last-updated. Works on any public GitHub repo. Do NOT use when the user has a specific issue number — use get_github_issue. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `validate_json` + +Validate a JSON object against an AdCP schema. Use this to verify if user-provided JSON is valid according to the specification. Returns validation errors if invalid. + +*Source: `server/src/addie/mcp/schema-tools.ts`* + +### `get_schema` + +Fetch and display an AdCP JSON schema. Use this to show the exact schema definition, including all properties, required fields, and constraints. This is the authoritative source for what fields are valid. + +*Source: `server/src/addie/mcp/schema-tools.ts`* + +### `list_schemas` + +List available AdCP schemas and versions. Use this to help users discover what schemas exist and what versions are available. + +*Source: `server/src/addie/mcp/schema-tools.ts`* + +### `compare_schema_versions` + +Compare two schema versions to show what changed. Use this when users ask about differences between AdCP versions or are confused about which version to use. + +*Source: `server/src/addie/mcp/schema-tools.ts`* + +## member + +Manage member profile, working groups, committees, and account settings. Includes listing working group documents, attaching assets to content, and updating the company logo or brand color. + +### `get_my_profile` + +Get the current user's personal profile — who they are as a person. Shows headline, bio, expertise, interests, and social links. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `update_my_profile` + +Update the current user's personal profile — who they are as a person. Can update headline, bio, expertise, interests, location, and social links. Only updates fields that are provided. Does NOT update first/last name — use set_my_name for that. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_company_listing` + +Get the company's directory listing — how the organization appears in the member directory and to Addie. Shows tagline, description, offerings, headquarters, and contact info. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `update_company_listing` + +Update the company's directory listing text fields — tagline, description, contact info, social links, and headquarters. Only updates fields that are provided. For logo or brand color, use update_company_logo instead. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `update_company_logo` + +Update the company logo or brand color on the directory listing. Use when a member wants to upload, change, or fix their company logo. The logo URL must be a publicly accessible HTTPS image (PNG, JPG, SVG, etc.) — file-viewer links like Google Drive don't work. + +If the brand domain was previously registered by another organization, the tool returns a notice asking the user whether to adopt the prior brand identity (logos, colors, agents) or start fresh — pass `adopt_prior_manifest: true` to adopt or `false` to clear, then call again. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `request_brand_domain_challenge` + +Issue a DNS TXT challenge so the caller's selected organization can claim a brand domain currently registered to another org or unregistered. Returns the verification record (Name/Type/Value) for the user to publish at their DNS host. DO NOT use when: the domain is already owned by the caller's org (already linked in their member profile); the user is just asking what their domain is; the user is asking generic 'is my domain set up?' questions. If the caller belongs to multiple organizations, or the current org is a personal workspace while the domain matches a company org, STOP and ask them to choose the company organization_id before issuing a challenge. Pair with verify_brand_domain_challenge ONLY after the user confirms they've published the record. Response begins with an HTML comment '<!-- STATUS: <code> -->' for machine parsing (invisible in rendered markdown) — codes: dns_record_issued, already_verified, collision, invalid_domain, workos_error, not_authenticated, no_org, org_selection_required, not_admin, missing_domain. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `verify_brand_domain_challenge` + +Run the WorkOS DNS lookup against a previously-issued challenge for the selected organization and, on success, apply the brand-registry update. ONLY call after request_brand_domain_challenge returned DNS instructions in this same conversation AND the user has explicitly confirmed they published the record. NEVER call speculatively, as a 'check status' tool, or in a retry loop — DNS propagation takes minutes and the server enforces a cooldown that will return still_pending if you call again too soon. If the call returns still_pending, STOP and ask the user to confirm before any retry. Response begins with an HTML comment '<!-- STATUS: <code> -->' (invisible in rendered markdown) — codes: verified, still_pending, no_challenge, workos_error, not_authenticated, no_org, org_selection_required, not_admin, missing_domain. After 'verified' the claim is complete; after 'still_pending' STOP and ask the user to confirm before retrying. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `list_working_groups` + +List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_working_group` + +Get details about a specific working group including its description, leaders, member count, and recent posts. Use the group slug (URL-friendly name). Pass include_members: true to get the full member list with names, org, and email (admins only for private groups). + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `join_working_group` + +Join a working group on behalf of the current user. If the group is private, suggests using request_working_group_invitation instead. The user must be a member of AgenticAdvertising.org. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `request_working_group_invitation` + +Request an invitation to a private working group on behalf of the user. Creates an escalation so an admin can process the invite. Use this when join_working_group fails because a group is private. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_my_working_groups` + +Get the current user's working group memberships. Shows which groups they belong to and their role in each. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `express_council_interest` + +Express interest in joining an industry council or other committee that is not yet launched. The user can indicate whether they want to be a participant or a potential leader. This helps gauge interest before the council officially launches. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `withdraw_council_interest` + +Withdraw interest in a council or committee. Use this when the user no longer wants to be notified when the council launches. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_my_council_interests` + +Get the current user's council interest signups. Shows which councils they've expressed interest in joining. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `list_perspectives` + +List published perspectives (articles/posts) from AgenticAdvertising.org members. These are public articles shared by the community. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `create_working_group_post` + +Create a post in a working group on behalf of the current user. The user must be a member of the working group. Supports article, link, and discussion post types. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `attach_content_asset` + +Attach a file (image, PDF) to a published perspective. Fetches from a URL and stores it. Use after propose_content to add cover images or report PDFs. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `bookmark_resource` + +Save a useful web resource to the knowledge base for future reference. Use this when you find valuable external content during web search that would be helpful for future questions. The content will be fetched, summarized, and indexed. + +*Source: `server/src/addie/mcp/knowledge-search.ts`* + +### `list_committee_documents` + +List documents tracked by a committee. Shows document titles, status, and summaries. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +## directory + +The searchable partner/vendor directory — find partners, vendors, consultants, service providers, and member organizations. Also: request introductions, browse the member directory, research brands, look up brand assets, and find registry gaps + +### `search_members` + +Search for member ORGANIZATIONS (companies) that offer specific capabilities or services. Searches member names, descriptions, taglines, offerings, and tags. Use this when users want to find vendors, consultants, implementation partners, or managed services. The query should reflect what the user actually needs (e.g., "CTV measurement", "sales agent implementation") — not a generic term like "partner". Returns public member profiles with contact info. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `request_introduction` + +Send an introduction email connecting a user with a member organization. Addie sends the email directly on behalf of the requester. Use this when a user explicitly asks to be introduced to or connected with a specific member after seeing search results. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_my_search_analytics` + +Get search analytics for the user's member profile. Shows how many times their profile appeared in searches, profile clicks, and introduction requests. Only works for members with a public profile. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `list_members` + +List AgenticAdvertising.org member organizations. Can filter by offerings (buyer_agent, sales_agent, creative_agent, signals_agent, si_agent, governance_agent, publisher, consulting), markets (North America, EMEA, APAC, LATAM, Global), or search term. + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `get_member` + +Get detailed information about a specific AAO member by their slug identifier. + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `list_agents` + +List all public AdCP agents from member organizations. Can filter by type: creative (asset generation), signals (audience data), sales (media buying), governance (property lists and content standards), or si (sponsored intelligence/conversational commerce). + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `get_agent` + +Get details for a specific agent by its URL. + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `list_publishers` + +List all publishers that have published a /.well-known/adagents.json file, indicating they support AdCP. + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `lookup_domain` + +Find all agents authorized for a specific publisher domain. Shows both verified agents (from adagents.json) and claimed agents (from agent registrations). + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `research_brand` + +Research a brand by domain using Brandfetch API. Returns brand info (logo, colors, company details) if found. Automatically saves enrichment data to the registry — no need to call save_brand after. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `resolve_brand` + +Resolve a domain to its canonical brand identity by checking for brand.json at /.well-known/brand.json. Returns the authoritative brand info if found. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `save_brand` + +Save a brand to the registry as a community brand. Use for manually adding brands (not needed after research_brand, which auto-saves). Preserves any existing enrichment data when manifest is not provided. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `list_brands` + +List brands in the registry with optional filters. Can filter by source type and search by name or domain. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `list_missing_brands` + +List the most-requested brand domains that are not yet in the registry. Shows demand signals — which brands people are looking for but we don't have. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +## agent_testing + +Publisher and agent setup, verification, and testing — validate adagents.json, check brand.json, verify publisher authorization, resolve properties, probe agent endpoints, run compliance tests, grade RFC 9421 request signing, and diagnose OAuth handshakes. Use for any "my agent can't see properties", "authorization not working", "is my signing setup correct?", "diagnose OAuth", or publisher setup questions. + +### `validate_adagents` + +Validate a domain's /.well-known/adagents.json file with a live fetch. Returns validation results including any errors or warnings. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `resolve_brand` + +Resolve a domain to its canonical brand identity by checking for brand.json at /.well-known/brand.json. Returns the authoritative brand info if found. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `get_agent_status` + +Return the AAO registry's current status for an agent: health (online / last checked), declared capabilities, and the most recent compliance verdict per track from the comply storyboard suite. Reads cached state — does NOT perform a live probe. For agents not in the registry, returns guidance to register the agent (so the heartbeat picks it up) or to run evaluate_agent_quality for an on-demand check. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `check_publisher_authorization` + +Check if a publisher domain has authorized a specific agent. Results are cached briefly; pass force_refresh: true after the publisher changes adagents.json to bypass the cache. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `test_adcp_agent` + +Deprecated — use evaluate_agent_quality instead. Runs evaluate_agent_quality and returns the same results. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `evaluate_agent_quality` + +Run protocol compliance evaluation on an AdCP agent and return structured results for coaching. Tests all capability tracks the agent supports (core, products, media buy, creative, governance, signals, etc.) and collects advisory observations about performance, completeness, and best practices. Results include specific actionable observations, not just pass/fail. The public test agent works for any logged-in user with no setup required. For custom agents requiring authentication, use save_agent first. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `grade_agent_signing` + +Run the safe-default RFC 9421 request-signing conformance grader against a public HTTPS agent. Tests whether the agent's verifier accepts valid signed requests and rejects unsigned, expired, replayed, wrong-key, etc. requests with the right error codes. Returns a per-vector pass/fail report with diagnostics. Preconditions: the agent declares `request_signing.supported: true` in get_adcp_capabilities and has its verifier preconfigured per `test-kits/signed-requests-runner.yaml` (accepts the runner's signing keyids `test-ed25519-2026` and `test-es256-2026`, has `test-revoked-2026` in its revocation list). Hosted Addie never probes private networks and always skips replay and rate-abuse live-side-effect vectors. Run the SDK CLI locally when testing trusted development endpoints or explicitly enabling live-side-effect vectors. + +*Source: `server/src/addie/mcp/auth-grader-tools.ts`* + +### `diagnose_agent_auth` + +Diagnose a public HTTPS agent's OAuth handshake by probing RFC 9728 protected-resource metadata and RFC 8414 authorization-server metadata, decoding any access token in scope, and reporting ranked hypotheses about what's wrong (likely / possible / ruled out). Use when an agent returns 401/403 unexpectedly, when OAuth metadata might be misconfigured, or when validating an agent's OAuth setup before integrating. This is anonymous-mode diagnosis — token refresh and authenticated tool-call probes are skipped, so the report describes what the public surface advertises rather than whether a specific token works. Hosted Addie never probes private networks; use the SDK CLI locally for trusted development endpoints. + +*Source: `server/src/addie/mcp/auth-grader-tools.ts`* + +### `compare_media_kit` + +[DEPRECATED — use test_rfp_response or test_io_execution instead] Compare a publisher's stated inventory against what their agent returns. Prefer test_rfp_response (tests against real RFPs) or test_io_execution (tests whether IOs can execute through the agent). + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `test_rfp_response` + +Test how a publisher's agent responds to a real RFP or campaign brief. Addie parses the RFP document first, then calls this tool with structured data. Calls get_products on the agent and returns gap analysis comparing what the agent surfaces vs what the RFP requests. The publisher's stated response (what they'd normally propose) is the highest-value input — it lets you compare agent output to how the sales team actually responds. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `test_io_execution` + +Test whether a buyer agent can execute a real IO or proposal through the publisher's agent. Addie parses the IO document first, then calls this tool with structured line items. Maps each line item to agent products using deterministic scoring, constructs the exact create_media_buy JSON a buyer agent would send, and optionally dry-runs it. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `validate_agent` + +Validate if an agent is authorized for a publisher domain by checking their /.well-known/adagents.json file. + +*Source: `server/src/addie/mcp/directory-tools.ts`* + +### `resolve_property` + +Resolve a publisher domain to its property information. Checks hosted properties, discovered properties, and live adagents.json. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `save_property` + +Save or approve a hosted property in the registry. Creates new properties, approves pending ones, or updates existing ones. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `list_properties` + +List publisher properties in the registry. Can filter by source type and search by domain. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `list_missing_properties` + +List the most-requested publisher domains that are not yet in the registry. Shows demand signals — which properties people are looking for but we don't have. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +## agent_conformance + +Run AdCP compliance storyboards against the user's own dev/staging MCP server via Addie's Socket Mode channel — outbound WebSocket from the adopter to Addie, no public DNS or ngrok needed. Use when the user wants to test their own AdCP agent during development. Requires the user to be mapped to a WorkOS organization. Tools issue a session-bound token and then run a storyboard against the connected adopter agent. + +### `issue_conformance_token` + +Issue a short-lived JWT (1h TTL) the adopter pastes into their `@adcp/sdk/server` ConformanceClient config to connect their dev/staging MCP server outbound to Addie's conformance channel. The token is bound to the caller's WorkOS organization. Use this when the user is building an AdCP agent and wants Addie to run conformance/compliance tests against their dev environment without exposing it publicly. Returns the token, the WebSocket URL, and the expiry time. + +*Source: `server/src/addie/mcp/conformance-tools.ts`* + +### `run_conformance_against_my_agent` + +Run a compliance storyboard against the adopter MCP server connected to this Addie session via Socket Mode. The adopter must have started `@adcp/sdk/server` ConformanceClient with a token issued in this same chat session — the channel routes by WorkOS organization id. Returns a markdown report with phase/step pass/fail/skipped status, trimmed error text, and sanitized failed-validation details such as id, expected, and actual on failures. Use this after the user confirms their conformance client shows `status=connected`. + +*Source: `server/src/addie/mcp/conformance-tools.ts`* + +## adcp_operations + +Execute AdCP protocol operations - discover documentation, execute tasks against agents, check agent capabilities. Covers media buy, creative, signals, governance, SI, and brand protocol. + +### `save_agent` + +Register an agent in the AgenticAdvertising.org registry on behalf of the current organization, or an explicitly selected active organization via `organization_id` / `organization_name`. Adds the agent to the org's member profile; surfaces in `/dashboard/agents`. New agents land with `members_only` visibility (discoverable to other paying AgenticAdvertising.org members — Professional, Builder, Member, or Leader; not publicly listed in the directory or brand.json). To list publicly, the caller promotes the agent via the dashboard; public visibility requires a paid AgenticAdvertising.org tier (Professional, Builder, Member, or Leader) and a primary brand domain. Auth modes: (1) none — public agent, no credentials; (2) static `auth_token` + `auth_type` (`bearer` or `basic`, stored encrypted); (3) `oauth_client_credentials` for machine-to-machine (RFC 6749 §4.4). For interactive OAuth user authorization, save with no auth fields and have the user complete the dashboard's **Authorize** flow afterward — `save_agent` does not collect end-user OAuth state. The caller MUST declare the agent's `type` (`brand`, `rights`, `measurement`, `governance`, `creative`, `sales`, `buying`, `signals`); ask the owner — do not guess. Server-side smuggle protection still validates the declared type against the capability snapshot when one is available. If the user mentions their MCP endpoint requires auth, lives at a non-root path (e.g. /adcp/mcp), or shows up as offline after saving, suggest setting `health_check_url` for a liveness fallback while they fix the underlying URL. See the "Registering an Agent in the AgenticAdvertising.org Registry" section of the rules for the intake script. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `list_saved_agents` + +List all agents saved for this organization. Shows agent URLs, names, types, and whether they have auth tokens stored (but never shows the actual tokens). Use this when users ask "what agents do I have saved?" or want to see their configured agents. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `remove_saved_agent` + +Remove a saved agent and its stored auth token. Use this when users want to delete or forget an agent configuration. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `setup_test_agent` + +Save the public AdCP test agent credentials for the user's organization so teammates can use them. Any logged-in user can already use the public test agent directly via evaluate_agent_quality without this step — no organization required. This is only needed for teams that want credentials stored. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +## content + +Manage content workflows — propose news sources, add or update committee documents (admin actions) + +### `propose_news_source` + +Propose a website or RSS feed as a news source for industry monitoring. Any community member can propose sources - admins will review and approve them. Use this when someone shares a link to a relevant ad-tech, marketing, or media publication and thinks it should be monitored for news. Check for duplicates before proposing. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `add_committee_document` + +Add a Google Docs document to a committee (working group, council, or chapter) for tracking. The document will be automatically indexed and summarized. Committee members and leaders can add documents. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `update_committee_document` + +Update a document tracked by a committee. Can change title, description, URL, or featured status. Committee members and leaders can update documents. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `delete_committee_document` + +Remove a document from a committee. The document will no longer be tracked or displayed. Only committee leaders can delete documents. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +## billing (admin only) + +Handle billing and payment operations - create payment links, send invoices, manage discounts and promotions, look up pending invoices + +### `find_membership_products` + +Find available membership products for a potential member. +Use this when someone asks about joining, membership pricing, or wants to become a member. +You should ask about their company type and approximate revenue to find the right product. + +*Source: `server/src/addie/mcp/billing-tools.ts`* + +### `create_payment_link` + +Create a Stripe checkout payment link for the authenticated member's own organization. +The link is issued to the signed-in member only — the customer email and identity are taken from the +authenticated session, never from caller-supplied input. The member must be signed in at +agenticadvertising.org and have a workspace; if not, refuse and direct them to sign up first. +This tool cannot generate payment links on behalf of other people or organizations. + +*Source: `server/src/addie/mcp/billing-tools.ts`* + +### `send_invoice` + +Preview an invoice for the authenticated member's own organization so they can +confirm the amount and billing email before it is sent. The contact email and company are taken from +the signed-in session, never from caller-supplied input. After calling this and the member confirms, +call confirm_send_invoice to send. + +*Source: `server/src/addie/mcp/billing-tools.ts`* + +### `send_payment_request` + +Find or create a prospect organization and either look up its products, draft an invoice for review, or send a membership invite. Admins cannot directly mint payment links or send invoices from this tool — those operations are only valid in the recipient's own authenticated session, after they accept the invite. + +Actions: +- "lookup_only": find or create the org, list eligible products. Read-only. +- "draft_invoice": preview what the invoice would look like (amount, discount). No Stripe write. +- "send_invite": create a membership invite token and email it to the contact. This is NOT a direct invoice send — there is no admin path to issue invoices or payment links to non-signed-in recipients. The recipient signs in, accepts the agreement, and the invoice or checkout is then issued in their authenticated session — never under the admin's or a hallucinated email. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `grant_discount` + +Grant a discount to an organization. Creates Stripe coupon/promo code. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `remove_discount` + +Remove a discount from an organization. Note: This does not delete any Stripe coupons that were created. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_discounts` + +List organizations with active discounts. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `create_promotion_code` + +Create a standalone Stripe promo code for marketing campaigns. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `resend_invoice` + +Resend an open invoice. Provide EITHER an invoice_id (if known) OR a company_name to look up their pending invoices. If the company has exactly one open invoice, it will be resent automatically. If the invoice needs to go to a different email, use update_billing_email first. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_billing_email` + +Update the billing email on a Stripe customer. Use this when invoices need to go to a different email address (e.g., accounts payable). Can look up by org_id or direct customer_id. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `preview_org_stripe_customer_update` + +Preview relinking an organization to a different Stripe customer. This validates the org and Stripe customer, shows the current and proposed customer IDs, and returns a preview_token. It does not write any changes. Always show the preview to the admin before confirming. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `confirm_org_stripe_customer_update` + +Confirm a previously previewed organization Stripe customer relink. This tool does not accept a raw Stripe customer ID; it only commits the validated preview_token after explicit admin approval. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_pending_invoices` + +List all organizations with pending (unpaid) invoices. +Use this when an admin asks about outstanding invoices or payment status across organizations. +Returns a list of organizations with open or draft invoices. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_account` + +Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +## events + +Browse upcoming events, check event registrations, get event details, see who is coming, and register interest in events — available to all members + +### `list_events` + +List AAO events personalized for the user. Shows: +- Events the user is already registered for +- Events in regional chapters they're a member of +- Events at industry gatherings they've indicated interest in (CES, Cannes Lions, etc.) +- Major global summits (open to all members) + +Does NOT include virtual webinars (those are educational content). + +When asked about past events, set include_past=true. +When asked about upcoming events or what's happening soon, use the defaults. + +If the user isn't in any regional chapters or hasn't indicated interest in any industry events, +the response will suggest they share their location or join industry gathering groups. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `get_event_details` + +Get details about a specific event including registration count and waitlist. Use this when someone asks about a specific event. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `list_event_attendees` + +List who is registered for an event. Use when someone asks "who's coming to [event]?", "who's registered?", "attendee list", or "who will be there?". Shows names of registered attendees for published events. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `register_event_interest` + +Register the current user's interest in an event. Use when someone asks to be notified about an event, added to a waitlist, or wants to express interest without formally registering. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +## meetings + +Schedule, list, update, and cancel meetings - add or remove attendees, RSVP, manage recurring series, handle calendar invites and Zoom links + +### `schedule_meeting` + +Schedule a new working group meeting. Use this when someone asks to schedule a meeting, call, or discussion. +The meeting will be created with a Zoom link. For one-time meetings, calendar invites are sent to working group members by default. + +For recurring meetings, calendar invites are sent to working group members by default (same as one-time meetings). + +If the user is in a channel associated with a working group, you can omit working_group_slug and it will be inferred from the channel context. + +For recurring meetings, use the recurrence parameter with freq, interval, count, and byDay. + +Required: title, start_time (ISO format without timezone suffix - use timezone parameter for that) +Optional: working_group_slug (auto-detected from channel), description, agenda, duration_minutes, timezone, topic_slugs, recurrence + +IMPORTANT: For start_time, provide the time in the user's timezone WITHOUT a Z suffix. For example, if user says "2pm ET", use "2026-01-15T14:00:00" (not "2026-01-15T14:00:00Z"). The timezone parameter (default: America/New_York) specifies what timezone the start_time is in. + +Example prompts this handles: +- "Schedule a technical working group call for next Tuesday at 2pm ET" +- "Set up a bylaws subcommittee meeting for Jan 15 at 3pm PT" +- "Schedule weekly governance calls every Thursday at 3pm for the next 8 weeks" +- "Create a recurring creative WG meeting every other Tuesday at 2pm" + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `list_upcoming_meetings` + +List upcoming meetings. Use this when someone asks about scheduled meetings, what's coming up, or the meeting calendar. Also use this as a first step when you need a meeting_id for add_meeting_attendee, cancel_meeting, or update_meeting. Use my_committees_only to filter to committees the user is a member of. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `get_my_meetings` + +Get the user's upcoming meetings. Use this when someone asks "what meetings do I have?" or "what's on my calendar?" + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `get_meeting_details` + +Get details about a specific meeting including attendees and RSVP status. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `rsvp_to_meeting` + +RSVP to a meeting. Use this when someone says they want to attend a meeting or needs to decline. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `cancel_meeting` + +Cancel a scheduled meeting. Sends cancellation notices to all attendees. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `cancel_meeting_series` + +Cancel a recurring meeting series. Cancels all upcoming meetings in the series (Zoom + calendar) and archives the series record. Use this when someone wants to stop a recurring series entirely. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `update_meeting` + +Update an existing meeting's details. Use this when someone wants to change the time, title, description, or agenda of a scheduled meeting. + +This will update the meeting in the database, Zoom (if configured), and Google Calendar. + +IMPORTANT: For start_time, provide the time in the user's timezone WITHOUT a Z suffix (same as schedule_meeting). + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `add_meeting_attendee` + +Add a person to an existing meeting by email. Call this once per person. Use list_upcoming_meetings first to get the meeting_id. + +Example: "add Karen, Brian, and Jonathan to the call" requires: +1. list_upcoming_meetings to find the meeting_id +2. add_meeting_attendee for Karen +3. add_meeting_attendee for Brian +4. add_meeting_attendee for Jonathan + +When add_to_series is true, adds them to all upcoming meetings in the same series. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `update_topic_subscriptions` + +Update meeting topic subscriptions for a user in a working group. Use this when someone wants to change which types of meetings they're invited to. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +### `manage_committee_topics` + +Manage topics for a working group/committee. Topics help organize meetings and filter invitations. Each topic can optionally have its own Slack channel for subgroup discussions. Use action='list' to see current topics, action='add' to create a new topic, action='update' to modify an existing topic, or action='remove' to delete a topic. + +*Source: `server/src/addie/mcp/meeting-tools.ts`* + +## committee_leadership + +Manage committees you lead: co-leaders plus event management for working groups, councils, chapters, and industry gatherings + +### `add_committee_co_leader` + +Add a co-leader to a committee you lead. Use this when a committee leader wants to add another person to help lead their committee. + +Works for working groups, councils, chapters, and industry gatherings. + +IMPORTANT: You can only add co-leaders to committees where you are already a leader. + +Example uses: +- "Add Sarah as a co-leader for the India Chapter" +- "I want to add John to help lead the Creative Working Group" +- "Add Maria to the CTV Council leadership" + +*Source: `server/src/addie/mcp/committee-leader-tools.ts`* + +### `remove_committee_co_leader` + +Remove a co-leader from a committee you lead. The person will remain a member but lose leadership access. + +Works for working groups, councils, chapters, and industry gatherings. + +IMPORTANT: You can only remove co-leaders from committees where you are a leader. +You cannot remove yourself as a leader (contact admin for that). + +*Source: `server/src/addie/mcp/committee-leader-tools.ts`* + +### `list_committee_co_leaders` + +List all current leaders of a committee you lead. Shows who has leadership access. + +Works for working groups, councils, chapters, and industry gatherings. + +*Source: `server/src/addie/mcp/committee-leader-tools.ts`* + +### `list_working_groups` + +List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `create_event` + +Create a new AAO event. Use this when someone asks to create a meetup, webinar, summit, or workshop. +The event will be created in both Luma (for registration) and the AAO website. +Returns the Luma URL for sharing and the AAO event page URL. + +Required: title, start_time (ISO format), event_type +Optional: description, end_time, timezone, location details, virtual_url, max_attendees + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `update_event` + +Update an existing event. Use this to change event details like description, capacity, or timing. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `manage_event_registrations` + +Manage event registrations - view registrations, approve waitlisted attendees, or export attendee list. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `check_person_event_status` + +Look up a specific person's status at an event. Use when someone asks "Is [person] invited to [event]?", "Did [person] attend [event]?", "What's [person]'s RSVP status?", etc. + +Searches by name or email across invite list, registrations, and attendance records. +Returns their invite status, registration status, and whether they attended. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `invite_to_event` + +Invite a person to an event. Adds them to the invite list and creates a registration record. + +Use when someone says "Invite [person] to [event]", "Add [person] to the Foundry guest list", etc. + +If draft_message is true, returns a suggested outreach message that can be sent via Slack or email. +The invitation is recorded immediately; the outreach message is a draft for the admin to review. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +## admin (admin only) + +Administrative operations - manage prospects, organizations, feeds, escalations, user roles, committee/working group leadership, event management (create/update events, manage registrations, invites, attendee lists), member insights and engagement analytics, community-wide engagement ranking, brand logo registry review queue (approve/reject pending logos), edit a member's directory profile or logo on their behalf (admin only) + +### `create_event` + +Create a new AAO event. Use this when someone asks to create a meetup, webinar, summit, or workshop. +The event will be created in both Luma (for registration) and the AAO website. +Returns the Luma URL for sharing and the AAO event page URL. + +Required: title, start_time (ISO format), event_type +Optional: description, end_time, timezone, location details, virtual_url, max_attendees + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `update_event` + +Update an existing event. Use this to change event details like description, capacity, or timing. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `manage_event_registrations` + +Manage event registrations - view registrations, approve waitlisted attendees, or export attendee list. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `check_person_event_status` + +Look up a specific person's status at an event. Use when someone asks "Is [person] invited to [event]?", "Did [person] attend [event]?", "What's [person]'s RSVP status?", etc. + +Searches by name or email across invite list, registrations, and attendance records. +Returns their invite status, registration status, and whether they attended. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `invite_to_event` + +Invite a person to an event. Adds them to the invite list and creates a registration record. + +Use when someone says "Invite [person] to [event]", "Add [person] to the Foundry guest list", etc. + +If draft_message is true, returns a suggested outreach message that can be sent via Slack or email. +The invitation is recorded immediately; the outreach message is a draft for the admin to review. + +*Source: `server/src/addie/mcp/event-tools.ts`* + +### `list_pending_invoices` + +List all organizations with pending (unpaid) invoices. +Use this when an admin asks about outstanding invoices or payment status across organizations. +Returns a list of organizations with open or draft invoices. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_account` + +Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `add_prospect` + +Add a new prospect organization to track. Use get_account first to confirm the company does not exist. Capture as much info as possible: name, domain, contact details, and notes about their interest. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_prospect` + +Update information about an existing prospect. Use this to add notes, change status, update contact info, or set interest level. IMPORTANT: When adding notes that indicate excitement, resource commitment, or intent to join, also set interest_level accordingly. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `enrich_company` + +Research a company using Lusha to get firmographic data (revenue, employee count, industry, etc.). Can be used with a domain or company name. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `query_prospects` + +Query prospects across different views. Use `view` to switch perspective: "all" (default), "my_engaged", "my_followups", "unassigned", or "addie_pipeline". + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `prospect_search_lusha` + +Search Lusha's database for potential prospects matching criteria. Use this to find new companies to reach out to based on industry, size, or location. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `search_industry_feeds` + +Search and list RSS industry feeds. Use this to find feeds by name, URL, or category, or to see feeds with errors that need attention. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `add_industry_feed` + +Add a new RSS feed to monitor for industry news. Provide the feed URL and a name. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_feed_stats` + +Get statistics about industry feeds - total feeds, active feeds, articles collected, processing status, etc. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_platform_stats` + +Get admin platform stats: deduplicated people totals plus organization counts by lifecycle tier, membership tier, and subscription status. Use for platform-level member, user, or organization counts. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_feed_proposals` + +List pending feed proposals submitted by community members. Use this to review what news sources have been proposed. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `approve_feed_proposal` + +Approve a feed proposal and create the feed. You must provide the final feed name and URL (which may differ from the proposed URL if you find the actual RSS feed). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `reject_feed_proposal` + +Reject a feed proposal. Optionally provide a reason that could be shared with the proposer. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `add_media_contact` + +Flag a Slack user as a known media contact (journalist, reporter, editor). Messages from this user will be handled with extra care and sensitive topics will be deflected. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_flagged_conversations` + +List conversations that have been flagged for sensitive topic detection. These need human review to ensure appropriate handling. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `review_flagged_conversation` + +Mark a flagged conversation as reviewed. Use this after you've looked at a flagged message and determined if any follow-up action is needed. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `create_chapter` + +Create a regional chapter with Slack channel. Sets founding member as chapter leader. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_chapters` + +List all regional chapters with their member counts and Slack channels. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `create_industry_gathering` + +Create an industry gathering for conferences/trade shows. Auto-archives after event ends. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_industry_gatherings` + +List all industry gatherings with their dates, locations, and member counts. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_working_groups` + +List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_working_group` + +Get details about a specific working group including its description, leaders, member count, and recent posts. Use the group slug (URL-friendly name). Pass include_members: true to get the full member list with names, org, and email (admins only for private groups). + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `add_committee_leader` + +Add a user as leader of a committee. Leaders can manage posts, events, and members. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `remove_committee_leader` + +Remove a user from committee leadership. User remains a regular member. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_committee_leaders` + +List all leaders of a committee. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `merge_organizations` + +Merge duplicate organization records. Destructive, cannot be undone. Preview first with preview=true. If both orgs have Stripe customers, you must specify stripe_customer_resolution. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `find_duplicate_orgs` + +Search for duplicate organizations by name or domain. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `check_domain_health` + +Check domain health for data quality issues: orphan domains, conflicts, misaligned users. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `manage_organization_domains` + +Add, remove, list, set primary, or reconcile verified domains for an organization. Syncs to WorkOS. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_org_member_role` + +Update a user's role within their organization. Use this to change a member's permissions. + +Common scenarios: +- User paid for membership but can't manage team → promote to admin +- Need to grant someone ability to invite team members → promote to admin +- User should have full control of their org → promote to owner + +Roles: member (default), admin (can manage team), owner (full control) + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `claim_prospect` + +Claim ownership of a prospect. Use owner_type "self" (default) to assign the current human user, or "addie" to assign Addie as SDR owner. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `triage_prospect_domain` + +Assess an email domain as a potential prospect. Addie will research the company, determine fit, and optionally create a prospect record. Use this when someone mentions a company that isn't in the system yet. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `suggest_prospects` + +Suggest companies to add to prospect list. Finds unmapped domains and Lusha matches. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `set_reminder` + +Set a reminder/next step for a prospect. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `my_upcoming_tasks` + +List upcoming tasks and reminders. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `complete_task` + +Mark a task/reminder as done. Can complete by company name, org ID, or all overdue tasks at once. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `log_conversation` + +Log a conversation or interaction with a prospect/member. Analyzes and extracts learnings. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_member_search_analytics` + +Get analytics about member searches and introductions. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_organizations_by_users` + +List organizations ranked by user count (website + Slack-only). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_users_by_engagement` + +List community members ranked by community points (earned from events, working groups, content, connections, GitHub). Shows relationship stage, organization, and points breakdown by action type. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_slack_users_by_org` + +List Slack users from a specific organization. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_paying_members` + +List all paying members grouped by subscription level ($50K ICL, $10K corporate, $2.5K SMB, individual). Includes individual members by default. Pass include_individual: false for corporate-only. Each entry includes the primary contact name and email. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `resend_invoice` + +Resend an open invoice. Provide EITHER an invoice_id (if known) OR a company_name to look up their pending invoices. If the company has exactly one open invoice, it will be resent automatically. If the invoice needs to go to a different email, use update_billing_email first. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_billing_email` + +Update the billing email on a Stripe customer. Use this when invoices need to go to a different email address (e.g., accounts payable). Can look up by org_id or direct customer_id. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `add_working_group_member` + +Add a user as a member of a working group, council, chapter, or industry gathering. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `remove_working_group_member` + +Remove a user from a working group, council, chapter, or industry gathering. The user is deactivated, not deleted. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `rename_working_group` + +Rename a working group, chapter, or committee. Updates the display name and optionally the slug. Use this when a chapter or WG needs to be renamed (e.g., "Germany Chapter" → "DACH Chapter"). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_missing_brands` + +List the most-requested brand domains that are not yet in the registry. Shows demand signals — which brands people are looking for but we don't have. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `list_missing_properties` + +List the most-requested publisher domains that are not yet in the registry. Shows demand signals — which properties people are looking for but we don't have. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `get_outreach_stats` + +Get outreach performance metrics: messages sent, response rates. Use this when asked "how is outreach going?" or about engagement performance. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_outreach_history` + +Get outreach message history. With a slack_user_id, returns that person's full outreach timeline with goals and responses. Without, returns recent system-wide outreach. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `send_outreach` + +Trigger outreach to a Slack user. Checks eligibility first. Set dry_run=true to check eligibility without sending. Use lookup_person for full person context. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `lookup_person` + +Look up a person by Slack user ID, email, or name. Returns their relationship stage, sentiment, contact eligibility, recent activity, and org. Use for person-level context (vs get_account for org-level). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_action_items` + +Get open action items from the outreach pipeline — nudges, warm leads, momentum signals, follow-ups. Shows what needs attention today. Use to answer "who needs follow-up?" or "what's in my pipeline?" + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_pending_brand_logos` + +List brand logos awaiting moderator review across the registry. Returns logo IDs, domains, uploader email, tags, and how long they have been pending. Use this to triage the registry approval queue or answer "what logos need approval?" + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_brand_logos` + +List every logo for ONE specific brand domain — pending, approved, rejected, deleted — to investigate why a brand's logo is or is not displaying. Use this when you have a domain in hand. For the global moderation queue across all domains, use list_pending_brand_logos instead. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `review_brand_logo` + +Approve, reject, or delete a pending brand logo. Approving makes it visible on the brand's company listing; rejecting hides it; deleting tombstones it. Triggers manifest rebuild on approve for unverified brands. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_pending_community_mirrors` + +List community mirror proposals awaiting expert review, including platform, proposal ID, digest, and submission time. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_member_logo` + +Set or update the logo URL on a member's directory profile. Requires a publicly hosted HTTPS logo URL plus either the member's org_name or profile slug to identify them. Creates a brand entry if none exists, or updates the existing one. + +Do not use this to upload or host logo files — the URL must already be publicly accessible. After updating, use resolve_escalation to close the related support ticket. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_member_profile` + +Update fields on a member's directory profile. Identify the member by org_name or slug (exact match required). Accepts any combination of: description, tagline, contact info, social links, headquarters, markets, offerings, and visibility settings. + +For logo changes, use update_member_logo instead. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `transfer_brand_ownership` + +Transfer ownership of a brand domain from one organization to another. Records a revision for audit. Use after out-of-band verification (acquisition docs, support ticket, legal correspondence) confirms the new org should own the domain. + +Do not use to resolve unverified disputes — use the escalation queue for those. This is for confirmed transfers only. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_orphaned_brands` + +List brand domains in the orphaned state — a prior owner relinquished and the manifest is preserved for adoption. Use this to audit relinquished brands, see which ones have stale data, and trigger admin cleanup or reach out to potential adopters. Returns prior owner org name + id, when relinquished, and a manifest preview so admins can decide at a glance. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `create_contact` + +Create or find a contact record for a person by email. Writes to email_contacts (CRM) and person_relationships (engagement tracking). Returns whether the contact was new and whether they were auto-matched to an organization. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +## outreach (admin only) + +SDR outreach operations — view outreach stats, check history, send outreach, look up people, manage action items (admin only) + +### `get_outreach_stats` + +Get outreach performance metrics: messages sent, response rates. Use this when asked "how is outreach going?" or about engagement performance. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_outreach_history` + +Get outreach message history. With a slack_user_id, returns that person's full outreach timeline with goals and responses. Without, returns recent system-wide outreach. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `send_outreach` + +Trigger outreach to a Slack user. Checks eligibility first. Set dry_run=true to check eligibility without sending. Use lookup_person for full person context. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `lookup_person` + +Look up a person by Slack user ID, email, or name. Returns their relationship stage, sentiment, contact eligibility, recent activity, and org. Use for person-level context (vs get_account for org-level). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_action_items` + +Get open action items from the outreach pipeline — nudges, warm leads, momentum signals, follow-ups. Shows what needs attention today. Use to answer "who needs follow-up?" or "what's in my pipeline?" + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_account` + +Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +## collaboration + +Send direct messages to other AgenticAdvertising.org members, forward conversation context, and collaborate across the community + +### `send_member_dm` + +Send a direct message to another AgenticAdvertising.org member on Slack. + +USE THIS WHEN a user explicitly asks you to: +- Reach out to another member on their behalf +- Forward a conversation summary to someone for feedback +- Send a follow-up or notification to a specific person + +The message will include attribution showing who asked you to send it. +You can optionally include a summary of the current conversation as context. + +Look up recipients by email (preferred), name (may need disambiguation), or Slack user ID. + +DO NOT USE unless the user explicitly requests you to message someone. + +*Source: `server/src/addie/mcp/collaboration-tools.ts`* + +## certification + +AdCP Academy — list tracks, teach modules, run exercises, placement assessment, and track learner progress + +### `list_certification_tracks` + +List all AdCP certification tracks and the learner's progress in each. Returns track names, descriptions, module counts, and completion status. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `get_certification_module` + +Preview a module's content without starting it. Returns lesson plan, exercises, and assessment criteria for read-only browsing. Does NOT record progress or check prerequisites. Use start_certification_module instead when the learner wants to actually take a module. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `start_certification_module` + +Begin teaching a certification module. MUST be called BEFORE you teach any module content, run demos, or answer questions about module topics. This is not optional — teaching without starting the module means no progress is tracked, no demonstrations are recorded, and the learner gets no credit. Call this FIRST, then use the returned lesson plan to teach. Records the learner as started, checks prerequisites and membership, returns lesson plan with teaching instructions and assessment criteria. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `complete_certification_module` + +Mark a certification module as completed. Call ONLY when the learner has demonstrated mastery of ALL learning objectives. If they have gaps, keep teaching — there is no failing, only "not ready yet." Your job is to get them there, not to judge them. When you are confident they understand every objective, call this with your internal assessment scores. The learner never sees these scores — they are for admin analytics and quality calibration only. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `get_learner_progress` + +Get the current learner's progress across all certification modules and tracks. Shows which modules are completed, in progress, or not started, plus any earned certificates. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `test_out_modules` + +Mark modules as tested out after a placement assessment confirms the learner already has the knowledge. Only call this after conducting a thorough assessment — ask probing questions per module topic, not just surface-level familiarity. Never test out specialist or build project modules (any S-track module, B4, C4, D4). Does not award scores since no formal coursework was completed, but satisfies prerequisites for advancement. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `start_certification_exam` + +Begin an available specialist deep dive module (S1: Media Buy, S2: Creative, S3: Signals, S4: Governance, S6: Security). S5 Sponsored Intelligence is listed in the curriculum but is not assessable until its sandbox labs exist. The learner must hold the Practitioner credential. Returns the capstone format, lab exercises, and assessment criteria. You (Sage) will conduct the combined hands-on lab and adaptive exam — technically assess the learner against the spec. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `complete_certification_exam` + +Finalize a specialist capstone. If the learner has demonstrated mastery (internal scores 70%+ in each dimension), awards the specialist credential and triggers Certifier badge issuance. If not yet ready, returns areas needing more work — keep teaching. Do not call until both the lab phase and exam phase are complete. Do not call if the learner asked to stop early. Never share scores with the learner. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +## Always available + +These tools are reachable in every conversation regardless of router intent. Both authenticated and anonymous users can use them when their handlers permit. + +### `escalate_to_admin` + +Escalate a request to human admins when you cannot fulfill it yourself. + +USE THIS WHEN: +- User asks you to perform an action you have no tool for (posting to channels, creating issues, renaming things) +- The request requires admin judgment, account access, or a human action you cannot perform +- The topic is genuinely sensitive (legal, compliance, confrontational, controversial-political) +- You've tried and failed to help with your available tools + +DO NOT USE FOR: +- Questions you can answer with your tools or your rule files (knowledge.md, behaviors.md) +- Community-fit questions ("would my background be a fit for the working groups?") — answer directly using the working-group mapping in knowledge.md and behaviors.md +- Routine membership pricing, including upgrade proration for any tier on credit card or invoice — the FAQ in knowledge.md covers this; only escalate refunds, out-of-cycle credits, custom contracts, and currency changes +- Multi-part questions where each part is independently answerable — decompose first, answer the parts, do NOT escalate the bundle (see "Decompose bundled questions" in constraints.md) +- "Complex" and "sensitive" are NOT magic words. Bundled or multi-domain questions are not automatically Complex; check whether each part is genuinely outside your knowledge or capability before escalating +- Things that don't require admin attention +- General conversation + +CONFIRM WITH USER BEFORE ESCALATING — you must get the user's consent first: +- Tell the user you don't have a tool for this and explain what you'd escalate +- Ask if they'd like you to pass it to the team +- Only call this tool after the user confirms they want you to escalate + +BEFORE CALLING THIS TOOL — gather enough context to make the escalation actionable: +- If the request is vague, ask clarifying questions first +- Confirm who the request is from: their name and organization +- ALWAYS collect an email address and/or Slack handle so the team can follow up. If the user hasn't provided one, ask before escalating. +- If someone is asking on behalf of another person, capture that person's name and contact details in the summary +- Include any relevant context (timeline, urgency, what they've already tried) + +When you escalate, be honest with the user that you're passing this to a human who can help. + +*Source: `server/src/addie/mcp/escalation-tools.ts`* + +### `get_escalation_status` + +Check the status of support requests previously escalated for the current user. +Use this when a user asks about the status of a previous request, a ticket, or whether someone followed up. +Returns a list of their escalations with current status and any resolution notes. + +*Source: `server/src/addie/mcp/escalation-tools.ts`* + +### `get_account_link` + +Get a link to connect the user's Slack account with their AgenticAdvertising.org account. Use this when a user's accounts are not linked and they want to access member features. IMPORTANT: Share the full tool output with the user - it contains the clickable sign-in link they need. The user clicks the link to sign in and their accounts are automatically connected. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `capture_learning` + +Capture valuable knowledge or perspective shared by the user. + +USE THIS WHEN the user shares: +- Strategic perspectives on the industry +- Adoption barriers or implementation experiences +- Feedback about AdCP or AgenticAdvertising.org +- Market intelligence or competitive insights +- Use cases or novel applications + +This helps the team learn from community conversations and improve Addie's knowledge. + +DO NOT use for: +- General questions or support requests +- Content already in the docs +- Off-topic conversations + +*Source: `server/src/addie/mcp/escalation-tools.ts`* + +### `set_outreach_preference` + +Set how often Addie sends proactive messages (tips, reminders, follow-ups). Choose a cadence or opt out entirely. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `search_image_library` + +Search the approved illustration library for images that match a topic or concept. Returns image URLs and alt text that you can include in your response. All searches are logged automatically. + +*Source: `server/src/addie/mcp/image-tools.ts`* + +### `draft_github_issue` + +Draft a GitHub issue and generate a pre-filled URL for the user to create it. Use this when users report bugs, request features, or ask you to create a GitHub issue. CRITICAL: Users CANNOT see tool outputs - you MUST copy this tool's entire output (the GitHub link, title, body preview) into your response. Never say "click the link above" without including the actual link. The user will click the link to create the issue from their own GitHub account. All issues go to the "adcp" repository which contains the protocol, schemas, AgenticAdvertising.org server, and documentation. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `create_github_issue` + +File a GitHub issue on adcontextprotocol/adcp authored by the logged-in user via their WorkOS Pipes GitHub connection. Use after showing the user a draft and getting their confirmation. If the user has not yet connected GitHub, the tool returns a message with a one-time Connect link AND reminds them they can ask for `draft_github_issue` instead — include that full message in your reply. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_github_issue` + +Read a GitHub issue or PR by number. Use when the user pastes a GitHub link, references "issue #1234", or asks about the status / contents of a specific RFC, epic, or PR. Returns title, body, state, labels, author, and optionally recent comments and the PR diff. Works on any public GitHub repo (forks included). PR review-thread comments (on specific diff lines) are NOT returned — only issue-style top-level comments. When the user pastes a PR link or asks for a code review, set `include_diff: true`. Do NOT use for keyword search — use list_github_issues. Do NOT use fetch_url on github.com/.../issues|pull URLs; this tool returns structured fields. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `propose_content` + +Submit a draft (article or link) for editorial review. Content lands in pending_review; a committee lead or admin approves it to publish. Default committee is "editorial" (site-wide Perspectives). Only `title` is required. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_my_content` + +Get all content where the user is an author, proposer, or owner (committee lead). Shows content across all collections with status and relationship info. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `list_pending_content` + +List content pending review that the user can approve/reject. Only committee leads see their committee content; admins see all pending content. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `approve_content` + +Approve pending content for publication. Only committee leads (for their committees) and admins can approve content. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `reject_content` + +Permanently reject content. Only committee leads (for their committees) and admins can reject content. The proposer will see the rejection reason. Use request_revisions instead if the author should address feedback and resubmit. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `request_revisions` + +Ask the author to revise and resubmit content. The article stays visible in the review queue as "needs revisions" until the author resubmits. Use this instead of reject_content when the content is fixable. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `check_illustration_status` + +Check if a perspective article has an editorial illustration and whether the author can generate one. + +*Source: `server/src/addie/mcp/illustration-tools.ts`* + +## Always available (admin) + +Admin-only tools reachable in every conversation regardless of router intent. + +### `resolve_escalation` + +Mark an escalation as resolved and notify the user via Slack DM or email. Use this after you've handled a request that was previously escalated. + +IMPORTANT: Always notify the user unless there's a reason not to (e.g., test escalation, duplicate). +Notification is sent via Slack DM when a Slack user ID is on record, or via email as fallback. +This is how you notify users about escalation outcomes — use it whenever asked to "let someone know", "follow up", or "close the loop" on an escalation. + +Examples: +- User needed admin role → used update_org_member_role → resolve and notify +- User needed co-leader added → used add_committee_co_leader → resolve and notify +- Admin says "this is fixed, let them know" → resolve and notify +- Duplicate request → resolve with wont_do, no notification needed + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_escalations` + +List escalations that need admin attention, or look up a specific escalation by ID. + +Use escalation_id to get details on a specific escalation (any status). +Use status filter to browse escalations (defaults to open). + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +## Other tools + +Tools defined in the code but not referenced by any tool set above. These typically require specific channel/auth conditions to register; see the source for details. + +### `research_domain` + +Comprehensive domain research: checks brand registry, enriches via Brandfetch + Sonnet classification + Lusha firmographics. Skips sources that already have fresh data (< 30 days). Returns brand identity, corporate hierarchy (house_domain/parent_brand), and firmographics in one call. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `diagnose_signin_block` + +Use when a user reports they cannot sign in to AgenticAdvertising.org. Combines person, invite, and org-membership state into a single verdict — needs_signin (account exists, just sign in), needs_resend (invite expired or stale, send a fresh one), needs_invite (no invite on file, send one), or needs_human (state is unclear). Do NOT use for general account questions — use lookup_person or get_account for those. Returns the verdict plus a one-line reason and any pending invite token to act on. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_invites_for_org` + +Use when an admin asks "what invites do we have for X" or you need to reference an invite token before resending or revoking. Defaults to pending only; pass include_accepted or include_revoked to widen. Capped at 20, sorted by expiry (soonest first). Returns one invite per line with its token suffix so you can quote a token back into resend_invite or revoke_invite. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `resend_invite` + +Use to refresh a pending or expired membership invite — atomically revokes the original and emails a fresh one. Do NOT use to invite a brand-new contact (use send_payment_request for that). Do NOT use on an accepted invite. Returns the new expiry and whether the email was delivered. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `revoke_invite` + +Use to cancel a pending or expired invite (e.g. wrong email, person no longer joining). Does NOT send any notification to the recipient — their existing invite link will simply stop working. Cannot revoke an already-accepted or already-revoked invite. Returns confirmation including the previous status. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `add_member_to_org` + +Use when an admin or owner asks to add, invite, or promote a colleague on a paying org. Also the action to take when diagnose_signin_block returns needs_invite for an authorized requester. Handles four states automatically: invites new users (no WorkOS account yet), adds existing users to the org, updates roles, or no-ops if already correct. Do NOT use to remove members (no removal path), to change your own role, or for personal workspaces. Returns one of: invited, member_added, role_updated, no_change. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `create_committee` + +Create a committee (working group, council, or governance body). For chapters use create_chapter; for conferences use create_industry_gathering. Can link an existing Slack channel by name. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `update_user_name` + +Update a user's display name (first and last name). Use this when a user's name is showing incorrectly (e.g., as their email prefix) and needs manual correction. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `ban_entity` + +Ban a user, organization, or API key. Scope can be platform-wide (blocks all access) or registry-specific (blocks brand/property edits only). + +Examples: +- Platform ban user: ban_type=user, entity_id=user_01HW..., scope=platform +- Ban org from brand edits: ban_type=organization, entity_id=org_01HW..., scope=registry_brand +- Revoke API key: ban_type=api_key, entity_id=wkapikey_..., scope=platform + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `unban_entity` + +Remove a ban. Provide either the ban ID directly, or the ban_type + entity_id + scope to look it up. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `list_bans` + +List active bans. Optionally filter by ban_type, scope, or entity_id. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_person_memory` + +Use when you need the full picture of what we know about a person — identity, membership, engagement, preferences, pending invites, recent threads — gathered into one view before reasoning. Prefer this over chaining lookup_person + get_account + list_invites_for_org. Do NOT use for org-level questions. Returns a structured summary with sources so you can cite where each fact came from. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_engagement_plan` + +Preview the engagement plan for a person — shows contact eligibility, scored opportunities, and what Addie would say. Use this to understand or debug engagement decisions. + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `get_outreach_health` + +Get a health report on the outreach system: stage breakdown, over-contacted people approaching circuit breaker, outreach volume, and email stats. Use to assess system health or when asked "how is outreach doing?" + +*Source: `server/src/addie/mcp/admin-tools.ts`* + +### `confirm_send_invoice` + +Send an invoice for the authenticated member's own organization after they have +confirmed the details shown by send_invoice. The contact email, company, and billing address come +from the signed-in session — they cannot be overridden. The org must already have a billing address +on file (set via the dashboard or invite-acceptance flow). + +*Source: `server/src/addie/mcp/billing-tools.ts`* + +### `get_billing_portal` + +Get a link to the Stripe Customer Portal where the member can view invoices, download receipts, update payment methods, and manage their subscription. +Use this when a member asks about receipts, invoices, billing history, payment methods, or subscription management. +The member must be signed in. + +*Source: `server/src/addie/mcp/billing-tools.ts`* + +### `publish_brand_canonical_document` + +Generate a Brand Canonical Document (brand.json variant 5) for a sub-brand team. Builds a JSON document with the brand's identity fields (logos/colors/tone/etc.), validates it against the brand.json schema, and returns the document plus the path where it should be hosted (https://{domain}/.well-known/brand.json). Returns validation errors instead of an invalid document. Does NOT upload — the operator hosts the returned JSON themselves. + +*Source: `server/src/addie/mcp/brand-canonical-tools.ts`* + +### `add_to_brand_refs` + +Append a portfolio_entry pointer to a House Portfolio's brand_refs[]. Either pass the house's brand.json directly (house_brand_json) or have the tool fetch it (house_domain). Enforces the cross-array uniqueness invariants from the spec: a brand_id MUST NOT appear in both brands[] and brand_refs[], and each brand_id/domain MUST be unique within brand_refs[]. Returns the updated brand.json or a clear validation error. + +*Source: `server/src/addie/mcp/brand-canonical-tools.ts`* + +### `check_mutual_assertion` + +Given a leaf brand's domain, fetch its canonical document and its claimed house's portfolio (following House Redirects on the house side, up to 3 hops, per the Conformance section). Classify the relationship trust into: mutual (both sides reciprocate), leaf_only (leaf claims house, house silent), house_only (house claims leaf, leaf silent — returned by checking the house if a different caller already has it), standalone (no house_domain), or unverifiable (one or both fetches failed). Returns the house's contact.email when present so the caller can pass it into notify_pending_verification on leaf_only edges. + +*Source: `server/src/addie/mcp/brand-canonical-tools.ts`* + +### `notify_pending_verification` + +Send the SHOULD-level notification email to the house's contact.email when a leaf_only edge is detected. Rate-limited to one notification per {leaf, house} pair per 24 hours, persisted in the brand_assertion_notifications table so concurrent callers can't double-send. Behind a feature flag (BRAND_ASSERTION_EMAIL_ENABLED) — defaults to log-only so operators can review the would-have-sent payload before enabling the live send path. + +*Source: `server/src/addie/mcp/brand-canonical-tools.ts`* + +### `parse_brand_properties` + +Preview a smart-paste import for a brand the operator owns. Takes pasted text (a list of domains and app bundles) or a URL whose body should be fetched, and returns the structured property list that would be imported. The user MUST confirm before you call import_brand_properties — show them the parsed list first. Caller's organization must own the brand domain. + +*Source: `server/src/addie/mcp/brand-property-tools.ts`* + +### `import_brand_properties` + +Commit a previewed property import. Takes a property list (typically the output of parse_brand_properties, possibly trimmed by the user) and merges it into the brand manifest by identifier — existing entries are updated in place, new entries are added. ONLY call after the user has explicitly confirmed the list from parse_brand_properties. Caller's organization must own the brand domain. + +*Source: `server/src/addie/mcp/brand-property-tools.ts`* + +### `upload_brand_logo` + +Fetch and promote a logo file for a brand in the registry. The upload queues for moderator review (community contribution) and, when approved, receives an AAO-hosted public /assets/brands URL suitable for brand.json. Blocked when a brand has a verified DNS owner — only that org can change its logo, and the human must use the brand-builder UI for owner-attested uploads. + +*Source: `server/src/addie/mcp/brand-tools.ts`* + +### `check_credentials` + +Award any newly-eligible credentials and finalize any previously-deferred Certifier issuances for the current learner. Returns share links for newly-issued credentials, or a NAME_REQUIRED marker when the learner has no name on file. Use this after `set_my_name` to finalize a credential that was gated on the missing name. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `checkpoint_teaching_progress` + +Save a snapshot of teaching progress for the current module. Required before calling complete_certification_module or complete_certification_exam. Call at these points: (a) after finishing each key concept group from the lesson plan, (b) before transitioning from teaching to assessment, (c) after the capstone lab phase before the exam phase, (d) if the learner needs to leave. IMPORTANT: On the first checkpoint, always include learner_background. Before completion, include demonstrations_verified with the criterion IDs the learner has met. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `get_build_phase_instructions` + +Get the exact instructions for a build project phase transition. You MUST call this tool when transitioning to the Build, Validate, or Extend phase of B4, C4, or D4. The tool returns the specific commands and URLs the learner needs — present them exactly as returned, do not rewrite or summarize. This ensures every learner gets the same validated workflow. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `save_learner_feedback` + +Save learner feedback after completing a certification module. Call this when the learner shares thoughts about the experience — what was confusing, what worked well, suggestions for improvement. + +*Source: `server/src/addie/mcp/certification-tools.ts`* + +### `set_my_name` + +Set the current user's first name and (optionally) last name. Writes through to the local DB, organization memberships, and back to WorkOS. Use this when a credential check tells you the user has no name on file, or whenever the user explicitly asks to set or correct their name. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `recommend_storyboards` + +Probe an agent's `get_adcp_capabilities` and return the compliance bundles that will run. The agent's declared `supported_protocols` and `specialisms` drive the selection — no member configuration needed. If the agent declares nothing, explain what it needs to declare to get coverage. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_storyboard_detail` + +Show the full structure of a storyboard — phases, steps, what each step tests, and what passing looks like. Use this before running a storyboard so the developer understands what will be tested. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `run_storyboard` + +Run a complete storyboard against an agent and return step-by-step results. Each step shows pass/fail, validations, and what the agent returned. Use after recommend_storyboards and optionally get_storyboard_detail. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `run_storyboard_step` + +Run a single step of a storyboard. Returns the result plus a preview of the next step. Use this for step-by-step debugging — lets the developer see each request/response and decide whether to continue. Pass the context from the previous step result to maintain state. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `get_member_engagement` + +Get the current user's organization engagement data: journey stage, engagement score, persona/archetype, milestone completion, and persona-based working group recommendations. Use this to understand where a member is in their journey and what actions would help them advance. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `search_moltbook` + +Search Moltbook for posts about a topic. Moltbook is a social network for AI agents. Returns posts matching the search query with author, score, and comment count. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `get_moltbook_thread` + +Get a Moltbook post and its comments. Returns the full post content and discussion thread. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `post_to_moltbook` + +Create a new post on Moltbook. Rate limited to 1 post per 30 minutes. Use for sharing insights, asking questions, or starting discussions with other AI agents. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `comment_on_moltbook` + +Add a comment to a Moltbook post. Rate limited to 1 comment per 20 seconds and 50 comments per day. Use for engaging in discussions with other AI agents. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `get_moltbook_stats` + +Get Addie's Moltbook profile stats including karma, post count, follower count, and today's activity. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `get_moltbook_feed` + +Get the latest posts from Moltbook sorted by hot, new, top, or rising. + +*Source: `server/src/addie/mcp/moltbook-tools.ts`* + +### `suggest_newsletter_content` + +Suggest content for the community newsletters. Use this when someone says "this should be in The Prompt" or "add this to The Build" or "suggest this for the newsletter." The Prompt is Addie's community newsletter (for everyone). The Build is Sage's contributor briefing (for contributor seats). + +*Source: `server/src/addie/mcp/newsletter-tools.ts`* + +### `check_portrait_status` + +Check if the current member has an illustrated portrait, and whether they can generate one. Use this before offering portrait generation. + +*Source: `server/src/addie/mcp/portrait-tools.ts`* + +### `check_property_list` + +Check a list of publisher domains against the AAO registry. Returns a summary of issues and a report URL for full details. Domains are automatically normalized (www/m stripped), duplicates removed, and known ad tech infrastructure flagged. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `enhance_property` + +Analyze an unknown publisher domain and submit it to the registry as a pending entry for review. Checks domain age (flags < 90 days as high risk), validates adagents.json presence, and uses AI to assess whether it's a real publisher and its likely inventory types. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `resolve_catalog` + +Resolve identifiers (domains, app bundles, store IDs) to stable property_rids in the catalog. Auto-creates missing properties. Excludes known ad infrastructure and publisher masks. Returns property_rid for each identifier. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `browse_catalog` + +Browse the property catalog. Returns properties with their identifiers, classification, and source. Supports filtering and search. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `dispute_catalog_entry` + +File a dispute against a catalog entry. For identifier link disputes on medium/weak confidence, the link is suspended immediately pending review. For authoritative/strong links, the dispute is queued for review without suspension. + +*Source: `server/src/addie/mcp/property-tools.ts`* + +### `get_si_availability` + +Check if an offer or product is available from a brand agent before connecting. This is an anonymous pre-flight check that doesn't share user data. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `list_si_agents` + +List AAO member brand agents that support Sponsored Intelligence protocol. Shows which brands users can have conversations with. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `connect_to_si_agent` + +Connect user with an SI-hosted brand agent. Initiates a conversational session where the brand agent can interact with the user. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `send_to_si_agent` + +Send a message to an active SI session with a brand agent. Use this when the user is already connected and wants to continue the conversation. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `end_si_session` + +End the current SI session with a brand agent. Use when user is done talking to the brand or wants to return to normal conversation. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `get_si_session_status` + +Check if there's an active SI session and get its current status. + +*Source: `server/src/addie/mcp/si-host-tools.ts`* + +### `lookup_cast` + +Look up a fictional character or AI agent from the AdCP universe. Returns their role, company, personality, story appearances, and related protocol walkthroughs. + +*Source: `server/src/addie/mcp/story-tools.ts`* + +### `lookup_story` + +Look up an AdCP story. Returns title, synopsis, featured characters, related protocol walkthroughs, and links. + +*Source: `server/src/addie/mcp/story-tools.ts`* + diff --git a/dist/docs/3.2.0-beta.4/aao/connect-addie.mdx b/dist/docs/3.2.0-beta.4/aao/connect-addie.mdx new file mode 100644 index 0000000000..1f0be8b144 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/connect-addie.mdx @@ -0,0 +1,156 @@ +--- +title: Connect Addie to your AI client +description: Add the AAO MCP server to Claude Desktop, Claude Code, ChatGPT, and other MCP-compatible clients — with troubleshooting for the common "reconnection failed" error. +"og:title": "AdCP — Connect Addie to your AI client" +--- + +# Connect Addie to your AI client + +Addie runs on a hosted MCP endpoint at `https://agenticadvertising.org/mcp`. Most MCP clients that speak streamable HTTP can connect — Claude Desktop, Claude Code, ChatGPT, and custom clients built on the MCP SDK. This page covers the install steps for each, plus how to recover from the most common failure modes. + +For end-user help with what Addie can *do*, see [AAO for Members](/dist/docs/3.2.0-beta.4/aao/users) and the [Addie Tool Reference](/dist/docs/3.2.0-beta.4/aao/addie-tools). + +## Authentication at a glance + +The endpoint requires authentication on every request. It accepts two credential types: + +- **OAuth 2.1 user JWT** — for human-driven clients (Claude Desktop, Claude Code, ChatGPT, Cursor). Sign in with your AAO email; the client handles the OAuth flow. +- **WorkOS organization API key** — for server-to-server callers. Generate one at [agenticadvertising.org/dashboard/api-keys](https://agenticadvertising.org/dashboard/api-keys). Send as `Authorization: Bearer ` and skip OAuth entirely. + +Use one *or* the other on a given connection — never both. When a static `Authorization` header is present, the server treats the request as authenticated and the OAuth flow never starts. If your client still pops a browser despite the header, it's stripping or overriding it — verify with `claude mcp get addie` (Claude Code) or your client's equivalent. + +For the underlying OAuth surface (authorization server metadata, dynamic client registration, scopes), see the [Reference URLs](#reference-urls) at the bottom of this page. + +## Claude Desktop + +Claude Desktop's built-in **Connectors** UI is the smoothest path. Anthropic hosts the OAuth proxy, so you don't manage tokens yourself. Custom connectors require a paid Claude plan (Pro, Max, Team, or Enterprise). + +1. Open Claude Desktop → Settings → Connectors. +2. Click **Add custom connector** (or **Connect** → custom). +3. In the dialog, set Name = `Addie`, Remote MCP server URL = `https://agenticadvertising.org/mcp`, then click **Add**. +4. Sign in with your AAO email when the browser opens. +5. Claude Desktop shows Addie as connected. Tools appear in the chat tool picker. + +## ChatGPT + +ChatGPT supports remote MCP via the **Connectors** feature. Custom MCP servers require a paid plan (Pro, Business, Enterprise) — Plus and Free won't see this option. + +1. Open ChatGPT → Settings → Connectors → Advanced → enable Developer mode. +2. Click **Create** (or **Add MCP server**), choose type **MCP**. +3. URL: `https://agenticadvertising.org/mcp`, Authentication: **OAuth**. +4. Complete sign-in in the browser. + +ChatGPT's connector UI changes often. If labels don't match exactly, look for "remote MCP server" or "custom connector" in your settings. + +## Claude Code + +Claude Code (the CLI) has [a known bug](https://github.com/anthropics/claude-code/issues/10250) where OAuth completes but the post-auth reconnect fails, leaving the server marked as `failed`. This affects every remote MCP that uses streamable-HTTP + OAuth, not just Addie. Until Anthropic ships a fix, use one of the two paths below. + +### Recommended: stdio shim via `mcp-remote` + +`mcp-remote` is a small npm proxy that runs as a local stdio MCP server, handles OAuth itself, and forwards calls to the remote endpoint. It sidesteps Claude Code's broken reconnect path entirely. Requires Node 18 or newer. + +```bash +claude mcp add addie -- npx -y mcp-remote@latest https://agenticadvertising.org/mcp +``` + +Then run `/mcp` inside Claude Code and complete sign-in in the browser. `/mcp` should show `addie ✓ connected` and Addie's tools become available immediately. No restart required. + +### Alternative: native HTTP transport + +If you'd rather use the native transport: + +```bash +claude mcp add --transport http addie https://agenticadvertising.org/mcp +``` + +Run `/mcp`, complete sign-in. If you see *"Authentication successful, but server reconnection failed"*, fully quit Claude Code (⌘Q on macOS, not just close window) and relaunch. Sometimes a single restart picks up the stored tokens; often it doesn't. If one restart doesn't recover, fall back to the `mcp-remote` path above. + +### Using an API key instead of OAuth + +If you have a WorkOS organization API key, register the server with a static `Authorization` header so OAuth never runs: + +```bash +claude mcp add --transport http addie https://agenticadvertising.org/mcp \ + --header "Authorization: Bearer sk_your_key_here" +``` + +`claude mcp add` writes to `~/.claude.json` safely without disturbing your other entries. Hand-editing that file works but can clobber other servers — only do it if you know what's already there. The equivalent JSON shape is: + +```json +{ + "mcpServers": { + "addie": { + "type": "http", + "url": "https://agenticadvertising.org/mcp", + "headers": { + "Authorization": "Bearer sk_your_key_here" + } + } + } +} +``` + +Don't combine this with the OAuth flow — pick one. If Claude Code triggers OAuth despite the header being present, the key is invalid or expired. Generate a fresh one at [agenticadvertising.org/dashboard/api-keys](https://agenticadvertising.org/dashboard/api-keys). + +## Other MCP clients + +Any MCP client that speaks streamable HTTP + OAuth 2.1 can connect. Generic config: + +```json +{ + "type": "http", + "url": "https://agenticadvertising.org/mcp" +} +``` + +Discovery follows the standard pattern: 401 on first request includes `WWW-Authenticate: Bearer resource_metadata=...`, pointing the client at `/.well-known/oauth-protected-resource/mcp`, which lists the authorization server. + +## Troubleshooting + +### "Authentication successful, but server reconnection failed" + +This is Claude Code bug [#10250](https://github.com/anthropics/claude-code/issues/10250). The OAuth flow worked — your tokens are saved in `~/.claude/.credentials.json` — but the client failed to reconnect with them. A full restart sometimes recovers; the reliable workaround is the `mcp-remote` install path above. + +This is not Addie-specific: the same error affects Notion, Supabase, Slack, New Relic, and other remote MCP servers using OAuth. + +### 401 returned after OAuth completes + +If your client says it has a valid token but every request to `/mcp` returns 401: + +- Check the token is fresh. WorkOS access tokens are short-lived; refresh tokens last longer. Most clients auto-refresh; some don't. Force re-auth. +- Check you're not double-sending credentials. If your config has both an `Authorization` header *and* an OAuth flow, one will conflict with the other. +- Test the token manually: + ```bash + curl -i -X POST https://agenticadvertising.org/mcp \ + -H "Authorization: Bearer " \ + -H "Content-Type: application/json" \ + -H "Accept: application/json, text/event-stream" \ + -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"diag","version":"0.0.1"}}}' + ``` + A 401 here means the token is rejected at the server; a 200 means your client is mishandling auth. + +### Force a re-auth + +When stored tokens go stale and the client won't re-prompt: + +- **Claude Code:** `rm ~/.claude/.credentials.json` then run `/mcp`. (This clears OAuth state for *all* MCP servers; back it up first if you have several.) +- **Claude Desktop:** remove the Addie connector and re-add it. +- **ChatGPT:** disconnect the connector in settings and re-add. + +### "I configured Addie in `~/.claude/settings.json` and it's not loading" + +Claude Code reads MCP servers from `~/.claude.json` (the global config) or `.mcp.json` (project-scoped) — not from `settings.json`. `settings.json` holds permissions, hooks, and env vars only. Use `claude mcp add` rather than hand-editing. + +### Where to find Claude Code logs + +On macOS: `tail -f ~/Library/Logs/Claude/mcp*.log`. Run your client and trigger the failing flow while tailing — the actual error (token rejected, transport mismatch, network failure) shows up there. Redact tokens before sharing. + +## Reference URLs + +- **MCP endpoint:** `https://agenticadvertising.org/mcp` +- **Authorization server metadata** (RFC 8414): `https://agenticadvertising.org/.well-known/oauth-authorization-server` +- **Protected resource metadata** (RFC 9728): `https://agenticadvertising.org/.well-known/oauth-protected-resource/mcp` +- **Dynamic client registration** (RFC 7591): `POST /register` +- **API keys dashboard:** [agenticadvertising.org/dashboard/api-keys](https://agenticadvertising.org/dashboard/api-keys) +- **Issue tracker:** [github.com/adcontextprotocol/adcp/issues](https://github.com/adcontextprotocol/adcp/issues) diff --git a/dist/docs/3.2.0-beta.4/aao/directory-api.mdx b/dist/docs/3.2.0-beta.4/aao/directory-api.mdx new file mode 100644 index 0000000000..8dffce9ed4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/directory-api.mdx @@ -0,0 +1,245 @@ +--- +title: AAO Directory API — Agent ↔ Publisher Inverse Lookup +description: HTTP API for sales-agent operators to discover which publishers authorize their agent, sourced from the AAO directory's index of publisher adagents.json files. Returns provenance, per-publisher property counts, and lifecycle status. +"og:title": "AdCP — AAO Directory Inverse Lookup API" +--- + +# AAO Directory API + +The AAO directory at `agenticadvertising.org` indexes publisher `adagents.json` files across the open web. This API surfaces the **inverse map** every sales-agent operator needs at sync time: + +> "What publishers have authorized my agent?" + +Without this endpoint, operators have to either maintain the publisher domain list manually and call `fetch_agent_authorizations` against it, or crawl the open web themselves. Both are infeasible at managed-network scale ([cafemedia](https://cafemedia.com/.well-known/adagents.json) alone delegates ~6,800 publisher domains under a single manager file). + +This endpoint is **discovery**, not **authorization**. The publisher's own `adagents.json` remains the trust root. The directory tells you which publishers to verify directly via the SDK's per-domain primitives (`verify_agent_authorization`, `fetch_agent_authorizations`). + +## Endpoint + +``` +GET https://{aao_directory}/v1/agents/{agent_url}/publishers +``` + +`{agent_url}` MUST be percent-encoded. The directory canonicalizes the lookup key (lowercase host, default port stripped, trailing slash on path component normalized) using the same convention the SDK applies in `verify_agent_authorization`. + +### Query parameters + +| Parameter | Type | Default | Semantics | +|---|---|---|---| +| `since` | ISO 8601 | unset | Return only publishers whose `last_verified_at` ≥ `since`. Enables incremental sync. | +| `cursor` | opaque string | unset | Pagination cursor returned by a prior response. Stable across the directory's refresh cycle for the lifetime of the cursor. | +| `status` | string, repeated | `authorized` | Filter by lifecycle status. v1: `authorized`, `revoked`. Repeat the key once per value (OpenAPI `style: form, explode: true`). Comma-separated single-value form (`status=authorized,revoked`) is **not** accepted; directories MUST return `400` with an explanation pointing to the repeated-key form. | +| `limit` | int (1–1000) | 200 | Max publishers per page. | +| `include` | string, repeated | unset | Opt into expanded per-row fields. v1: `properties` — each `PublisherEntry` carries the canonical `property_ids[]` list under that publisher (lets consumers run full set-diff against a federated fetch, not just count comparison). Repeated-key form, same encoding rule as `status`. Unknown values return `400`. | + +#### Worked example: filtering by multiple status values + +``` +GET /v1/agents/https%3A%2F%2Fsales-agent.example.com%2F/publishers?status=authorized&status=revoked&limit=500 +``` + +Equivalent in TypeScript: + +```ts +const url = new URL(`${directory}/v1/agents/${encodeURIComponent(agentUrl)}/publishers`); +url.searchParams.append("status", "authorized"); +url.searchParams.append("status", "revoked"); +url.searchParams.set("limit", "500"); +``` + +Equivalent in Python (`requests`): + +```python +requests.get( + f"{directory}/v1/agents/{quote(agent_url, safe='')}/publishers", + params=[("status", "authorized"), ("status", "revoked"), ("limit", "500")], +) +``` + +The OpenAPI fragment for the `status` parameter: + +```yaml +- in: query + name: status + schema: + type: array + items: + type: string + enum: [authorized, revoked] + style: form + explode: true + required: false +``` + +Repeated-key was chosen because (a) it is what `URLSearchParams.append()` and OpenAPI's default `explode: true` produce, (b) it composes cleanly with future values that might contain a comma, and (c) it leaves no parser ambiguity at the directory. + +#### Worked example: requesting `?include=properties` for full set-diff + +``` +GET /v1/agents/https%3A%2F%2Fsales-agent.example.com%2F/publishers?include=properties +``` + +The default response carries `properties_authorized` as a count only. Count-equality is **not** set-equality: a publisher rotating three properties leaves the count unchanged but the set entirely different, which a count-based divergence detector cannot see. `?include=properties` adds a `property_ids: list[string]` field per `PublisherEntry` — the canonical IDs the agent's selectors resolve to under that publisher — so consumers can run full set-diff against a federated `fetch_agent_authorizations` result and detect rotation, not just delta-in-magnitude. + +The flag is opt-in to keep the default page payload small. Inline IDs add roughly the per-publisher property count × ~16 bytes per ID; on a managed-network parent file (~6,800 publishers × avg 1 property each ≈ 7 KB of additional IDs), the overhead is small but non-zero. Pagination semantics are unchanged. + +### Response + +```json +{ + "agent_url": "https://sales-agent.example.com", + "directory_indexed_at": "2026-05-19T12:00:00Z", + "publishers": [ + { + "publisher_domain": "recipeswithessentialoils.com", + "discovery_method": "ads_txt_managerdomain", + "manager_domain": "cafemedia.com", + "properties_authorized": 1, + "properties_total": 1, + "signing_keys_pinned": false, + "status": "authorized", + "last_verified_at": "2026-05-19T08:00:00Z" + }, + { + "publisher_domain": "wsj.com", + "discovery_method": "direct", + "manager_domain": null, + "properties_authorized": 47, + "properties_total": 200, + "signing_keys_pinned": true, + "status": "authorized", + "last_verified_at": "2026-05-19T10:00:00Z" + }, + { + "publisher_domain": "former-partner.example", + "discovery_method": "authoritative_location", + "manager_domain": "cafemedia.com", + "properties_authorized": 0, + "properties_total": 0, + "signing_keys_pinned": false, + "status": "revoked", + "last_verified_at": "2026-05-19T11:00:00Z" + } + ], + "next_cursor": "eyJv..." +} +``` + +With `?include=properties`, each `PublisherEntry` additionally carries `property_ids`: + +```json +{ + "publisher_domain": "recipeswithessentialoils.com", + "discovery_method": "ads_txt_managerdomain", + "manager_domain": "cafemedia.com", + "properties_authorized": 3, + "properties_total": 3, + "property_ids": ["p-001", "p-002", "p-003"], + "signing_keys_pinned": false, + "status": "authorized", + "last_verified_at": "2026-05-19T08:00:00Z" +} +``` + +## Field reference + +### Envelope + +| Field | Required | Notes | +|---|---|---| +| `agent_url` | yes | Canonicalized echo of the lookup key. | +| `directory_indexed_at` | yes | Most recent per-publisher refresh in the result set. Provenance for the consumer's own cache. **NULL on empty pages** — there's no anchor to report; consumers SHOULD NOT advance cache freshness from a null value. | +| `publishers` | yes | Array. Empty array is a valid response — the directory has indexed this agent but no current authorizations resolve. | +| `next_cursor` | optional | Opaque pagination cursor; absent or null on the terminal page. | + +### `PublisherEntry` + +| Field | Required | Notes | +|---|---|---| +| `publisher_domain` | yes | Publisher whose `adagents.json` authorizes the agent. | +| `discovery_method` | yes | `direct`, `authoritative_location`, `adagents_authoritative`, or `ads_txt_managerdomain`. See below. | +| `manager_domain` | conditional | Required when `discovery_method` ≠ `direct`. Null otherwise. | +| `properties_authorized` | yes | Count of properties under **this publisher_domain only** that the agent's selectors resolve to. Never a network-wide count. | +| `properties_total` | yes | Count of properties under **this publisher_domain only** in the publisher's file (or parent file's inline subset for that domain). Never a network-wide count. | +| `property_ids` | conditional | Present iff request included `?include=properties`. Canonical list of `property_id`s under this publisher that the agent's selectors resolve to — the same population `properties_authorized` counts, surfaced as IDs so consumers can run full set-diff (not just count comparison) against a federated fetch. Per-publisher scope; never network-wide. Treat as a set; order is unspecified. | +| `signing_keys_pinned` | optional | Whether the publisher pins `signing_keys[]` on this agent. When `true`, agent's signed responses MUST verify against the pinned set regardless of the agent's own JWKS. | +| `status` | yes | `authorized` or `revoked`. See below. | +| `last_verified_at` | yes | When the directory last fetched and validated this publisher's `adagents.json`. | + +### `discovery_method` values + +| Value | Meaning | Trust profile | +|---|---|---| +| `direct` | Agent listed in the publisher's own `/.well-known/adagents.json`. | Strongest — no delegation hops. | +| `authoritative_location` | Publisher's `/.well-known/adagents.json` declared `authoritative_location` pointing to a manager file that lists the agent. | Strong — publisher actively delegated. | +| `adagents_authoritative` | Discovered via the manager file's own `properties[]` carrying the publisher's domain (per [adcp#4825 inline resolution rule](https://github.com/adcontextprotocol/adcp/issues/4825)). | Medium — publisher named in manager file but didn't host the delegation themselves. | +| `ads_txt_managerdomain` | Discovered via the publisher's `ads.txt` `MANAGERDOMAIN=` directive pointing to the manager file. | Weakest — the [`managerdomain` fallback safety rule](/dist/docs/3.2.0-beta.4/governance/property/adagents#safety-rules-for-this-fallback) is the only positive cross-check. | + +The directory verifies the `managerdomain` safety rule before returning a row with `discovery_method: ads_txt_managerdomain` — this is the directory's main value-add over a per-operator `ads.txt` crawl. + +### `status` values + +| Value | Meaning | +|---|---| +| `authorized` | Selector resolves to ≥ 1 property under this publisher_domain. The normal case. | +| `revoked` | Publisher previously authorized the agent and now lists this `publisher_domain` in `revoked_publisher_domains[]` of an authoritative file. Emitted as a tombstone on the first sync after revocation lands, then dropped. Lets operators propagate revocations without polling each publisher's cache TTL. | + +`unbound`, `pending`, `unreachable`, and `no_properties` are **intentionally not part of v1**. The directory only indexes publishers whose `adagents.json` was successfully fetched and references the agent. If a publisher disappears, the directory drops it from results rather than returning a tombstone (consumers track membership via set-diff against prior pages). + +## HTTP semantics + +| Status | Meaning | +|---|---| +| `200 OK` | Lookup succeeded. Body MAY have empty `publishers[]`. | +| `400 Bad Request` | Malformed `agent_url`, invalid cursor, unknown `status` value, or `status` supplied as a comma-separated list rather than repeated keys. | +| `404 Not Found` | Directory has never indexed any publisher referencing this `agent_url`. **Distinct from `200` + empty** (which means the directory has indexed this agent, but no current authorizations resolve). | +| `429 Too Many Requests` | Rate limit. `Retry-After` header set. Bucket key: `agent_url` (anonymous) plus IP (defense-in-depth). | +| `5xx` | Directory error. Consumer SHOULD retry with backoff. | + +The endpoint sets `Cache-Control` and `ETag`. Conditional `GET` (`If-None-Match`) is the wire-level cache mechanism; `directory_indexed_at` in the body is the freshness anchor for consumer logic. + +## Authentication + +V1 is unauthenticated. Publisher `adagents.json` files are public; the inverse map is public. If rate-limiting graduates from IP-based to identity-based, the path is a separate RFC layering [RFC 9421](https://datatracker.ietf.org/doc/html/rfc9421) request signing keyed off the agent's published JWKS — the agent proves it controls `agent_url` by signing the request. Out of scope for this RFC. + +## Pagination + +Cursors are opaque. Treat them as substitutable strings and pass them back verbatim. The directory MAY change cursor format without notice; consumers MUST NOT parse cursor contents. + +A cursor remains valid for at least one directory refresh cycle. Past that, the directory MAY return `400` with `cursor_expired` or `200` with re-traversal from the start — both are conforming. Consumers SHOULD record the wall-clock time of the prior request and refuse to use cursors older than 24 hours. + +## Relationship to other primitives + +The AAO directory complements the existing SDK primitives: + +| Question | Primitive | Direction | +|---|---|---| +| Is *this* agent listed in *this* publisher's `adagents.json`? | `verify_agent_authorization(adagents_data, agent_url)` | Push (publisher → agent) | +| Given a list of publishers, which authorize my agent? | `fetch_agent_authorizations(agent_url, publisher_domains)` | Pull, caller-supplied list | +| **Which publishers authorize my agent?** | **`GET /v1/agents/{agent_url}/publishers`** | **Pull, directory-supplied list** | + +The first two answer questions where the operator already knows the publisher set. The directory endpoint answers the operator's actual sync-time question: "what's my publisher set?" + +The recommended workflow: + +1. Call `GET /v1/agents/{agent_url}/publishers` to discover the publisher set. +2. For each `publisher_domain` in the response, the operator MAY call `verify_agent_authorization` against the publisher's own `adagents.json` to re-confirm against the trust root. The directory's `last_verified_at` reduces but does not eliminate the need for per-domain verification on critical paths. +3. Use the response's `properties_authorized` / `properties_total` for operator-facing scope summaries, and the `signing_keys_pinned` flag to surface which agents must publish a JWKS matching the publisher's pin. +4. Operators running a divergence detector (catching cases where the directory and the publisher's live `adagents.json` disagree) SHOULD request `?include=properties` and compare the directory's `property_ids[]` against a federated fetch as a set, not as a count. A publisher rotating N properties produces equal counts on both sides; only set-comparison catches it. + +## Relationship to `publisher_properties` inline resolution + +On managed-network-shape parent files (per [adcp#4825 inline resolution rule](/dist/docs/3.2.0-beta.4/governance/property/adagents#resolution-paths)), the directory computes `properties_total` from the parent file's inline `properties[]` filtered by `publisher_domain`. Strict federation at this scale would require N HTTP fetches per directory refresh per publisher — the same scale problem operators have, moved one layer up. The directory uses the inline resolution rule the spec endorses. + +## Out of scope (v1) + +- **Authentication.** Public endpoint, anonymous rate limiting. Identity-bound limits arrive in a separate RFC if needed. +- **Cross-directory federation.** Single directory. The endpoint shape is defined such that multiple AAO-compatible directories could implement it; discovery of which directory to query is configuration today. +- **Push notification of new authorizations.** Poll-based v1. +- **Full property objects inline.** `?include=properties` returns the resolved `property_ids[]` only — not the property objects themselves. Consumers with the IDs can fetch detail via existing per-domain primitives. + +## See also + +- [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) — the trust root. +- [Managed Network Deployment](/dist/docs/3.2.0-beta.4/governance/property/managed-networks) — the canonical multi-publisher pattern this endpoint indexes. +- [adcp#4825](https://github.com/adcontextprotocol/adcp/issues/4825) — `publisher_properties` inline resolution rule the directory's count fields depend on. diff --git a/dist/docs/3.2.0-beta.4/aao/org-admins.mdx b/dist/docs/3.2.0-beta.4/aao/org-admins.mdx new file mode 100644 index 0000000000..7af9712a19 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/org-admins.mdx @@ -0,0 +1,76 @@ +--- +title: AAO for Org Admins +description: What organization admins can do — manage members, change tier, view billing, configure brand and agents. +"og:title": "AdCP — AAO for Org Admins" +--- + +# AAO for Org Admins + +This page is for the person at your company who manages the AgenticAdvertising.org account: seat allocation, billing, brand configuration, agent declarations. For end-user docs see [AAO for Members](/dist/docs/3.2.0-beta.4/aao/users). For Addie's full tool list, see the [Addie Tool Reference](/dist/docs/3.2.0-beta.4/aao/addie-tools). + +You're an org admin if your account has the `admin` or `owner` role within your organization on AAO. The first person to set up a paid org is automatically the owner. + +## Membership tiers + +All AAO memberships are annual Stripe subscriptions. Upgrades prorate automatically; downgrades take effect at the next renewal. + +| Tier | Price | Contributor seats | Community-only seats | Payment | +|---|---|---|---|---| +| Explorer | $50/yr | 0 | 1 | Credit card | +| Professional | $250/yr | 1 | 1 | Credit card | +| Builder | $2,500/yr | 5 | 5 | Credit card | +| Partner | $10,000/yr | 10 | 50 | Credit card or invoice | +| Leader | $50,000/yr | 20+ | Unlimited | Credit card or invoice | + +**Contributor seats** include Slack, working groups, voting rights, directory listing, and everything in community-only. **Community-only seats** include Addie, certification, training, regional chapters — for team members who need to learn but don't need active collaboration access. + +## Manage seats + +- **Invite a teammate.** Ask Addie *"invite [email] to my org"* — she sends a Stripe-backed seat invitation. You must be admin or owner. +- **Promote / demote.** Today this is escalation-only — ask Addie *"set [email] as admin in my org"* and she'll route the request. We're working on self-serve. +- **Remove a member.** Escalation; the team handles this carefully so no certification credit is lost. + +## Billing + +- **View invoices.** Ask Addie *"show my invoices"* or visit [agenticadvertising.org/dashboard/billing](https://agenticadvertising.org/dashboard/billing). Org admins see the full org billing history. +- **Update payment method / billing address.** Use the Stripe customer portal — link via *"open my billing portal"* (Addie has `create_customer_portal_session`). +- **Generate an invoice or payment link.** *"Send me an invoice for Builder tier"* triggers `send_invoice` → confirm → `confirm_send_invoice`. +- **Apply a coupon.** Tell Addie the coupon ID when generating the invoice. +- **Upgrade tier.** *"Upgrade us to Partner"* — Stripe prorates the difference for the remainder of the current period. +- **Downgrade tier.** Same flow; takes effect at next renewal. + +For refunds, custom contracts, currency changes, or out-of-cycle credits, Addie escalates to a human. + +## Brand identity + +Your `brand.json` published at `/.well-known/brand.json` is the canonical identity for your company in the AdCP ecosystem. AAO uses it to validate property authorizations and to enable agent discovery. + +- **Build a brand.json.** [agenticadvertising.org/brand](https://agenticadvertising.org/brand) is the visual builder. +- **Verify domain ownership.** Ask Addie *"verify my brand for [domain]"* — she issues a DNS challenge via `request_brand_domain_challenge`. Add the TXT record, then *"check my brand verification"* (`verify_brand_domain_challenge`). +- **Property catalog.** Properties listed in your brand.json are auto-discovered. To check what AAO has resolved for your domain, ask *"what properties are resolved for [domain]?"*. + +## Agent declarations (adagents.json) + +If you're a publisher, you publish `/.well-known/adagents.json` declaring which agents are authorized to sell your inventory. + +- **Build an adagents.json.** [agenticadvertising.org/adagents](https://agenticadvertising.org/adagents). +- **Validate.** Ask Addie *"validate my adagents.json"* — `validate_adagents` checks shape and resolves authorizations. +- **Check a sales agent's status.** *"What's the status of [agent URL]?"* runs `get_agent_status`, which returns the registry's cached health, declared capabilities, and the most recent comply storyboard verdict per track. For an on-demand live test, ask Addie to *"evaluate [agent URL]"* — `evaluate_agent_quality` runs the comply suite right now. +- **Listing not visible?** First check: is your member profile complete and your tier active? Then: *"check property resolution for [domain]"* — Addie can diagnose whether the registry crawler picked up your file. + +## Working group and committee leadership + +- **Lead a working group.** Working group leads can `list_committee_documents`, `create_working_group_post`, and approve/decline contributor membership requests. +- **Council leadership.** Council leads have `attach_content_asset` and `propose_content` permissions on council resources. + +Ask Addie *"what can I do as a [WG/council] lead?"* and she'll list the leader-only tools available to your role. + +## What Addie escalates rather than self-serves + +- Tier changes outside the standard upgrade flow (custom contracts, prorations on invoice). +- Refunds, voids, or out-of-cycle credits. +- Member promotions / demotions / removals. +- Account merges or domain changes after onboarding. +- Anything involving deleted or orphaned data. + +For these, Addie collects context and routes to the AAO team — usually with a 1–2 business day SLA. diff --git a/dist/docs/3.2.0-beta.4/aao/users.mdx b/dist/docs/3.2.0-beta.4/aao/users.mdx new file mode 100644 index 0000000000..167e1047f4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/aao/users.mdx @@ -0,0 +1,64 @@ +--- +title: AAO for Members +description: What AgenticAdvertising.org members can do — sign-in, certification, working groups, perspectives, directory listings, and asking Addie for help. +"og:title": "AdCP — AAO for Members" +--- + +# AAO for Members + +This page covers what an AAO member — someone with an active membership of any tier — can do on AgenticAdvertising.org and through Addie. For organization admins (people who manage their company's seats and billing), see [AAO for Org Admins](/dist/docs/3.2.0-beta.4/aao/org-admins). For the full list of Addie's tools, see the [Addie Tool Reference](/dist/docs/3.2.0-beta.4/aao/addie-tools). + +## Sign in and link your account + +- **Sign in.** Go to [agenticadvertising.org](https://agenticadvertising.org) and sign in with email or Google. New visitors get a free anonymous Addie session; signing in unlocks member tools. +- **Link Slack.** If you joined the AAO Slack workspace, ask Addie *"link my account"* in any DM and she'll generate a personalized sign-in link. After signing in, your Slack identity is permanently linked. +- **Lost your link?** Ask Addie *"send me my sign-in link"* — she has a `get_account_link` tool that works in any channel. + +## Certification (AdCP Academy) + +| Tier | Price | What you get | +|---|---|---| +| Tier 1 — AdCP Basics | Free, no membership required | Three foundation modules, ~90 min | +| Tier 2 — AdCP Practitioner | Any active membership ($50+/yr) | Basics + one role-specific track + build project | +| Tier 3 — AdCP Specialist | Any active membership ($50+/yr) | Practitioner + a specialist capstone in one of five areas | + +Ask Addie: +- *"Start module A1"* — begins or resumes the relevant module in your current tier. +- *"Where am I in certification?"* — she'll list completed modules and what's next. +- *"What's the next step in my Practitioner track?"* — track-aware progression. + +## Working groups, councils, and chapters + +- **Browse working groups.** Ask *"what working groups are active?"* or visit [agenticadvertising.org/working-groups](https://agenticadvertising.org/working-groups). +- **Join a working group.** Tell Addie *"I want to join the [name] working group"* — Professional tier and above can join contributor-track WGs; Explorer tier has read-only access via the website. +- **Express council interest.** Councils require nomination; Addie can record your interest with `express_council_interest`. +- **Find your local chapter.** Ask *"is there an AAO chapter in [region]?"* — chapters are member-run and most accept newcomers without a separate join flow. + +## Perspectives (publishing on AAO) + +Members can publish *perspectives* — short articles, op-eds, and reports — on agenticadvertising.org under Stories. + +- **Submit a draft.** Ask Addie to *"propose a perspective"* with your title and content (or paste a Google Doc link — she'll read it via `read_google_doc`). +- **Editorial review.** Submitted perspectives go to `pending_review`. AAO admins review and approve, request edits, or decline. +- **Cover illustration.** Members get monthly free illustration generation. Ask *"generate a cover for my perspective"* once it's submitted. +- **Edit after publishing.** Use the edit button on the perspective page; if it's missing, ask Addie to investigate. + +## Directory listing + +- **Get listed.** Members on Professional tier and above get a directory listing on agenticadvertising.org/registry. Ask Addie *"set up my directory listing"* and she'll walk through company name, description, offerings, contact, and visibility. +- **Update your listing.** Ask *"update my directory listing"* — Addie has `update_company_listing`. +- **Add your logo.** *"Update my company logo to [URL]"* — `update_company_logo`. +- **Brand verification.** If you publish at an owned domain, ask *"verify my brand for [domain]"* and Addie issues a DNS challenge via `request_brand_domain_challenge`. + +## Profile + +- **View / update profile.** *"Show my profile"* / *"update my profile"* (`get_my_profile`, `update_my_profile`). +- **Profile photo.** Upload via the profile page on the website. If the upload control is missing, ask Addie to escalate. +- **Member portrait.** Members on Builder tier and above get an auto-generated graphic-novel portrait — ask *"generate my portrait"*. + +## What Addie can't do for you + +- Change your tier or process refunds — that's an org-admin action; ask the team via *"escalate to admin"*. +- Promote someone to admin in your org — escalation only. +- Delete an account — escalation; admins handle this carefully. +- Invent a tool that doesn't exist. If Addie says she has a tool that you can't find on this page or the [Addie Tool Reference](/dist/docs/3.2.0-beta.4/aao/addie-tools), she's probably wrong — push back and ask her to verify. diff --git a/dist/docs/3.2.0-beta.4/accounts/overview.mdx b/dist/docs/3.2.0-beta.4/accounts/overview.mdx new file mode 100644 index 0000000000..379ea99efb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/overview.mdx @@ -0,0 +1,404 @@ +--- +title: Accounts Protocol +sidebarTitle: Overview +description: "AdCP Accounts Protocol defines the commercial layer for advertising transactions — billing, operator authorization, and usage reporting between buyers, brands, and vendor agents." +"og:title": "AdCP — Accounts Protocol" +--- + +The Accounts Protocol defines the commercial layer beneath all AdCP vendor protocols. Every transaction — a media buy, a data signal, a content standards check — happens between parties that have a commercial relationship. The Accounts Protocol establishes that relationship and provides consumption reporting so vendors can track how their services were used. + +## The commercial model + +Seven questions underlie every AdCP transaction: + +| Question | Answered by | Mechanism | +| ---------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Who is the advertiser? | Brand registry | `brand.domain` resolves to `brand.json` | +| Who operates on the brand's behalf? | Brand registry | `authorized_operators` in `brand.json` declares who can buy on the brand's behalf | +| How does the operator authenticate? | Seller capabilities | `require_operator_auth` determines who must authenticate and which account reference shape is expected. | +| What am I allowed to do on this account? | Caller scope | The `authorization` object on each per-account entry in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses describes `allowed_tasks`, `field_scopes`, `scope_name`, and `read_only` for the calling agent. See [Caller authorization](#caller-authorization) below. | +| Who gets billed? | Account terms | Buyer passes `billing` in `sync_accounts` — `operator`, `agent`, or `advertiser` — when a choice is needed. A lazy-provisioning seller uses an unambiguous capability or onboarding default. | +| Where is currency selected? | Seller capabilities | `supported_account_currency_modes` declares whether `currency` is fixed on the advertiser account, selected per media buy, or both. | +| Which calendar timezone applies? | Account capabilities | `account.timezone` declares seller-fixed versus account-fixed behavior. `Account.timezone` is the operational default; reporting, billing, or budget capabilities explicitly declare when they use another clock. | +| What was consumed? | Usage reporting | `report_usage` informs vendor agents how their services were used after delivery | + +The seller declares the account model in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) via `require_operator_auth`. That field declares who must authenticate; it does not by itself declare whether OAuth is used, whether `list_accounts` is exposed, or which `sync_accounts` modes are supported. + +When `require_operator_auth` is `true` (**account-id namespaces**), operators authenticate independently and buyers pass seller-assigned `account_id` values because the seller or upstream platform owns the canonical account namespace. If a credential may access more than one account, the seller MUST expose [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) and buyers MUST resolve an explicit `account_id` before the first account-scoped request. If a credential is bound to exactly one account, the seller SHOULD expose `list_accounts` returning that singleton, and MAY omit it only when the same explicit `account_id` is supplied through another declared path or out-of-band onboarding. + +When `require_operator_auth` is `false` (**buyer-declared accounts**), the agent is trusted and account-scoped calls use the natural key (`brand` + `operator`). Most sellers provision these relationships through [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts). A seller MAY instead lazily provision on the first account-scoped request when billing and every other required setting are unambiguous from capabilities or the authenticated agent's onboarding defaults. A lazy-provisioning seller MUST keep accepting the natural key and MUST expose [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) for recovery. If buyer input is required before use, the seller MUST expose `sync_accounts`. + +Follow [Provision a seller-mediated account](/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough) for a complete buyer-declared workflow from discovery through human setup, activation, and first spend. + +An **ad network** may use both models simultaneously — buyer-declared accounts on the buyer-facing side (the network is agent-trusted) and an account-id namespace with each underlying platform (the network authenticates as an operator). See the [Sponsored Intelligence guide — account model for networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks#account-model-for-networks) for the full account chain: `buyer agent → network (buyer-declared) → AI platform (account-id namespace)`. + +After delivery, the orchestrator calls [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) to inform vendor agents (signals, governance, creative) how their services were consumed. This is not settlement — it's consumption reporting so the vendor can track earned revenue and verify billing. + +## Scope + +The Accounts Protocol applies across all vendor protocols. An orchestrator establishes an account once per brand/operator pair per vendor agent and reuses the same account reference across all interactions with that agent: + +| Vendor Protocol | Account reference used for | +| --------------- | -------------------------------------------------------- | +| Media Buy | Rate cards, invoicing, campaign attribution | +| Signals | Per-account pricing options, activation, usage reporting | +| Governance | Content standards billing | +| Creative | Creative service billing | + +The account reference may be a seller/storefront-assigned `account_id` (seller-owned namespaces, usually `require_operator_auth: true`) or a buyer-declared advertiser key — `brand` + `operator` + optional `operator_unit`, `currency`, buyer-selected `timezone`, and `sandbox` (`require_operator_auth: false`). In this vocabulary, **brand identity** is the BrandKey projection (`domain`, optional `brand_id`, canonicalized `countries[]`); **operator identity** is the operator domain plus optional `operator_unit.id`; and **advertiser account identity** is the complete natural key, including fixed currency, buyer-selected account timezone, and sandbox disposition. Mutable `operator_unit.name` and broader BrandRef overrides are not identity. `operator_unit.id` is deliberately separate from the seller's `account_id`. For buyer-declared accounts, the current complete natural-key `AccountRef` MUST round-trip through `list_accounts` and remain valid on subsequent calls, even if the seller also echoes an internal `account_id`. After a capability-gated identity rekey, the former natural key is tombstoned and returns `ACCOUNT_MOVED` to authorized callers rather than resolving or provisioning another account. See [Account references](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) for details. + +`billing` names the party the seller invoices for this account relationship. It is not a payment rail or settlement selector. AdCP does not currently standardize per-media-buy choice between an intermediary clearing flow and direct settlement; implementations must not encode that distinction by silently changing the meaning of `billing`. + +## Account Status Lifecycle + +Accounts progress through a defined set of states. Terminal states (`rejected`, `closed`) allow no further transitions. + +``` +sync_accounts ──▶ pending_approval ──▶ active + │ │ + │ (seller declines) ├── (credit limit / funds depleted) + ▼ │ ▼ + rejected (terminal) │ payment_required + │ │ (buyer resolves billing) + │ ▼ + │ active + │ + ├── (seller suspends) ──▶ suspended + │ │ + │ (seller reactivates) ◀─┤ + │ │ + │ └──▶ closed (terminal) + │ + └── (seller or buyer closes) ──▶ closed (terminal) +``` + +**Transition rules:** + +- `pending_approval` → `active`: seller approves after credit/contract/identity review +- `pending_approval` → `rejected`: seller declines. Terminal — buyer must submit a new account request. +- `active` → `payment_required`: automatic when credit limit is reached or funds are depleted +- `payment_required` → `active`: when the buyer resolves the outstanding balance. Sellers MAY auto-transition or MAY require manual re-activation. +- `active` → `suspended`: seller-initiated (policy violation, billing dispute, fraud review). Sellers MUST notify orchestrators via webhook. +- `suspended` → `active`: seller-initiated reactivation +- `suspended` → `closed`: seller-initiated permanent closure +- `active` → `closed`: seller or buyer-initiated permanent closure. Terminal. +- Sellers MUST reject operations on accounts in terminal states with `ACCOUNT_NOT_FOUND` or an appropriate error + +### Operations by Account Status + +Account status acts as a gate on which tasks are permitted. Read-only operations are always available; mutation operations are restricted based on status. + +| Task | `active` | `pending_approval` | `payment_required` | `suspended` | `rejected` / `closed` | +| ------------------------ | -------- | ------------------ | ------------------ | ----------- | --------------------- | +| `list_accounts` | Yes | Yes | Yes | Yes | Yes | +| `get_account_financials` | Yes | Yes | Yes | Yes | No | +| `get_products` | Yes | No | Yes | No | No | +| `create_media_buy` | Yes | No | No | No | No | +| `update_media_buy` | Yes | No | Yes | No | No | +| `get_media_buys` | Yes | No | Yes | Yes | No | +| `sync_creatives` | Yes | No | Yes | No | No | +| `sync_catalogs` | Yes | No | Yes | No | No | +| `sync_event_sources` | Yes | No | Yes | No | No | +| `report_usage` | Yes | No | Yes | Yes | No | + +- `payment_required` blocks new spend (`create_media_buy`) but allows managing existing buys and resolving setup. Sellers SHOULD also reject `new_packages` within `update_media_buy` when the account is in `payment_required`, since adding packages is functionally equivalent to new spend. +- `suspended` allows read-only access to existing data but blocks all mutations +- Sellers MUST return `ACCOUNT_SUSPENDED` for blocked operations on suspended accounts and `ACCOUNT_PAYMENT_REQUIRED` for blocked operations on payment-required accounts + +## Caller authorization + +Not every caller with access to an account has the same grant. A vendor agent may issue one calling agent a full scope and another agent a narrow read-plus-update scope. Authentication confirms the caller is who they claim to be; authorization answers "what is this caller allowed to do on this account?" + + + **Applies to every vendor protocol.** The authorization mechanism described + here is part of the shared Accounts Protocol — it applies to every agent that + implements `sync_accounts` / `list_accounts`: media-buy sales agents, signals + agents, governance agents, creative agents, brand agents. Signals agents scope + activation vs. catalog access; governance agents scope audit read vs. plan + management; creative agents scope library read vs. upload. Only the standard + named scope `attestation_verifier` is Media Buy Protocol-specific (it binds to + the **AAO Verified (Live)** qualifier); the rest of the machinery — + `allowed_tasks`, `field_scopes`, `read_only`, `custom:`-prefixed scopes — is + protocol-neutral. + + +**Schema**: [`/schemas/3.2.0-beta.4/core/account-authorization.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/account-authorization.json) + +Vendor agents that support scope introspection attach an `authorization` object to each per-account entry in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses: + +```json +{ + "account_id": "acc_acme_compliance", + "name": "Acme c/o AAO Compliance", + "status": "active", + "billing": "operator", + "authorization": { + "allowed_tasks": [ + "get_adcp_capabilities", + "get_products", + "get_media_buys", + "get_media_buy_delivery", + "list_creatives", + "update_media_buy" + ], + "field_scopes": { + "update_media_buy": ["reporting_webhook"] + }, + "scope_name": "attestation_verifier", + "read_only": false + } +} +``` + +### Fields + +| Field | Description | +| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `allowed_tasks` | Canonical snake_case task names the caller may invoke against this account. Absence of a task MUST be read as "not permitted" — invoking an absent task returns `SCOPE_INSUFFICIENT`. | +| `field_scopes` | Optional per-task allowlist of request fields the caller may set. Keys are task names; values are field paths. When a task appears here, any field outside the allowlist returns `FIELD_NOT_PERMITTED`. Implicit framing fields — typed entity references (`account`, `media_buy_id`, `package_id`, `creative_id`, `signal_id`, `capability_id`, `format_option_ref`, deprecated `format_id`, `proposal_id`, `plan_id`, `session_id`), concurrency/idempotency (`revision`, `idempotency_key`), buyer-side correlation (`buyer_ref`, `po_number`), mode flags (`dry_run`), pagination (`pagination`, `cursor`, `max_results`), and envelope fields (`context`, `ext`, `adcp_major_version`, `push_notification_config`) — are always permitted and do not need to appear in the allowlist. The list is non-exhaustive: any other typed entity-id parameter or query-shaping field on a read task SHOULD be treated as framing. | +| `scope_name` | Optional named scope identifier. Only `attestation_verifier` is standardized (media-buy-specific, binds to the **AAO Verified (Live)** qualifier); agent-defined names MUST use the `custom:` prefix so typos of the standard value fail schema validation rather than pass through. | +| `read_only` | Convenience flag. When true, mutations return `READ_ONLY_SCOPE` regardless of whether the task is in `allowed_tasks`. Omission is equivalent to `false`. Callers MUST NOT infer read-only from `allowed_tasks` alone. | + +**AdCP 3.2 compact product tools.** Authorization names the actual task. A `get_products` grant does not silently authorize `request_proposals`, `refine_proposals`, or `decline_proposals`; sellers grant the proposal lifecycle explicitly and may scope its compact top-level fields independently. A read-only grant may permit `list_products` but rejects the three mutation-capable proposal tools. + +### Semantics of presence and absence + +- **Present**: the vendor agent asserts the shape reflects its enforcement for this caller on this account at this moment. Stale-by-seconds is fine; systematically-divergent is non-conformant. +- **Absent on a single account**: the vendor agent is not telling the caller their scope for that account. Caller falls back to error-driven discovery (try the task, handle the RBAC error codes). +- **Absent on all accounts**: the vendor agent does not implement scope introspection. Callers MUST NOT infer access from absence — the vendor agent may still enforce scope locally and return `SCOPE_INSUFFICIENT` / `READ_ONLY_SCOPE` / `FIELD_NOT_PERMITTED` on any task call. +- **`authorization` is optional for 3.x**. Vendor agents that want to avoid a breaking change can defer populating it. Populating is strictly additive — it lets callers preempt errors they would otherwise discover by trying. + +Vendor agents claiming the `attestation_verifier` standard scope (Media Buy Protocol-specific) **MUST** populate `authorization` — the **AAO Verified (Live)** attestation flow depends on verifying the advertised scope matches enforcement. + +### Identity binding, refresh cadence, and consistency + +The `authorization` object is **implicitly scoped to the `(caller identity, account_id)` tuple** at read time. The same account returned to a different authenticated caller MAY return a different `authorization` object — that's the point of the RBAC model. Vendor agents MUST resolve caller identity from the authenticated request (not from any client-supplied field) and MUST bind the returned `authorization` to that resolved identity. + +**Refresh cadence.** + +- Callers SHOULD re-read `authorization` at least every **300 seconds** of active use against an account, via `sync_accounts` or `list_accounts` (filtered by the held `account`). +- Vendor agents MUST reflect operator-initiated scope changes in `sync_accounts` / `list_accounts` responses **within 300 seconds** of the change being made. A compliant caller polling every 300s sees operator changes within at most one refresh cycle. +- Vendor agents MAY cache the `authorization` object briefly but MUST NOT cache past 300 seconds without revalidation. +- The 300s figure is a floor, not a target — vendor agents whose scope changes more frequently SHOULD surface them faster, and callers running **AAO Verified (Live)** attestation SHOULD probe at the check-7 cadence (at least once per rolling window, plus on every observed scope change). + +**Consistency.** + +For a given `(caller identity, account_id)` tuple, sequential reads within the refresh window MUST return identical `authorization` objects, modulo operator-initiated scope changes. Flicker from load-balanced or eventually-consistent backends — two reads 10 seconds apart returning different `allowed_tasks` because they hit different replicas — is non-conformant. Compliance engines and coding agents rely on scope stability for state tracking; a vendor agent that cannot guarantee it MUST omit `authorization` rather than populate it inconsistently. + +This is the concrete form of the "systematically-divergent is non-conformant" guarantee from the presence semantics above — it's verifiable: a conformance check can read the same account twice from the same identity inside the refresh window and diff the results. + +### Buyer response to SCOPE_INSUFFICIENT within the refresh window + +A single `SCOPE_INSUFFICIENT` response is observationally indistinguishable between two causes: a seller replica that has not yet propagated a valid grant (transient infrastructure artifact — will resolve), and a legitimate scope reduction by the operator (persistent — must surface). Before classifying the error as a definitive `correctable` signal requiring operator intervention, buyers MAY exhaust a small bounded retry budget to disambiguate the two: + +- **Retry budget:** no more than 3 attempts, each separated by 1–5 seconds of jittered backoff. This is disambiguation logic — establishing whether the scope is genuinely insufficient before trusting the `correctable` classification — not a recovery action for a correctable error. +- **Not the 300s window:** the retry budget is not the seller's propagation SLA. Buyers SHOULD NOT wait out the full 300-second window on every false negative; up to 15 seconds of accumulated backoff delay is sufficient to absorb typical replica lag. +- **After retries exhaust:** buyers MUST surface the error. "Surface" means: return a structured error to the calling layer (including account ID, the failed task, and `error.details.retry_count` with the number of attempts made) AND ensure the failure is visible in an operator-accessible channel — a structured log, dashboard alert, or notification. The escalation mechanism is implementation-defined; the requirement is that the error is not silently swallowed. + +`READ_ONLY_SCOPE` follows the same bounded-retry logic when the buyer suspects grant-propagation lag (a replica lagging on a write-grant update). Caution: if write access was recently _revoked_, a stale replica may accept a mutation that the revoked scope should have rejected. If bounded retries succeed, buyers MUST re-read `authorization` before treating the result as reliable — and if re-reading confirms that write access has been revoked, buyers MUST surface an alert to the operator flagging the mutation as potentially unauthorized; they MUST NOT silently accept it as correct. + +`FIELD_NOT_PERMITTED` does not follow this pattern. The agent-autonomous recovery path — strip the disallowed field and resubmit — supersedes the retry consideration. Buyers MUST NOT retry the identical failing request for `FIELD_NOT_PERMITTED`; they SHOULD correct and resubmit immediately. + +See [Authorization (RBAC)](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#authorization-rbac) for the normative retry exception clause on these codes. + +### Standard named scope: `attestation_verifier` + +Media-buy sales agents advertising **AAO Verified (Live)** readiness (tracked in [#2965](https://github.com/adcontextprotocol/adcp/issues/2965)) MUST support a named scope identified by `scope_name: "attestation_verifier"` with the following minimum shape: + +- `allowed_tasks` (at minimum — vendor agents MAY include additional read-only tasks): + - `get_adcp_capabilities` + - `get_products` + - `get_media_buys` + - `get_media_buy_delivery` + - `list_creatives` + - `update_media_buy` +- `field_scopes.update_media_buy`: `["reporting_webhook"]` +- `read_only`: `false` + +The scope deliberately omits `create_media_buy`, `sync_creatives`, and all spend-committing or targeting-modifying fields on `update_media_buy`. It is narrowly designed for continuous-observability verification — the compliance engine can discover live campaigns, read inventory and creative state, attach a verification reporting webhook, and read delivery, but cannot book inventory, modify budgets, change flight dates, upload creatives, or cancel anything. + +`get_products` and `list_creatives` are included because **AAO Verified (Live)** observability requires sanity-reading the seller's declared inventory and the creative pipeline state on active buys. + +`attestation_verifier` is Media Buy Protocol-specific — it binds to the **AAO Verified (Live)** qualifier, which is a media-buy flow (live observation requires real ad delivery). Equivalent observability scopes for signals, governance, creative, or brand agents are not yet standardized; until they are, those agents use `custom:` scopes. + + + **Reporting only — lifecycle-running is a future scope.** + `attestation_verifier` is the *reporting* half of (Live): the engine observes + campaigns the seller has trafficked, reads delivery, and attaches a + verification webhook. It deliberately cannot create campaigns, attach + creatives, or modify budgets. The complementary *lifecycle-running* role — for + the AAO-operated canonical-campaign runner contemplated in + [#3046](https://github.com/adcontextprotocol/adcp/issues/3046), where the + engine traffics canonical PSAs end-to-end through a seller's live agent — + needs a broader write scope (`attestation_runner`, tracked in + [#3561](https://github.com/adcontextprotocol/adcp/issues/3561)). Today's + brownfield enrollment (Path B) requires only `attestation_verifier`; the + runner-side scope lights up alongside the canonical-campaign runner itself. + + +### Custom scopes for other vendor protocols + +Any vendor agent MAY define custom scopes using the `custom:` prefix. Buyers MUST NOT assume any semantics from a custom-prefixed scope name — the names are agent-defined and learned out-of-band (docs, onboarding). + +Illustrative examples (not standardized — each agent names its own): + +- **Signals agent**: `custom:activation_only` — `allowed_tasks: [get_signals, activate_signal, get_adcp_capabilities]`, no catalog management, no cross-account metadata. +- **Governance agent**: `custom:audit_viewer` — `allowed_tasks: [get_plan_audit_logs, get_adcp_capabilities]`, `read_only: true`. Useful for regulators or external auditors granted read access to governance trails. +- **Creative agent**: `custom:library_reader` — `allowed_tasks: [get_adcp_capabilities, list_creatives]`, `read_only: true`. Lets a non-uploading buyer (e.g., a measurement partner) discover capabilities and library contents without mutating them. +- **Measurement agent on a buyer-orchestrator gateway account**: `custom:measurement_feedback` — `allowed_tasks: [get_media_buy_delivery, provide_performance_feedback]`, `read_only: false`. These are the fixed tasks in the first experimental gateway tier. Measurement providers do not receive seller-account grants. The exact task list is normative, so no standard named scope is needed. +- **Brand agent (rights)**: `custom:rights_viewer` — `allowed_tasks: [get_rights, get_brand_identity]`, `read_only: true`. Discovery without clearance privilege. + +The presence/absence semantics, identity binding, refresh cadence, and consistency requirements above apply uniformly across all vendor protocols — a signals agent populating `custom:activation_only` takes on the same 300s refresh obligation a media-buy seller does populating `attestation_verifier`. + +### Prior art + +The introspection model — "the caller asks the authorization-enforcing party what the grant is" — is structurally analogous to [RFC 7662 OAuth 2.0 Token Introspection](https://www.rfc-editor.org/rfc/rfc7662), specialized for AdCP's task-and-field authorization model. Embedding the response in sync/list rather than splitting it into a separate task reflects that account discovery and scope introspection are the same natural question ("what are my accounts, and what can I do with them?") — the two are returned together. + +## Transaction lifecycle + +``` +1. Discover seller capabilities + get_adcp_capabilities → require_operator_auth, supported_billing + +2. Resolve brand identity + Fetch brand.domain/.well-known/brand.json → canonical brand (domain, brand_id) + +3. Verify operator identity + Check authorized_operators in brand.json → confirm operator is permitted to buy for this brand + +4. Authenticate (if required) + When require_operator_auth is true → obtain operator credential via authorization_endpoint or out-of-band + +5. Establish account reference + Account-id namespace (require_operator_auth: true): + list_accounts() → find existing account_id for this brand/operator (upstream-managed) + or receive account_id out-of-band (seller-defined) + Buyer-declared account (require_operator_auth: false): + sync_accounts({ accounts: [{ brand, operator, billing, billing_entity? }] }) → status, billing terms + or, when all required settings are unambiguous, send the natural key on the first account-scoped task + list_accounts() → recover acknowledged brand/operator accounts after a cold start (required for lazy provisioning; otherwise SHOULD be exposed) + +6. Execute + Protocol tasks use the account reference to apply correct rates and terms + Examples: get_products(account: {...}), create_media_buy(account: {...}) + +7. Report usage + report_usage(usage: [{ account: {...}, operator_id, kind, vendor_cost, ... }]) + Informs vendor agents how their services were consumed after delivery +``` + +## Parties + +The Accounts Protocol operates with four party types. See [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) for full details on billing hierarchy, trust models, and authorized operators. + +| Party | Role | Identified by | +| ------------ | ----------------------------- | --------------------------------------------------------- | +| Brand | Whose products are advertised | `brand.domain` + optional `brand.brand_id`/`brand.countries[]` via brand.json | +| Operator | Who drives the buys | Domain (e.g., `pinnacle-media.com`) | +| Agent | What software places the buys | Authenticated session | +| Vendor agent | The seller's AdCP agent | `agent_url` | + +## Tasks + +**Account discovery (normative).** Every agent accepting accounts MUST expose at least one of `list_accounts` or `sync_accounts`. A seller-defined account-id namespace MAY omit both only when account IDs are supplied out-of-band and no account settings are managed through AdCP. Buyer-declared-account sellers normally expose `sync_accounts` to establish the relationship and SHOULD also expose `list_accounts` for cold-start recovery: a stateless buyer cannot reconstruct lost advertiser natural keys by replaying `sync_accounts`. `list_accounts` therefore returns the brand, operator, and optional operator unit, currency, and sandbox fields needed to compose the reference again. A buyer-declared seller MAY omit `sync_accounts` only when it lazily provisions from the complete natural key, can resolve every required setting without buyer input, and exposes `list_accounts`. For account-id namespaces, `sync_accounts` is settings-update only in 3.0.x unless a future explicit capability declares account-id provisioning. See [Required tasks by protocol](/dist/docs/3.2.0-beta.4/protocol/required-tasks#any-agent-accepting-accounts). + +| Task | Purpose | +| ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) | Declare brand/operator pairs and billing; provision accounts (buyer-declared accounts, `require_operator_auth: false`); optionally update settings for existing accounts when the seller exposes settings-update mode | +| [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) | Discover existing accounts in upstream-managed namespaces; recover acknowledged buyer-declared accounts after a cold start; poll status on pending accounts | +| [`get_account_financials`](/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials) | Query spend, credit, and invoice status for operator-billed accounts | +| [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) | Sync governance agent endpoints to accounts for seller-side validation | +| [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) | Inform vendor agents how their services were consumed after delivery | + +## Brand registry connection + +The `brand.domain` in account references is not an arbitrary identifier — it is the brand's domain, resolvable to a `brand.json` file that declares the brand's canonical identity, sub-brands, authorized operators, and properties. + +Vendor agents can verify buyer claims against the brand registry: if an orchestrator claims to represent `acme-corp.com`, the vendor can fetch `acme-corp.com/.well-known/brand.json` to confirm authorized operators and brand hierarchy. This makes the Accounts Protocol tamper-resistant — account relationships are grounded in publicly verifiable brand identity. + +See the [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol/index) for how brand identity resolution works. + +## Counterparty verification + +Every commercial relationship in advertising depends on knowing who you're actually doing business with. The Accounts Protocol addresses this at the protocol level through the brand registry. + +When an orchestrator references an account, the `brand.domain` identifies the advertiser. Vendor agents can fetch `brand.domain/.well-known/brand.json` to verify: + +- **Brand identity**: Is this brand who they claim to be? +- **Operator authorization**: Is the operator listed in the request actually authorized to buy on this brand's behalf? +- **Brand hierarchy**: Which sub-brands does this house portfolio include? + +This verification is grounded in publicly accessible DNS-hosted identity — not in what the buyer agent asserts, but in what the brand itself has declared. + +The `pending_approval` account state is where human review occurs: credit checks, legal agreements, and identity verification. Vendor agents that require these steps return a `setup.url` for the human to complete the process before the account becomes active. + +### Brand registry and the contribute-back pattern + +The [AgenticAdvertising.org brand registry](https://agenticadvertising.org) provides a community-maintained layer of brand identity for brands that haven't yet published their own `brand.json`. Buyer agents resolving brands before account setup can contribute data back to the registry as a byproduct of normal workflows — improving identity coverage for the ecosystem without extra effort. + +The recommended pattern for buyer agents uses three building blocks (see [#1166](https://github.com/adcontextprotocol/adcp/issues/1166)): + +| Tool | Purpose | +| ---------------- | ----------------------------------------------------------------------------- | +| `resolve_brand` | Check registry and fetch brand.json — returns canonical identity if available | +| `research_brand` | Enrich via Brandfetch and auto-save to registry as `enriched` | +| `save_brand` | Manually contribute a brand to the registry as `community` | + +```javascript +async function ensureBrand(domain) { + // 1. Check registry (brand.json or previously resolved) + const resolved = await resolveBrand(domain); + + if (resolved.errors) { + // Resolution failed — brand unknown, proceed to enrich + } else if ( + resolved.source === "brand_json" || + resolved.source === "enriched" + ) { + // Authoritative or enriched data available — confirm with user, then use + return await confirmWithUser(resolved); + } + // source === 'community': registry has a placeholder, but enrich for richer data + + // 2. Enrich via Brandfetch — auto-saves to registry as 'enriched' + const enriched = await researchBrand(domain); + if (enriched.errors) { + // Enrichment unavailable — fall back to community entry or prompt user to correct + return resolved ? await confirmWithUser(resolved) : null; + } + + // 3. Confirm with user before using enriched data + // Enrichment is third-party — user confirmation catches errors and improves registry quality + return await confirmWithUser(enriched); +} +``` + +`confirmWithUser` is a placeholder for whatever confirmation mechanism fits your UX — an explicit prompt, a review step in a workflow UI, or a low-confidence flag that triggers human review. The confirmation step is what makes the improvement loop work: enrichment data comes from third parties and isn't guaranteed to be correct. User verification before the data is used in a live campaign is what keeps the registry accurate over time. + +#### Source authority + +The registry tracks where brand data came from. Sources in descending authority: + +| Source | Meaning | Can be overwritten? | +| ------------ | ------------------------------------------------- | ------------------------ | +| `brand_json` | Brand self-declared via `/.well-known/brand.json` | No — returns 409 | +| `enriched` | Third-party enrichment (Brandfetch) | Only by higher authority | +| `community` | Manually contributed by a registry member | Yes | + +When an agent calls `save_brand` or `research_brand`, the registry applies merge logic: existing fields from a higher-authority source are preserved, and only missing fields are filled in. This respects what brands have declared while filling gaps. + +`research_brand` skips re-enrichment if the registry already has recent `enriched` data for the domain, avoiding redundant API calls. + +The full edit history for any brand — who contributed, when, and with what summary — is queryable via [`GET /api/brands/history`](/dist/docs/3.2.0-beta.4/registry/index#activity-history). + +#### Property contribute-back + +The same pattern applies to publisher properties. When a buyer agent discovers a new publisher through a sales agent interaction, it can contribute that property back to the registry via `POST /api/properties/save`. This improves property coverage for the ecosystem the same way brand contribute-back improves brand coverage. See [Registry API — save property](/dist/docs/3.2.0-beta.4/registry/index#save-property) for details. + +## Usage reporting + +Vendor agents (signals, governance, creative) are not direct participants in campaign execution — the orchestrator uses their services as inputs to a media buy. After delivery, `report_usage` tells these vendors what was consumed so they can track earned revenue and verify billing. + +`report_usage` is buyer-reported: the orchestrator computes and reports consumption. Each record carries its own `account`, `operator_id`, and `kind` (`"signal"`, `"content_standards"`, `"creative"`). The vendor agent uses the reported `pricing_option_id` to verify the correct rate was applied. + +Partial acceptance is valid — a single request can span multiple accounts, operators, and campaigns. The response confirms how many records were accepted and which (if any) failed validation. diff --git a/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough.mdx b/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough.mdx new file mode 100644 index 0000000000..5c8754ac73 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough.mdx @@ -0,0 +1,392 @@ +--- +title: Provision a seller-mediated account +sidebarTitle: Provision an account +description: "Follow an AdCP buyer-declared account from capability discovery through human setup, activation, and its first media buy." +"og:title": "AdCP — Provision a seller-mediated account" +testable: true +--- + +This walkthrough follows one buyer-declared account from discovery to its first media buy. It focuses on the case where a seller provisions the relationship but a human must finish credit or legal setup before the account becomes active. + +## Scenario + +Tomoko at Nova Motors has asked Sam's Pinnacle Agency buyer agent to buy inventory from Priya's StreamHaus sales agent. Nova Motors is the advertiser, Pinnacle Agency is the operator, and Nova Motors should receive the invoice. + +The StreamHaus account does not exist yet. Sam must discover the seller's account model, request provisioning, give Tomoko the setup link, observe activation, reconcile the webhook against the seller's current state, and only then create a media buy. + +## Before you provision + +This flow applies only when [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) returns `account.require_operator_auth: false`. In that model, the seller trusts the authenticated buyer agent to declare a brand and operator through [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts). + +If `require_operator_auth` is `true`, stop here. The operator authenticates directly and the buyer discovers a seller-assigned `account_id` through [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or receives it during out-of-band onboarding. Do not attempt natural-key provisioning unless a future capability explicitly declares it. + +Before sending the request, Sam also checks: + +- `account.supported_billing` includes the desired `advertiser` value. +- `account.notifications.supported` is `true` and the declared event types include `account.status_changed` if the buyer wants durable lifecycle notifications. +- Nova Motors' brand registry authorizes `pinnacle-agency.example` to operate for the brand. +- The authenticated buyer agent is allowed to establish this brand/operator relationship. + +When durable account notifications are unavailable, the buyer may still use the one-shot `sync_accounts.push_notification_config` callback for the original provisioning task and poll `list_accounts` for later status changes. + +## End-to-end sequence + +```mermaid +sequenceDiagram + autonumber + actor Sam + participant Buyer as Pinnacle buyer agent + participant Seller as StreamHaus sales agent + actor Tomoko + participant Governance as Governance agent + + Buyer->>Seller: get_adcp_capabilities + Seller-->>Buyer: require_operator_auth: false
supported_billing + notifications + + Buyer->>Seller: sync_accounts
brand + operator + billing
notification_configs + optional one-shot callback + Seller->>Seller: Validate agent identity, operator authorization,
billing model, and payment terms + Seller-->>Buyer: pending_approval + account_id + setup + + Buyer-->>Tomoko: Share setup.url before expires_at + Tomoko->>Seller: Complete credit and legal setup + + Seller-->>Buyer: account.status_changed
pending_approval → active + Buyer->>Seller: list_accounts(account_id) + Seller-->>Buyer: Authoritative active account snapshot + + opt Governance plan configured + Buyer->>Governance: check_governance intent
including optional invoice_recipient + Governance-->>Buyer: approved + governance_context + end + Buyer->>Seller: create_media_buy
natural-key AccountRef + optional invoice_recipient
+ governance_context when required + opt Online execution check applies + Seller->>Governance: check_governance
governance_context + planned_delivery
+ invoice_recipient when present + Governance-->>Seller: Decision + end + Seller-->>Buyer: Media buy result +``` + +## Discover the account model + +Sam calls `get_adcp_capabilities` before choosing an account workflow. The relevant capability fragment looks like this: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "supported_versions": ["3.1", "3.2-beta"], + "idempotency": { + "supported": true, + "replay_ttl_seconds": 86400 + } + }, + "supported_protocols": ["media_buy"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent", "advertiser"], + "supported_account_currency_modes": ["fixed", "per_media_buy"], + "timezone": { + "mode": "account_fixed", + "account_selection": "buyer_selected", + "supported_timezones": ["Europe/London", "UTC"] + }, + "notifications": { + "supported": true, + "registration_task": "sync_accounts", + "read_task": "list_accounts", + "event_types": ["account.status_changed"], + "supports_webhook_activity": true + } + } +} +``` + +`require_operator_auth: false` selects buyer-declared provisioning. `supported_billing` tells Sam which invoiced parties the seller accepts at the capability level; it does not guarantee that every authenticated buyer agent is commercially authorized for every advertised value. `supported_account_currency_modes` tells Sam whether to include one immutable account `currency`, omit it for per-media-buy selection, or choose either model. The timezone capability requires Sam to choose one advertised immutable account timezone and include it in the natural key. + +The `notifications` block selects the preferred observation strategy: register a durable subscriber during provisioning, treat each webhook as an invalidation signal, and repair from `list_accounts`. If the block is absent or `supported` is `false`, poll instead. + +## Request provisioning + +Sam sends a fresh `idempotency_key`, the Nova Motors brand, Pinnacle Agency as operator, the advertised billing model, and the requested payment terms. The same account entry registers a durable lifecycle subscriber. The top-level `push_notification_config` is optional and applies only to the async result of this provisioning task; it does not replace the durable subscriber. + +{/* account.status_changed is a next-minor surface; the stable v3 alias resolves to it when that release becomes current. */} + +**Schema:** [`sync-accounts-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-request.json) + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-request.json", + "idempotency_key": "2fc44b7a-6c1c-4cb9-83da-bdcce1b6c0f8", + "accounts": [ + { + "brand": { + "domain": "novamotors.example" + }, + "operator": "pinnacle-agency.example", + "timezone": "Europe/London", + "billing": "advertiser", + "billing_entity": { + "legal_name": "Nova Motors Ltd.", + "registration_number": "NM-2026-1042", + "address": { + "street": "12 Aurora Road", + "city": "London", + "postal_code": "SW1A 1AA", + "country": "GB" + }, + "contacts": [ + { + "role": "billing", + "name": "Tomoko", + "email": "accounts-payable@novamotors.example" + } + ] + }, + "payment_terms": "net_30", + "notification_configs": [ + { + "subscriber_id": "account-lifecycle", + "url": "https://buyer.pinnacle-agency.example/webhooks/adcp/accounts", + "event_types": ["account.status_changed"], + "active": true + } + ] + } + ], + "push_notification_config": { + "url": "https://buyer.pinnacle-agency.example/webhooks/adcp/tasks", + "operation_id": "provision-nova-streamhaus-2026-08-12" + } +} +``` + +Priya's seller validates the authenticated agent identity and its authority to represent the operator and brand. It either accepts the billing model and payment terms exactly as requested or rejects the account entry; it must not silently substitute a different payer or terms. + +The seller also validates the durable endpoint and completes its proof-of-control challenge before marking the subscriber active. It assigns an `account_id` before activation so later account lifecycle events can always identify an authoritative repair target, even while approval remains pending. + +The account needs a human credit and legal review, so StreamHaus returns `pending_approval`: + +**Schema:** [`sync-accounts-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-response.json) + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-response.json", + "status": "completed", + "accounts": [ + { + "account_id": "acct_streamhaus_nova_pinnacle", + "name": "Nova Motors c/o Pinnacle Agency", + "brand": { + "domain": "novamotors.example" + }, + "operator": "pinnacle-agency.example", + "timezone": "Europe/London", + "action": "created", + "status": "pending_approval", + "billing": "advertiser", + "billing_entity": { + "legal_name": "Nova Motors Ltd.", + "registration_number": "NM-2026-1042", + "address": { + "street": "12 Aurora Road", + "city": "London", + "postal_code": "SW1A 1AA", + "country": "GB" + }, + "contacts": [ + { + "role": "billing", + "name": "Tomoko", + "email": "accounts-payable@novamotors.example" + } + ] + }, + "payment_terms": "net_30", + "account_scope": "operator_brand", + "setup": { + "url": "https://onboarding.streamhaus.example/accounts/acct_streamhaus_nova_pinnacle", + "message": "Complete the StreamHaus credit application and media terms.", + "expires_at": "2026-08-19T17:00:00Z" + }, + "notification_configs": [ + { + "subscriber_id": "account-lifecycle", + "url": "https://buyer.pinnacle-agency.example/webhooks/adcp/accounts", + "event_types": ["account.status_changed"], + "active": true + } + ] + } + ] +} +``` + +The response may echo the seller's `account_id`. In this workflow, Sam stores it for webhook correlation and `list_accounts` repair. It does not replace the natural key: later buyer-declared operations continue to use Nova Motors' `brand` plus Pinnacle Agency's `operator` in `AccountRef`. + +If the request included bank details, the response must not echo `billing_entity.bank`; bank fields are write-only. + +## Complete human setup + +Sam presents `setup.message` to Tomoko and shares `setup.url` before `setup.expires_at`. The URL is optional in the protocol, so an implementation must also handle a message-only response by directing the human to the seller's established support or onboarding channel. + +Tomoko follows the StreamHaus URL, completes the credit application, and accepts the media terms. Sam must not send a media buy while the authoritative account status remains `pending_approval`. + +Setup URLs can expire or be single-use. If one is missing, expired, or already consumed, Sam re-reads `list_accounts` for current instructions rather than relying on an old response or webhook payload. + +## Observe and reconcile resolution + +After approval, StreamHaus sends the durable subscriber a complete `account.status_changed` event. The receiver verifies the webhook signature, scopes deduplication to the authenticated sender, and deduplicates retries by `idempotency_key`. + +**Schema:** [`account-status-changed-webhook.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/account-status-changed-webhook.json) + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/account-status-changed-webhook.json", + "idempotency_key": "whk_01J5C8PX4W6EJYNRDT30M0VN4A", + "notification_id": "acctchg_streamhaus_nova_20260812T143000Z", + "notification_type": "account.status_changed", + "fired_at": "2026-08-12T14:30:03Z", + "subscriber_id": "account-lifecycle", + "account_id": "acct_streamhaus_nova_pinnacle", + "previous_status": "pending_approval", + "status": "active", + "observed_at": "2026-08-12T14:30:00Z", + "reason_code": "seller_approved" +} +``` + +The event's `status` and `reason_code` are advisory. It deliberately omits the complete account and any `setup.url`. Sam immediately calls `list_accounts` with the echoed `account_id`; that authenticated read is the source of truth. + +**Request:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/list-accounts-request.json", + "account": { + "account_id": "acct_streamhaus_nova_pinnacle" + } +} +``` + +**Schema:** [`list-accounts-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/list-accounts-response.json) + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/list-accounts-response.json", + "status": "completed", + "accounts": [ + { + "account_id": "acct_streamhaus_nova_pinnacle", + "name": "Nova Motors c/o Pinnacle Agency", + "brand": { + "domain": "novamotors.example" + }, + "operator": "pinnacle-agency.example", + "status": "active", + "billing": "advertiser", + "billing_entity": { + "legal_name": "Nova Motors Ltd.", + "registration_number": "NM-2026-1042", + "address": { + "street": "12 Aurora Road", + "city": "London", + "postal_code": "SW1A 1AA", + "country": "GB" + }, + "contacts": [ + { + "role": "billing", + "name": "Tomoko", + "email": "accounts-payable@novamotors.example" + } + ] + }, + "payment_terms": "net_30", + "account_scope": "operator_brand", + "notification_configs": [ + { + "subscriber_id": "account-lifecycle", + "url": "https://buyer.pinnacle-agency.example/webhooks/adcp/accounts", + "event_types": ["account.status_changed"], + "active": true + } + ] + } + ] +} +``` + +If durable notifications are unavailable, Sam polls `list_accounts` by the known account reference until it returns `active`, `rejected`, or another state that requires action. The same repair read should run periodically even with webhooks so missed, delayed, or distrusted fires cannot leave local state stale. + +## Use the active account + +Once the authoritative snapshot is `active`, Sam can call [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). Because this is a buyer-declared account, the request uses the durable natural-key reference: + +The example below assumes no governance plan is configured. When governance applies, Sam first sends the full intended payload, including any `invoice_recipient`, to `check_governance`. Only an `approved` decision yields the `governance_context` that Sam attaches to `create_media_buy`; `conditions` requires an adjusted intent re-check, and `denied` stops the buy. A seller that declares online execution checks then validates its `planned_delivery` with the same context before committing, forwarding `invoice_recipient` as the execution check's separate top-level field when the buy supplied one. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json", + "idempotency_key": "a9f52ca1-346b-40f3-8bad-0b96381470bc", + "account": { + "brand": { + "domain": "novamotors.example" + }, + "operator": "pinnacle-agency.example" + }, + "brand": { + "domain": "novamotors.example" + }, + "start_time": "2026-09-01T00:00:00Z", + "end_time": "2026-09-30T23:59:59Z", + "total_budget": { + "amount": 50000, + "currency": "GBP" + }, + "packages": [ + { + "product_id": "streamhaus-connected-tv", + "pricing_option_id": "cpm-standard", + "budget": 50000 + } + ] +} +``` + +An optional `invoice_recipient` can override the account's default billing entity for this media buy. The seller validates that the caller is authorized to use the recipient. When governance agents are configured, the seller includes the override in [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) so the billing redirect can be approved or rejected. See [Billing entity and invoice recipient](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#billing-entity-and-invoice-recipient). + +## Obligations by party + +| Stage | Buyer agent | Seller agent | Human | +|---|---|---|---| +| Discovery | Read `require_operator_auth`, choose a value advertised in `supported_billing`, and select webhook or polling observation. | Accurately declare the supported account model, billing values, and durable notification capability. | — | +| Provisioning | Send a fresh `idempotency_key`, brand, operator, billing choice, and any requested terms. Do not send the settings-update `account` field in the same entry. | Authenticate the agent; validate brand/operator authority, billing permission, terms, and webhook control. Accept exact billing and terms or reject them without remapping. | — | +| Pending setup | Surface `setup.message` and any current URL and expiry. Do not spend yet. | Return `setup.message` for required action and, when available, a URL and expiry. Never expose write-only bank data. | Complete the seller's credit, legal, or payment steps. | +| Resolution | Deduplicate the fire, treat it as advisory, and repair through `list_accounts`. Poll when durable notifications are unavailable. | Fire `account.status_changed` to active subscribers and make the authoritative state available through `list_accounts`. | Respond to renewed setup instructions if the account is not active. | +| Media buy | Use the natural-key `AccountRef`; send an override only when authorized. | Permit new spend only for an active account. Validate `invoice_recipient` and pass it to governance when configured. | Approve any campaign-specific billing override required by local policy. | + +## Failure branches + +- **The seller requires operator authentication.** Do not use this provisioning flow. Authenticate the operator and resolve a seller-assigned `account_id` through `list_accounts` or out-of-band onboarding. +- **The billing value is not advertised.** Choose a supported value with the invoiced party's approval or stop for commercial onboarding. The seller returns `BILLING_NOT_SUPPORTED` for a seller-wide mismatch. +- **The buyer agent lacks permission for an advertised billing value.** The seller rejects with the narrower authenticated-agent billing error, such as `BILLING_NOT_PERMITTED_FOR_AGENT`. When `error.details.suggested_billing` is present, the buyer may make one autonomous retry with exactly that value. If no suggestion is present or that retry is also rejected, stop and require human onboarding; do not keep changing who owes money. +- **Payment terms are unacceptable.** The seller rejects the account entry. It must not silently change `net_30` to another term. +- **Brand or operator authorization fails.** Correct the brand registry or authenticated relationship before retrying. Reuse the same idempotency key only when retrying the same logical request after an ambiguous transport outcome; use a new key for a materially changed request. +- **Webhook validation or activation proof fails.** The seller rejects the account entry and leaves the previous subscriber set unchanged. Correct the endpoint, then retry provisioning safely. +- **The account is rejected.** Read the explanation from `warnings[]`; there is no `account.reason` field. Escalate to a human or submit a materially corrected request with a new idempotency key. +- **The setup link is absent or expired.** Fetch the current account through authenticated `list_accounts`. The lifecycle webhook never carries `setup.url`. +- **No durable notification arrives.** Poll `list_accounts`. The one-shot task callback covers only the original provisioning result and is not a lifecycle subscription. +- **The repair read is not active.** Honor the returned state. `pending_approval`, `payment_required`, `suspended`, `rejected`, and `closed` do not permit a new media buy. +- **Billing must change after provisioning.** Do not send `billing` in settings-update mode; billing is fixed at provisioning. Follow the seller's commercial process or establish the appropriate new account relationship. +- **A per-buy invoice override is rejected.** If the seller does not authorize `invoice_recipient`, or governance denies the override, the seller rejects the media buy. The buyer may use the already-authorized account default after obtaining any required fresh governance approval, or escalate to a human; it must not silently reroute the invoice. + +## Related reference + +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — account model, supported billing, and durable-notification discovery +- [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) — provisioning fields, setup results, and account-level subscriptions +- [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) — authoritative state and webhook repair +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) — account references, billing roles, and authorization models +- [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — the first spend operation after activation +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) — governance review of campaign-specific invoice recipients diff --git a/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials.mdx b/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials.mdx new file mode 100644 index 0000000000..53c98e9de3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials.mdx @@ -0,0 +1,233 @@ +--- +title: get_account_financials +description: "get_account_financials returns spend summaries, credit balances, payment status, and invoice history for operator-billed AdCP accounts. Requires account_financials capability." +"og:title": "AdCP — get_account_financials" +testable: false +--- + +Query financial status for an operator-billed account — spend summary, credit or prepay balance, payment status, and invoice history. This gives budget-aware agents the context they need to make spend decisions without leaving the protocol. + +`get_account_financials` is only available when the seller declares `account_financials: true` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). It applies to **operator-billed accounts** only. For agent-billed accounts, the agent's own billing system is the source of truth. + +**Response Time**: ~1s. + +**Request Schema**: [`/schemas/3.2.0-beta.4/account/get-account-financials-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/get-account-financials-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/account/get-account-financials-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/get-account-financials-response.json) + +## Quick start + +Check remaining credit before launching a campaign: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; + +const result = await testAgent.getAccountFinancials({ + account: { account_id: "acc_acme_001" }, +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +if ("errors" in result.data && result.data.errors) { + throw new Error(`Operation failed: ${JSON.stringify(result.data.errors)}`); +} + +const { spend, credit, payment_status } = result.data; +console.log(`Spent: $${spend?.total_spend} this period`); + +if (credit) { + console.log(`Available credit: $${credit.available_credit} of $${credit.credit_limit}`); +} + +if (payment_status === "past_due") { + console.log("Warning: payment is past due — campaigns may be paused"); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.get_account_financials( + account={"account_id": "acc_acme_001"}, + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"Spent: ${result.spend.total_spend} this period") + + if hasattr(result, 'credit') and result.credit: + print(f"Available credit: ${result.credit.available_credit} of ${result.credit.credit_limit}") + + if getattr(result, 'payment_status', None) == 'past_due': + print("Warning: payment is past due — campaigns may be paused") + +asyncio.run(main()) +``` + + + +## Request parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | object | Yes | [Account reference](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) — by `account_id` or natural key (`brand` + `operator` + optional `sandbox`). Must be an operator-billed account. | +| `period` | object | No | Date range for spend summary: `start` and `end` as ISO 8601 dates. Defaults to the current billing cycle if omitted. | + +## Response + +**Success response:** + +Returns financial data for the account. Only `account`, `currency`, `period`, and `timezone` are guaranteed — everything else depends on what the seller exposes. + +| Field | Description | +|-------|-------------| +| `account` | Account reference, echoed from the request. | +| `currency` | ISO 4217 currency code for all monetary amounts. | +| `period` | Actual period covered (`start`, `end`). May differ from requested period if adjusted to billing cycle boundaries. | +| `timezone` | IANA timezone of the seller's billing day boundaries (e.g., `America/New_York`). All dates in the response are calendar dates in this timezone. It may differ from `Account.timezone`, reporting timezone, or a feature-specific cap timezone; use this explicit value for financial periods. | +| `spend` | Spend summary: `total_spend` (amount in `currency`) and optional `media_buy_count`. | +| `credit` | Present for credit-based accounts. Contains `credit_limit`, `available_credit`, and optional `utilization_percent` (0-100). | +| `balance` | Present for prepay accounts. Contains `available` balance and optional `last_top_up` (`amount`, `date`). | +| `payment_status` | `current`, `past_due`, or `suspended`. | +| `payment_terms` | Payment terms in effect: `net_15`, `net_30`, `net_45`, `net_60`, `net_90`, or `prepay`. | +| `invoices` | Array of recent invoices: `invoice_id`, `amount`, `status` (`draft`, `issued`, `paid`, `past_due`, `void`), optional `period`, `due_date`, `paid_date`. | + +**Error response:** + +- `errors` -- Array of operation-level errors. No financial data is present. + +**Note:** Responses use discriminated unions -- you get either financial data OR `errors`, never both. + +## Common scenarios + +### Budget check before campaign launch + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; + +const financials = await testAgent.getAccountFinancials({ + account: { account_id: "acc_acme_001" }, +}); + +if (!financials.success || "errors" in financials.data) { + throw new Error("Could not check financials"); +} + +const campaignBudget = 15000; +const { credit } = financials.data; + +if (credit && credit.available_credit < campaignBudget) { + console.log( + `Insufficient credit: $${credit.available_credit} available, ` + + `$${campaignBudget} needed. ` + + `Credit utilization: ${credit.utilization_percent}%` + ); +} else { + console.log("Budget check passed — proceeding with campaign"); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + financials = await test_agent.simple.get_account_financials( + account={"account_id": "acc_acme_001"}, + ) + + if hasattr(financials, 'errors') and financials.errors: + raise Exception("Could not check financials") + + campaign_budget = 15000 + credit = getattr(financials, 'credit', None) + + if credit and credit.available_credit < campaign_budget: + print( + f"Insufficient credit: ${credit.available_credit} available, " + f"${campaign_budget} needed. " + f"Credit utilization: {credit.utilization_percent}%" + ) + else: + print("Budget check passed — proceeding with campaign") + +asyncio.run(main()) +``` + + + +### Prepay balance monitoring + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; + +const financials = await testAgent.getAccountFinancials({ + account: { + brand: { domain: "acme-corp.com" }, + operator: "acme-corp.com", + }, +}); + +if (!financials.success || "errors" in financials.data) { + throw new Error("Could not check financials"); +} + +const { balance } = financials.data; +if (balance && balance.available < 2000) { + console.log( + `Low balance warning: $${balance.available} remaining. ` + + `Consider topping up before launching new campaigns.` + ); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + financials = await test_agent.simple.get_account_financials( + account={ + "brand": {"domain": "acme-corp.com"}, + "operator": "acme-corp.com", + }, + ) + + if hasattr(financials, 'errors') and financials.errors: + raise Exception("Could not check financials") + + balance = getattr(financials, 'balance', None) + if balance and balance.available < 2000: + print( + f"Low balance warning: ${balance.available} remaining. " + f"Consider topping up before launching new campaigns." + ) + +asyncio.run(main()) +``` + + + +## Error handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Account uses agent billing — financials not available from seller | Query your own billing system for agent-billed accounts | +| `UNSUPPORTED_FEATURE` | Seller doesn't have financial data for this account or period | Verify `account_financials` capability is `true` | +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Account does not exist or is not accessible | Check account reference or re-sync | + +## Next steps + +- [list_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) -- Discover accounts and check their status +- [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) -- Check `account_financials` before calling this task +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) -- Billing models and account references diff --git a/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts.mdx b/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts.mdx new file mode 100644 index 0000000000..f0b3f29d59 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts.mdx @@ -0,0 +1,269 @@ +--- +title: list_accounts +description: "list_accounts returns all advertiser accounts an authenticated agent can operate on an AdCP vendor agent. Works across media buy, signals, governance, and creative protocols." +"og:title": "AdCP — list_accounts" +testable: false +--- + +Returns all accounts the authenticated agent can operate on this vendor agent. Use this to discover existing accounts, check status changes on pending accounts, and recover the exact account reference expected on protocol operations. + +For upstream-managed account namespaces, `list_accounts` is not optional discovery polish; it is the namespace discovery contract. The upstream platform owns the accessible account set, so buyers MUST resolve an explicit `account_id` before the first account-scoped request. If the authenticated credential can access more than one account, the seller MUST expose `list_accounts`; if it can access exactly one account, the seller SHOULD expose `list_accounts` returning that singleton so SDKs can auto-select it and still send `{ "account_id": "..." }` on required-account calls. [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) provisioning does not create account-id accounts in 3.0.x unless a future explicit capability declares that mode; if `sync_accounts` is exposed on these sellers today, use it only for settings updates against an account already identified by `account_id`. + +`list_accounts` works across all vendor protocols — media buy agents, signals agents, governance agents, and creative agents all return accounts through this same task. + +**Response Time**: ~1s. + +**Request Schema**: [`static/schemas/source/account/list-accounts-request.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/account/list-accounts-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/account/list-accounts-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/list-accounts-response.json) + +## Quick Start + +List all accounts this agent can operate: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { ListAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.listAccounts({}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListAccountsResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const account of validated.accounts) { + console.log(`${account.account_id}: ${account.name} (${account.status})`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.list_accounts() + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for account in result.accounts: + print(f"{account.account_id}: {account.name} ({account.status})") + +asyncio.run(main()) +``` + + + +## Request Parameters + +All parameters are optional. An empty request returns all accounts visible to +the authenticated caller. Use `account` when re-reading one known account by +seller-assigned `account_id` or by the complete buyer-declared natural key. + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | object | No | Exact account filter. Pass `{ "account_id": "..." }` after seller/storefront discovery, or the complete natural key (`brand`, `operator`, and optional `operator_unit`, `currency`, buyer-selected `timezone`, and `sandbox`) for buyer-declared accounts. The seller returns only matching accounts visible to the authenticated caller. | +| `status` | string | No | Filter by account status: `active`, `pending_approval`, `rejected`, `payment_required`, `suspended`, or `closed`. | +| `sandbox` | boolean | No | When true, return only sandbox accounts. When false, return only production accounts. Omit to return both. Primarily used with account-id namespaces where sandbox accounts are pre-existing test accounts on the platform. | +| `include_webhook_activity` | boolean | No | When true, request recent webhook delivery attempts for each returned account in `webhook_activity[]`. | +| `webhook_activity_limit` | integer | No | Maximum number of `webhook_activity[]` records to return per account when `include_webhook_activity` is true. Default 50, max 200. | +| `pagination` | object | No | Pagination cursor for large account sets. | + +## Response + +| Field | Description | +|-------|-------------| +| `accounts` | Array of account objects (see below) | +| `errors` | Array of errors, if the request failed | +| `pagination` | Pagination cursor for the next page, if more results exist | + +**Each account includes:** + +| Field | Description | +|-------|-------------| +| `account_id` | Seller/storefront identifier. Use it on protocol tasks when the seller declares an account-id namespace. It is distinct from `operator_unit.id`, which belongs to the buyer-side operator. May be absent when `status: "rejected"`. | +| `name` | Vendor agent's display name for the account | +| `brand` | Brand reference: `domain`, optional `brand_id`, and optional commercial-identity `countries[]`. Countries are not delivery targeting. | +| `operator` | Operator domain. Always present — when the brand operates directly, `operator` equals the brand's domain. | +| `operator_unit` | Optional operator-owned unit. `id` is stable identity; `name` is mutable display metadata. | +| `revision` | Current account optimistic-concurrency revision. Sellers advertising `account.identity_updates.supported: true` always return it; pass it in the next [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) settings update. | +| `identity_change` | Pending or rejected desired operator identity. While present, `operator` and `operator_unit` remain the current canonical identity. Poll until the change applies or is rejected. | +| `currency` | Optional immutable account currency. When present, media buys on the account must use it. | +| `timezone` | Immutable operational timezone for the account. It is the default for account-scoped calendar behavior unless a feature explicitly declares another timezone basis. | +| `status` | Current account state: `active`, `pending_approval`, `rejected`, `payment_required`, `suspended`, or `closed` | +| `billing` | Billing model in effect: `operator` or `agent` | +| `account_scope` | How the seller scoped this account: `operator`, `brand`, `operator_brand`, or `agent`. See [account scope](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-scope). | +| `payment_terms` | Payment terms agreed for this account: `net_15`, `net_30`, `net_45`, `net_60`, `net_90`, or `prepay`. Binding for all invoices when the account is active. | +| `governance_agents` | Governance agent endpoints registered on this account. Present when governance agents have been configured via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). | +| `setup` | Present when `status: "pending_approval"`. Contains `url` for completing setup and `message` explaining what's needed. | +| `authorization` | Optional. The calling agent's scope grant for this account — `allowed_tasks`, `field_scopes`, `scope_name`, `read_only`. Applies to every vendor agent type (media-buy, signals, governance, creative, brand) — the Accounts Protocol surface is shared. Vendor agents that support scope introspection SHOULD populate this; media-buy sales agents claiming the `attestation_verifier` standard scope MUST populate it. Absence means the vendor agent does not advertise introspectable scope for this account; callers MUST NOT infer access from absence and fall back to error-driven discovery via the RBAC error codes. See [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) for the full shape and semantics. | +| `notification_configs` | Account-level webhook subscribers registered via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts#account-level-webhook-subscriptions). Each entry carries `subscriber_id`, `url`, `event_types[]`, and `active`. Present when the account has any persisted subscribers. `subscriber_id` is the account-scoped logical key; re-registering the same subscriber replaces that subscriber's config. `authentication.credentials` is omitted on every entry (write-only). Use this surface to verify what's active after a sync, audit fan-out across multiple subscribers, and detect drift between buyer-side expectations and seller-side persisted state. `account.status_changed` subscribers receive status invalidation fires and repair by re-reading this `status` field. | +| `webhook_activity` | Optional recent webhook delivery attempts for this account, returned when `include_webhook_activity: true` and the seller exposes the debug log. Omitted means unsupported or not requested; `[]` means supported but no retained fires; non-empty records are most recent first. | + +For buyer-declared accounts, `list_accounts` MUST return the current canonical natural-key fields needed to use the account again. A stateless buyer can therefore take `brand`, `operator`, `operator_unit`, `currency`, buyer-selected `timezone`, and `sandbox` from the response and send the same shape as `account` on a later task. `operator_unit.name` may change without changing which account the key identifies. A requested identity in `identity_change` is not a usable account reference until it becomes canonical. + +### Single-publisher cardinality + +A seller serving exactly one publisher entity MAY return that entity as the sole account on `list_accounts` responses, regardless of calling principal. The *"Direct advertiser with single account"* example in [`list-accounts-response.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/account/list-accounts-response.json) is canonical for this case — a single-element `accounts[]` with no `pagination` envelope at all. + +Pagination conformance requiring `pagination.has_more: true` does not apply when: + +- `pagination` is absent entirely (canonical single-account shape), or +- `pagination.total_count` is present and ≤ 1 + +Runners SHOULD grade pagination-walk phases as `not_applicable` in either case. This pattern is conformant; the spec carries no `minItems` constraint on `accounts[]` and the single-account example is normative. + +## Common Scenarios + +### Poll until account becomes active + +After [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) returns `pending_approval`, poll until the account is ready: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { ListAccountsResponseSchema } from "@adcp/sdk"; + +async function waitForAccount(targetAccountId, maxAttempts = 20) { + for (let i = 0; i < maxAttempts; i++) { + const result = await testAgent.listAccounts({ status: "active" }); + + if (!result.success) { + throw new Error(`Request failed: ${result.error}`); + } + + const validated = ListAccountsResponseSchema.parse(result.data); + + if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); + } + + if ("accounts" in validated) { + const account = validated.accounts.find(a => a.account_id === targetAccountId); + if (account) { + console.log(`Account active: ${account.account_id}`); + return account; + } + } + + // Wait 30 seconds before polling again + await new Promise(resolve => setTimeout(resolve, 30_000)); + } + + throw new Error(`Account ${targetAccountId} did not become active`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def wait_for_account(target_account_id: str, max_attempts: int = 20): + for _ in range(max_attempts): + result = await test_agent.simple.list_accounts(status='active') + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + account = next( + (a for a in result.accounts if a.account_id == target_account_id), + None + ) + if account: + print(f"Account active: {account.account_id}") + return account + + await asyncio.sleep(30) + + raise Exception(f"Account {target_account_id} did not become active") +``` + + + +### Reconcile account status webhooks + +After receiving `account.status_changed`, re-read the account snapshot. The webhook tells you which account changed; `list_accounts` is the source of truth for the current status, setup hints, billing terms, and authorization. + +The [seller-mediated account provisioning walkthrough](/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough#observe-and-reconcile-resolution) shows this invalidation-and-repair pattern in context. + +```javascript +async function handleAccountStatusWebhook(req, res) { + if (!verifyWebhookSignature(req)) return res.status(401).end(); + + const fire = req.body; // account-status-changed-webhook + if (await alreadyProcessed(fire.idempotency_key)) return res.status(200).end(); + + const result = await testAgent.listAccounts({ + account: { account_id: fire.account_id }, + include_webhook_activity: true, + webhook_activity_limit: 20 + }); + + const account = result.accounts[0]; + await reconcileAccount(account); + await markProcessed(fire.idempotency_key); + return res.status(200).end(); +} +``` + +### Filter active accounts only + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { ListAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.listAccounts({ status: "active" }); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListAccountsResponseSchema.parse(result.data); + +if ("accounts" in validated) { + for (const account of validated.accounts) { + console.log(`${account.account_id}: ${account.name} — billing: ${account.billing}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.list_accounts(status='active') + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for account in result.accounts: + print(f"{account.account_id}: {account.name} — billing: {account.billing}") + +asyncio.run(main()) +``` + + + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | No accounts found for this agent | Run [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) first to establish a buying relationship | + +## Next Steps + +- [sync_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) — Sync advertiser accounts with a seller +- [sync_governance](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) — Sync governance agents to accounts +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) — Billing models, trust models, and authorized operators +- [Brand protocol](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — How vendor agents resolve brand identity from the brand's `domain` diff --git a/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage.mdx b/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage.mdx new file mode 100644 index 0000000000..d9f018a9d5 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage.mdx @@ -0,0 +1,197 @@ +--- +title: report_usage +description: "report_usage sends consumption data to AdCP vendor agents after campaign delivery — impressions served, signals queried, governance checks run — so vendors can track revenue and verify billing." +"og:title": "AdCP — report_usage" +testable: false +--- + +Reports how a vendor's service was consumed after campaign delivery. Called by orchestrators to inform a vendor agent (signals, governance, creative) what was used so the vendor can track earned revenue and verify billing. It is also used against the sales agent itself when a media buy names the buyer or a measurement vendor as the billing authority. + +Each usage record is self-contained — it carries its own `account` and `media_buy_id`. A single request can span multiple accounts and campaigns. + +**Response Time**: ~1s. + +{/* Add the /schemas/v3/ request link once the revenue-share fields ship in a stable release. */} +**Response Schema**: [`/schemas/3.2.0-beta.4/account/report-usage-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/report-usage-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `idempotency_key` | string | Recommended | Client-generated unique key for this request (UUID recommended). If a request with the same key has already been accepted, the server returns the original response without re-processing. Prevents duplicate billing on retries. | +| `reporting_period` | object | Yes | `start` and `end` as ISO 8601 date-time in UTC. Applies to all records in the request. | +| `usage` | UsageRecord[] | Yes | One or more usage records. | + +### Usage Record Fields + +Each record requires `account`, `vendor_cost`, and `currency`. Additional fields depend on the vendor type: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `account` | [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account for this record — by `account_id` or `{ brand, operator }`. | +| `vendor_cost` | number | Yes | Amount owed to the vendor for this record, in `currency` | +| `currency` | string | Yes | ISO 4217 currency code | +| `pricing_option_id` | string | Vendor: Yes | Pricing option from the vendor's discovery response ([`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals), [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives), [`list_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards), [`list_property_lists`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#list_property_lists)) or execution response ([`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative)). The vendor uses this to verify the correct rate was applied. | +| `impressions` | number | Signals: Yes | Impressions delivered | +| `media_spend` | number | percent_of_media: Yes | Media spend for percent-of-media cost verification | +| `media_buy_id` | string | Revenue share: Yes | Media buy whose selected package pricing is being reconciled. | +| `conversions` | number | No | Number of attributed conversion events. Optional analytics context for revenue share. | +| `conversion_value` | number | No | Total attributed conversion value. Optional analytics context; not the revenue-share billing basis. | +| `commissionable_value` | number | Revenue share: Yes | Settled attributed value eligible for commission. The seller verifies `vendor_cost = round_currency(commissionable_value × commission_rate)`. | +| `signal_agent_segment_id` | string | Signals: Yes | Signal identifier from `get_signals` | +| `creative_id` | string | Creative: Yes | Creative identifier from `build_creative` or `list_creatives`. Links usage to a specific creative for billing verification. A `build_creative` variant leaf earns a `creative_id` only when trafficked/added to the library — discarded best-of-N or fan-out variants are never reported here; their charge is the inline per-leaf `vendor_cost` on the `build_creative` response (the authoritative record for untrafficked leaves). | +| `build_variant_id` | string | No | When the reported `creative_id` was promoted from a specific `build_creative` variant leaf but differs from that source id, carry the source `build_variant_id` for reconciliation. On the canonical path where `creative_id` is the kept `build_variant_id`, omit this field. | +| `property_list_id` | string | Property lists: Yes | Property list identifier from `list_property_lists`. Links usage to a specific property list for billing verification. | + +For revenue-share records, `pricing_option_id` identifies the agreed rate and commission basis. `currency` must match the selected option, and `vendor_cost` must not exceed the package's commission budget. + +## Response + +| Field | Description | +|-------|-------------| +| `accepted` | Number of usage records successfully stored | +| `errors` | Validation errors for individual records. Partial acceptance is valid — accepted records are stored even when some fail. | + +## Examples + +### Signal usage — single campaign + + + +```json Request +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "reporting_period": { + "start": "2025-03-01T00:00:00Z", + "end": "2025-03-31T23:59:59Z" + }, + "usage": [ + { + "account": { "account_id": "acct_pinnacle_signals" }, + "signal_agent_segment_id": "luxury_auto_intenders", + "pricing_option_id": "po_lux_auto_cpm", + "impressions": 4200000, + "media_spend": 21000.00, + "vendor_cost": 2100.00, + "currency": "USD" + } + ] +} +``` + +```json Response +{ + "accepted": 1 +} +``` + + + +### Creative usage — ad server with CPM pricing + + + +```json Request +{ + "idempotency_key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "reporting_period": { + "start": "2026-03-01T00:00:00Z", + "end": "2026-03-31T23:59:59Z" + }, + "usage": [ + { + "account": { "account_id": "acct_acme_creative" }, + "creative_id": "cr_88201", + "pricing_option_id": "po_video_cpm", + "impressions": 2400000, + "vendor_cost": 1200.00, + "currency": "USD" + } + ] +} +``` + +```json Response +{ + "accepted": 1 +} +``` + + + +### Multi-account batch + +A single request spanning two campaigns across two accounts: + +```json +{ + "idempotency_key": "7c9e6679-7425-40de-944b-e07fc1f90ae7", + "reporting_period": { + "start": "2025-03-01T00:00:00Z", + "end": "2025-03-31T23:59:59Z" + }, + "usage": [ + { + "account": { "account_id": "acct_pinnacle_signals" }, + "signal_agent_segment_id": "luxury_auto_intenders", + "pricing_option_id": "po_lux_auto_cpm", + "impressions": 2100000, + "vendor_cost": 1050.00, + "currency": "USD" + }, + { + "account": { "account_id": "acct_nova" }, + "signal_agent_segment_id": "eco_conscious_shoppers", + "pricing_option_id": "po_eco_cpm", + "impressions": 800000, + "vendor_cost": 400.00, + "currency": "USD" + } + ] +} +``` + +### Partial acceptance + +If some records fail validation, the response identifies how many were accepted: + +```json +{ + "accepted": 1, + "errors": [ + { + "code": "INVALID_PRICING_OPTION", + "message": "pricing_option_id 'po_unknown' does not exist on this account", + "field": "usage[1].pricing_option_id" + } + ] +} +``` + +## Retry Safety + +Always include `idempotency_key` in production usage. If a request times out or returns a network error, retry with the same key — the server will return the original result without double-counting. + +An idempotent replay is transparent: the server returns the original response unchanged and does not emit a `DUPLICATE_REQUEST` error or advisory. + +Generate a fresh UUID per request, not per usage record. If you need to report additional records for the same period, submit a new request with a new key. + +## Reporting cadence + +Report at regular intervals — monthly at minimum. For campaigns with significant spend, weekly reporting gives vendor agents timely visibility into earned revenue. + +Report upon campaign completion to close out the final period. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Account reference in a usage record not found or not accessible | Verify via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts); re-run [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) if needed | +| [`INVALID_USAGE_DATA`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-usage-data) | A usage record has missing or invalid fields | Check required fields for your vendor type | +| [`INVALID_PRICING_OPTION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-pricing-option) | `pricing_option_id` not found on this account | Verify `pricing_option_id` from the vendor's discovery response | + +## Next Steps + +- [sync_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) — Sync advertiser accounts with a seller before reporting +- [Accounts Protocol](/dist/docs/3.2.0-beta.4/accounts/overview) — How account establishment and settlement fit together +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) — Billing hierarchy and operator model diff --git a/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts.mdx b/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts.mdx new file mode 100644 index 0000000000..246bfdc692 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts.mdx @@ -0,0 +1,682 @@ +--- +title: sync_accounts +description: "sync_accounts provisions buyer-declared accounts or updates settings on existing accounts with an AdCP seller agent." +"og:title": "AdCP — sync_accounts" +testable: false +--- + +Sync advertiser accounts with a seller for one or more advertiser/operator relationships, or update settings on existing accounts when the seller exposes that mode. A buyer-declared account's natural key describes the advertiser object the seller should provision: a brand, the countries where that advertiser identity applies, the operator, an optional operator-owned unit, an optional fixed currency, an optional buyer-selected immutable timezone, and whether the account is a sandbox. + +`sync_accounts` is used across all seller protocols: media buy agents, signals agents, governance agents, and creative agents. In provisioning mode it declares the buyer's intent — the seller provisions or links accounts internally. Use provisioning mode for buyer-declared accounts (`require_operator_auth: false`) and use natural keys (`brand` + `operator`) on subsequent requests. Sellers MAY echo an `account_id` as an internal handle, but they MUST continue accepting the natural-key `AccountRef` for accounts provisioned this way. For account-id namespaces, discover seller-assigned account IDs via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or out-of-band onboarding; `sync_accounts` provisioning for account-id namespaces is out of scope unless a future explicit capability declares that mode. If such a seller exposes `sync_accounts` today, use only settings-update mode keyed by `account_id`. + +For a complete `pending_approval` flow — capability discovery, human setup, durable status notification, authoritative repair, and first spend — see [Provision a seller-mediated account](/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough). + +**Response Time**: ~1s. Account provisioning is synchronous; credit and legal review may require human action (indicated by `status: "pending_approval"` with a `setup.url`). + +**Request Schema**: [`/schemas/3.2.0-beta.4/account/sync-accounts-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/account/sync-accounts-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-response.json) + +## Quick start + +Sync a single advertiser account and check the resulting status: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAccounts({ + accounts: [ + { + brand: { domain: "acme-corp.com" }, + operator: "acme-corp.com", + billing: "operator", + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAccountsResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const account of validated.accounts) { + console.log(`${account.brand.domain}: ${account.status}`); + if (account.status === "pending_approval" && account.setup?.url) { + console.log(` Complete setup at: ${account.setup.url}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_accounts( + accounts=[ + { + "brand": {"domain": "acme-corp.com"}, + "operator": "acme-corp.com", + "billing": "operator", + }, + ], + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for account in result.accounts: + print(f"{account.brand['domain']}: {account.status}") + if account.status == 'pending_approval' and hasattr(account, 'setup') and account.setup: + print(f" Complete setup at: {account.setup.url}") + +asyncio.run(main()) +``` + + + +## Request parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `accounts` | array | Yes | Array of account entries to sync (see below). | +| `delete_missing` | boolean | No | When true, accounts previously synced by this agent but not in this request are deactivated. Scoped to the authenticated agent. Default: `false`. | +| `dry_run` | boolean | No | When true, preview what would change without applying. Default: `false`. | +| `push_notification_config` | object | No | Webhook for async notifications when account status changes (e.g., `pending_approval` transitions to `active`). | + +**Account entry fields:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `account` | object | Settings update | Existing account to update, selected by `account_id` or its current natural key. Its presence selects settings-update mode and prevents provisioning side effects. | +| `revision` | integer | With `operator_identity` | Expected current account revision in settings-update mode. It is required for identity changes and optional for existing non-identity settings updates. Sellers reject stale revisions atomically with [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict). Obtain it from [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or the latest `sync_accounts` result. | +| `operator_identity` | object | No | Complete desired operator identity in settings-update mode. Requires `account.identity_updates.supported: true`. Omit this field to leave identity unchanged; include it without `operator_unit` to remove the current unit. | +| `destination_billing_entity` | object | Operator-billed domain handoff | Complete staged billing identity for the destination operator. Required when changing `operator` on an account with `billing: "operator"`; otherwise absent. It is write-only while approval is pending and does not replace the canonical `billing_entity` until the handoff applies. | +| `brand` | object | Provisioning | Brand reference identifying the advertiser. Only its BrandKey fields — `domain`, optional `brand_id`, and the canonicalized ISO 3166-1 alpha-2 `countries[]` set — participate in account identity. Countries qualify commercial identity; they do not target delivery. The existing 3.x task still accepts broader BrandRef fields for compatibility, but mutable/per-call fields such as `industries`, `data_subject_contestation`, and `brand_kit_override` never affect lookup or upsert identity. New producers should send only BrandKey fields. | +| `operator` | string | Provisioning | Domain of the entity operating on the brand's behalf (e.g. `pinnacle-media.com`). When the brand operates directly, set to the brand's domain. Verified against the brand's `authorized_operators` in brand.json. | +| `operator_unit` | object | No | Operator-owned business unit, agency seat, or buying-platform account. `id` is the stable operator-assigned identifier and participates in the natural key; optional `name` is mutable display metadata and does not. This is not the seller's `account_id`. | +| `currency` | string | No | Immutable ISO 4217 transaction currency when the seller's advertiser object is currency-bound. Check `account.supported_account_currency_modes`: include `currency` for `fixed`; omit it for `per_media_buy`. If an older 3.x seller omits that capability, its currency model is not discoverable and must be established out of band. A supplied currency participates in the natural key and every media buy on the account must use it. | +| `timezone` | string | Conditional | Immutable operational timezone. Check `get_adcp_capabilities.account.timezone`: include one of `supported_timezones` when mode is `account_fixed` and selection is `buyer_selected`; omit it for `seller_fixed` or `seller_assigned`. A supplied timezone participates in the natural key. The seller echoes the effective timezone on `sync_accounts` and `list_accounts`. | +| `billing` | string | Provisioning | Who the seller invoices for this buyer–storefront account relationship: `operator`, `agent`, or `advertiser`. Check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for `supported_billing`. The seller must accept the requested invoiced party exactly or reject the request. This field does not choose a payment rail, clearing intermediary, or per-media-buy settlement route; AdCP payment and settlement remain out of protocol. Sellers MAY additionally reject a seller-wide supported value when the calling buyer agent's commercial relationship does not permit it. See [`BILLING_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-supported), [`BILLING_NOT_PERMITTED_FOR_AGENT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-permitted-for-agent), [Buyer-agent identity](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#buyer-agent-identity), and [Billing and Account Setup](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#billing-and-account-setup). | +| `billing_entity` | object | No | Structured business entity details for the account's current invoiced party. Contains `legal_name` (required), plus optional `vat_id`, `tax_id`, `registration_number`, `address`, `contacts`, and `bank`. Bank details are write-only — included in requests but never echoed in responses. Do not use this field to stage a destination operator during a handoff; use `destination_billing_entity`. See [billing entity and invoice recipient](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#billing-entity-and-invoice-recipient). | +| `payment_terms` | string | No | Payment terms for this account: `net_15`, `net_30`, `net_45`, `net_60`, `net_90`, or `prepay`. The seller must either accept these terms or reject the account — terms are never silently remapped. When omitted, the seller applies its default terms. | +| `sandbox` | boolean | No | When true, set up a sandbox account with no real platform calls or billing. Only applicable to buyer-declared accounts (`require_operator_auth: false`). For account-id namespaces, sandbox accounts are pre-existing test accounts discovered via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or supplied out-of-band. | +| `notification_configs` | array | No | Account-level webhook subscribers for events that outlive any single media buy: creative lifecycle notifications, account status changes, and wholesale feed change webhooks. Omit to leave existing subscribers unchanged; send `[]` to remove all subscribers; send a full array to replace. Entries are keyed by account-scoped `subscriber_id`; an existing `subscriber_id` is upserted, and persisted IDs absent from the sent array are removed. | + +**Natural key**: The tuple `(brand, operator, operator_unit.id, currency, timezone, sandbox)` identifies the advertiser object in the seller system, with `currency` present only for fixed-currency accounts and `timezone` present only for buyer-selected account-fixed timezones. Within `brand`, only `domain`, `brand_id`, and canonicalized `countries[]` participate. Country order has no semantic meaning; send unique uppercase codes in lexical order for stable keys and signatures. `operator_unit.name` and all mutable BrandRef fields are outside identity, so changing display or per-call metadata does not create a new account. + +For example, the following key identifies Nova's NL/DE advertiser object, operated through Pinnacle's EMEA seat and fixed to EUR. Adding `sandbox: true` identifies a separate test account. + +```json +{ + "brand": { + "domain": "nova-athletics.example", + "countries": ["DE", "NL"] + }, + "operator": "pinnacle-media.example", + "operator_unit": { + "id": "seat_emea_01", + "name": "EMEA" + }, + "currency": "EUR" +} +``` + +The natural key is the buyer-declared account reference. A numeric or opaque `account_id` is instead a seller/storefront identifier: discover it with `list_accounts` (or receive it out of band) and do not substitute an operator's buying-platform account ID into that field. + +### Reconciling operator identity + +When a buyer discovers that an existing account has the wrong operator domain or operator unit, it MUST identify the existing account through settings-update mode. Sending the corrected natural key as a new provisioning entry does not communicate replacement intent and can legitimately identify a second account. + +`operator_identity` is a complete desired value, not a patch: + +- Omit `operator_identity` to leave the operator identity unchanged. +- Include the same `operator` and `operator_unit.id` with a different `name` to update display metadata. +- Omit `operator_unit` inside `operator_identity` to remove the current unit. +- Change `operator_unit.id`, add a unit, or remove one to rekey the same account within the operator. +- Change `operator` to request an inter-entity operator-domain handoff. The seller MUST place this transition into approval; it cannot apply directly from buyer assertion alone. Before applying it, the seller MUST verify that the authenticated caller can administer the current account, obtain verified brand authorization for the destination operator, and confirm that the destination operator accepts the handoff. A passive or caller-supplied `authorized_operators` value is not sufficient without the seller's normal verification of the brand-controlled source. + +```json +{ + "idempotency_key": "identity-update-018f24c0-65d1-7c3a", + "accounts": [ + { + "account": { "account_id": "acc_nova_pinnacle" }, + "revision": 7, + "operator_identity": { + "operator": "pinnacle-media.example", + "operator_unit": { + "id": "east-coast", + "name": "East Coast" + } + } + } + ] +} +``` + +Identity reconciliation changes the same advertiser account; it is never provisioning or merging. The seller MUST resolve exactly one existing account, reject a target-key collision with [`ACCOUNT_IDENTITY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-identity-conflict), preserve `account_id`, historical media buys, reporting continuity, and other account-scoped history, and apply no identity change if it cannot preserve that continuity. `currency`, `sandbox`, and brand identity remain immutable through this field. + +An intra-operator unit change stays within the existing account authority boundary. An operator-domain handoff crosses that boundary and therefore has additional rules: + +- The canonical operator, billing, and grants remain unchanged while approval is pending. +- When `billing: "operator"`, the request MUST include a complete `destination_billing_entity`. This staged value is write-only while approval is pending; the account response continues to return the current canonical `billing_entity`. The seller MUST re-run its commercial approval for the destination entity, payment terms, and credit state, then switch canonical operator and billing identity together. It MUST NOT expose or apply the destination billing identity early or silently associate the former operator's billing identity with the destination. +- At the atomic switch, grants scoped to the former operator MUST be revoked unless independently authorized for the continuing principal. The destination operator receives only explicitly approved grants. Brand- or buyer-agent grants that remain independently valid MAY be preserved. +- A seller that cannot complete those transitions without breaking account or resource continuity MUST reject or keep the request pending; it MUST NOT partially rekey the account. + +Every persisted account mutation increments its integer `revision`. Buyers MUST pass the latest observed `revision` with `operator_identity`; the seller MUST compare it atomically with the write and return `CONFLICT` without side effects on mismatch. Dry runs, validation failures, reads, and exact idempotency replays do not increment it. + +An immediately applied intra-operator update returns the new canonical `operator` and `operator_unit`. An operator-domain change always returns the current canonical fields plus `identity_change.status: "pending_approval"`; `list_accounts` exposes the same state. Approval atomically performs the authorized identity, billing, and grant transition and clears `identity_change`. Rejection retains the canonical fields, discards the staged destination billing identity, and exposes `identity_change.status: "rejected"` with a reason. Each disposition increments `revision`. + +A new `operator_identity` request submitted with the current revision replaces an earlier pending or rejected request and increments the revision. To cancel a pending request without changing the canonical identity, submit the current canonical `operator_identity` with the current revision; the seller clears `identity_change`, discards any staged destination billing identity, and increments the revision. A stale request returns `CONFLICT` without replacing or clearing the existing state. Exact idempotency replays return the original result without another revision increment. + +After a rekey, the seller MUST tombstone the former natural key while the account or any account-scoped historical resource is retained. An authorized caller using that former key receives [`ACCOUNT_MOVED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-moved) with `details.current_account`; the seller MUST NOT provision a second account from it. Callers without access to the current account receive [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) so the redirect does not become a cross-tenant existence oracle. + +With `dry_run: true`, the seller performs the same account resolution, revision, collision, authorization, and continuity checks but persists nothing and leaves the revision unchanged. Each identity-update result includes `identity_change_preview`: + +- `would_apply` means an intra-operator update can apply immediately. +- `would_require_approval` means an operator-domain handoff would enter approval. +- `blocked` identifies continuity, authorization, billing, grant, or active-resource blockers in `blockers`. + +The preview's `impacts[]` records whether account ID, media buys, reporting, approval, billing, and grants would be preserved, revalidated, revoked and regranted, or block the change. A natural-key collision returns `ACCOUNT_IDENTITY_CONFLICT` and a blocked preview. Dry-run results may use `action: "updated"` to describe the change that would occur or `action: "failed"` for a blocker; the top-level `dry_run: true` and `identity_change_preview` make clear that no mutation occurred. Dry runs MUST NOT return a persisted `identity_change`. + +## Response + +**Success response:** + +Returns an `accounts` array with per-account results. Individual accounts may be pending, rejected, or failed even when the operation succeeds. + +**Error response:** + +- `errors` -- Array of operation-level errors (auth failure, service unavailable). No `accounts` array is present. + +**Note:** Responses use discriminated unions -- you get either `accounts` OR `errors`, never both. + +**Per-account fields:** + +| Field | Description | +|-------|-------------| +| `brand` | Current canonical brand. Object with `domain`, optional `brand_id`, and optional `countries[]`. | +| `operator` | Current canonical operator domain. While an identity change is pending or rejected, this remains the current value. | +| `operator_unit` | Current canonical operator unit. `id` is stable identity; `name` is display metadata. | +| `revision` | Current optimistic-concurrency revision. Return it from identity-update-capable sellers and pass it on the next settings update. | +| `identity_change` | Pending or rejected desired operator identity. Canonical identity remains in `operator` and `operator_unit`. | +| `identity_change_preview` | Dry-run-only disposition and resource-impact preview. Canonical identity and revision remain unchanged. | +| `currency` | Fixed account currency, echoed when supplied. | +| `name` | Seller's display name for the account. | +| `action` | What happened: `created`, `updated`, `unchanged`, or `failed`. | +| `status` | Current state of the account (see [Account status](#account-status)). | +| `billing` | Billing model applied. Matches the requested value. | +| `billing_entity` | Current canonical business entity for the invoiced party. During a pending operator-domain handoff, this remains the current entity; the staged `destination_billing_entity` is write-only. Sellers may add verified fields, but bank details are always omitted. | +| `account_scope` | How the seller scoped this account: `operator` (shared across brands for this operator), `brand` (shared across operators for this brand), `operator_brand` (dedicated to this operator+brand pair), or `agent` (agent-scoped account shared across declared brand/operator pairs). See [account scope](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-scope). | +| `setup` | Present when `status: "pending_approval"`. Contains `url` for completing credit or legal setup, `message` explaining what's needed, and optional `expires_at`. | +| `rate_card` | Seller-assigned rate card identifier (when applicable). | +| `payment_terms` | Payment terms agreed for this account: `net_15`, `net_30`, `net_45`, `net_60`, `net_90`, or `prepay`. When the account is active, these are the binding terms for all invoices. | +| `credit_limit` | Maximum outstanding balance as `{amount, currency}`. | +| `errors` | Per-account errors (only present when `action: "failed"`). | +| `warnings` | Non-fatal notices. | +| `sandbox` | Whether this is a sandbox account, echoed from the request. Only present for buyer-declared accounts. | +| `notification_configs` | Optional. Current persisted account-level webhook subscribers after applying the request. Present on `created`, `updated`, and `unchanged` results when the request included `notification_configs` or the account already has persisted subscribers. Each entry carries `subscriber_id`, `url`, `event_types[]`, and `active`; `authentication.credentials` is omitted (write-only). | +| `authorization` | Optional. The calling agent's scope grant for this account — `allowed_tasks`, `field_scopes`, `scope_name`, `read_only`. Applies to every vendor agent type (media-buy, signals, governance, creative, brand) — the Accounts Protocol surface is shared. Present on `created`, `updated`, and `unchanged` results; omitted on `failed` results. Vendor agents that support scope introspection SHOULD populate this; media-buy sales agents claiming the `attestation_verifier` standard scope MUST populate it. Absence means the vendor agent does not advertise introspectable scope; callers MUST NOT infer access from absence. See [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) for the full shape. | + +### Account status + +| Status | Meaning | Next step | +|--------|---------|-----------| +| `active` | Ready to use | Use [account reference](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) in protocol operations | +| `pending_approval` | Seller reviewing | Human may need to visit `setup.url` to complete credit or legal process. Poll [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) for updates. | +| `rejected` | Seller declined the request | Review rejection reason in `warnings`, adjust and retry, or contact seller | +| `payment_required` | Credit limit reached or funds depleted | Add funds or increase credit limit. Route spend to other accounts. | +| `suspended` | Was active, now paused | Contact seller to resolve | +| `closed` | Was active, now terminated | -- | + +### Async notifications + +When `push_notification_config` is provided and the seller returns `pending_approval`, the seller sends a webhook notification when the account status changes (e.g., approved → `active`, declined → `rejected`). + +For provisioning requests, the notification payload includes the `(brand, operator)` natural key so the buyer can correlate it to the original sync request. When the seller also returns a seller-assigned `account_id`, the notification includes it as a convenience handle; buyers still follow the seller's declared account-reference model for subsequent calls. + +```json +{ + "brand": { "domain": "nova-brands.com", "brand_id": "glow" }, + "operator": "pinnacle-media.com", + "status": "active", + "account_id": "acc_glow_001" +} +``` + +If the buyer did not provide `push_notification_config`, poll [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) to check for status changes. + +## Two modes: provisioning vs. settings-update + +Each per-account entry uses one of two key shapes, never both: + +- **Provisioning mode** — flat `brand` + `operator` + `billing` at the entry root. The seller provisions or upserts accounts. Used for buyer-declared accounts (`require_operator_auth: false`). This is the shape AdCP 3.0 shipped with. Sellers MAY echo an `account_id`, but the natural-key `AccountRef` remains valid for subsequent calls. +- **Settings-update mode** — `account` (an [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references)) at the entry root, with `brand`/`operator`/`billing` absent. The seller updates the account's settable state — no provisioning side effects. Used for account-id namespaces only when the seller exposes settings updates through this task; upstream-managed accounts are discovered via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts), while seller-defined account IDs may be supplied out-of-band. Buyer-declared account sellers MAY also accept this mode for settings updates against accounts they previously provisioned. + +Schema enforces the exclusivity via `oneOf` — sending both shapes on the same entry is a validation error. Sellers that don't implement settings-update mode reject `account`-keyed entries with [`UNSUPPORTED_PROVISIONING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-provisioning); sellers that don't provision through `sync_accounts`, including account-id namespaces, reject natural-key provisioning entries with the same code. + +## Account-level webhook subscriptions + +`notification_configs[]` carries account-level webhook subscribers for creative lifecycle and assignment changes, `indicators.changed`, account status, wholesale feed changes, and future account-anchored events. + +Indicator and assignment subscriptions are prospective: activation or reactivation does not replay conditions that were already current. After activation, buyers establish a complete baseline through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) before relying on later invalidations: enumerate known media-buy IDs or request every media-buy status and follow pagination to exhaustion, without an indicator filter. The optional bounded [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) projection is not sufficient to prove complete state. + +`account.status_changed` is the durable account lifecycle event. Use it for status transitions after the initial `sync_accounts` result, such as `pending_approval → active`, `pending_approval → rejected`, `active → payment_required`, `active → suspended`, recovery back to `active`, or terminal `closed`. It is not a replacement for the one-shot `push_notification_config` on this task: that channel can report the async result of the original provisioning operation, while `notification_configs[]` subscribers outlive the task. + +Before relying on durable account lifecycle webhooks, read `get_adcp_capabilities.account.notifications`. Sellers that declare `supported: true` accept `account.status_changed` registrations here, name `sync_accounts` as the registration task, and name [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) as the repair read. Sellers that omit the capability or declare `supported: false` MUST reject `account.status_changed` registrations instead of silently storing a subscriber that will never fire. + +For these event types, "wholesale feed" means the seller's buyable wholesale product and signals feeds returned by [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) or [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals); it is not the buyer-provided feeds managed by [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs). + +Permitted in **both** provisioning and settings-update modes. Declarative semantics: + +- Omit `notification_configs` to leave the account's existing subscribers unchanged. +- Send `notification_configs: []` to remove every subscriber on that account. +- Send a non-empty array to replace the account's current set with the submitted set. + +Within one account, `subscriber_id` is the stable logical key. Re-sending an existing `(account_id, subscriber_id)` with a different `url`, `event_types`, `authentication`, or `active` value replaces that subscriber's active config rather than creating a duplicate. The seller MUST NOT merge the submitted array with persisted state: persisted subscribers whose `subscriber_id` does not appear in the sent array are removed. Paused entries (`active: false`) are subject to the same replacement semantics; to preserve a paused subscription, re-include it with `active: false` in the sent array. Duplicate `subscriber_id` values within the same submitted array are invalid. The replacement is account-scoped; the same `subscriber_id` MAY be reused on a different account. + +If any entry in the submitted replacement set fails validation or activation proof, the seller rejects that account entry with `action: "failed"` and leaves the account's previous `notification_configs[]` set unchanged. Sellers MUST NOT partially apply a replacement set and silently drop only the failed subscriber. + +Each entry has: + +- `subscriber_id` — buyer-supplied identifier, unique within the account; echoed on every fire so multi-subscriber accounts can route by endpoint +- `url` — HTTPS endpoint URL. Sellers MUST complete an endpoint activation challenge or equivalent proof-of-control before treating a new or changed active subscriber as active. +- `event_types[]` — types the subscriber wants. Only account-anchored types are permitted (today: `creative.status_changed`, `creative.assignment_changed`, `indicators.changed`, `creative.purged`, `account.status_changed`, `product.created`, `product.updated`, `product.priced`, `product.removed`, `signal.created`, `signal.updated`, `signal.priced`, `signal.removed`, `wholesale_feed.bulk_change`). Sellers MUST reject any media-buy-anchored type (`scheduled`, `final`, `delayed`, `adjusted`, `window_update`, `impairment`) or agent-anchored type (`capabilities.changed`) as a per-account validation failure with [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) or [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) in `accounts[].errors[]`, and `error.field` MUST point at the invalid `event_types` entry. +- `product_payload_view` — `canonical` for a [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) mirror or `legacy` for the 3.x `get_products` shape. Omission defaults to `legacy`; valid only when a product event is selected. +- `authentication` (optional) — legacy Bearer or HMAC-SHA256. Omit to use the default RFC 9421 webhook profile. When present, the same signed-registration downgrade-resistance rules as `push_notification_config.authentication` apply. Credentials are write-only — sellers omit them on reads. +- `active` (default `true`) — set `false` to pause a subscriber without removing the registration. Sellers MAY skip only the outbound proof challenge while `active: false`; they MUST still enforce HTTPS parsing, hostname normalization, and reserved-range rejection on write. Paused subscribers MUST NOT receive fires until reactivated. Reactivation MUST repeat full SSRF validation with connect pinning plus proof-of-control for any tuple without current valid proof. + +### Endpoint proof of control + +Before persisting or echoing an entry as `active: true`, the seller MUST validate the URL, apply the SSRF rules in [Webhook URL validation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf), and prove that the receiver controls the endpoint. + +Proof is required when there is no current valid proof for the tuple `(account_id, subscriber_id, normalized url, authentication mode/credential binding, normalized event_types)`. Changing the subscriber ID, normalized URL, authentication mode/credential binding, or `event_types[]` requires fresh proof before the new set can become active. The challenge POST itself MUST be signed with the seller's RFC 9421 webhook profile key even when the candidate config selects legacy delivery auth. New signers use `adcp_use: "request-signing"`; deprecated `webhook-signing` keys remain accepted during the compatibility window. The receiver MUST verify the RFC 9421 signature and MUST reject the challenge unless `account_id`, `subscriber_id`, `seller_agent_url`, `delivery_auth`, and `event_types` match the pending registration. The signature's covered `@target-uri` MUST equal the exact normalized candidate URL, and its `expires` parameter binds the challenge expiry. + +The standard challenge is an HTTPS POST to the candidate `url` with a JSON body containing `type`, `challenge`, `account_id`, `subscriber_id`, `seller_agent_url`, `delivery_auth`, and `event_types`. The canonical schemas are [`webhook-challenge.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/webhook-challenge.json) and [`webhook-challenge-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/webhook-challenge-response.json). + +```json +{ + "type": "webhook.challenge", + "challenge": "example-challenge-token-000000000000", + "account_id": "acct_123", + "subscriber_id": "buyer-primary", + "seller_agent_url": "https://seller.example/adcp", + "delivery_auth": { "mode": "rfc9421" }, + "event_types": ["creative.status_changed"] +} +``` + +The receiver proves control by returning HTTP `2xx` with a JSON body containing exactly one echo field: + +```json +{ "challenge": "example-challenge-token-000000000000" } +``` + +Sellers MUST also accept the backward-compatible alias: + +```json +{ "token": "example-challenge-token-000000000000" } +``` + +The challenge value MUST be cryptographically random, single-use, and scoped to the registration tuple. The RFC 9421 `expires` parameter is the challenge expiry; receivers MUST reject expired challenges, and sellers MUST reject echoes received after that instant. A failed, non-`2xx`, malformed, mismatched, expired, replayed, or timed-out challenge means proof failed. Sellers SHOULD use the same outbound fetch caps as SSRF validation (10 second connect and 10 second read) and SHOULD make at most one initial challenge POST on the `sync_accounts` critical path. A seller MAY retry one transient network failure before returning if it uses the same challenge value and still completes within its request budget; otherwise the buyer retries by re-sending `sync_accounts`. + +On proof failure, the seller returns a per-account failure with `action: "failed"`, `errors[].code: "VALIDATION_ERROR"` (or `INVALID_REQUEST` for malformed URLs), and `error.field` pointing at `accounts[i].notification_configs[j].url`. The previous persisted subscriber set remains unchanged. `dry_run: true` MUST NOT send network challenges; an `active: true` echo in a dry-run result previews the requested post-proof state and does not assert that proof already exists. + +### Account status payload + +When an account's lifecycle status changes after the initial `sync_accounts` response, sellers fire `account.status_changed` to active subscribers whose `event_types[]` includes that value. + +```json +{ + "idempotency_key": "whk_01K18GM0Z7J3Q6WBH7DYK2R4VM", + "notification_id": "acctchg_acc_glow_20260719T100712Z", + "notification_type": "account.status_changed", + "fired_at": "2026-07-19T10:07:15Z", + "subscriber_id": "account-lifecycle", + "account_id": "acc_glow_pending", + "previous_status": "pending_approval", + "status": "payment_required", + "observed_at": "2026-07-19T10:07:12Z", + "reason_code": "setup_required", + "setup": { + "message": "Complete advertiser billing setup.", + "expires_at": "2026-07-30T00:00:00Z" + } +} +``` + +The payload is an invalidation signal. It intentionally omits the full account document and `setup.url`; setup URLs are often single-use or sensitive and should not be fanned out to every subscriber. Receivers SHOULD re-run [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) for `account_id` and reconcile from the fresh account snapshot. + +`notification_id` is stable per `(account_id, previous_status, status, observed_at)`. Retries and re-emissions of the same transition reuse it under a new `idempotency_key`; a later transition cycle receives a new `notification_id`. + +Example — register a buyer-side endpoint plus an audit bus on an account-id namespace account: + +```json +{ + "idempotency_key": "f2c4b7d9-6789-49bc-defa-2345678901bc", + "accounts": [ + { + "account": { "account_id": "acc_acme_pinnacle" }, + "notification_configs": [ + { + "subscriber_id": "buyer-primary", + "url": "https://buyer.example/webhooks/adcp/creative", + "event_types": ["creative.status_changed", "creative.purged"], + "active": true + }, + { + "subscriber_id": "audit-bus", + "url": "https://audit.buyer.example/adcp/ingest", + "event_types": ["creative.status_changed", "creative.purged"], + "active": true + } + ] + } + ] +} +``` + +Example — register a wholesale feed mirror subscriber for wholesale product and signal changes: + +```json +{ + "idempotency_key": "a8af8cf1-89bd-41f3-b27d-7ee7e9f8d2e4", + "accounts": [ + { + "account": { "account_id": "acc_acme_pinnacle" }, + "notification_configs": [ + { + "subscriber_id": "wholesale-feed-sync", + "url": "https://buyer.example/webhooks/adcp/wholesale-feed", + "event_types": [ + "product.created", + "product.updated", + "product.priced", + "product.removed", + "signal.created", + "signal.updated", + "signal.priced", + "signal.removed", + "wholesale_feed.bulk_change" + ], + "active": true + } + ] + } + ] +} +``` + +Example — register an account lifecycle subscriber: + +```json +{ + "idempotency_key": "ee1343bb-7449-4d33-a2c1-c9cc0c75d0f4", + "accounts": [ + { + "account": { "account_id": "acc_acme_pinnacle" }, + "notification_configs": [ + { + "subscriber_id": "account-lifecycle", + "url": "https://buyer.example/webhooks/adcp/accounts", + "event_types": ["account.status_changed"], + "active": true + } + ] + } + ] +} +``` + +Governance agents registered via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) are **not** implicitly subscribed to these webhooks. If your governance agent should also receive creative-lifecycle fires, register its URL as a separate `notification_configs[]` entry — explicit, auditable, with its own `event_types[]` filter. + +Verify applied state via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) — the response carries the current persisted `notification_configs[]` per account with credentials redacted. `sync_accounts` also echoes the current sanitized set on `created`, `updated`, and `unchanged` results when the request included `notification_configs` or any persisted subscribers already exist. + +Wholesale feed notifications are registered here, not through a separate subscription task. The webhook body is [`wholesale-feed-webhook.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/wholesale-feed-webhook.json): it carries a canonical product replacement for `list_products` subscribers (or the legacy Product view for `get_products` subscribers), signal changes, or a bulk-change summary plus the post-change `wholesale_feed_version`. Sellers MUST apply the same per-subscriber authorization and scope predicate used by the corresponding wholesale read before emitting each webhook. For a detected gap, repair with the mirror's last applied version; for uncertain or bulk state, omit the conditional token and replace from `list_products` / `get_signals`. See [wholesale_feed_webhooks](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#wholesale_feed_webhooks) for capability declaration and event semantics. + +## Common scenarios + +### Agency syncing multiple brands + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAccounts({ + accounts: [ + { + brand: { domain: "nova-brands.com", brand_id: "spark" }, + operator: "pinnacle-media.com", + billing: "operator", + }, + { + brand: { domain: "nova-brands.com", brand_id: "glow" }, + operator: "pinnacle-media.com", + billing: "operator", + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAccountsResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const account of validated.accounts) { + if (account.status === "active") { + console.log(`Ready: ${account.brand.domain}/${account.brand.brand_id} → ${account.status}`); + } else if (account.status === "pending_approval") { + console.log(`Setup required for ${account.brand.brand_id}: ${account.setup?.url}`); + // Poll list_accounts until status becomes active + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_accounts( + accounts=[ + { + "brand": {"domain": "nova-brands.com", "brand_id": "spark"}, + "operator": "pinnacle-media.com", + "billing": "operator", + }, + { + "brand": {"domain": "nova-brands.com", "brand_id": "glow"}, + "operator": "pinnacle-media.com", + "billing": "operator", + }, + ], + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for account in result.accounts: + if account.status == 'active': + print(f"Ready: {account.brand['domain']}/{account.brand.get('brand_id')} → {account.status}") + elif account.status == 'pending_approval': + print(f"Setup required for {account.brand.get('brand_id')}: {account.setup.url}") + # Poll list_accounts until status becomes active + +asyncio.run(main()) +``` + + + +### Direct brand purchase + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAccounts({ + accounts: [ + { + brand: { domain: "acme-corp.com" }, + operator: "acme-corp.com", + billing: "operator", + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAccountsResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +const account = validated.accounts[0]; +if (account.status === "active") { + console.log(`Ready: ${account.brand.domain} — ${account.status}`); +} else if (account.status === "pending_approval") { + console.log(`Setup required: ${account.setup?.url}`); + // Poll list_accounts until status becomes active +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_accounts( + accounts=[ + { + "brand": {"domain": "acme-corp.com"}, + "operator": "acme-corp.com", + "billing": "operator", + }, + ], + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + account = result.accounts[0] + if account.status == 'active': + print(f"Ready: {account.brand['domain']} — {account.status}") + elif account.status == 'pending_approval': + print(f"Setup required: {account.setup.url}") + # Poll list_accounts until status becomes active + +asyncio.run(main()) +``` + + + +### Handling rejection + +When a seller declines a request, the account entry has `status: "rejected"`: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAccountsResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAccounts({ + accounts: [ + { + brand: { domain: "acme-corp.com", brand_id: "clearance" }, + operator: "acme-corp.com", + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAccountsResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const account of validated.accounts) { + if (account.status === "rejected") { + console.log("Account request was rejected"); + if (account.warnings?.length) { + console.log(`Reason: ${account.warnings.join(", ")}`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_accounts( + accounts=[ + { + "brand": {"domain": "acme-corp.com", "brand_id": "clearance"}, + "operator": "acme-corp.com", + }, + ], + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for account in result.accounts: + if account.status == 'rejected': + print("Account request was rejected") + warnings = getattr(account, 'warnings', None) + if warnings: + print(f"Reason: {', '.join(warnings)}") + +asyncio.run(main()) +``` + + + +## Error handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Referenced account does not exist or is not accessible | Check `account_id` or re-sync | +| [`ACCOUNT_MOVED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-moved) | A former natural key was used after the account was rekeyed | Replace the stale reference with `error.details.current_account`, refresh through [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts), and retry with a fresh idempotency key | +| [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) | Submitted `revision` is stale | Re-read `list_accounts`, reconcile, and retry with the current revision | +| [`ACCOUNT_IDENTITY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-identity-conflict) | Desired natural key already belongs to another account | Choose a different operator identity or retain the current identity; do not retry the same desired identity unchanged | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Seller does not advertise the requested identity change in `account.identity_updates.supported_changes` | Leave identity unchanged or use a seller-supported transition | +| [`BILLING_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-supported) | Seller-wide capability gate (`supported_billing` does not include the value) or per-account-relationship gate; see [Billing and Account Setup](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#billing-and-account-setup) | Check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for `supported_billing`, adjust or omit `billing`; inspect `error.details.scope` to disambiguate capability vs account scope | +| [`BILLING_NOT_PERMITTED_FOR_AGENT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-permitted-for-agent) | Seller-wide capability accepts the value, but the calling buyer agent's commercial relationship does not (e.g., passthrough-only — no payments relationship); see [Buyer-agent identity](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#buyer-agent-identity) | Retry with `error.details.suggested_billing` (typically `operator`) when present; when absent, surface to a human — the agent cannot extend its own commercial relationship | +| [`PAYMENT_TERMS_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-payment-terms-not-supported) | Seller does not accept the requested payment terms | Omit `payment_terms` to accept the seller's default, or negotiate offline | +| [`ACCOUNT_PAYMENT_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-payment-required) | Account has an outstanding balance requiring payment | Resolve outstanding balance or route to another account | +| [`ACCOUNT_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-suspended) | Account is suspended | Contact seller to resolve | +| [`BRAND_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-brand-required) | Billable operation attempted without brand reference | Include `brand` in the request | + +## Next steps + +- [list_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) -- Poll for status changes on pending accounts +- [sync_governance](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) -- Sync governance agents to accounts +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) -- Billing models, trust models, and authorized operators +- [Brand protocol](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) -- How seller agents resolve brand identity from the `brand.domain` +- [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) -- Discover `supported_billing` and `require_operator_auth` before syncing accounts diff --git a/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance.mdx b/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance.mdx new file mode 100644 index 0000000000..2deaf54a67 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance.mdx @@ -0,0 +1,297 @@ +--- +title: sync_governance +description: "sync_governance syncs governance agent endpoints to specific accounts. The seller persists these agents and calls them via check_governance during media buy lifecycle events." +"og:title": "AdCP — sync_governance" +testable: false +--- + +Sync the governance agent endpoint for specific accounts. The seller persists the agent and calls it via [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) during media buy lifecycle events. Each account entry pairs an [account reference](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) with exactly one governance agent, supporting both account-id namespaces (`account_id`) and buyer-declared accounts (`brand` + `operator`). + +An account binds to one governance agent that owns the full lifecycle. Authorization, delivery monitoring, and compliance are phases of the same evaluation against one plan, not specialisms held by separate authorities; specialist review (legal, brand safety, category) composes inside the governance agent rather than across multiple registrations. `governance_agents` is an array with `maxItems: 1` because the array shape is the shape 3.0 shipped with — the constraint is load-bearing and not a staging post toward loosening. The envelope's `governance_context` is singular below this layer; relaxing the cap would require a coordinated wire-shape change that is not planned. See [One governance agent per account](/dist/docs/3.2.0-beta.4/governance/campaign/specification#one-governance-agent-per-account). + +This uses **replace semantics** — each call replaces any previously registered agent on the specified accounts. Accounts not included in the request keep their existing configuration. + +**Response Time**: ~1s. + +**Request Schema**: [`/schemas/3.2.0-beta.4/account/sync-governance-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-governance-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/account/sync-governance-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-governance-response.json) + +## Quick Start + +Sync the governance agent for an account-id namespace account: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncGovernanceResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncGovernance({ + accounts: [ + { + account: { account_id: "acct-social-001" }, + governance_agents: [ + { + url: "https://governance.pinnacle-media.com", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + } + ] + } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncGovernanceResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const entry of validated.accounts) { + if (entry.status === "synced") { + console.log(`${JSON.stringify(entry.account)}: ${entry.governance_agents.length} agent registered`); + } else { + console.log(`${JSON.stringify(entry.account)}: failed — ${JSON.stringify(entry.errors)}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_governance( + accounts=[ + { + "account": {"account_id": "acct-social-001"}, + "governance_agents": [ + { + "url": "https://governance.pinnacle-media.com", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + } + ] + } + ] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for entry in result.accounts: + if entry.status == "synced": + print(f"{entry.account}: {len(entry.governance_agents)} agent registered") + else: + print(f"{entry.account}: failed — {entry.errors}") + +asyncio.run(main()) +``` + + + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `accounts` | array | Yes | Per-account governance agent entries. Each pairs an account reference with governance agents for that account. | + +**Each account entry:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `account` | object | Yes | [Account reference](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references): `{account_id}` for account-id namespaces or `{brand, operator}` for buyer-declared accounts. | +| `governance_agents` | array | Yes | Governance agent endpoint for this account. Array with exactly one entry (`minItems: 1`, `maxItems: 1`). | + +**The governance agent:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `url` | string | Yes | HTTPS endpoint URL for the governance agent. | +| `authentication` | object | Yes | Credentials the seller presents when calling this agent. Contains `schemes` (array with one auth scheme) and `credentials` (token, min 32 characters). | + +## Response + +**Success response:** + +Returns an `accounts` array with per-account results. Individual entries may fail even when the operation succeeds. + +| Field | Description | +|-------|-------------| +| `account` | Account reference, echoed from request. | +| `status` | `"synced"` or `"failed"`. | +| `governance_agents` | Governance agents now active on this account. Reflects persisted state. Only present when `status: "synced"`. | +| `errors` | Per-account errors. Only present when `status: "failed"`. | + +**Error response:** + +`errors` array with operation-level errors (auth failure, service unavailable). No `accounts` array is present. + +## Authorization + +The seller MUST verify that the authenticated agent has authority over each referenced account before persisting governance agents. Requests referencing accounts the agent does not own MUST return a `failed` status with an error for those entries. + +## Common Scenarios + +### Different governance agents per account + +A single `sync_governance` call can register a distinct agent per account — each account still binds to exactly one agent, but accounts on the same call need not share it. + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncGovernanceResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncGovernance({ + accounts: [ + { + account: { account_id: "acct-social-001" }, + governance_agents: [ + { + url: "https://governance.pinnacle-media.com", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + } + ] + }, + { + account: { account_id: "acct-social-002" }, + governance_agents: [ + { + url: "https://governance.acme-buyer.com", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + } + } + ] + } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncGovernanceResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +for (const entry of validated.accounts) { + console.log(`${JSON.stringify(entry.account)}: ${entry.status}`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_governance( + accounts=[ + { + "account": {"account_id": "acct-social-001"}, + "governance_agents": [ + { + "url": "https://governance.pinnacle-media.com", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + } + } + ] + }, + { + "account": {"account_id": "acct-social-002"}, + "governance_agents": [ + { + "url": "https://governance.acme-buyer.com", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + } + } + ] + } + ] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for entry in result.accounts: + print(f"{entry.account}: {entry.status}") + +asyncio.run(main()) +``` + + + +### Buyer-declared accounts (brand + operator) + + + +```json Request +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-governance-request.json", + "idempotency_key": "e5b9f2c3-1234-48a0-1234-56789012345e", + "accounts": [ + { + "account": { + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com" + }, + "governance_agents": [ + { + "url": "https://governance.pinnacle-media.com", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + } + } + ] + } + ] +} +``` + + + +### Rotate governance agent credentials + +Call `sync_governance` again with updated `authentication`. Replace semantics means the new credentials overwrite the previous configuration. + +### Migrating from pre-3.1 multi-agent registration + +Earlier drafts of 3.0 allowed up to 10 governance agents per account with per-agent `categories`. 3.1 constrains `governance_agents` to exactly one entry and removes `categories`. Buyers that registered more than one agent against the previous shape MUST collapse to a single agent on their next `sync_governance` call; the seller's persisted state is replaced. The new request schema rejects more than one agent outright, so no "mixed-mode" window exists. + +**Buyer-side collapse decision.** Which of the previously-registered agents becomes the single agent is a buyer-internal decision — the protocol does not rank or recommend. Typical paths: (a) keep the agent with the broadest policy coverage (usually the budget/spend-authority agent) and fold specialist logic (legal, brand safety, regulatory review) into it as internal workflow; (b) deploy a new "front-door" governance agent that fans out to the previous specialists internally, and register only that agent; (c) keep the agent that was always the de facto governance surface and fold the others' specialist review into it as internal workflow without re-registering them. Surface the internal decomposition to auditors via `categories_evaluated` and `findings[].details` on check responses so the audit trail retains what each internal reviewer contributed. + +**Seller-side.** Sellers MAY, on first boot under the new schema, collapse previously-persisted multi-agent state to the first entry (ordered by original sync position) and log the migration to their audit trail. Sellers SHOULD surface a clear error to buyers whose next `sync_governance` call attempts to re-register multiple agents, pointing at this migration guidance. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Referenced account does not exist or is not accessible | Verify account reference via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) | +| `UNAUTHORIZED` | Agent does not have authority over the referenced account | Check that you are authenticated as an agent with access to this account | + +## Next Steps + +- [list_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) — Discover accounts and their current governance agents +- [sync_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) — Provision or link advertiser accounts +- [check_governance](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) — How sellers call governance agents during media buy events +- [Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) — Account models, billing, and trust diff --git a/dist/docs/3.2.0-beta.4/ai-disclosure.mdx b/dist/docs/3.2.0-beta.4/ai-disclosure.mdx new file mode 100644 index 0000000000..e3d857051e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/ai-disclosure.mdx @@ -0,0 +1,101 @@ +--- +title: AI Disclosure +description: "How AdCP and AgenticAdvertising.org use AI — what's AI-authored, what's AI-assisted, model and provider disclosure, and how to request human review." +"og:title": "AdCP — AI Disclosure" +--- + +AgenticAdvertising.org uses AI extensively to write content, generate imagery, ship code, and run operations. This page names every surface where that happens, the models behind it, and how to request human review. + +--- + +## What's AI-authored + +These surfaces are written primarily by an AI agent operated by AgenticAdvertising.org, with human editorial oversight: + +- **Addie** — AgenticAdvertising.org's teaching assistant and chat agent. All Addie chat responses are AI-generated. +- **Sage** — the AdCP protocol explainer agent. Protocol Q&A in the docs chat is answered by Sage. +- **The Prompt** — our biweekly newsletter, authored in first person as Addie. The Prompt is editorial and is also a marketing surface for AgenticAdvertising.org; read it as both. +- **The Build** — our triweekly technical newsletter, authored by Sage. +- **Member portraits** — graphic-novel-style illustrations for members are AI-generated. +- **Certification grading** — Addie grades the free Basics track against a fixed rubric of 3–5 required demonstrations per module, and also grades the paid Practitioner and Specialist tracks. AgenticAdvertising.org is both the issuer and the grader of these credentials; we disclose this conflict rather than deny it, and human review of any grading decision is available on request (see below). + +## What's AI-assisted + +Most of the rest of AgenticAdvertising.org's public surface is built with AI coding assistants, reviewed by humans before publishing. This includes: + +- The protocol schemas and documentation (this site) +- The open-source reference implementations +- The admin tools operated by AgenticAdvertising.org staff +- Most public-facing code in the [adcontextprotocol](https://github.com/adcontextprotocol) organization + +We don't mark individual paragraphs or pull requests as AI-assisted — the default is that AI tools were involved. + +## Model and provider disclosure + +- **Addie and Sage** run on Anthropic Claude models. +- **Image generation** (member portraits, illustrations) uses Google Gemini image models. +- **Protocol development** uses Claude Code and other agentic development tools. + +## Data handling + +- **Addie and Sage chat** — conversations are logged to improve teaching quality and to allow appeals on grading decisions. Logs are retained by AgenticAdvertising.org and not used by model providers for training. EU/UK residents: chat inputs are processed on our behalf by Anthropic; see our [privacy policy](https://agenticadvertising.org/api/agreement?type=privacy_policy) for the current data-processor chain and transfer mechanism. +- **Grading decisions** — the required-demonstrations, the Addie interaction that produced the credit, and the resulting assessment are retained so that a learner (or a regulator) can reconstruct the decision. +- **Member portraits** — AI-generated images are produced from member-provided inputs; the prompt and generated image are retained on the member's profile. + +## Human review + +You can request human review on any AI-generated surface. + +**Certification grading and targeting review SLA.** Because AgenticAdvertising.org is both the issuer and the AI grader of its certifications, every grading appeal and protocol-update targeting dispute gets a documented human-review path: + +- **Acknowledgement: 2 business days** from receipt at [certification@agenticadvertising.org](mailto:certification@agenticadvertising.org). +- **Resolution:** handled through the [certification complaints process](/dist/docs/3.2.0-beta.4/learning/policies/complaints), by an AgenticAdvertising.org staff reviewer who did not participate in the original grading or targeting decision. +- **Outcome on upheld appeals**: the credential is granted or the learner record is corrected, depending on the issue under review. +- **Escalation**: appeals that the staff reviewer cannot resolve are escalated to AgenticAdvertising.org program leadership. +- **Annual transparency report**: AgenticAdvertising.org publishes appeals volume, upheld rate, and median time-to-decision once per year as part of the AGM materials. The first report covers the period ending 2027-04. + +To file a grading appeal or protocol-update targeting dispute, email [certification@agenticadvertising.org](mailto:certification@agenticadvertising.org) with your learner ID, the module or assessment in question, and the specific finding you are contesting. + +Other AI-surface review paths: + +- **Content corrections** — factual errors in Addie's teaching, Sage's protocol explanations, or any AI-authored content can be reported via [GitHub issues](https://github.com/adcontextprotocol/adcp/issues) or the [Slack joining guide](/dist/docs/3.2.0-beta.4/community/joining-slack). Target turnaround is **five business days**. +- **Protocol guidance** — Sage is not a substitute for legal or regulatory advice. For compliance-sensitive questions, consult qualified counsel. + +## Content provenance (C2PA) + +Every AI-generated image AgenticAdvertising.org publishes carries an embedded [C2PA](https://c2pa.org/) manifest signed by AgenticAdvertising.org: + +- **Member portraits** — also carry a visible "AI" badge in the bottom-right corner (CA SB 942 visible-disclosure path). +- **Newsletter cover art** — The Prompt and The Build covers, including the copies that ship in subscriber email and render as OpenGraph share cards. +- **Perspective article hero images** — every editorial illustration attached to a published perspective. +- **Docs walkthrough and concept illustrations** — the panel PNGs embedded throughout this site's walkthroughs and concept explainers. + +The manifest identifies Google Gemini as the generating software agent, marks the asset as `trainedAlgorithmicMedia` per the IPTC digital-source-type vocabulary, and includes a timestamp plus a SHA-256 of the generation prompt (not the prompt itself — portraits are generated from member-provided descriptions we do not want to republish). AgenticAdvertising.org signs with a self-signed P-256 certificate held in production secrets. CAI trust-list inclusion is a future step; today, public verifiers will show the signature as cryptographically valid but flag *"issuer not on trust list."* + +**Verify any AgenticAdvertising.org image** at [contentcredentials.org/verify](https://contentcredentials.org/verify) by uploading the file or pasting its URL. + +For editorial illustrations and docs storyboards where a visible mark would undermine the graphic-novel aesthetic, the C2PA manifest is the sole disclosure surface. CA SB 942's visible-disclosure rule targets upstream generative-AI providers rather than downstream publishers, so this placement is defensible for AgenticAdvertising.org — but it is a deliberate choice, not an oversight. + +If you find an AgenticAdvertising.org-generated image that does not carry a manifest, please [open an issue](https://github.com/adcontextprotocol/adcp/issues) — we treat missing provenance as a bug. + +## Regulatory posture + +This disclosure is informed by the FTC Endorsement Guides (2023), EU AI Act Art 50, and California SB 942. It has not been reviewed by outside counsel. + +- **EU AI Act Art 50(2)** and **CA SB 942** require machine-readable provenance on AI-generated images and video — see the [content provenance](#content-provenance-c2pa) section above for how we satisfy this. +- **FTC Endorsement Guides** apply to endorsements and testimonials for compensation. They are not activated by general AI authorship; we call them out here for completeness, not because we claim they are satisfied by this page alone. + +If you believe a specific AI surface falls short of an applicable standard, let us know. + +## Institutional conflicts + +AI authorship and evaluation by AgenticAdvertising.org intersect with AgenticAdvertising.org's broader governance in ways readers should know: + +- AgenticAdvertising.org is both the issuer and the grader of its certifications (Addie evaluates coursework and grants credentials AgenticAdvertising.org sells). +- AgenticAdvertising.org's founder's other company (Scope3) contributed funding and foundational IP — see the [FAQ entry](/dist/docs/3.2.0-beta.4/faq#how-is-aao-related-to-scope3) for the full relationship. + +The governance framework, board composition, and recusal rules are set out in [CHARTER.md](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md), with the authoritative board list and funding disclosures at [agenticadvertising.org/governance](https://agenticadvertising.org/governance). + +--- + +Material changes to how AI is used at AgenticAdvertising.org will be reflected on this page. diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/brand-json.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/brand-json.mdx new file mode 100644 index 0000000000..01019c0eac --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/brand-json.mdx @@ -0,0 +1,1470 @@ +--- +title: brand.json Specification +description: "brand.json specification for AdCP. File format, five variants (portfolio, redirect, agent, authoritative location, brand canonical document), brand definition fields, mutual-assertion trust model, visual guidelines, colorways, type scale, trademarks, and resolution algorithm." +"og:title": "AdCP — brand.json Specification" +--- + +The `brand.json` file provides a standardized way for brands to claim their identity and establish discoverable brand information. It supports five variants to accommodate different publishing models. + + +`brand.json` is the canonical source of brand identity data. The brand object defined here (logos, colors, tone, tagline) is the single brand definition used across AdCP. Tasks reference brands by domain and brand_id — the system resolves full identity from `brand.json` or the [registry](/dist/docs/3.2.0-beta.4/registry/index). + + +## Motivation + +Brand identity for a holdco could live in **one** brand.json owned by the parent — every child change requires editing the parent's file. If Converse wants to update its logo, someone edits Nike, Inc.'s file. If a holdco runs 100 subsidiary brands, all 100 teams converge on the same monolithic document. Brand teams own their identity, but a monolithic shape forces a single ops choke point at the corporate parent. It also blocks independent brands from publishing at all — a brand listed in someone else's portfolio has no protocol-level path to assert its own canonical data, even when domain control proves it could. + +The spec resolves this by letting a child brand publish its **own** canonical document while the house remains the authority for who is in the family. Inline `brands[]` stays a first-class option (parent owns the data); `brand_refs[]` adds pointer children whose canonical document lives elsewhere (child owns the data). A house mixes freely. The hierarchy is one level deep — only a house declares ownership; a brand cannot itself have children. + +## File location + +Brands host the `brand.json` file at: + +``` +https://example.com/.well-known/brand.json +``` + +Following [RFC 8615](https://datatracker.ietf.org/doc/html/rfc8615) well-known URI conventions. + +## Variants + +The brand.json file supports five variants: + +| # | Variant | Use when | +|---|---|---| +| 1 | Authoritative Location Redirect | The canonical document is hosted at another URL | +| 2 | House Redirect | The brand domain rolls up to a larger house | +| 3 | Brand Agent | An MCP agent provides authoritative brand identity | +| 4 | House Portfolio | A house publishes its brands (inline, by pointer, or both) | +| 5 | Brand Canonical Document | A brand self-publishes its own identity (with optional `house_domain` pointer up) | + +Variants 1–3 are mutually exclusive with each other and with variants 4–5. Variants 4 and 5 compose: a House Portfolio (4) can reference Brand Canonical Documents (5) via `brand_refs[]`, and a Brand Canonical Document can point back at its house via `house_domain`. See [Mutual-assertion trust model](#mutual-assertion-trust-model) for how the two halves resolve. + +### 1. Authoritative Location Redirect + +Points to a hosted brand.json at another URL: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "authoritative_location": "https://adcontextprotocol.org/brand/abc123/brand.json" +} +``` + +Use this when: +- Brand.json is hosted centrally (e.g., by a service provider) +- CDN distribution is needed +- Managed brand services + +Optional fields (shared with House Redirect — see [Redirect ergonomics](#redirect-ergonomics)): +- `redirect_reason`: structured signal for cache handling (`acquisition`, `rebrand`, `regional`, `legacy`, `consolidation`, `other`) +- `redirect_effective_at`: ISO timestamp when the redirect became effective +- `note`: free-text rationale + +### 2. House Redirect + +Points to the house domain that contains the full brand portfolio: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "house": "nikeinc.com", + "note": "Regional site - see house for brand portfolio" +} +``` + +Optional fields: +- `region`: ISO 3166-1 alpha-2 country code (e.g., "CN") +- `redirect_reason`: structured signal for cache handling (see [Redirect ergonomics](#redirect-ergonomics)) +- `redirect_effective_at`: ISO timestamp when the redirect became effective +- `note`: free-text rationale + +Use this when: +- Brand domain is owned by a larger house +- Regional/localized domains point to main house +- Legacy domains redirect to canonical + +### Redirect ergonomics + +Both redirect variants accept optional `redirect_reason` and `redirect_effective_at` to help consumers handle redirect transitions without sitting on stale cached state. + +`redirect_reason` is an enum: + +| Value | Meaning | Caching guidance | +|---|---|---| +| `acquisition` | The owning entity was acquired (e.g., one holdco buys another) | Shorten cache TTL until stable; many fields may move | +| `divestiture` | The owning entity spun out or sold off | Shorten cache TTL until stable; new ownership chain | +| `rebrand` | The brand or house renamed/repositioned | Shorten cache TTL until stable | +| `consolidation` | Sub-brands consolidated into the target | Shorten cache TTL until stable | +| `regional` | Regional/localized domain points to main house | Stable; standard caching | +| `legacy` | Old domain that redirects to canonical | Stable; standard caching | +| `other` | Reason not captured by the above | Free-text rationale belongs in `note` | + +`redirect_effective_at` (ISO 8601 timestamp) is the hard cache invariant: caches **MUST** treat any entry cached before this timestamp as stale and re-fetch through the redirect. The TTL-shortening guidance above is a SHOULD; this timestamp is a MUST and is the load-bearing fix for cache poisoning during M&A and other transitions. + +This is the brand.json analogue to the migration patterns in IAB Tech Lab's [ads.txt](https://iabtechlab.com/ads-txt/) (`OWNERDOMAIN`) and [sellers.json](https://iabtechlab.com/sellers-json/) (`seller_type`), which historically relied on out-of-band coordination — there was no machine-readable transition signal. `redirect_reason` + `redirect_effective_at` close that gap for brand.json. + +Example — acquisition redirect: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "house": "wpp.com", + "redirect_reason": "acquisition", + "redirect_effective_at": "2026-04-15T00:00:00Z", + "note": "Acquired by WPP April 2026" +} +``` + +### 3. Brand Agent + +Designates an MCP agent that provides brand information: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "brand_agent": { + "url": "https://agent.acme.com/mcp", + "id": "acme_brand_agent" + } +} +``` + +Optional fields: +- `contact`: Contact information + +When a brand has an agent, the agent is the authoritative source for brand identity data. + +### 4. House Portfolio + +The house publishes its brands. A house may carry inline child definitions, pointer references to brands that self-publish, or both: + +- **`brands[]`** — inline child definitions. **Parent owns the data.** Best for sub-brands without their own domain (Nike SB, an internal product line) or sub-brands the holdco wants to manage centrally. +- **`brand_refs[]`** — pointer entries. **Child owns the data** at its own canonical document (variant 5). Best for sub-brands with their own domain that want self-publish authority (Converse, Jordan). + +A given child appears in **exactly one** of the two arrays. At least one of `brands[]` or `brand_refs[]` must be present. + +**Simple house (inline only):** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "nikeinc.com", + "name": "Nike, Inc.", + "architecture": "hybrid" + }, + "brands": [ + { + "id": "nike", + "names": [{"en": "Nike"}], + "keller_type": "master", + "properties": [ + {"type": "website", "identifier": "nike.com", "primary": true} + ] + } + ] +} +``` + +**Mixed hybrid (inline + pointer):** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "nikeinc.com", + "name": "Nike, Inc.", + "architecture": "hybrid" + }, + "brands": [ + { + "id": "nike_sb", + "names": [{"en_US": "Nike SB"}], + "keller_type": "sub_brand" + } + ], + "brand_refs": [ + { "domain": "converse.com", "brand_id": "converse" }, + { "domain": "jordan.com", "brand_id": "jordan" } + ] +} +``` + +The `brand_refs[]` entry shape: + +| Field | Required | Meaning | +|---|---|---| +| `domain` | yes | Where the child's canonical brand.json lives. Must be unique within `brand_refs[]`. | +| `brand_id` | yes | Stable identifier for this brand within the house's portfolio. Must be unique within `brand_refs[]` and MUST NOT also appear in `brands[]`. | +| `managed_by` | no | Domain of the entity that operationally manages this brand (e.g., an agency network within a holdco). House-declared. **Consumers MUST NOT use it for trust or authorization decisions.** Aggregation across houses ("show me everything BBH manages") is the intended use — it's a directory field, not a trust field. | +| `effective_at` | no | ISO 8601 timestamp when the house established this ownership claim. Consumers age mutual-assertion edges from this date; omit and consumers age from their own first observation. | + +Trust semantics for the relationship between this entry and the child's `house_domain` claim are defined in [Mutual-assertion trust model](#mutual-assertion-trust-model) below. + +**House with delegation (WPP):** + +Holdcos delegate brand management to agency networks. WPP plc owns brands but Ogilvy or BBH actually runs them day-to-day. `managed_by` on a `brand_refs[]` entry captures this as a unilateral declaration by the owning house. The leaf brand doesn't reference the manager. UIs render BBH Sport under BBH for agency views; trust validation walks BBH Sport → WPP only. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "wpp.com", + "name": "WPP plc" + }, + "brand_refs": [ + { "domain": "bbh-sport.com", "brand_id": "bbh_sport", "managed_by": "bbh.com" }, + { "domain": "ogilvy-toyota.com", "brand_id": "ogilvy_toyota", "managed_by": "ogilvy.com" }, + { "domain": "wpp-direct.com", "brand_id": "wpp_direct" } + ] +} +``` + +`managed_by` is a **directory field, not a trust field.** It exists so consumers can group brands by who actually runs them day-to-day — the canonical view a buyer-side DSP wants when shopping inventory across an agency network. Consumers MUST NOT use it for trust or authorization decisions; that line still flows through mutual assertion between leaf and house. See [Conformance](#conformance). + +### 5. Brand Canonical Document + +Self-published per-brand document where the brand owns its own identity attributes. Hosted at the brand's own `/.well-known/brand.json` (or via [authoritative location redirect](#1-authoritative-location-redirect)). A brand may declare its house via `house_domain` or stand alone (no parent house — Patagonia, Liquid Death — omit the field). Trust semantics for the `house_domain` relationship are defined in [Mutual-assertion trust model](#mutual-assertion-trust-model) below. + +**With a house — Converse under Nike:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "converse", + "names": [{"en_US": "Converse"}], + "keller_type": "sub_brand", + "house_domain": "nikeinc.com", + "logos": [ + {"url": "https://converse.com/logo.svg", "variant": "primary"} + ], + "tagline": "Sneaker for the streets" +} +``` + +**Standalone — Patagonia:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "patagonia", + "names": [{"en_US": "Patagonia"}], + "keller_type": "independent", + "logos": [ + {"url": "https://patagonia.com/logo.svg", "variant": "primary"} + ], + "tagline": "We're in business to save our home planet." +} +``` + +Use this when a brand has its own domain and wants self-publish authority for its identity (logos, colors, tone, taglines). The brand carries the same identity fields as an inline entry in `brands[]`. + +**Top-level fields specific to this variant:** + +| Field | Type | Required | Description | +|---|---|---|---| +| `id` | string | Yes | Brand identifier (lowercase alphanumeric with underscores) | +| `names` | array | Yes | Localized names | +| `house_domain` | string (domain) | No | Pointer to the corporate house this brand belongs to. The brand is treated as standalone if omitted. Single-hop — a brand cannot itself declare `brand_refs[]`. | +| `$schema`, `version`, `last_updated` | string | No | Document metadata | + +**All other brand-identity fields apply** (`logos`, `colors`, `fonts`, `tone`, `tagline`, `visual_guidelines`, `keller_type`, `parent_brand`, `properties[]`, `industries[]`, `target_audience`, `description`, `agents[]`, `contact`, `trademarks[]`, `data_subject_contestation`, etc. — see [Brand definition](#brand-definition) for the full field list). The document MUST NOT carry house-only fields (`house`, `brands`, `brand_refs`, `authorized_operators`) or redirect fields (`authoritative_location`, `house` as string, `region`, `note`, `redirect_reason`, `redirect_effective_at`). + +## Mutual-assertion trust model + +Trust resolves at two layers — **brand identity** (logos, colors, tone, tagline, etc.) and **brand relationships** (who owns this brand, who can speak for it). The two layers separate cleanly. Identity is verifiable from a single TLS-served document; relationships require both sides to reciprocate. + +| Edge | Identity trust | Relationship trust | Notes | +|---|---|---|---| +| Inline child in `brands[]` | Trusted (parent's TLS covers the data) | Trusted (the house authored the entry) | The classic shape. Parent owns the data. | +| **Mutual assertion**: leaf says `house_domain: A`, A's `brand_refs[]` includes leaf | Trusted (leaf's TLS) | Trusted (both sides reciprocate) | **Full trust.** Governance propagation, member-feature inheritance, billable inclusion all flow. | +| **Leaf-only**: leaf says `house_domain: A`, A's `brand_refs[]` does not include leaf | Trusted (leaf's TLS) | Unverified | Identity is real — the brand controls its own domain. The parent claim is unverified; governance and billable inclusion are blocked pending reciprocation. See [Self-healing through notification](#self-healing-through-notification). | +| **House-only**: A's `brand_refs[]` includes leaf, leaf has no `house_domain` | Trusted (leaf's TLS — as a standalone document) | Unverified in the other direction | The leaf hasn't claimed A. Treat the leaf as standalone; A's claim is supportive metadata. | +| Standalone (no `house_domain`) | Trusted (leaf's TLS) | n/a — no claimed relationship | Patagonia, Liquid Death. The brand is its own thing. | + +**Key asymmetry.** A leaf with verified TLS at its own domain is authoritative for *its own identity attributes* whether or not its parent claim is reciprocated. The relationship layer is what mutual assertion gates. A naïve "claimed, unverified ⇒ ignore the leaf entirely" reading is wrong — the leaf's logos/colors/tone are still real. + +**Standalone trumps third-party claim.** A Brand Canonical Document with no `house_domain` is standalone. If some other house's `brand_refs[]` lists it anyway, the leaf's silence is dispositive: treat as standalone; the third-party claim is unverified metadata only. See [Conformance](#conformance) for the normative statement. + +Validation is a runtime check (the crawler fetches both documents and compares); the JSON Schema accepts the fields independently. + +### Self-healing through notification + +The leaf-only edge case is common in practice — a sub-brand team stands up its own canonical document before the parent's portfolio team has time to add the reciprocal entry. Today this leaves the brand stuck: identity is good, but media buys and governance decisions are blocked. + +The spec defines a self-healing loop. For houses **without** a brand-agent: + +1. The house publishes a reachable `contact.email` at the top level of its `brand.json`. +2. When a consumer encounters a leaf-only edge — leaf claims `house_domain: A`, A's `brand_refs[]` doesn't include leaf — the consumer **SHOULD** notify A's `contact.email` that a leaf is claiming reciprocation and is blocked pending verification. +3. The house team adds the entry to `brand_refs[]`. On the next crawl/re-validation, the edge upgrades to mutual. + +For houses **with** a brand-agent advertising [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim), the consumer asks the agent directly instead — see [Agent-augmented verification](#agent-augmented-verification) below. The agent path surfaces richer states (`pending_review`, `transferring`, `disputed`, `licensed_in`) than the email loop can express, and when both house and leaf publish agents, mutual assertion completes via two signed agent calls without a static-file crawl. + +### Agent-augmented verification + +When the brand publishes a brand-agent ([variant 3](#3-brand-agent) or a `type: "brand"` entry in `agents[]` on variant 4/5), the agent can be asked verification questions via [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) — a single tool that takes a `claim_type` (`subsidiary` / `parent` / `property` / `trademark`) and returns the brand's authoritative answer. The brand-agent is brand.json hidden behind a server: same data the static file carries, plus the richer states the static file can't capture (`pending_review`, `transferring`, `disputed`, `licensed_in`, `licensed_out`). + +**The trust model is asymmetric by direction.** Without this asymmetry, a malicious or mistaken house could claim subsidiaries it doesn't own and have consumers extend trust on the strength of the signature alone. + +The rules below apply only after the [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) returns verifier-local `trust: "trusted"`. A skipped or failed check is `untrusted` for relationship decisions and cannot extend or revoke trust. + +| Direction | Trust rule | +|---|---| +| **Rejection** — trusted agent returns `disputed` or `not_ours` | Authoritative unilaterally. A trusted brand has standing to refuse association regardless of what any other party publishes. An untrusted rejection cannot override a reciprocating claim. | +| **Assertion** — agent signs `owned` / `pending_review` / `transferring` / `licensed_*` | Informative but NOT trust-extending alone. The reciprocating side must still confirm (via its own brand-agent's `parent` claim type, or via static crawl) before relationship trust extends. | + +When both house and leaf publish brand-agents, mutual assertion can complete at the agent layer: partner calls `verify_brand_claim` with `claim_type: "subsidiary"` on the house AND with `claim_type: "parent"` on the leaf. Both `owned` → mutual assertion, real-time, signed by both parties, no crawl required. This is the cleanest path for trust extension. + +**Mutual assertion proves consistency between two parties, not standing.** Two reciprocally-asserting agents at attacker-controlled domains can sign matching `owned` responses; mutual assertion confirms only that they agree, not that either has legitimate authority over the underlying brand. The final trust gate is still domain control + TLS — verified on the consumer side, against the legal/operational entity the consumer expects to own the domain. Mutual assertion at the agent layer is the floor; consumer-side standing checks (domain registration, real-world identity) are still the caller's responsibility for high-trust decisions. + +Agent responses are signed under the brand's `adcp_use: "response-signing"` JWK. See the [task reference](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) for the full request/response shapes and per-claim-type details. + +### Field resolution + +There is no inheritance/override block. Each consumer-side question has a single answer: + +| Question | Resolution | +|---|---| +| Brand identity (logos, colors, tone, tagline, voice) | Read from brand's own canonical document. For inline children, read from the parent's `brands[]` entry. | +| Brand contact, properties, industries | Read from brand's own canonical document. | +| Trademarks, authorized_operators, corporate contact | Read from the house's brand.json. | +| `data_subject_contestation`, compliance policies, regulated-category flags | **Strictest-of** house-level and brand-level. See below. | +| Mutual-assertion verification | Fetch both brand and house, compare `house_domain` ↔ `brand_refs[]`. | + +**Identity fields** (`name`, `names`, `logos`, `colors`, `fonts`, `tone`, `voice`, `tagline`, `visual_guidelines`, `avatar`): brand-level value is authoritative; the house value is not consulted. Brand teams own brand identity. + +### Authorized Operator Resolution + +`authorized_operators[]` entries may be scoped by brand, country, activity, and time. Consumers evaluating an operator relationship MUST ignore an entry when the current time is before `valid_from` or at/after `valid_until`. Omitted validity fields mean the house has not published a machine-readable start or end bound. + +When `scopes` is omitted, consumers should treat the entry as backwards-compatible broad authorization for the listed brands and countries. When `scopes` is present, the operator is authorized only for the listed activities, or for all activities when it explicitly contains `all`. + +`authorized_operators[]` does not replace publisher-side inventory authorization. For delegated or network inventory, buyers still need the publisher's matching `adagents.json` authorization; the brand file establishes who may represent the brand or house, while `adagents.json` establishes who may sell a publisher's inventory. + +**Compliance and governance fields**: the resolved value is the **strictest of** the house-level and brand-level values. A brand cannot weaken a house's governance assertions; it can only add stricter constraints. Applies to: + +- `data_subject_contestation` — both contacts SHOULD be presented to data subjects (consumers may use either; brand-level does NOT replace house-level) +- `compliance_policies`, audience exclusions, regulated-category flags — resolved as union (more restrictions wins) + +This is the load-bearing reason holdcos publish corporate-level governance: brand teams should not be able to soften compliance by self-publishing. Identity is brand-wins because that's what brand teams own; governance is strictest-of because that's how legal/compliance regimes actually work. The schema does not encode this rule; it's a resolution-layer semantic. + +See [Resolution algorithm](#resolution-algorithm) below for the full crawler procedure. + +### Acquisitions and reorganizations + +Existing redirect variants handle M&A natively: + +1. Pre-deal: `dentsu.com/.well-known/brand.json` is a House Portfolio. Dentsu brands' canonical docs say `house_domain: "dentsu.com"`. +2. Deal closes: Dentsu's `brand.json` is replaced with a [House Redirect](#2-house-redirect) → `{ "house": "wpp.com" }`. WPP adds the acquired brands to `brand_refs[]` with `managed_by: "dentsu.com"` for ops continuity and `effective_at` set to the deal-close date. +3. Post-deal: leaves still pointing at `house_domain: "dentsu.com"` resolve through the redirect to WPP. Mutual-assertion verification follows the redirect chain (see [Conformance](#conformance)) and holds. No urgent leaf migration needed. + +### Adopting brand_refs[] for an existing portfolio + +An existing House Portfolio publisher (today on inline `brands[]`) doesn't need to migrate. `brand_refs[]` is additive and pull-based — a brand moves out of `brands[]` only when its team decides to self-publish. + +The migration path for a single brand: + +1. The child brand stands up `/.well-known/brand.json` at its own domain as a Brand Canonical Document, declaring `house_domain: ""`. +2. The house team removes the child's entry from `brands[]` and adds `{ domain, brand_id, effective_at }` to `brand_refs[]`. `brand_id` MUST match the value the child uses; otherwise the cross-array uniqueness invariant doesn't help future readers. +3. The crawler picks up the mutual assertion on next refresh. + +Between steps 1 and 2, the leaf-only edge is unverified at the relationship layer but the leaf's *identity* is still trusted on TLS (see [Self-healing through notification](#self-healing-through-notification)). Consumers SHOULD email the house's `contact.email` to prompt step 2. + +The AAO registry consumes both shapes today and will not re-classify a brand that moves from `brands[]` to `brand_refs[]` — the `brand_id` is the stable identifier across the migration. + +### Out of scope + +The single-house, single-hop trust model deliberately doesn't cover four shapes: + +- **Joint ventures with two parents** (Hulu pre-Disney, JVs in pharma, automotive partnerships). A leaf has at most one `house_domain`. JV structures must pick one canonical parent or use a holding entity; the protocol won't model two-parent ownership. +- **PE rollups and white-label arrangements that want opacity.** Mutual assertion publishes ownership at well-known URLs. A holdco that wants to operate brands without public disclosure can use the existing monolithic `brands[]` shape (which doesn't expose the parent to leaf-domain crawlers) but cannot use mutual-assertion. Mutual assertion trades opacity for verifiability — that's the design. +- **Jurisdictional governance divergence** (e.g., a Marriott franchisee in Germany whose data-subject contestation rules differ from the US parent's). Strictest-of resolution means brand-level publishers can only *add* constraints. A brand in a less-regulated jurisdiction cannot drop a house-level rule that doesn't apply to it. Workaround: the house publishes the strictest applicable per-region rule. +- **Standing licensed relationships as a static brand.json surface.** [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) with `claim_type: "trademark"` can return `licensed_in` / `licensed_out` because the underlying relationships are real — Marriott franchisees use the MARRIOTT mark under license, music catalogs are licensed-out per territory, jurisdictional licensing splits ("licensed in CN, self-managed elsewhere") are common. The brand-agent can speak to these from internal records. **But `brand.json` itself doesn't yet have a publishing surface for standing licensed relationships** parallel to `brand_refs[]` for ownership. The existing rights protocol (`rights_agent`, `acquire_rights`) handles *transactional* licensing — negotiate a deal — not standing declarations. This gap is real and tracked as a follow-up; the verify surface exposes the states because partners need to consume them, but the static-file substrate that backs them is a separate design alongside the rights-protocol team. + +These cases belong in governance / corporate-structure specs, not brand.json. `brand.json` is the brand-identity surface; corporate legal structure and licensing-relationship publishing are their own concerns. + +## House definition + +The house object represents the corporate entity: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `domain` | string | Yes | House's primary domain | +| `name` | string | Yes | Display name | +| `names` | array | No | Localized names | +| `architecture` | enum | No | `branded_house`, `house_of_brands`, or `hybrid` | + +## Brand definition + +### Document language and localized fields + +House Portfolio and Brand Canonical documents may set top-level `default_language` to a BCP 47 language tag. It identifies the language of legacy plain-string and plain-array content in that document. When omitted, readers MUST behave as though it were `"en"`. + +Fields that support localization retain their legacy plain value and also accept an ordered array of one-locale maps. Scalar fields map a locale to one string; `tone.attributes`, `tone.dos`, and `tone.donts` map a locale to the complete ordered string list: + +```json +{ + "default_language": "en-GB", + "tone": { + "voice": [ + {"en-GB": "Warm and direct"}, + {"fr": "Chaleureux et direct"} + ], + "attributes": [ + {"en-GB": ["plain-spoken", "optimistic"]}, + {"fr": ["accessible", "optimiste"]} + ] + }, + "assets": [{ + "asset_id": "hero_summer", + "asset_type": "image", + "url": "https://assets.example/hero.jpg", + "name": [{"en": "Summer hero"}, {"fr": "Visuel principal été"}] + }] +} +``` + +Readers MUST resolve a localized field in this order: + +1. exact requested BCP 47 tag; +2. requested base language; +3. exact `default_language` tag; +4. `default_language` base language; +5. the legacy plain string or complete plain array, when present; +6. otherwise the field is unavailable. + +Readers MUST NOT select the first or any other arbitrary translation when none of those candidates exists. Before matching legacy underscore keys such as `fr_CA`, readers replace `_` with `-` and apply the AdCP locale-tag canonicalization profile. + +For the localized scalar and complete-list fields introduced in 3.2, producers MUST NOT repeat a locale after canonicalization. For example, one localized value cannot contain both `en-US` and `en_US`. This restriction does not apply to the legacy `names` and `tagline` alias arrays, which continue to allow multiple values for one language. + +Localized tone arrays are selected as a whole. Readers MUST NOT localize elements independently or combine entries from different languages; list ordering and language consistency are part of the published value. This 3.2 slice covers `tone.voice`, `tone.attributes`, `tone.dos`, `tone.donts`, and asset `name` and `description`. Logo and product-catalog fields remain unchanged. + +Each brand in the `brands` array: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `id` | string | Yes | Brand identifier (lowercase alphanumeric with underscores) | +| `names` | array | Yes | Localized names (see below) | +| `keller_type` | enum | No | `master`, `sub_brand`, `endorsed`, `independent` | +| `parent_brand` | string | No | Parent brand's id | +| `properties` | array | No | Digital properties associated with this brand | +| `brand_agent` | object | No | Agent providing brand identity data `{ url, id }` | +| `rights_agent` | object | No | Rights licensing agent `{ url, id, available_uses, right_types, countries }` | +| `logos` | array | No | Brand logo assets | +| `colors` | object | No | Brand color palette | +| `fonts` | object | No | Brand typography | +| `tone` | object | No | Brand voice and messaging guidelines. `voice` is a localized scalar; `attributes`, `dos`, and `donts` localize as complete arrays. | +| `tagline` | string | No | Brand tagline or slogan | +| `visual_guidelines` | object | No | Structured visual rules for generative creative systems | +| `trademarks` | array | No | Registered trademarks owned or licensed by this brand (`registry`, `number`, `mark`, optional `status`, `license_type`, `countries`). See [Trademarks](#trademarks). | + +### Names Array + +Names are localized with language codes: + +```json +{ + "names": [ + {"en": "Nike"}, + {"en": "The Swoosh"}, + {"zh": "耐克"}, + {"ja": "ナイキ"} + ] +} +``` + +Multiple entries per language are allowed (for aliases). + + + The examples above use bare language keys, while existing `brand.json` + documents may also use legacy underscore-separated keys such as `en_US`. + Those keys are not values of `/schemas/core/locale-tag.json`. When bridging + brand content into a newer language-tag field, replace `_` with `-`, apply + the AdCP canonical wire profile, and validate the result; do not copy the + legacy key unchanged. The underscore form remains accepted here for + backwards compatibility pending a separately versioned migration. + + +### Keller Types + +Brand architecture classifications from marketing theory: + +| Type | Description | Example | +|------|-------------|---------| +| `master` | Primary brand of house | Nike for Nike, Inc. | +| `sub_brand` | Carries parent brand name | Nike SB | +| `endorsed` | Independent identity, endorsed by parent | Air Jordan "by Nike" | +| `independent` | Operates separately from house | Converse | + +### Extended color roles + +The `colors` object has five standard roles (`primary`, `secondary`, `accent`, `background`, `text`), but brands can and should provide additional roles for finer granularity. The schema accepts any additional color role via `additionalProperties`. + +```json +{ + "colors": { + "primary": "#FF6600", + "secondary": "#0066CC", + "background": "#FFFFFF", + "text": "#1A1A1A", + "heading": "#FF6600", + "body": "#333333", + "label": "#666666", + "border": "#E5E5E5", + "divider": "#F0F0F0", + "surface_1": "#F9F9F9", + "surface_2": "#F0F0F0" + } +} +``` + +| Role | Purpose | +|------|---------| +| `heading` | Heading text color (when different from body text) | +| `body` | Body text color | +| `label` | Label/caption text color | +| `border` | Border/outline color | +| `divider` | Divider/separator color | +| `surface_1` | Primary surface/card background | +| `surface_2` | Secondary surface background | + +These extended roles help creative agents distinguish between text hierarchies and surface levels without guessing. + +## Visual guidelines + +The `visual_guidelines` object provides structured rules that generative creative systems can use to produce on-brand assets consistently. These are brand constants — they don't change campaign to campaign. + + +Visual guidelines complement the basic identity fields (`colors`, `fonts`, `logos`). Colors define *what* the brand palette is; visual guidelines define *how* to use it. Fonts define font families; visual guidelines define the type scale. + + +### Photography + +Controls how brand photography should look when selected or generated: + +```json +{ + "photography": { + "realism": "natural", + "lighting": "soft daylight", + "color_temperature": "warm", + "contrast": "medium", + "depth_of_field": "medium", + "subject": { + "people": { + "age_range": "25-45", + "diversity": "mixed", + "mood": ["confident", "relaxed"] + }, + "product_focus": "in-use", + "setting": "outdoor" + }, + "framing": { + "subject_position": "center-left", + "crop_style": "waist-up", + "perspective": "eye-level" + } + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `realism` | enum | `natural`, `stylized`, `hyperreal`, `abstract` | +| `lighting` | string | Lighting style description | +| `color_temperature` | enum | `warm`, `neutral`, `cool` | +| `contrast` | enum | `low`, `medium`, `high` | +| `depth_of_field` | enum | `shallow`, `medium`, `deep` | +| `subject` | object | Subject matter guidelines (people, product focus, setting) | +| `framing` | object | Camera framing rules (position, crop, perspective) | +| `preferred_aspect_ratios` | array | Preferred aspect ratios (e.g., `["16:9", "4:5", "1:1"]`) | +| `tags` | array | Additional style descriptors | + +### Graphic style + +Defines the visual language for brand graphics and illustrations: + +```json +{ + "graphic_style": { + "style_type": "flat_illustration", + "stroke_style": "rounded", + "stroke_weight": "2px", + "corner_radius": "12px" + } +} +``` + +Style types: `flat_illustration`, `geometric`, `gradient_mesh`, `editorial_collage`, `hand_drawn`, `minimal_line_art`, `3d_render`, `isometric`, `photographic_composite`. + +| Field | Type | Description | +|-------|------|-------------| +| `style_type` | enum | `flat_illustration`, `geometric`, `gradient_mesh`, `editorial_collage`, `hand_drawn`, `minimal_line_art`, `3d_render`, `isometric`, `photographic_composite` | +| `stroke_style` | enum | `rounded`, `square`, `mixed`, `none` | +| `stroke_weight` | string | Stroke weight (e.g., `2px`) | +| `corner_radius` | string | Corner radius for graphic/illustration elements (e.g., `12px`). For UI components, see `border_radius`. | +| `tags` | array | Additional style descriptors | + +### Shapes + +Brand shapes used as part of visual identity: + +```json +{ + "shapes": { + "primary_shape": "circle", + "secondary_shapes": ["rounded_rectangle", "diagonal_wave"], + "usage": { + "max_per_layout": 2, + "overlap_allowed": true + } + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `primary_shape` | string | Primary brand shape (e.g., `circle`, `rounded_rectangle`, `hexagon`) | +| `secondary_shapes` | array | Secondary shapes in the brand vocabulary | +| `usage.max_per_layout` | integer | Maximum distinct shapes per layout | +| `usage.overlap_allowed` | boolean | Whether shapes may overlap | + +### Iconography + +Icon style system and usage rules: + +```json +{ + "iconography": { + "style": "outline", + "stroke_weight": "2px", + "corner_style": "rounded", + "usage": { + "max_per_frame": 3, + "size_ratio": "1:8" + } + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `style` | enum | `outline`, `filled`, `duotone`, `flat`, `glyph`, `hand_drawn` | +| `stroke_weight` | string | Icon stroke weight (e.g., `2px`) | +| `corner_style` | enum | `rounded`, `square`, `mixed` | +| `usage.max_per_frame` | integer | Maximum icons per creative frame | +| `usage.size_ratio` | string | Icon-to-layout size ratio (e.g., `1:8`) | + +### Composition + +Layout rules for overlays, textures, and backgrounds: + +```json +{ + "composition": { + "overlays": { + "gradient_style": "linear", + "gradient_direction": "45deg", + "opacity": "70%" + }, + "texture": { + "style": "subtle_grain", + "intensity": "low" + }, + "backgrounds": { + "types_allowed": ["solid_color", "gradient", "image"] + } + } +} +``` + +Texture styles: `none`, `subtle_grain`, `noise`, `paper`, `fabric`, `concrete`. Intensity: `low`, `medium`, `high`. + +Background types: `solid_color`, `gradient`, `blurred_photo`, `image`, `video`, `pattern`, `transparent`. + +### Border radius + +Named border radius presets for UI components and layout elements. Border radius is one of the most visible brand differentiators — generous radii feel warm and approachable, while small or zero radii feel precise and editorial. + +```json +{ + "border_radius": { + "none": "0", + "default": "12px", + "small": "4px", + "large": "20px", + "pill": "999px" + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `none` | string | Explicitly sharp corners (`0`) | +| `default` | string | Default border radius for UI components (e.g., `8px`, `12px`) | +| `small` | string | Small radius for compact elements (e.g., `4px`) | +| `large` | string | Large radius for cards and containers (e.g., `16px`, `24px`) | +| `pill` | string | Fully rounded / pill shape (e.g., `999px`) | + +Additional named presets can be added beyond the five standard levels. + + +`graphic_style.corner_radius` defines a default radius for graphic/illustration elements. `border_radius` defines a named scale for UI components and layout — buttons, cards, inputs, modals. + + +### Elevation + +Named shadow levels that define how elements appear to lift off the surface. Brands use elevation as identity — some prefer dramatic multi-layer shadows, others use a single diffuse shadow. + +```json +{ + "elevation": { + "none": "none", + "subtle": "0 1px 3px rgba(0,0,0,0.08)", + "card": "0 4px 8px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.06)", + "modal": "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.06)" + } +} +``` + +Values use CSS `box-shadow` syntax. Generative systems can apply these directly. + +| Field | Type | Description | +|-------|------|-------------| +| `none` | string | No shadow (`none`) | +| `subtle` | string | Slight lift for interactive elements | +| `card` | string | Card-level elevation | +| `modal` | string | Modal/overlay elevation | + +Additional named levels (e.g., `dropdown`, `tooltip`) can be added. + +### Spacing + +Spacing system for consistent layout rhythm. A base unit plus a named scale enables creative agents to produce correctly-spaced layouts without guessing. + +```json +{ + "spacing": { + "unit": "8px", + "scale": { + "xs": "4px", + "sm": "8px", + "md": "16px", + "lg": "24px", + "xl": "32px", + "2xl": "48px" + } + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `unit` | string | Base grid unit this scale was designed from (e.g., `8px`). Informational — agents should use the named scale values directly. | +| `scale` | object | Named spacing scale (`xs` through `2xl`) | + +The `scale` object supports standard sizes (`xs`, `sm`, `md`, `lg`, `xl`, `2xl`) and can include additional named values (e.g., `3xl`, `section`). + +### Graphic elements + +Reusable decorative or structural visual elements that are part of the brand identity — torn paper edges, watermarks, dividers, background patterns: + +```json +{ + "graphic_elements": [ + { + "name": "Paper Tear", + "type": "frame", + "description": "Torn paper edge used as section dividers and photo frames. Use primarily vertical orientation.", + "orientation": "vertical", + "colors": ["#a75230", "#f6f1f1", "#fba007"], + "max_per_layout": 2 + }, + { + "name": "Location Sketch Watermark", + "type": "watermark", + "description": "Light hand-drawn building sketch behind content, visible through the logo area", + "colors": ["#a75230"] + } + ] +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `name` | string | Yes | Element name | +| `type` | enum | No | `border`, `divider`, `frame`, `watermark`, `pattern`, `texture_overlay`, `decorative` | +| `description` | string | No | How the element is used in layouts | +| `orientation` | enum | No | `horizontal`, `vertical`, `any` | +| `colors` | array | No | Colors this element may appear in | +| `max_per_layout` | integer | No | Maximum instances per layout | + +### Motion + +Motion and animation rules for video, animated display, and interactive formats: + +```json +{ + "motion": { + "transition_style": "dissolve", + "animation_speed": "moderate", + "easing": "ease-in-out", + "text_entrance": "fade", + "pacing": "lingering", + "kinetic_typography": false + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `transition_style` | enum | `cut`, `dissolve`, `slide`, `wipe`, `zoom`, `fade` | +| `animation_speed` | enum | `slow`, `moderate`, `fast` | +| `easing` | string | Default easing function (e.g., `ease-in-out`, `spring`, `linear`) | +| `text_entrance` | enum | `fade`, `typewriter`, `slide_up`, `slide_left`, `scale`, `none` | +| `pacing` | enum | `lingering`, `moderate`, `fast_cuts` | +| `kinetic_typography` | boolean | Whether animated/kinetic typography is allowed | +| `tags` | array | Additional motion style descriptors | + +### Logo placement + +Logo placement and clear space rules for automated creative production: + +```json +{ + "logo_placement": { + "preferred_position": "bottom-left", + "min_clear_space": "0.5x", + "min_height": "40px", + "background_contrast": "any" + } +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `preferred_position` | enum | `top-left`, `top-center`, `top-right`, `bottom-left`, `bottom-center`, `bottom-right`, `center` | +| `min_clear_space` | string | Minimum clear space as a multiple of logo height (e.g., `0.5x`, `1x`) or fixed value (e.g., `16px`) | +| `min_height` | string | Minimum logo height for legibility (e.g., `40px`) | +| `background_contrast` | enum | `light_only`, `dark_only`, `any` | + +### Logo selection slots + +Use `logos[].slots[]` when a renderer needs to choose the right logo variant for a specific surface, such as a light logo card, dark logo card, profile mark, CTV end card, co-brand lockup, or marketplace listing. `logos[].id` gives downstream rules a stable target that does not depend on a mutable asset URL. + +```json +{ + "logos": [ + { + "id": "primary_horizontal", + "url": "https://assets.example.com/logos/primary.svg", + "orientation": "horizontal", + "background": "light-bg", + "variant": "primary", + "slots": ["logo_card_light", "nav_header", "marketplace_listing"] + }, + { + "id": "knockout_horizontal", + "url": "https://assets.example.com/logos/knockout.svg", + "orientation": "horizontal", + "background": "dark-bg", + "variant": "secondary", + "slots": ["logo_card_dark", "ad_end_card"] + } + ] +} +``` + +Canonical creative formats still use `asset_group_id: "logo"` for the manifest asset group. If a product narrows that slot with `format_options[].params.slots[].logo_slots[]`, builders should select from `brand.json` `logos[]` where `logos[].slots[]` intersects the requested slots. If the format also declares `required_logo_slots[]`, missing coverage should surface as a validation warning or approval mapping instead of falling back silently to prose. + +`visual_guidelines.logo_usage_rules[]` can then apply placement constraints to a stable `logo_id`: + +```json +{ + "visual_guidelines": { + "logo_usage_rules": [ + { + "logo_id": "primary_horizontal", + "slots": ["logo_card_light", "marketplace_listing"], + "minimum_size": { "height": "18px" }, + "clear_space": "1x cap height", + "forbidden_contexts": ["photography_without_knockout"], + "severity": "must" + } + ] + } +} +``` + +### Color constraints + +Use `visual_guidelines.color_constraints[]` for machine-readable color usage and pairing rules, such as accent-only colors, forbidden background combinations, or colors that should never appear together. + +```json +{ + "visual_guidelines": { + "color_constraints": [ + { + "color": { "kind": "name", "name": "market_yellow" }, + "applies_to": ["accent"], + "forbidden_on": [ + { "kind": "surface", "surface": "background" }, + { "kind": "surface", "surface": "text" } + ], + "never_pair_with": [{ "kind": "name", "name": "linen" }], + "contexts": ["digital", "print", "ctv_end_card"], + "severity": "must", + "description": "Market yellow is accent only." + } + ] + } +} +``` + +Each `color_ref` uses an explicit `kind` discriminator: `kind: "name"` looks up a key in `colors{}`, `kind: "value"` carries a literal hex color, and `kind: "surface"` identifies a layout surface such as `background`, `text`, or `logo_background`. + +### Mark lockups + +Use `visual_guidelines.mark_lockups[]` for co-brand, partner, sponsor, program, or secondary-mark layout rules. These fields make ordering, spacing, separators, and size-ratio guidance queryable while leaving optical balancing to layout/render review. + +```json +{ + "visual_guidelines": { + "mark_lockups": [ + { + "lockup_type": "co_brand", + "ordering": "brand_first", + "brand_logo_id": "primary_horizontal", + "contexts": ["partner_campaign", "sponsored_content"], + "separator": { + "type": "keyline", + "color": { "kind": "name", "name": "text" }, + "width": "1px" + }, + "min_gap": "1x clear space", + "brand_min_optical_weight_ratio": 1, + "partner_max_optical_weight_ratio": 1, + "severity": "must" + } + ] + } +} +``` + +### Tooling notes: ingesting brand books + +Tools that create a draft `brand.json` from a brand-guide PDF should keep asset extraction and guideline interpretation separate. + +Use deterministic extraction to produce candidate asset IDs: + +- embedded PDF images for photography, mockups, raster icons, and examples +- rendered-page crops for vector logos, marks, color swatches, and logo specimens that are not embedded image files + +Then use a multimodal model to classify those candidate IDs into proposed `logos[]`, `assets[]`, `colors`, and `visual_guidelines` rules. The model should map back to known candidate IDs; it should not be treated as the source of original asset bytes. + +A draft ingestion record can point from a proposed logo entry back to evidence: + +```json +{ + "asset_id": "candidate_logo_0007", + "source_page": 15, + "extraction_method": "rendered_page_crop", + "proposed_logo": { + "id": "primary_wordmark_dark_card", + "variant": "wordmark", + "background": "dark-bg", + "slots": ["logo_card_dark", "marketplace_listing"] + }, + "review_status": "needs_review" +} +``` + +Do not publish those candidates directly as canonical `logos[]` until a reviewer confirms the crop, assigns the correct slots/backgrounds, and replaces the candidate file with a durable HTTPS logo asset URL. If the source PDF lacks hosted assets, operator authorization, or trademark evidence, that is an ingestion warning rather than a schema gap. + +### Public hosted asset promotion + +AAO-hosted brand assets are for cases where a reviewer or verified owner has approved a private upload for public `brand.json` use. Extraction alone never publishes bytes. The private analysis artifact remains separate from the public asset row, and `brand.json` only receives the public URL after approval. + +Recommended flow: + +1. Store the uploaded or extracted file privately for analysis. +2. Present the candidate to the operator with the exact proposed `brand.json` diff. +3. Require explicit approval before promotion. +4. Promote the approved bytes to a stable public HTTPS URL. +5. Write that public URL into `logos[]`. + +AAO-hosted URLs use this shape: + +```text +https://agenticadvertising.org/assets/brands/{domain}/{assetId}.{ext} +``` + +For example: + +```json +{ + "logos": [ + { + "id": "primary_wordmark", + "url": "https://agenticadvertising.org/assets/brands/acme.example/{assetId}.png", + "variant": "wordmark", + "slots": ["logo_card_light"], + "width": 512, + "height": 128 + } + ] +} +``` + +Public logo promotion must preserve provenance metadata outside the published `brand.json`: original filename, uploader user and organization when known, source flow, created time, content type, dimensions, hash, and whether the path was owner-attested, delegated, or community-submitted. Moderation and owner approval state are operational metadata; consumers should not need to parse them from the public URL. + +Initial promotion limits are intentionally conservative: accept only image MIME types needed for logos (`image/png`, `image/jpeg`, `image/webp`, `image/gif`, and sanitized `image/svg+xml`), cap uploads at 5 MB, detect raster dimensions before publish, and either sanitize SVG aggressively or reject it until the sanitizer is enabled for the surface. Private signed URLs, file-viewer links, and analysis-only object paths must not appear in published `brand.json`. + +Deletion should tombstone the public asset row instead of reusing the URL for unrelated bytes. Replacement should create a new asset URL and update `brand.json` to point at it. Previously published URLs may continue to serve the old approved bytes for cache stability, redirect to the replacement when there is a one-to-one successor, or return `404` after a legal/security takedown; they must never silently serve a different asset under the same ID. + +### Colorways + +Named color pairings that define how colors work together. Allows a creative brief to reference "use my primary colorway" without specifying every color: + +```json +{ + "colorways": [ + { + "name": "primary", + "foreground": "#FFFFFF", + "background": "#FF6600", + "accent": "#0066CC", + "cta_foreground": "#FFFFFF", + "cta_background": "#0066CC" + }, + { + "name": "inverted", + "foreground": "#FF6600", + "background": "#FFFFFF", + "accent": "#0066CC", + "border": "#FF6600" + } + ] +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `name` | string | Yes | Colorway name (e.g., `"primary"`, `"inverted"`, `"dark"`) | +| `foreground` | hex color | Yes | Text/foreground color | +| `background` | hex color | Yes | Background color | +| `accent` | hex color | No | Accent color | +| `cta_foreground` | hex color | No | Call-to-action text color | +| `cta_background` | hex color | No | Call-to-action button color | +| `border` | hex color | No | Border color | +| `channels` | array | No | Channels where this colorway applies (e.g., `["online"]`, `["print", "pos"]`). Omit for universal colorways. | + +### Type scale + +Typography scale defining sizes and weights for different text roles: + +```json +{ + "type_scale": { + "base_width": "1080px", + "heading": { + "font": "primary", + "size": "48px", + "weight": "700", + "line_height": "1.1" + }, + "subheading": { + "font": "primary", + "size": "24px", + "weight": "600", + "line_height": "1.3" + }, + "body": { + "font": "secondary", + "size": "16px", + "weight": "400", + "line_height": "1.5" + }, + "caption": { + "font": "secondary", + "size": "12px", + "weight": "400", + "line_height": "1.4" + }, + "cta": { + "font": "primary", + "size": "18px", + "weight": "700", + "text_transform": "uppercase", + "letter_spacing": "0.05em" + } + } +} +``` + +The `font` field references font roles defined in the brand's `fonts` object (`"primary"`, `"secondary"`), or can specify a font family name directly. + +When sizes are in pixels, use `base_width` to indicate the reference canvas these sizes were designed for. Generative systems should scale proportionally for other canvas sizes — a `48px` heading designed for `1080px` width would scale to `14px` on a `320px` mobile leaderboard. + +### Asset libraries + +References to managed asset libraries (icon sets, illustration systems, image collections). URLs are for human access — a brand portal, press kit, or DAM landing page that a person can open in a browser. + +```json +{ + "asset_libraries": [ + { + "name": "Brand Illustrations v2", + "type": "illustration_system", + "url": "https://brand.example.com/illustrations", + "description": "Flat illustration system with defined color guide", + "color_guide": { + "roles": ["base", "shadow_1", "shadow_2", "highlight_1", "highlight_2", "stroke"], + "palettes": [ + { + "name": "orange", + "colors": { + "base": "#FF6600", + "shadow_1": "#CC5200", + "shadow_2": "#993D00", + "highlight_1": "#FF8533", + "highlight_2": "#FFB380", + "stroke": "#662900" + } + } + ] + } + } + ] +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `name` | string | Yes | Display name of the asset library | +| `type` | enum | Recommended | `icon_set`, `illustration_system`, `image_library`, `video_library`, `template_library` | +| `url` | string (URI) | Yes | URL to the asset library (for human access) | +| `description` | string | No | Description of library contents and usage | +| `color_guide` | object | No | Color roles and palettes used in the library | + +The `color_guide` provides generative systems with the color palettes used in the library — useful for producing on-brand illustrations or icons without accessing the library itself. + +### Restrictions + +Visual prohibitions and guardrails — the visual equivalent of `tone.donts`. These tell generative systems what to avoid: + +```json +{ + "restrictions": [ + "Never place text over the product", + "Do not use black backgrounds", + "No stock photography of people on phones", + "No split-screen layouts" + ] +} +``` + +## Trademarks + +Registered trademarks may appear at the **house level** (corporate marks — e.g., NIKE owned by Nike, Inc.) or at the **brand level** (brand-specific marks — e.g., CONVERSE owned by Converse). Both arrays are valid claims; resolution between them is **union**. + + +**Licensed-in / licensed-out relationships** (Marriott franchisees using the MARRIOTT mark, music catalogs licensed per territory, etc.) are queryable via the brand-agent today through [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) with `claim_type: "trademark"`. A static `brand.json` publishing surface for standing licensed relationships (parallel to `brand_refs[]` for ownership) is a future RFC alongside the rights-protocol team. The static `trademarks[]` array below covers ownership only; licensing posture comes from the agent. + + + +```json +{ + "trademarks": [ + { + "registry": "USPTO", + "number": "12345678", + "mark": "CONVERSE", + "status": "active", + "license_type": "owned", + "countries": ["US"] + } + ] +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `registry` | string | Yes | Trademark registry (e.g., `USPTO`, `EUIPO`, `JPO`, `CNIPA`) | +| `number` | string | Yes | Registration number as issued by the registry | +| `mark` | string | Yes | The registered mark as published | +| `status` | enum | No | `active`, `pending`, `abandoned`, `cancelled`, `expired`. Omit for active marks if status tracking is not maintained. | +| `license_type` | enum | No | `owned` (default), `licensed_in`, `licensed_out` | +| `countries` | array | No | ISO 3166-1 alpha-2 country codes where this registration applies. Omit for global or where the registry's jurisdiction is implicit. | + +Holdcos with cross-jurisdiction conflicts (USPTO `CONVERSE` vs EUIPO `CONVERSE` under different owners) should publish each registration as a separate entry and use `countries` to scope where the mark applies. + +## Property definition + +Properties are digital touchpoints associated with brands: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `type` | enum | Yes | Property type (see below) | +| `identifier` | string | Yes | Domain or app ID | +| `store` | enum | No | App store (`apple`, `google`, etc.) | +| `region` | string | No | ISO country code or `global` | +| `primary` | boolean | No | Is this the primary property? | +| `relationship` | enum | No | How this brand relates to the property: `owned` (default), `direct`, `delegated`, `ad_network`. Delegated/network values match `delegation_type` in adagents.json for bilateral verification; `owned` is a brand.json-only ownership claim. See [ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks). | + +### Property types + +Matches AdCP property-type enum: + +- `website` +- `mobile_app` +- `ctv_app` +- `desktop_app` +- `dooh` +- `podcast` +- `radio` +- `linear_tv` +- `streaming_audio` +- `ai_assistant` + +### Property relationships + +Properties default to `owned` — the brand operates the property directly. For networks and SSPs that sell inventory they don't own, the `relationship` field declares the commercial arrangement: + +| Value | Meaning | Example | +|---|---|---| +| `owned` | Brand owns and operates this property (default) | Your own website | +| `direct` | Brand is the direct sales path, even if a third party runs the tech | Publisher's in-house ad team using a vendor's platform | +| `delegated` | Brand manages monetization — in charge of ad sales | Mediavine managing a food blog | +| `ad_network` | Brand sells as part of a network/exchange — a path, not the path | PubMatic as an SSP | + +This is the AdCP equivalent of `sellers.json` — the operator's public declaration of which publishers they work with. For delegated or network paths, the publisher confirms by setting the matching `delegation_type` on the agent's authorization in their [adagents.json](/dist/docs/3.2.0-beta.4/governance/property/adagents). For first-party inventory, `relationship: "owned"` is the operator's inline ownership declaration. Sell-side implementations need the operator's `brand.json` claim and, when inventory is publisher-authorized or delegated, the publisher's matching `adagents.json` authorization. See [seller setup](/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup) for the step-by-step sell-side pattern and [ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) for network-specific guidance. + +## Resolution algorithm + +To resolve a domain to a canonical brand: + +1. Fetch `https://{domain}/.well-known/brand.json`. +2. Check variant: + - **authoritative_location**: fetch from that URL, continue from step 2. + - **house** (string): fetch from house domain, continue from step 2. + - **brand_agent**: return agent URL — the agent is authoritative. + - **House Portfolio** (`house` object + `brands[]` and/or `brand_refs[]`): for an inline child, find the brand whose `properties[]` or `id` matches the query; for a pointer child, follow `brand_refs[].domain` and resolve once — the followed document MUST be a Brand Canonical Document, never another House Portfolio. + - **Brand Canonical Document** (`id` + `names` at top level): the document is the brand. If `house_domain` is present, fetch the house's `brand.json` to verify reciprocation in its `brand_refs[]` (mutual assertion). When the house side is itself a [House Redirect](#2-house-redirect), follow the redirect chain on the house side before comparing. Read corporate-level fields (e.g., `data_subject_contestation`) from the house if not present on the brand; for compliance fields, resolve **strictest-of** house and brand (see [Mutual-assertion trust model](#mutual-assertion-trust-model)). +3. Return canonical brand information. + +Maximum redirect depth: 3 hops. The brand → house lookup is single-hop (no recursive parent walks). See [Mutual-assertion trust model](#mutual-assertion-trust-model) for trust semantics. + +## Complete examples + +### Small Business + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "bobsburgers.com", + "name": "Bob's Burgers LLC" + }, + "brands": [ + { + "id": "bobs_burgers", + "names": [{"en": "Bob's Burgers"}], + "keller_type": "master", + "properties": [ + {"type": "website", "identifier": "bobsburgers.com", "primary": true} + ], + "logos": [ + { "url": "https://bobsburgers.com/logo.svg", "tags": ["icon"] } + ], + "colors": { "primary": "#FF6B35" } + } + ] +} +``` + +### Enterprise with Agent + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "brand_agent": { + "url": "https://brand-agent.enterprise.com/mcp", + "id": "enterprise_brand_agent" + }, + "contact": { + "name": "Enterprise Brand Team", + "email": "brand@enterprise.com" + } +} +``` + +### Multi-Brand Portfolio + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "nikeinc.com", + "name": "Nike, Inc.", + "architecture": "hybrid" + }, + "brands": [ + { + "id": "nike", + "names": [{"en": "Nike"}, {"zh": "耐克"}, {"ja": "ナイキ"}], + "keller_type": "master", + "properties": [ + {"type": "website", "identifier": "nike.com", "primary": true}, + {"type": "website", "identifier": "nike.cn", "region": "CN"}, + {"type": "mobile_app", "store": "apple", "identifier": "com.nike.omega"} + ] + }, + { + "id": "air_jordan", + "names": [{"en": "Air Jordan"}, {"en": "Jordan"}, {"en": "Jumpman"}], + "keller_type": "endorsed", + "parent_brand": "nike", + "properties": [ + {"type": "website", "identifier": "jordan.com", "primary": true}, + {"type": "website", "identifier": "jumpman23.com"}, + {"type": "mobile_app", "store": "apple", "identifier": "com.nike.snkrs"} + ] + }, + { + "id": "converse", + "names": [{"en": "Converse"}], + "keller_type": "independent", + "properties": [ + {"type": "website", "identifier": "converse.com", "primary": true} + ] + } + ], + "contact": { + "name": "Nike Brand Team", + "email": "brand@nike.com" + } +} +``` + +### Talent Agency with Rights + +A talent agency managing athlete brands with licensable rights: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "lotientertainment.com", + "name": "Loti Entertainment", + "architecture": "house_of_brands" + }, + "brands": [ + { + "id": "daan_janssen", + "names": [{"en": "Daan Janssen"}], + "description": "Dutch Olympic speed skater, 2x gold medalist", + "industries": ["sports"], + "logos": [ + { + "url": "https://cdn.lotientertainment.com/janssen/headshot.jpg", + "variant": "primary" + } + ], + "agents": [ + { + "type": "rights", + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment", + "jwks_uri": "https://rights.lotientertainment.com/.well-known/jwks.json" + } + ], + "rights_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment", + "available_uses": ["likeness", "voice", "endorsement"], + "right_types": ["talent"], + "countries": ["NL", "BE", "DE"] + } + } + ] +} +``` + +The deprecated `rights_agent` discovery field tells crawlers what's licensable without an MCP call. The canonical `agents[]` entry authorizes the exact rights endpoint and its JWKS for credential verification. Buyer agents can search the registry for "Dutch athletes available for voice licensing" and find matches from the indexed brand.json data. + +### Regional Domain Redirect + +On `nike.cn/.well-known/brand.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "house": "nikeinc.com", + "region": "CN" +} +``` + +## Caching + +Recommended cache TTLs: +- Canonical files: 24 hours +- Redirect files: 24 hours +- Failed lookups: 1 hour + +## Conformance + +These invariants MUST be enforced by validators and crawlers; JSON Schema cannot express them directly. + +**Portfolio invariants** + +- **`brand_id` cross-array uniqueness.** A given `brand_id` MUST NOT appear in both `brands[]` and `brand_refs[]` of the same house. Publisher must choose one. +- **`brand_id` within-array uniqueness.** A given `brand_id` MUST be unique within `brands[]` and unique within `brand_refs[]` of the same house. +- **`domain` within-array uniqueness.** Each `brand_refs[].domain` MUST be unique within the array. Two entries pointing at the same domain with different `brand_id` values is undefined — there can be only one canonical pointer per domain per house. +- **`house_domain` placement.** `house_domain` MUST NOT appear on entries inside `brands[]`. It is a Brand Canonical Document top-level field; an inline child cannot carry a parent pointer of its own. + +**Trust invariants** + +- **Mutual-assertion is the relationship-trust edge.** Consumers MUST NOT extend relationship trust (auto-provisioning, member-feature inheritance, billable seat inclusion) through one-sided claims. Mutual assertion (child's `house_domain` matches a `brand_refs[]` entry on the named house) is the canonical trust edge. +- **Identity is TLS-only.** A leaf brand's own identity attributes (logos, colors, tone, tagline, visual_guidelines) are authoritative based on the leaf's TLS-served document alone, regardless of mutual-assertion state. A leaf-only relationship claim does not invalidate the leaf's identity. +- **House Redirects on the house side MUST be followed.** When verifying mutual assertion, if the named house's `brand.json` is a House Redirect, the consumer MUST follow the redirect chain (up to the 3-hop limit) before comparing `brand_refs[]` membership. Otherwise post-acquisition leaves silently lose trust. +- **Standalone trumps third-party claim.** A Brand Canonical Document with no `house_domain` is standalone, regardless of any third-party house's `brand_refs[]` claim about it. The leaf's silence is dispositive. (Stated once here; descriptive prose elsewhere defers to this clause.) +- **`managed_by` is a directory field, not a trust field.** Consumers MUST NOT use `managed_by` for trust or authorization decisions. Aggregation by `managed_by` ("show me everything BBH manages") is the intended use — it's an operational directory across houses, not a trust assertion. + +**Resolution invariants** + +- **Compliance fields strictest-of.** For governance fields — including `data_subject_contestation`, `compliance_policies`, `policy_categories`, audience exclusions, regulated-category flags, and brand-level `disclaimers[]` that the house also publishes — the resolved value is the union/strictest of house-level and brand-level. Brand-level publishers MUST NOT rely on weakening house-level assertions. This is distinct from relationship trust — strictest-of is a resolution rule, not a trust gate. +- **Edge aging.** Mutual-assertion edges SHOULD be aged on two independent clocks. Consumers SHOULD treat an edge as one-sided when the publisher-declared `brand_refs[].effective_at` (or, if absent, the consumer's durable first observation) exceeds the consumer's declaration-age ceiling, even if re-validation continues to succeed. A future `effective_at` is not active yet and MUST NOT extend trust before that time. Consumers SHOULD separately bound how long a previously confirmed edge may remain trusted while re-validation is unavailable. AgenticAdvertising.org's reference resolver uses a 180-day declaration-age ceiling and a 24-hour confirmation-retention window; consumers MAY choose stricter values. + +**Self-healing** + +- **Leaf-only edges SHOULD trigger notification.** When a consumer encounters a leaf claiming `house_domain: X` with no reciprocal entry on X, the consumer SHOULD notify X's `contact.email` so the house team can complete the reciprocation. Notifying parties MUST rate-limit per `{leaf, house}` pair to avoid flooding. +- **Agent-augmented verification.** When the named house publishes a brand-agent advertising [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) in its `supported_tasks` with a relevant `claim_type` (subsidiary / parent / property / trademark), consumers SHOULD call the agent in addition to performing crawl-based mutual-assertion inference. Apply agent results only after the [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) returns verifier-local `trust: "trusted"`; a skipped or failed check cannot extend or revoke trust. The trust model is then asymmetric by direction: trusted `disputed` / `not_ours` overrides any reciprocating claim (rejection is unilateral); trusted `owned` / `pending_review` / `transferring` / `licensed_*` does NOT replace mutual-assertion verification — the reciprocating side must still confirm before relationship trust extends. When both sides have trusted brand-agent results, mutual assertion completes via two signed agent calls (`subsidiary` on the house + `parent` on the leaf). The crawl path is the fallback when the agent is unreachable, untrusted, or returns `unknown`. The email notification SHOULD continue to apply for houses without a brand-agent. See [Agent-augmented verification](#agent-augmented-verification) for the full trust table. + +## Prior art + +The mutual-assertion trust primitive mirrors the IAB Tech Lab's [`ads.txt`](https://iabtechlab.com/ads-txt/) and [`sellers.json`](https://iabtechlab.com/sellers-json/) reciprocal-publication model — and the [`app-ads.txt`](https://iabtechlab.com/wp-content/uploads/2019/03/app-ads.txt-v1.0-final-.pdf) extension that proved the pattern moves cleanly from web bundles to mobile apps. A buyer is trusted as a seller's reseller iff both sides publish the relationship at well-known URLs. Same trust shape, same non-cryptographic "who claims what about whom" verification, same fallback to one-sided / unverified for partial publication. A deployed, durable industry pattern. + +The well-known URL plus structured JSON resource discovery shape predates ads.txt — see [WebFinger](https://datatracker.ietf.org/doc/html/rfc7033) (RFC 7033) and [host-meta](https://datatracker.ietf.org/doc/html/rfc6415) (RFC 6415) for the IETF analogue. `brand.json` borrows this convention via [RFC 8615](https://datatracker.ietf.org/doc/html/rfc8615). + +Within AdCP, the [provenance verifier contract](https://github.com/adcontextprotocol/adcp/pull/3468) (seller-publishes / buyer-represents / seller-confirms) uses the same family of construction for a different field family. + +## Best practices + +1. **Start simple**: Begin with minimal brand.json and add complexity as needed +2. **Use redirects for subsidiaries**: Point brand domains to house domain +3. **List all properties**: Include regional domains, apps, and legacy domains +4. **Keep names current**: Include localized names and common aliases +5. **Visual guidelines are optional**: Add them when you need generative systems to produce on-brand assets consistently. Start with colorways and restrictions — they have the highest immediate impact. +6. **Keep portfolios lean**: For house portfolios with many brands, include visual guidelines only on brands that need them. Full visual guidelines on every brand in a large portfolio increases file size significantly. diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent.mdx new file mode 100644 index 0000000000..0c4d21552b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent.mdx @@ -0,0 +1,868 @@ +--- +title: Building a brand agent +description: "Build an AdCP brand agent as an MCP server. Serve brand identity via get_brand_identity, license talent rights via get_rights and acquire_rights, with public and authorized data tiers." +"og:title": "AdCP — Building a brand agent" +--- + +A brand agent is an MCP server that implements brand protocol tasks. DAMs, talent agencies, and brand portals build brand agents to make their data available to buyer agents over AdCP. + +The agent declares `supported_protocols: ["brand"]` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). The specific tasks it implements define its role: + +| Role | Tasks | Example | +|------|-------|---------| +| Identity provider | `get_brand_identity` | Acme DAM serving brand assets and guidelines | +| Identity + verification | `get_brand_identity` + `verify_brand_claim` | Nike, Inc. answering authoritative subsidiary, property, and trademark questions | +| Rights manager | `get_rights` + `acquire_rights` | Pinnacle Agency licensing talent | +| Full coverage | All five | Nova Talent managing identity, verification, and rights | + +## Server setup + +Every brand agent starts with an MCP server that registers AdCP tasks as tools. + +```typescript +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; +import { z } from "zod"; + +const server = new McpServer({ + name: "acme-brand-agent", + version: "1.0.0", +}); +``` + +Register `get_adcp_capabilities` so buyer agents can discover your supported protocols: + +```typescript +server.tool("get_adcp_capabilities", {}, async () => ({ + content: [{ + type: "text", + text: JSON.stringify({ + supported_protocols: ["brand"], + supported_tasks: ["get_brand_identity"], + }), + }], +})); +``` + +## Transport and HTTP setup + +Wire the MCP server to an HTTP endpoint so buyer agents can reach it over the network: + +```typescript +import express from "express"; +import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; + +const app = express(); +app.use(express.json()); + +app.post("/mcp", async (req, res) => { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + }); + res.on("close", () => transport.close()); + await server.connect(transport); + await transport.handleRequest(req, res, req.body); +}); + +app.listen(3000, () => console.log("Brand agent listening on port 3000")); +``` + +This gives you a stateless HTTP endpoint at `/mcp`. For production, add authentication middleware and CORS headers. + +## Tier 1: identity only + +Implement `get_brand_identity` to serve brand data from your DAM or brand portal. + +```typescript +const FIELDS_ENUM = [ + "description", "industries", "keller_type", "logos", "colors", + "fonts", "visual_guidelines", "tone", "tagline", + "voice_synthesis", "assets", "rights", +] as const; + +server.tool( + "get_brand_identity", + "Returns brand identity data. Core fields are always public.", + { + brand_id: z.string().describe("Brand identifier"), + fields: z.array(z.enum(FIELDS_ENUM)).optional() + .describe("Sections to include. Omit for all authorized sections."), + use_case: z.string().optional() + .describe("Intended use case — agent tailors content accordingly"), + }, + async ({ brand_id, fields, use_case }, extra) => { + const brand = await loadBrand(brand_id); + if (!brand) { + return { + content: [{ type: "text", text: JSON.stringify({ + errors: [{ code: "brand_not_found", message: `No brand with id '${brand_id}'` }], + }) }], + isError: true, + }; + } + + const isAuthorized = await checkLinkedAccount(extra); + const response = buildIdentityResponse(brand, { fields, use_case, isAuthorized }); + + return { content: [{ type: "text", text: JSON.stringify(response) }] }; + } +); +``` + +## Public vs authorized data + +Every `get_brand_identity` response includes the public baseline: `brand_id`, `house`, `names`, `description`, `industries`, `keller_type`, basic `logos`, and `tagline`. No authentication required. + +Authorized callers — linked via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) — get deeper data on top of that baseline: high-res assets, voice synthesis configs, tone guidelines, and rights availability. + +```typescript +function buildIdentityResponse(brand, { fields, use_case, isAuthorized }) { + // Core fields are always returned + const response = { + brand_id: brand.id, + house: brand.house, + names: brand.names, + }; + + // Determine which sections to include + const publicFields = ["description", "industries", "keller_type", "logos", "tagline"]; + const authorizedFields = ["colors", "fonts", "visual_guidelines", "tone", + "voice_synthesis", "assets", "rights"]; + + const requested = fields ?? [...publicFields, ...authorizedFields]; + const withheld = []; + + for (const field of requested) { + if (publicFields.includes(field)) { + response[field] = brand[field]; + } else if (isAuthorized) { + response[field] = brand[field]; + } else { + withheld.push(field); + } + } + + // Signal what's behind auth + if (withheld.length > 0) { + response.available_fields = withheld; + } + + return response; +} +``` + +When a public caller requests `fields: ["logos", "tone"]`, they get logos but not tone. The response includes `available_fields: ["tone"]` so the caller knows what linking their account would unlock. + +## Adding verify_brand_claim + +[`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) lets partners ask the brand-agent an authoritative yes/no question about its identity — "is this subsidiary yours", "is this property yours", "is this trademark yours". It's a layered capability on top of the identity tier: same brand data, plus the richer states (`pending_review`, `transferring`, `disputed`, `licensed_in`) the static `brand.json` can't express. + +The trust model is asymmetric by direction only after the [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) returns verifier-local `trust: "trusted"`. Trusted rejections (`disputed` / `not_ours`) are authoritative unilaterally — a trusted brand has standing to refuse association without reciprocation. Trusted assertions (`owned` / `pending_review` / `transferring` / `licensed_*`) are informative but NOT trust-extending alone; the reciprocating side must still confirm. A skipped or failed cross-check cannot extend or revoke trust. This is the load-bearing concept — see [`brand.json` § Agent-augmented verification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#agent-augmented-verification) for the full normative table. + +### Capability declaration + +Advertise `verify_brand_claim` in `get_adcp_capabilities`, and declare which claim types you implement via the per-tool extension. A brand-agent MAY ship a slice (e.g., property only for creative-clearance, or subsidiary+parent for governance-trust extension) instead of all four. + +```typescript +server.tool("get_adcp_capabilities", {}, async () => ({ + content: [{ + type: "text", + text: JSON.stringify({ + supported_protocols: ["brand"], + supported_tasks: ["get_brand_identity", "verify_brand_claim"], + brand: { + verify_brand_claim: { + supported_claim_types: ["subsidiary", "parent", "property", "trademark"], + }, + }, + }), + }], +})); +``` + +When `supported_claim_types` is omitted, the agent advertises support for all four. Consumers MUST check before relying on a specific claim type; unsupported types MUST return `UNSUPPORTED_FEATURE`. + +### State model + +The agent needs internal data corresponding to each claim type. Treat `brand.json` as the public projection of these stores — the agent serves the same facts plus the richer lifecycle states. + +| Store | Backs | Mirrors in `brand.json` | +|---|---|---| +| Subsidiary portfolio | `claim_type: "subsidiary"` | `brand_refs[]` and inline `brands[]` | +| Parent declaration | `claim_type: "parent"` | `house_domain` on the leaf's canonical document | +| Property registry | `claim_type: "property"` | `properties[]` | +| Trademark registry | `claim_type: "trademark"` | `trademarks[]` plus internal licensee-side records (which don't appear in `brand.json` today) | +| Pending-claim queue | `pending_review` lifecycle | Not represented | +| Archive | `archived` status | Not represented | + +```typescript +type SubsidiaryRecord = { + subsidiary_brand_id: string; + subsidiary_domain: string; + status: "owned" | "pending_review" | "transferring" | "disputed" | "not_ours" | "archived"; + first_observed_by_house_at: string; + expected_resolution_window_days?: number; // REQUIRED when status is "pending_review" +}; + +type PropertyRecord = { + type: "website" | "mobile_app" | "ctv_app" | "desktop_app" | "dooh" | "podcast" | "radio" | "linear_tv" | "streaming_audio" | "ai_assistant"; + identifier: string; + brand_id: string; + relationship: "owned" | "direct" | "delegated" | "ad_network"; + regions: string[]; // ISO 3166-1 alpha-2 or ["global"] + status: "owned" | "transferring" | "disputed" | "not_ours" | "archived"; + use_case_authorization?: Record; +}; + +type TrademarkRecord = { + registry: string; + number: string; + mark: string; + registration_status: "active" | "pending" | "expired" | "cancelled"; + countries: string[]; + nice_classes: number[]; + status: "owned" | "licensed_in" | "licensed_out" | "transferring" | "disputed" | "not_ours" | "archived"; + licensor_domain?: string; // when status is "licensed_in" + use_case_authorization?: Record; +}; +``` + +### Tool registration and request validation + +`verify_brand_claim` discriminates on `claim_type`. Validate the `claim` payload per type — required fields differ, and `INVALID_REQUEST` is the right response when they're missing or malformed. + +```typescript +import { z } from "zod"; + +const SubsidiaryClaim = z.object({ + subsidiary_domain: z.string().min(1), + subsidiary_brand_id: z.string().optional(), + observed_at: z.string().datetime().optional(), +}); + +const ParentClaim = z.object({ + parent_domain: z.string().min(1), + claimant_says: z.string().optional(), + observed_at: z.string().datetime().optional(), +}); + +const PropertyClaim = z.object({ + property: z.object({ + type: z.enum(["website", "mobile_app", "ctv_app", "desktop_app", "dooh", "podcast", "radio", "linear_tv", "streaming_audio", "ai_assistant"]), + identifier: z.string().min(1), + store: z.enum(["apple", "google", "amazon", "roku", "fire_tv", "samsung", "lg", "vizio", "other"]).optional(), + region: z.string().optional(), + }), + use_case: z.string().optional(), +}); + +const TrademarkClaim = z.object({ + mark: z.string().min(1), + registry: z.string().optional(), + number: z.string().optional(), + countries: z.array(z.string().length(2)).optional(), +}); + +server.tool( + "verify_brand_claim", + "Answer an authoritative yes/no about a facet of brand identity", + { + claim_type: z.enum(["subsidiary", "parent", "property", "trademark"]), + claim: z.unknown(), + }, + async ({ claim_type, claim }, extra) => { + const isAuthorized = await checkLinkedAccount(extra); + const callerId = await resolveCaller(extra); + + if (await rateLimited(callerId, claim_type, claim)) { + return rateLimitedResponse(claim_type, callerId, claim); + } + + switch (claim_type) { + case "subsidiary": { + const parsed = SubsidiaryClaim.safeParse(claim); + if (!parsed.success) return invalidInput(parsed.error); + return await answerSubsidiary(parsed.data, { isAuthorized }); + } + case "parent": { + const parsed = ParentClaim.safeParse(claim); + if (!parsed.success) return invalidInput(parsed.error); + return await answerParent(parsed.data, { isAuthorized }); + } + case "property": { + const parsed = PropertyClaim.safeParse(claim); + if (!parsed.success) return invalidInput(parsed.error); + return await answerProperty(parsed.data, { isAuthorized }); + } + case "trademark": { + const parsed = TrademarkClaim.safeParse(claim); + if (!parsed.success) return invalidInput(parsed.error); + return await answerTrademark(parsed.data, { isAuthorized }); + } + } + } +); +``` + +### Per-claim-type response shaping + +The `details` field varies by `claim_type`. Build the typed response from your internal record, then strip authorized-only fields when the caller isn't linked. + +```typescript +async function answerSubsidiary(claim, { isAuthorized, requestContext }) { + const record = await subsidiaries.findByDomain(claim.subsidiary_domain); + + if (!record) { + return signedResponse({ + claim_type: "subsidiary", + verification_status: "not_ours", + context_note: "We have no record of this brand.", + }, requestContext); + } + + const details: Record = {}; + + // Public fields + if (["owned", "pending_review", "transferring"].includes(record.status)) { + details.brand_id = record.subsidiary_brand_id; + } + + // Authorized-only fields + if (isAuthorized) { + details.first_observed_by_house_at = record.first_observed_by_house_at; + if (record.expected_resolution_window_days != null) { + details.expected_resolution_window_days = record.expected_resolution_window_days; + } + } + + // expected_resolution_window_days is REQUIRED when status is pending_review, + // even for unauthorized callers — surface the bound so they can age the answer. + if (record.status === "pending_review" && !isAuthorized) { + details.expected_resolution_window_days = record.expected_resolution_window_days; + } + + return signedResponse({ + claim_type: "subsidiary", + verification_status: record.status, + details, + }, requestContext); +} +``` + +The same shaping pattern applies to `property` (omit `details.use_case_authorization` for public callers) and `trademark` (keep `matched_registration`, `licensor_domain`, `countries`, `nice_classes` public; gate `use_case_authorization` behind authorization). + +### Public vs authorized field gating + +Mirror the public/authorized split from `get_brand_identity`. The split per claim type: + +| Public | Authorized-only | +|---|---| +| `claim_type`, `verification_status`, `context_note` (always) | `details.first_observed_by_house_at` | +| `details.brand_id`, `details.relationship`, `details.matched_registration`, `details.countries`, `details.nice_classes`, `details.regions` | `details.expected_resolution_window_days` (except when REQUIRED on `pending_review`) | +| `details.licensor_domain` (when `verification_status` is `licensed_in`) | `details.use_case_authorization` | + +Queue position, ticket state, and team routing are never exposed at any tier. + +### Aging contract for pending_review + +The agent MUST transition a `pending_review` record to a terminal status (`owned`, `disputed`, `not_ours`, `transferring`, `archived`) or to `unknown` once its `expected_resolution_window_days` elapses. Consumers SHOULD treat a stale `pending_review` response as `unknown` and fall back to crawl-based verification — but the agent owes the transition either way. + +A cron-driven sweep is the simplest implementation: + +```typescript +// Run hourly. Promotes timed-out pending_review records to unknown +// unless a human reviewer has acted in the meantime. +async function ageOutPendingClaims(): Promise { + const now = Date.now(); + const stale = await pendingClaims.findStale(now); + + for (const record of stale) { + const elapsedDays = (now - Date.parse(record.first_observed_by_house_at)) / 86_400_000; + if (elapsedDays >= record.expected_resolution_window_days) { + await pendingClaims.update(record.id, { + status: "unknown", + aged_out_at: new Date(now).toISOString(), + }); + logger.info("aged_out_pending_claim", { record_id: record.id, claim_type: record.claim_type }); + } + } +} + +setInterval(ageOutPendingClaims, 60 * 60 * 1000); +``` + +Event-driven implementations work too — schedule a deferred job at `first_observed_by_house_at + expected_resolution_window_days` when the record is created, and have the job check that no human action intervened before flipping to `unknown`. + +### Signing setup + +Responses are signed under the brand's `adcp_use: "response-signing"` JWK. **This is a distinct key from the `request-signing` key the agent uses for its own outbound calls** — per the keys-per-purpose convention, receivers enforce purpose at the JWK `adcp_use` level. Reusing a key across purposes is forbidden by the spec. + +The signature is a **JWS payload envelope** carried inside the response body (not RFC 9421 §2.2.9 transport response signing — that primitive is undefined in 3.x). `verify_brand_claim` and `verify_brand_claims` are the only tasks on the spec's [designated-task response-signing list](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) — the closed-list rule and admission criterion live there. + +The envelope is carried in the response's `signed_response` field and follows [`response-payload-jws-envelope.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/response-payload-jws-envelope.json). Populate `brand_domain` from server-side tenant resolution, not from caller input. Shared multi-brand fleets also need distinct response-signing key material and distinct `kid` values per `brand_domain`; key reuse across brands defeats tenant-bound replay analysis and is non-conformant for `adcp_use: "response-signing"`. + +AdCP 3.1 conformance uses the normal task response plus nested `signed_response`. Pre-release examples that returned the JWS envelope as the entire response body are not 3.1-conformant; verifiers MAY accept that draft shape only during private migration and MUST NOT treat it as a conformant designated-task response. + +Publish the JWK in the agent's JWKS, referenced from the relevant `agents[]` entry in `brand.json`: + +```json +// /.well-known/jwks.json on the brand-agent origin +{ + "keys": [ + { + "kty": "EC", "crv": "P-256", + "kid": "brand-agent-response-2026-01", + "x": "...", "y": "...", + "use": "sig", + "key_ops": ["verify"], + "adcp_use": "response-signing" + }, + { + "kty": "EC", "crv": "P-256", + "kid": "brand-agent-request-2026-01", + "x": "...", "y": "...", + "use": "sig", + "key_ops": ["verify"], + "adcp_use": "request-signing" + } + ] +} +``` + +```json +// /.well-known/brand.json — agents[] entry +{ + "agents": [ + { + "type": "brand", + "url": "https://brand-agent.nikeinc.com/mcp", + "id": "nikeinc_brand_agent", + "jwks_uri": "https://brand-agent.nikeinc.com/.well-known/jwks.json" + } + ] +} +``` + +In code, sign the response payload before returning it. The unsigned outer fields remain for ordinary task consumers; the signed payload is the canonical attestable object. + +```typescript +import { createHash } from "node:crypto"; +import { jcsCanonicalize, signResponseEnvelope } from "./signing"; // your library of choice + +function sha256Base64Url(input: string) { + return createHash("sha256").update(input).digest("base64url"); +} + +function signedResponse( + body: Record, + request: { + task: "verify_brand_claim" | "verify_brand_claims"; + requestBody: unknown; + callerIdentity: string | null; + resolvedBrandDomain: string; + agentUrl: string; + maxAgeSeconds: number; + } +) { + const now = Math.floor(Date.now() / 1000); + const requestBinding = { + task: request.task, + brand_domain: request.resolvedBrandDomain, + agent_url: request.agentUrl, + caller_identity: request.callerIdentity, + request: request.requestBody, + }; + const payload = { + typ: "adcp-response-payload+jws", + task: request.task, + brand_domain: request.resolvedBrandDomain, + agent_url: request.agentUrl, + request_hash: `sha256:${sha256Base64Url(jcsCanonicalize(requestBinding))}`, + iat: now, + exp: now + request.maxAgeSeconds, + response: body, + }; + const signed = signResponseEnvelope(payload, { + kid: "brand-agent-response-2026-01", + alg: "ES256", + typ: "adcp-response-payload+jws", + adcp_use: "response-signing", + }); + return { content: [{ type: "text", text: JSON.stringify({ ...body, signed_response: signed }) }] }; +} +``` + +See [request-signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing) for the keypair-generation and JWKS-publication pattern; the response-signing key follows the same shape with a different `adcp_use` tag. + +**Response-body middleware caveat.** The signed object is `signed_response.payload`, canonicalized with RFC 8785/JCS before signature verification. Whitespace and key-order changes outside that sub-object do not affect the signature, but middleware that changes `signed_response.payload`, `signed_response.protected`, or `signed_response.signature` breaks verification. If outer convenience fields are present, verifiers MUST reject the signed response when they disagree with `signed_response.payload.response`. + +### Rate limiting + +Rate-limit per `{caller_identity, claim_type, claim-target}` — a buyer hammering one trademark differs from a buyer surveying many properties, and conflating them invites either over- or under-blocking. On the limit, return `Retry-After` AND prefer returning a cached prior answer over a hard `RATE_LIMITED` error. The caller can act on a stale `owned`; they can't act on `429`. + +```typescript +const RATE_LIMIT_WINDOW_SEC = 60; +const RATE_LIMIT_MAX = 30; + +function rateLimitKey(callerId: string, claimType: string, claim: unknown): string { + const target = extractTarget(claimType, claim); // subsidiary_domain | property.identifier | mark+registry + return `${callerId}::${claimType}::${target}`; +} + +async function rateLimited(callerId: string, claimType: string, claim: unknown): Promise { + const key = rateLimitKey(callerId, claimType, claim); + const count = await counter.increment(key, RATE_LIMIT_WINDOW_SEC); + return count > RATE_LIMIT_MAX; +} + +async function rateLimitedResponse(claimType: string, callerId: string, claim: unknown) { + const cached = await responseCache.get(rateLimitKey(callerId, claimType, claim)); + if (cached) { + return { content: [{ type: "text", text: JSON.stringify({ ...cached, _from_cache: true }) }] }; + } + return { + content: [{ + type: "text", + text: JSON.stringify({ + errors: [{ code: "RATE_LIMITED", message: "Rate limit exceeded for this claim." }], + }), + }], + _meta: { "retry-after": String(RATE_LIMIT_WINDOW_SEC) }, + isError: true, + }; +} +``` + +### Cache headers per status + +Set `Cache-Control: max-age=N` on the response. Recommended values from the task page: + +| Status | max-age | +|---|---| +| `owned`, `not_ours`, `disputed` | 24–72h | +| `pending_review` | ≤1h | +| `transferring` | ≤4h | +| `licensed_in`, `licensed_out` | 24h | +| `unknown` | ≤1h | +| `use_case_authorization` present | Re-check per session | + +Consumers MAY override downward but SHOULD NOT exceed agent-supplied `max-age`. + +### Notification loop for pending_review + +When a `verify_brand_claim` call lands on an unknown subsidiary/property/trademark and the agent's policy is "ask the portfolio team", the agent enqueues a `pending_review` record AND surfaces a notification to the team. Implementation is agent-side; common patterns: + +- **Email the portfolio team** at the address on `brand.json` `contact.email`. +- **Open a ticket** in the brand's existing tracker (Jira, Linear, Zendesk). +- **Slack notify** the portfolio channel. + +The notification carries the claim payload, the caller identity, and the `expected_resolution_window_days`. A reviewer's action — accept, reject, transfer, archive — flips the record's status and the next `verify_brand_claim` call on the same claim returns the terminal answer. + +```typescript +async function enqueuePendingReview(claim: SubsidiaryClaim, callerId: string): Promise { + const record: SubsidiaryRecord = { + subsidiary_brand_id: claim.subsidiary_brand_id ?? "", + subsidiary_domain: claim.subsidiary_domain, + status: "pending_review", + first_observed_by_house_at: new Date().toISOString(), + expected_resolution_window_days: 14, + }; + await subsidiaries.create(record); + await notifications.send({ + channel: "portfolio_team", + subject: `New subsidiary claim: ${claim.subsidiary_domain}`, + body: { claim, caller: callerId, window_days: 14 }, + }); + return record; +} +``` + +### UI considerations + +When your agent returns `disputed` or `not_ours`, consumers render the rejection in their own UIs (DSP inventory shopping, portfolio explorer, creative clearance). The agent owes a clear `context_note` — that string ends up in front of humans. See [UI guidance for rejected claims](/dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance) for the consumer-side conventions to keep in mind when writing your `context_note` text. + +## Tier 2: rights only + +Add `get_rights` and `acquire_rights` for rights discovery and licensing. This is the path for talent agencies and music sync platforms. + +```typescript +server.tool( + "get_rights", + "Search for licensable rights with pricing", + { + query: z.string().describe("Natural language description of desired rights"), + uses: z.array(z.string()).describe("Rights uses: likeness, voice, name, endorsement"), + buyer_brand: z.object({ + domain: z.string(), + brand_id: z.string().optional(), + }).optional(), + brand_id: z.string().optional(), + include_excluded: z.boolean().optional(), + }, + async ({ query, uses, buyer_brand, brand_id, include_excluded }) => { + const matches = await searchRights({ query, uses, brand_id }); + + // Filter by buyer compatibility when buyer_brand is provided + const { rights, excluded } = buyer_brand + ? await filterByBuyerCompatibility(matches, buyer_brand) + : { rights: matches, excluded: [] }; + + const response = { rights }; + if (include_excluded) response.excluded = excluded; + + return { content: [{ type: "text", text: JSON.stringify(response) }] }; + } +); +``` + +`acquire_rights` follows the same pattern — accept a `rights_id` and `pricing_option_id` from `get_rights`, clear against existing contracts, and return terms with generation credentials. The response includes an authenticated `approval_webhook` (using [`push-notification-config`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/push-notification-config.json)) so buyers can submit creatives for review. See the [acquire_rights task reference](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) for the full schema. + +## Confidential brand rules + +Brands often have rules they cannot disclose — public figure policies, internal exclusion lists, legal restrictions. Your agent evaluates these internally and returns a sanitized reason without revealing the rule itself. + +The protocol supports this through a simple convention: if the rejection includes `suggestions`, the buyer can fix the problem. If it doesn't, the rejection is final and the buyer should move on. + +```typescript +async function evaluateAcquisition(request, talent) { + // Confidential rules — buyer never sees these + const confidentialResult = await evaluateConfidentialRules(request, talent); + if (confidentialResult.blocked) { + return { + status: "completed", + rights_status: "rejected", + rights_id: request.rights_id, + brand_id: talent.brand_id, + reason: confidentialResult.sanitized_reason, + // No suggestions — this is final, nothing the buyer can change + }; + } + + // Actionable rejection — buyer can adjust their request + const exclusivityConflict = await checkExclusivity(request, talent); + if (exclusivityConflict) { + return { + status: "completed", + rights_status: "rejected", + rights_id: request.rights_id, + brand_id: talent.brand_id, + reason: `Exclusive conflict in ${exclusivityConflict.country} through ${exclusivityConflict.end_date}`, + suggestions: [ + `Available in ${exclusivityConflict.alternative_countries.join(", ")}`, + `Available after ${exclusivityConflict.end_date}`, + ], + }; + } + + // Approved — proceed with terms + return { + status: "completed", + rights_status: "acquired", + rights_id: request.rights_id, + brand_id: talent.brand_id, + /* ... terms, credentials, and rights_constraint ... */ + }; +} +``` + +The same pattern applies to `get_rights` exclusions: include `suggestions` on excluded results when the buyer can adjust their query (different market, different dates), omit them when the exclusion is non-negotiable. + +### Defending against probing + +A determined buyer agent could call `get_rights` with slight variations — different brands, industries, countries — to map out your confidential rules through the pattern of rejections. Mitigate this by: + +- **Using consistent generic language** across similar confidential rejections. If three different rules all produce "This conflicts with our talent lifestyle guidelines," the buyer learns nothing from repeated attempts. +- **Returning the same reason regardless of which specific rule triggered it.** Don't vary the wording based on the rule — that creates a side channel. +- **Rate limiting discovery calls** per buyer. Track query volume per `buyer_brand` and return progressively less specific reasons after a threshold. + +The `exclusivity_status.existing_exclusives` field in `get_rights` responses deserves special care. Populating it with specific deal terms ("exclusive with Acme Sports in NL through Q3") reveals competitive intelligence. Use vague descriptions ("exclusive commitment in this category") or omit the field entirely when confidentiality is a concern. + +## Field selection and use case + +The `fields` parameter lets callers request only the sections they need. Implement this efficiently — avoid loading expensive data (asset catalogs, voice configs) when not requested: + +```typescript +async function loadBrandData(brand_id, fields) { + const brand = await db.getBrandCore(brand_id); + if (!fields || fields.includes("assets")) { + brand.assets = await db.getBrandAssets(brand_id); + } + if (!fields || fields.includes("voice_synthesis")) { + brand.voice_synthesis = await voiceProvider.getConfig(brand_id); + } + return brand; +} +``` + +The `use_case` parameter is advisory — it tailors content within returned sections but does not override `fields`. A `"likeness"` use case prioritizes action photos in the `logos` section; a `"creative_production"` use case prioritizes vector logos and brand marks. + +## Multi-tenancy + +A single MCP endpoint can serve multiple brands. The `brand_id` parameter in every request disambiguates which brand the caller is asking about. + +```typescript +// One agent, many brands +const brands = { + "emma_torres": { house: { domain: "pinnacleagency.com", name: "Pinnacle Agency" }, ... }, + "kai_nakamura": { house: { domain: "pinnacleagency.com", name: "Pinnacle Agency" }, ... }, +}; + +async function loadBrand(brand_id) { + return brands[brand_id] ?? null; +} +``` + +Each brand in your roster should also appear in your `brand.json` file's `brands` array so buyer agents can discover them before making MCP calls. + +## Account linking + +Buyers establish authorization by calling [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) on your agent. After linking, their subsequent `get_brand_identity` requests are recognized as authorized. + +Implement the [accounts protocol](/dist/docs/3.2.0-beta.4/accounts/overview) to support this. The linked account is identified by the caller's credentials in the MCP transport — you do not need to pass account IDs in brand protocol requests. + +### Extracting caller identity + +```typescript +async function checkLinkedAccount(extra: any): Promise { + // The caller's identity comes from your auth middleware. + // After sync_accounts links a buyer, store their credentials + // and check them on subsequent requests. + const sessionId = extra?.sessionId; + if (!sessionId) return false; + return await db.isLinkedAccount(sessionId); +} +``` + +How you identify callers depends on your authentication setup. The MCP transport provides session information; your auth middleware maps that to a linked account. See the [authentication guide](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication) for patterns. + +## Rights and creative integration + +After a buyer acquires rights through `acquire_rights`, they receive `generation_credentials` and a `rights_constraint`. These connect the rights grant to creative production. + +### From the brand agent's perspective + +When implementing `acquire_rights`, return both pieces in the response: + +```typescript +// In your acquire_rights handler, after approval: +const response = { + status: "completed", + rights_status: "acquired", + rights_id: "rgt_dj_001", + terms: { /* ... pricing, dates, restrictions */ }, + generation_credentials: [ + { + provider: "midjourney", + rights_key: "rk_dj_likeness_2026_abc", + uses: ["likeness"], + expires_at: "2026-06-15T00:00:00Z", + }, + ], + rights_constraint: { + rights_id: "rgt_dj_001", + rights_agent: { url: "https://rights.lotientertainment.com/mcp", id: "loti_entertainment" }, + rights_holder: { domain: "lotientertainment.com", brand_id: "daan_janssen" }, + valid_from: "2026-03-15T00:00:00Z", + valid_until: "2026-06-15T23:59:59Z", + uses: ["likeness"], + countries: ["NL"], + impression_cap: 100000, + approval_status: "approved", + grant_status: "active", + restrictions: ["All generated creatives must be submitted for approval before distribution"], + disclosure: { + required: true, + text: "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment", + }, + creative_approval_required: true, + content_digest: "sha256:61c68dea6be064a424741051182ba583e8b587b4c9af10c65bd57ae20fb10e79", + attestation_refs: [{ + issuer: { type: "brand", brand: { domain: "lotientertainment.com", brand_id: "daan_janssen" } }, + claim_type: "https://adcontextprotocol.org/claims/rights/grant", + subject: { + type: "resource", + resource_type: "https://adcontextprotocol.org/claims/subjects/rights-grant", + namespace: "https://rights.lotientertainment.com/mcp", + id: "rgt_dj_001", + content_digest: "sha256:61c68dea6be064a424741051182ba583e8b587b4c9af10c65bd57ae20fb10e79", + }, + locator: { type: "issuer_credential_id", credential_id: "cred_dj_001", resolver_id: "primary" }, + }], + }, +}; +``` + +### How buyers use these + +`generation_credentials` are secrets, and AdCP 3.2 does not define them as `build_creative` arguments. The buyer either uses them directly with the named generation provider or provisions them into the creative agent's authenticated, account-scoped provider integration through that implementation's secret-management channel. Do not place them in `build_creative`, `context`, or `ext`. + +The typed AdCP handoff carries the non-secret `rights_constraint` unchanged inside `creative_manifest.rights`, so the digest and issuer reference survive production, sync, package assignment, and seller readback: + +```typescript +// Buyer-side: the provider credential has already been provisioned securely. +const creative = await creativeAgent.callTool({ + name: "build_creative", + arguments: { + brand: { domain: "bistro-oranje.nl" }, + idempotency_key: "7f4024d8-b429-4ad8-92dd-128cd89f15fc", + target_capability_id: "vertical_video_builder", + message: "15-second vertical video featuring Daan Janssen endorsing Bistro Oranje", + creative_manifest: { + format_kind: "video_hosted", + assets: { + creative_brief: { + asset_type: "brief", + name: "Bistro Oranje Daan Janssen endorsement", + objective: "awareness", + }, + }, + rights: [acquireResponse.rights_constraint], + }, + }, +}); +``` + +The creative agent's provider adapter uses its securely provisioned credential and produces the asset while preserving `creative_manifest.rights`. If the buyer generated the provider asset directly instead, it attaches that asset and the unchanged rights constraint to a canonical manifest before `sync_creatives`. A downstream seller does not trust the buyer's array by inspection: it resolves and verifies an allowed credential, checks the exact digest, issuer/rights-agent authority, validity, and revocation state, and emits its own evaluation. Legacy `verification_url` values are not an authorization path. + +For the full creative manifest specification, see [creative manifests](/dist/docs/3.2.0-beta.4/creative/creative-manifests). + +## Testing + +Use the `validate_brand_agent` MCP tool to verify your agent is reachable and responding correctly. For automated testing during development, use the MCP SDK's in-memory transport: + +```typescript +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; + +const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair(); +await Promise.all([server.connect(serverTransport), client.connect(clientTransport)]); + +const result = await client.callTool({ + name: "get_brand_identity", + arguments: { brand_id: "emma_torres" }, +}); +``` + +Key things to verify: core fields returned for public callers, deeper data for authorized callers, `available_fields` lists withheld sections, and `brand_not_found` errors for invalid IDs. + +## Deployment checklist + +- [ ] `brand.json` hosted at `/.well-known/brand.json` with `brand_agent.url` pointing to your MCP endpoint +- [ ] `get_adcp_capabilities` returns `supported_protocols: ["brand"]` +- [ ] `get_brand_identity` returns core fields for public callers +- [ ] `get_brand_identity` returns deeper data for authorized callers +- [ ] `available_fields` correctly lists withheld sections +- [ ] Error responses use the `errors` array format +- [ ] If implementing rights: `get_rights` returns pricing options and `acquire_rights` returns terms +- [ ] If implementing verification: `get_adcp_capabilities` advertises `verify_brand_claim` and `supported_claim_types`, responses are signed under a distinct `adcp_use: "response-signing"` JWK, `pending_review` records age out per the declared window, rate-limited calls return `Retry-After` and prefer cached prior answers + +## Related + +- [Brand protocol overview](/dist/docs/3.2.0-beta.4/brand-protocol/index) — How brand discovery works +- [brand.json spec](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — File format for brand declaration +- [get_brand_identity](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) — Identity task reference +- [verify_brand_claim](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) — Verification task reference +- [UI guidance for rejected claims](/dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance) — Consumer-side rendering of `disputed` / `not_ours` +- [get_rights](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) — Rights discovery task reference +- [acquire_rights](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) — Rights acquisition task reference +- [Accounts overview](/dist/docs/3.2.0-beta.4/accounts/overview) — How account linking works diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers.mdx new file mode 100644 index 0000000000..a8ee94c0c7 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers.mdx @@ -0,0 +1,82 @@ +--- +title: For advertisers +description: "License real talent for AI-generated ads through AdCP. Search for available athletes, musicians, and influencers with transparent pricing, then receive scoped generation credentials for AI creative tools." +"og:title": "AdCP — For advertisers" +--- + + +**Looking for what brand data to give AI platforms** — voice, logos, visual guidelines so platforms represent your brand correctly? See [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) and [monetizing AI](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai). **This page** covers a different need: licensing real talent (athletes, musicians, influencers) for AI-generated creative. + + +You can license a real person's likeness for your AI-generated ads. Not stock footage. Not a lookalike. The actual athlete, musician, or influencer — with their permission, at a transparent price. + +The Ad Context Protocol (AdCP) connects buyers to talent rights through a standard that AI media buyers already speak. You describe what you need, the protocol finds who is available, and you get scoped credentials that let your creative tools generate ads featuring licensed talent. + +## How it works, from your side + +Imagine you run Bistro Oranje, a steakhouse in Amsterdam, and you want a local celebrity in your next campaign. Here is what the process looks like: + +1. **You describe what you need.** You (or your AI media buyer) search for "Dutch athlete available for food brands in the Netherlands." You can include your budget, preferred rights types (likeness, voice, endorsement), and campaign geography. + +2. **The system returns matches with pricing.** Results come back ranked by relevance: Daan Janssen, Olympic speed skater, available for food brands in the Netherlands. Two pricing options — EUR 3.50 CPM or EUR 350/month flat rate with up to 100,000 impressions. + +3. **You select the option that fits your budget and submit a request.** Your request includes what you want to create, which formats, what countries, how many impressions, and for how long. This is a binding contractual request. + +4. **The talent's agency reviews and approves.** The agency checks your request against the talent's preferences and existing contracts. If another food brand already holds exclusivity in the Netherlands, your request is rejected automatically. If it clears, you receive terms. + +If a rejection includes suggestions — alternative markets, different dates, adjusted scope — your agent can revise the request and resubmit. If there are no suggestions, the rejection is final for that talent and campaign combination. Agencies manage confidential rules (legal constraints, internal policies, public figure guidelines) that are not always appropriate to disclose — your agent understands the difference and will either adjust or move on. + +5. **You receive generation credentials.** These are scoped keys that allow specific AI providers (image generators, voice synthesis tools) to produce content featuring the licensed talent. The credentials expire when the contract ends. + +6. **Every impression is tracked.** Usage is reported back to the rights holder for billing and cap enforcement. If you hit your impression cap, generation stops until you renegotiate. + +## What you get + +When a rights acquisition is approved, your creative tools receive everything they need to produce and distribute the campaign: + +- **AI-generated ads featuring licensed talent.** Video, display, and audio — whatever formats you requested. The talent's likeness and voice are generated by AI providers who verify your credentials before producing content. +- **Scoped generation credentials.** Keys that work with specific providers (e.g., Midjourney for likeness, ElevenLabs for voice). Any creative agent can use them. The provider enforces the scope — you cannot generate outside your license terms. +- **A rights constraint for your creative manifest.** This carries the grant terms plus an issuer-bound credential reference through the supply chain. The constraint is a presentation, not proof by itself; each serving seller verifies the holder, credential, grant digest, and fresh revocation status under its own policy. +- **Disclosure text.** Provided for you, ready to attach to the creative: "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment." + +## What it costs + +Pricing is set by the talent's agency, not by an auction. You see the price before you commit. + +Two common models: + +- **CPM** — Pay per impression. At EUR 3.50 CPM, 50,000 impressions cost EUR 175 in rights fees. +- **Flat monthly rate** — A fixed fee per month with an impression cap. At EUR 350/month with a 100,000 impression cap, a 3-month local campaign costs EUR 1,050 in rights fees, plus your creative production and media spend. + +Exclusivity is available as a premium option. If you want to be the only restaurant using Daan Janssen's likeness in the Netherlands, the agency can grant that — and the protocol automatically rejects competing requests for the duration of your contract. + +## What you control + +Every license is scoped along four dimensions, and you know the boundaries before you sign: + +- **Geographic scope.** A license for the Netherlands does not cover Germany. If you expand your campaign, you renegotiate. +- **Format scope.** A license for video does not grant audio rights. Each use type (likeness, voice, name, endorsement) is independently licensed. +- **Time scope.** Licenses have hard expiration dates. When the contract ends, generation credentials stop working. No manual cleanup required. +- **Content restrictions.** The talent's agency defines what is acceptable — categories, contexts, modification limits. These restrictions are part of the license terms, visible to you upfront. + +## How to get started + +1. **If you work with an agency**, ask if they use an AdCP-compatible buying platform. Many media agencies already have access to rights discovery and licensing through their existing tools. + +2. **If you buy direct**, visit the [AgenticAdvertising.org member directory](https://agenticadvertising.org/members) to find a platform partner. Member organizations build the tools that connect buyers to talent rights. + +3. **The platform handles search, negotiation, and credential management.** You approve the creative, set your budget, and define your campaign parameters. The platform translates that into protocol calls, manages the rights acquisition, and delivers generation credentials to your creative tools. + +## Next steps + + + + Search for licensable talent with pricing and availability. + + + Submit a binding request and receive generation credentials. + + + How brand.json and rights discovery fit together. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders.mdx new file mode 100644 index 0000000000..46c603df64 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders.mdx @@ -0,0 +1,123 @@ +--- +title: For talent and rights holders +description: "How talent and rights holders control AI-generated likeness, voice, and endorsement use through AdCP. Scoped credentials, geographic limits, approval workflows, impression tracking, and long-tail licensing revenue." +"og:title": "AdCP — For talent and rights holders" +--- + +AI can generate your face, your voice, and your endorsement — without asking. Generative tools are already creating synthetic celebrity content for advertising, and the legal frameworks have not caught up. If you are a public figure with licensable rights, the question is not whether AI will use your likeness. It is whether you will have any control over how. + +The Ad Context Protocol (AdCP) gives you that control. It is an open standard that lets your agency or management team set the rules for how AI systems use your identity in advertising — and enforce those rules at the point of generation. + +## How it works, in plain terms + +Imagine you are Daan Janssen, a Dutch Olympic speed skater. Your management agency, Loti Entertainment, represents your commercial rights. Here is what happens with AdCP in place: + +1. **Your agency publishes your availability.** Loti registers your rights in the protocol: what is available (likeness, voice, endorsement), where (Netherlands, Belgium, Germany), and at what price. They also list what is off-limits — product categories, competitors, content types. + +2. **A brand searches for you.** A restaurant chain in Amsterdam asks their AI media buyer to find a Dutch athlete for a campaign. The agent discovers your profile through AdCP, sees that you are available for food brands in the Netherlands, and that you fit their budget. + +3. **The brand requests your rights.** The agent submits a formal request: what they want to create, which formats, what countries, how many impressions, and for how long. This is a binding contractual request, not a casual inquiry. + +4. **Your agency reviews and approves.** Loti reviews the request against your preferences and existing contracts. If another food brand already has exclusivity in the Netherlands, the request is rejected automatically. If it passes, Loti sets the terms. + +5. **Time-limited credentials are issued.** The brand receives generation credentials — keys that allow specific AI providers (image generators, voice synthesis tools) to produce content using your likeness. These credentials expire when the contract ends. After that date, no provider will generate your likeness for that buyer. + +6. **Every use is tracked and reported.** Impressions are reported back to your agency for billing and cap enforcement. If the contract allows 100,000 impressions and the brand hits that limit, generation stops until they renegotiate. + +## What you control + +AdCP puts several mechanisms in your agency's hands: + +**Approval requirements.** Every creative can require your sign-off before it runs. The protocol supports a `pending_approval` status — nothing goes live until you or your representative says yes. + +**Content restrictions.** Your agency defines what is and is not acceptable. Categories, contexts, adjacent content, modification limits. These restrictions travel with the license. + +**Geographic limits.** Rights can be scoped to specific countries. A license for the Netherlands does not grant rights in the United States. + +**Time-bound credentials.** Generation credentials have hard expiration dates. When the license period ends, AI providers stop generating. This is not a policy — it is a technical constraint enforced by the provider. + +**Pricing transparency.** Your agency sets pricing: per-impression royalties, flat monthly rates, or both. Buyers see the price before they commit. No back-channel negotiations or opaque rate cards. + +**Disclosure requirements.** Every license can require that the brand disclose the use of AI-generated content featuring you. The disclosure text is part of the contract terms. + +**Exclusivity enforcement.** If a brand has exclusive rights to your likeness for restaurant advertising in the Netherlands, the protocol automatically rejects competing requests in that category and geography. + +## What your agency does + +Your agency or management company operates as your **rights agent** in the protocol. They do not need to build technology. They work with a platform that implements AdCP and configure your preferences: + +- Which rights are available (likeness, voice, name, endorsement) +- Geographic availability +- Pricing tiers and models +- Category exclusions (products or industries you will not endorse) +- Approval workflows (automatic for some categories, manual review for others) +- Exclusivity terms + +The rights agent handles discovery, negotiation, credential issuance, and usage tracking. Your involvement is limited to setting preferences and reviewing creative concepts that require approval. + +## The long-tail opportunity + +Traditional endorsement deals require photo shoots, contract negotiations, and weeks of back-and-forth. The transaction costs mean only big brands can afford to work with you. A local restaurant, a regional gym chain, a neighborhood car dealership — they would love to feature you, but the deal is too small to justify the process. + +AdCP changes the math. Because discovery, negotiation, and credential issuance are automated, small deals become viable. A steakhouse in Amsterdam can license your likeness for EUR 350 per month. A fitness studio in Rotterdam can license your voice for EUR 200 per month. Individually, these are small. Collectively, they add up. + +Twenty local businesses at EUR 350 per month is EUR 84,000 per year — revenue from deals that would never have happened through traditional channels. Your agency sets the price, the protocol handles the rest, and you approve the creatives that need your sign-off. + +## What the approval experience looks like + +When a brand wants to use your likeness in a campaign, you or your representative see a notification. The delivery method depends on the platform your agency uses — it could be an email, a dashboard alert, or a push notification in an app. + +The notification includes the key details: + +- Which brand is making the request +- What they want to create (a video ad, a display banner, a voice spot) +- Which formats and dimensions +- Where it will run (countries, channels) +- How long the license lasts + +From there, you or your representative have three options: approve the request, request changes, or reject it. There is no ambiguity and no pressure to respond immediately — the creative cannot be generated until a decision is recorded. + +If you approve, the brand receives generation credentials scoped to exactly what was agreed. If you reject, no credentials are issued and the brand cannot generate content using your likeness for that campaign. If you request changes, the brand can revise and resubmit. + +In protocol terms, "request changes" is a rejection with suggestions. Your agent rejects the request but includes actionable alternatives — "available in a different market" or "try a shorter license period." The buyer's agent sees the suggestions and can adjust automatically. A rejection without suggestions signals "no, full stop" — the buyer moves on without knowing your internal reasons. + +Every decision is logged. Your agency has a complete record of what was requested, what was approved, and what was denied. + +## Addressing common concerns + +**"Someone will generate my likeness without permission."** +AdCP-compliant providers check for rights credentials before generating content using a known identity. Without a valid credential, generation is blocked. The protocol does not prevent all unauthorized use — bad actors can still misuse open-source models — but it creates a clear, enforceable standard for the legitimate advertising ecosystem. + +**"What happens if someone uses my likeness without going through AdCP?"** +Your agency can use the audit trail from legitimate AdCP usage to establish what authorized use looks like. If unauthorized use appears in the market, that trail becomes evidence. AdCP does not police the internet — but it creates the paper trail that your legal team needs. + +**"I will lose control once I license my rights."** +Licenses are scoped by use, geography, time period, and content type. A license to use your likeness in video ads for a restaurant in the Netherlands does not grant rights to use your voice in audio ads for a car brand in Japan. Each dimension is independently controlled. + +**"I won't know how my likeness is being used."** +Usage reporting is built into the protocol. Every impression against your rights is tracked and reported back to your agency. This creates an audit trail for billing, compliance, and contract enforcement. + +**"Pricing will be a race to the bottom."** +You set the price. The protocol supports multiple pricing models — CPM-based royalties, flat rates, impression caps with overage charges. Buyers see transparent pricing and either accept it or move on. There is no auction or price compression mechanism. + +## What AdCP does not solve yet + +The protocol is honest about its current limitations: + +- **Mid-contract revocation** is supported through a revocation webhook. If something goes wrong — a talent controversy, a contract violation, a brand conflict — your agency can revoke rights immediately. The buyer provides a revocation webhook when they acquire rights, and your agency sends a notification with a reason and effective date. The buyer is responsible for stopping creative delivery. However, the protocol does not yet enforce revocation at the provider level — credential invalidation depends on provider cooperation. +- **Open-source model enforcement** is outside the protocol's scope. AdCP works with providers who participate in the credential system. It cannot prevent someone from using an uncontrolled model to generate your likeness. +- **Deepfake detection** is a separate problem. AdCP handles authorized use. Detecting and responding to unauthorized synthetic content requires different tools. + +## Next steps + +If you are a rights holder or represent one: + +1. **Ask your agency if they work with an AdCP-compatible rights management platform.** Many talent agencies and management companies already use platforms that support the protocol. If yours does, the setup is straightforward — your agency configures your preferences and approval rules on the platform they already use. + +2. **If they do not, have them visit the [AgenticAdvertising.org member directory](https://agenticadvertising.org/members) to find a platform partner.** Member organizations build the tools that connect talent rights to the advertising ecosystem. Your agency picks a platform, and that platform handles the technical integration. + +3. **The platform partner handles the technical setup — you configure your preferences and approval rules.** You decide what is available, where, at what price, and what requires your personal sign-off. The platform translates those preferences into protocol-compliant rights listings that AI media buyers can discover and negotiate against. + +For a deeper look at how the protocol operates, read the [rights discovery](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) and [rights acquisition](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) documentation. + +The advertising industry is adopting AI-generated content. The question for rights holders is whether that adoption happens with your participation and compensation, or without it. AdCP is designed to make sure you have a seat at the table. diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/index.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/index.mdx new file mode 100644 index 0000000000..47232e1fc5 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/index.mdx @@ -0,0 +1,110 @@ +--- +title: Brand protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/brand-before-after.png +description: "brand.json is the open standard that tells AI agents how to use your brand correctly. Publish logos, colors, tone, and restrictions in one machine-readable file that every agent in the AdCP ecosystem obeys." +"og:title": "AdCP — Brand protocol" +--- + +AI agents are generating content for your brand right now. Creative tools are picking logo variants, choosing color palettes, and writing copy in what they think is your voice. They pull this from wherever they can find it — cached web pages, scraped style guides, outdated press kits. + +You have no control over what they find. You have no way to tell them what not to do. + +## How it works + +You publish a single set of brand rules that every AI agent in the advertising ecosystem can read — your logos, colors, tone of voice, and what they must never do. The format is called `brand.json`, and it lives on your domain. + +A creative agent gets a brief: "Lunch promotion for Bistro Oranje, two-course menu, EUR 18.50." + +Split panel: left side shows an AI agent frantically scraping mismatched brand elements, producing an off-brand ad with wrong colors and text over food imagery; right side shows the same agent calmly reading brand.json and producing a clean, on-brand ad with correct logo, palette, and layout + +**Without brand.json**, the agent scrapes the website, finds an old logo, guesses at colors from the website, and puts a headline over the hero food shot. Close enough — until the brand team sees it. + +**With brand.json**, the agent fetches the file, pulls the correct wordmark, applies the exact palette, reads the warm tone, and sees the restriction against text over food imagery. It generates a food-forward composition with the headline below the image. No guessing. No corrections. + +The brand team did not brief the creative agent on any of this. The file did it for them. + +Every brand system in the world can serve a logo. Almost none of them can say "never place text over food imagery" in a way that an AI agent actually obeys. `brand.json` can — because restrictions are machine-readable rules, not guidelines buried in a PDF. + +## See what agents know about your brand + +Enter any domain on the [AgenticAdvertising.org brand registry](https://agenticadvertising.org/brands) to see what AI agents find for that brand today. Most brands return nothing — which means agents are guessing. Brands with `brand.json` show exactly what agents see. + +## Two tiers: public and authorized + +Not everything belongs in a public file. `brand.json` handles this with two access levels: + +| Level | What it includes | Who sees it | +|-------|-----------------|-------------| +| **Public** | Name, logo, colors, tagline, basic tone | Any AI agent | +| **Authorized** | High-res assets, voice synthesis, detailed guidelines | Partners you approve | + +The public tier contains what is already on your website. The authorized tier is for the assets and guidelines you share only with agencies and partners. You decide who gets access by linking accounts — no data leaks to agents you have not approved. + +## One file, many uses + +Brands exist in hierarchies — a holding company, its brands, their sub-brands and franchise locations. `brand.json` handles this: start at any domain and the protocol finds the canonical brand identity. The buy side gets the same structured identity that publishers already have on the sell side. + +- **License real talent through the same file.** Your `brand.json` can declare which celebrity likenesses and voices are available, and on what terms. A buyer agent finds talent, negotiates pricing, and gets authorization for AI creative tools — without a single email. [Follow the full rights licensing story →](/dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing) +- **Keep every sub-brand consistent.** A franchise domain points to the parent brand in two lines. Every location inherits the full identity — logos, colors, tone, restrictions — with no separate configuration. +- **Let the supply chain verify in real time.** Before serving an ad, any participant can confirm the talent license is still active and covers the right geography. + +## Start simple + +The smallest useful `brand.json` is just a name and a logo: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { "domain": "novabrands.com", "name": "Nova Brands" }, + "brands": [{ + "id": "nova", + "names": [{"en": "Nova Brands"}], + "logos": [{"url": "https://novabrands.com/logo.svg"}] + }] +} +``` + +Add colors when you are ready. Add tone guidelines later. Add visual restrictions when you see AI getting it wrong. The file grows with your needs. + +## Ecosystem support + +`brand.json` feeds into a growing ecosystem of agentic tools that read and act on your brand data: + +- **Buyer agents** that comply with AdCP reference your `brand.json` during campaign planning to ensure media buys align with your brand guidelines +- **Creative agents** pull your colors, logos, restrictions, and tone of voice when generating on-brand assets +- **The AgenticAdvertising.org registry** indexes published `brand.json` files so buyer and seller agents can discover your brand programmatically +- **Any MCP-compatible AI tool** that implements the brand protocol can read your `brand.json` — the format is open and not locked to a single platform + +The more tools that adopt the protocol, the more value your `brand.json` delivers without any additional work on your part. + +## Go deeper + +**For brand teams:** + + + + How to license real talent for AI-generated campaigns. + + + How AdCP protects and monetizes talent rights. + + + How to publish seller identity, property relationships, and signing keys. + + + Follow a buyer from talent discovery through acquisition and revocation. + + + +**For developers:** + + + + Full technical specification for the file format. + + + Implement a brand agent that serves identity and rights. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/key-concepts.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/key-concepts.mdx new file mode 100644 index 0000000000..3b9bd924d3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/key-concepts.mdx @@ -0,0 +1,298 @@ +--- +title: Brand protocol +description: "AdCP brand protocol concepts: houses, brands, brand agents, Keller architecture types, brand.json discovery, resolution flow, and how brand identity feeds into creative generation and media buying." +"og:title": "AdCP — Brand protocol key concepts" +sidebarTitle: Key concepts +--- + +The Brand Protocol enables brands to claim their identity and establish a verifiable source of truth through a standardized discovery mechanism. By hosting a `brand.json` file at a well-known location, brands can declare their identity, brand hierarchy, and optionally designate official brand agents. + +## Purpose + +The Brand Protocol defines machine-readable organization identity across AdCP. Buyers use `brand.json` for advertiser identity and authorized operators; sellers use it for operator identity, agent discovery, signing-key discovery, and property relationship declarations. The Property Protocol still remains the publisher authorization surface for inventory. + +| Sell Side | Buy Side | Description | +|-----------|----------|-------------| +| Publisher | **House** | Corporate entity (Nike, Inc., P&G) | +| Property | **Brand** | Advertising identity (Nike, Air Jordan) | +| Inventory | **Destination** | Landing pages, apps | + +This parallel structure makes brands first-class citizens in AdCP. + +## How it works + +Brands host a `brand.json` file at `/.well-known/brand.json` on their domain. The file can take one of four forms: + +1. **Brand Agent**: Points to an MCP agent that provides brand information +2. **House Portfolio**: Contains full brand hierarchy with all brands and properties +3. **House Redirect**: Points to a house domain that contains the portfolio +4. **Authoritative Location**: Points to a hosted brand.json URL + +```mermaid +sequenceDiagram + participant Agent as Buyer Agent + participant Domain as Brand Domain + participant House as House Domain + participant BrandAgent as Brand Agent (MCP) + + Agent->>Domain: GET /.well-known/brand.json + alt House Redirect + Domain-->>Agent: { "house": "nikeinc.com" } + Agent->>House: GET /.well-known/brand.json + House-->>Agent: Full portfolio (house + brands) + else Brand Agent + Domain-->>Agent: { "brand_agent": { "url": "..." } } + Agent->>BrandAgent: MCP: get brand identity + BrandAgent-->>Agent: Brand identity data + else House Portfolio + Domain-->>Agent: Full portfolio (house + brands) + end +``` + +## Brand architecture + +The protocol supports Keller's brand architecture models: + +| Type | Description | Example | +|------|-------------|---------| +| `master` | Primary brand of house | Nike for Nike, Inc. | +| `sub_brand` | Carries parent name | Nike SB | +| `endorsed` | Independent identity, backed by parent | Air Jordan "by Nike" | +| `independent` | Operates separately | Converse under Nike, Inc. | + +## Example: house portfolio + +A house domain with multiple brands: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "nikeinc.com", + "name": "Nike, Inc.", + "architecture": "hybrid" + }, + "brands": [ + { + "id": "nike", + "names": [{"en": "Nike"}, {"zh": "耐克"}], + "keller_type": "master", + "properties": [ + {"type": "website", "identifier": "nike.com", "primary": true}, + {"type": "mobile_app", "store": "apple", "identifier": "com.nike.omega"} + ] + }, + { + "id": "air_jordan", + "names": [{"en": "Air Jordan"}, {"en": "Jordan"}], + "keller_type": "endorsed", + "parent_brand": "nike", + "properties": [ + {"type": "website", "identifier": "jordan.com"}, + {"type": "website", "identifier": "jumpman23.com"} + ] + } + ] +} +``` + + +Properties can also represent inventory you sell but don't own. Use `relationship: "delegated"` for properties you manage (like a publisher network) or `relationship: "ad_network"` for properties you sell as an exchange/SSP. See [property relationships](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#property-relationships). + + +## Example: brand agent + +A brand with an MCP agent that provides brand information: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "brand_agent": { + "url": "https://agent.acme.com/mcp", + "id": "acme_brand_agent" + } +} +``` + +The agent provides brand identity data (logos, colors, tone) on behalf of the brand. + +## Example: house redirect + +A brand domain pointing to its house: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "house": "nikeinc.com" +} +``` + +## Resolution flow + +Given any domain, the protocol resolves to a canonical brand: + +``` +jumpman23.com + -> fetch /.well-known/brand.json + -> { "house": "nikeinc.com" } + -> fetch nikeinc.com/.well-known/brand.json + -> search brands[] for property matching "jumpman23.com" + -> found in Air Jordan brand's properties + -> Result: { house: "nikeinc.com", brand_id: "air_jordan" } +``` + +## Brand resolution sources + +There are three ways to resolve brand identity, each returning the same data structure: + +| Source | How it works | When to use | +|--------|-------------|-------------| +| [`resolve_brand`](#mcp-tools) | Fetches `/.well-known/brand.json`, extracts brand identity | Brand publishes a `brand.json` file | +| [Brand enrichment](/dist/docs/3.2.0-beta.4/registry/index#brand-resolution) | Fetches from Brandfetch, saves identity to registry | No `brand.json` available, need enrichment | +| [Registry lookup](/dist/docs/3.2.0-beta.4/registry/index#brand-resolution) | Returns community or enriched identity from the registry | Brand already registered | + +Regardless of source, the result is a brand identity that can be referenced by any AdCP task via a brand reference (`{ "domain": "...", "brand_id": "..." }`). + +## Use cases + +### Creative generation + +When a creative agent needs brand assets: + +1. Resolve domain to canonical brand via brand.json +2. Get brand identity data (from brand.json, agent, or registry) +3. Generate on-brand creatives + +### Brand verification + +When verifying brand claims: + +1. Fetch brand.json from claimed domain +2. Follow redirects to house if needed +3. Verify brand exists in portfolio + +### Reporting roll-up + +When aggregating brand performance: + +1. Resolve all brand domains to canonical IDs +2. Group by house for corporate-level reporting +3. Optionally include/exclude sub-brands + +## Brand context in requests + +AdCP tasks accept a `brand` reference that identifies the brand by domain and optional brand_id. The system resolves this reference to the full brand identity at execution time. + +```json +{ + "brand": { + "domain": "acmecorp.com", + "brand_id": "tide" + } +} +``` + +For single-brand domains, `brand_id` is optional: + +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +Brand identity data is resolved from `brand.json` or the registry — never passed inline. + +## Caching + +Brand information changes infrequently (logo updates, guideline refreshes). Recommended caching: + +- **HTTP headers**: Use standard `ETag`, `Last-Modified`, and `Cache-Control` headers +- **Default TTL**: 24 hours for validated brand.json files +- **Failed lookups**: Cache for 1 hour before retrying +- **last_updated field**: Informational timestamp in brand.json for staleness checks + +Agents should respect HTTP caching headers when fetching brand.json files. + +## Brand protocol tasks + +Agents that implement the brand protocol declare `supported_protocols: ["brand"]` in `get_adcp_capabilities`. The specific tasks they implement define their role: + +| Agent capability | Tasks | Example | +|-----------------|-------|---------| +| DAM | `get_brand_identity` | Enterprise brand portal, asset management | +| Rights management | `get_rights` + `acquire_rights` | Talent licensing, music sync, stock media | +| Both | All brand tasks | Talent agency managing identity and rights | + +### get_brand_identity + +Returns brand identity data that's richer, more dynamic, or more access-controlled than static brand.json. Core identity (house, names, description, logos) is always public. Linked accounts (via `sync_accounts`) get deeper data: high-res assets, voice synthesis configs, tone guidelines, and rights availability. + +### Rights discovery via brand.json + +Brands with licensable rights declare a `rights_agent` in their brand.json. This makes rights crawlable and indexable without MCP calls: + +```json +{ + "id": "daan_janssen", + "names": [{"en": "Daan Janssen"}], + "description": "Dutch Olympic speed skater, 2x gold medalist", + "rights_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment", + "available_uses": ["likeness", "voice", "endorsement"], + "right_types": ["talent"], + "countries": ["NL", "BE", "DE"] + } +} +``` + +The `brand_agent` provides identity data (logos, tone, assets). The `rights_agent` provides licensing (discovery, pricing, acquisition). They can be the same agent or different ones. + +### get_rights + +Search for licensable rights across a brand agent's roster. Returns matches with pricing. Discovery is natural-language-first — no taxonomy, LLMs interpret intent from the query. + +### acquire_rights + +Binding contractual request to clear rights. The buyer selects a `pricing_option_id` from `get_rights` and provides campaign details. Returns terms, generation credentials for LLM providers, and disclosure requirements. + +### Generation credentials + +Rights management agents coordinate with LLM providers (Midjourney, ElevenLabs, etc.) to issue scoped credentials. The rights agent sets up the permission; the provider enforces at generation time. Any creative agent can use the credentials. + +### Creative lifecycle + +Creative manifests carry an optional `rights` array — each entry is a rights constraint from a different rights holder. A single creative may combine talent likeness + music license, each with different validity periods and country restrictions. Legacy constraints are informational metadata. In 3.2, a digest-pinned constraint carries a holder-issued credential reference, but remains only a presentation until the consuming seller verifies it and returns its own current evaluation. + +Usage is reported back to the rights agent via `report_usage` with the `rights_id` field for cap tracking and billing. + +## MCP tools + +The Brand Protocol provides MCP tools for programmatic access: + +| Tool | Description | +|------|-------------| +| `resolve_brand` | Resolve domain to canonical brand identity | +| `validate_brand_json` | Validate a domain's brand.json | +| `validate_brand_agent` | Test brand agent reachability | + +## Learn more + + + + Complete technical specification for the brand.json file format. + + + Retrieve brand identity data from a brand agent. + + + Search for licensable rights with pricing. + + + Acquire rights with contractual clearance. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup.mdx new file mode 100644 index 0000000000..6c6d3fc4fd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup.mdx @@ -0,0 +1,232 @@ +--- +title: Seller setup +sidebarTitle: For sellers +description: "How publishers, sales agents, networks, and SSPs use brand.json and adagents.json together for seller identity, signing-key discovery, and supply path verification." +"og:title": "AdCP — Seller setup for brand.json" +--- + +`brand.json` is not only for advertisers. On the sell side, it is the public company record for the organization operating an AdCP sales path: name, logo, domains, sales agents, and signing-key discovery. `adagents.json` is the publisher's authorization record: which properties exist and which agents may sell them. + +Buyer agents need both views. `brand.json` answers "who is this seller or platform, and what is it claiming?" `adagents.json` answers "does the publisher authorize this agent to sell this inventory?" + +## Requirement boundary + +The practical rule is: + +- **If you operate an AdCP agent**, that agent needs operator identity and signing-key discovery. Publish a `brand.json` entry for the operating organization, list the agent in `agents[]`, and expose public keys through `agents[].jwks_uri` or the default `/.well-known/jwks.json`. +- **If you publish inventory**, you need a publisher authorization record. Publish `adagents.json` on the publisher domain so buyers can verify which agents may sell which properties. +- **If you both publish inventory and operate the sales agent**, do both on the same organization/domain. +- **If you delegate sales to another operator**, your `adagents.json` is the authorization hinge. Your own `brand.json` is still recommended for publisher identity, portfolio context, and governance, but the delegated operator's `brand.json` carries the sales-agent identity buyers interact with. + +The protocol requirement is verifiability: public keys must be discoverable, and signed requests or webhooks must validate against those keys. Production agents should protect private signing keys with KMS/HSM or a managed secret system, but AdCP does not mandate a specific vendor or hosting pattern. This page covers the discovery and verification records; implementation details for key storage and signing live in [request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing). + +## Who publishes what + +| Organization | Publish `brand.json`? | Publish `adagents.json`? | Why | +|---|---|---|---| +| Publisher selling direct | Yes | Yes | The publisher is both the inventory owner and the sales operator. Buyers verify its identity, sales endpoint, keys, and property authorization from the same organization. | +| Publisher delegating sales | Recommended | Yes | The publisher's `adagents.json` authorizes the external sales agent. Its `brand.json` gives buyers the publisher's own identity and house/portfolio context, but the external operator's `brand.json` carries the sales-agent identity. | +| Network, SSP, or sales representative | Yes | Usually no, unless it also owns properties | The operator's `brand.json` declares its sales agent, signing keys, and represented properties. The publisher confirms the relationship in its own `adagents.json`. | + +If the publisher and sales operator are the same company, both files can live on the same domain. If a third-party platform sells for the publisher, the operator's `brand.json` lives on the operator domain and the publisher's `adagents.json` lives on the publisher domain. + +## How verification works + +The sell-side chain is bilateral: + +1. The seller's `brand.json` declares the sales agent in `agents[]`. +2. The seller's `brand.json` declares the properties it owns, sells directly, manages, or represents in `properties[]`. +3. The publisher's `adagents.json` declares the same sales agent in `authorized_agents[]`. +4. For delegated or network paths, the `relationship` value in `brand.json` matches the publisher's `delegation_type` in `adagents.json`. For first-party inventory, `relationship: "owned"` is inline ownership and has no `delegation_type` counterpart. +5. The signing key used by the agent is discoverable from the seller's `brand.json` `agents[].jwks_uri`; for mutating seller authorizations, the publisher also pins allowed keys in `adagents.json` `authorized_agents[].signing_keys[]`. + +The result is a verifiable supply path. The operator publicly says "I sell this property"; the publisher publicly says "this operator is authorized to sell it." + +## Direct publisher example + +A publisher with its own sales agent publishes `brand.json` at `https://streamhaus.example/.well-known/brand.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "streamhaus", + "url": "https://streamhaus.example", + "names": [{ "en_US": "StreamHaus" }], + "industries": ["media"], + "properties": [ + { + "type": "ctv_app", + "identifier": "com.streamhaus.ctv", + "relationship": "owned" + } + ], + "agents": [ + { + "type": "sales", + "id": "streamhaus_sales", + "url": "https://ads.streamhaus.example/mcp", + "jwks_uri": "https://ads.streamhaus.example/.well-known/jwks.json" + } + ] +} +``` + +The same publisher publishes `adagents.json` at `https://streamhaus.example/.well-known/adagents.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "StreamHaus", + "email": "adops@streamhaus.example", + "domain": "streamhaus.example" + }, + "properties": [ + { + "property_id": "streamhaus_ctv", + "property_type": "ctv_app", + "name": "StreamHaus CTV App", + "publisher_domain": "streamhaus.example", + "identifiers": [{ "type": "bundle_id", "value": "com.streamhaus.ctv" }] + } + ], + "authorized_agents": [ + { + "authorization_type": "property_ids", + "url": "https://ads.streamhaus.example/mcp", + "authorized_for": "StreamHaus direct CTV inventory", + "property_ids": ["streamhaus_ctv"], + "signing_keys": [ + { + "kid": "streamhaus-sales-prod-2026", + "kty": "OKP", + "alg": "EdDSA", + "crv": "Ed25519", + "x": "w8zcY1LZqV4n1oKbfyq3n2q3sL2uV3z7kEw1m9Qjv4A", + "use": "sig" + } + ] + } + ] +} +``` + +The buyer verifies that `agents[].url` in `brand.json` matches `authorized_agents[].url` in `adagents.json`, that StreamHaus owns the property it claims, and that signed mutating responses use a key pinned by StreamHaus in `signing_keys[]`. + +## Delegated seller example + +When a network sells another publisher's inventory, the network publishes its own `brand.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "northwind_media", + "url": "https://northwind.example", + "names": [{ "en_US": "Northwind Media" }], + "industries": ["advertising"], + "properties": [ + { + "type": "website", + "identifier": "streamhaus.example", + "relationship": "delegated" + } + ], + "agents": [ + { + "type": "sales", + "id": "northwind_sales", + "url": "https://northwind.example/mcp", + "jwks_uri": "https://northwind.example/.well-known/jwks.json" + } + ] +} +``` + +StreamHaus confirms the relationship in `https://streamhaus.example/.well-known/adagents.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "StreamHaus", + "email": "adops@streamhaus.example", + "domain": "streamhaus.example" + }, + "properties": [ + { + "property_id": "streamhaus_web", + "property_type": "website", + "name": "StreamHaus", + "publisher_domain": "streamhaus.example", + "identifiers": [{ "type": "domain", "value": "streamhaus.example" }] + } + ], + "authorized_agents": [ + { + "authorization_type": "property_ids", + "url": "https://northwind.example/mcp", + "authorized_for": "StreamHaus inventory via delegated sales agreement", + "property_ids": ["streamhaus_web"], + "delegation_type": "delegated", + "signing_keys": [ + { + "kid": "northwind-sales-prod-2026", + "kty": "OKP", + "alg": "EdDSA", + "crv": "Ed25519", + "x": "Xe2lAKRJR_zr3FQRdSNwp3zsrv_IXnVCWJXDcWXwkLI", + "use": "sig" + } + ] + } + ] +} +``` + +Northwind's `brand.json` alone is not authorization. Any operator can claim a property. The publisher's matching `adagents.json` entry is what turns the claim into an authorized supply path. + +### Multi-tenant sales agents + +Operators that host one sales-agent deployment for many publisher tenants MAY publish one `agents[]` entry per tenant or property-scoped endpoint, even when every entry has `type: "sales"`. Each entry is selected by its concrete `url`, not by `type`, so a path-routed deployment can publish per-tenant JWKS shards. The tenant or property scope is carried by the concrete agent URL being authenticated, such as `/mcp/{tenant}`; it is not selected from a tenant identifier inside the signed request body. Agent URLs MUST be unique within the `agents[]` array. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "agents": [ + { + "type": "sales", + "id": "sales_streamhaus", + "url": "https://northwind.example/mcp/streamhaus", + "jwks_uri": "https://northwind.example/.well-known/jwks/streamhaus.json" + }, + { + "type": "sales", + "id": "sales_pinnacle_news", + "url": "https://northwind.example/mcp/pinnacle_news", + "jwks_uri": "https://northwind.example/.well-known/jwks/pinnacle_news.json" + } + ] +} +``` + +Signature verifiers MUST resolve keys from the agent URL being authenticated using the request-signing discovery algorithm: match exactly one `brand.json` `agents[].url` entry, use that entry's `jwks_uri` or the default `/.well-known/jwks.json` on the agent URL's origin, then resolve `keyid`. They MUST reject duplicate matching entries as ambiguous, MUST NOT choose a JWKS by agent `type` alone, and MUST NOT rely on a tenant identifier supplied inside the request payload to decide which key set to trust. + +## Setup checklist + +1. Publish `brand.json` for each organization that operates an AdCP sales agent at `https://{seller-domain}/.well-known/brand.json`. +2. Add a `sales` entry to `agents[]` for each AdCP sales endpoint the organization operates. +3. Publish the endpoint's JWKS through `agents[].jwks_uri`, or rely on the default `/.well-known/jwks.json` on the agent origin. +4. Add every owned, direct, delegated, or network-represented property to `properties[]` with the right `relationship`; use `owned` for first-party inventory. +5. Publish `adagents.json` on each publisher domain that owns the inventory. +6. In `authorized_agents[]`, list the seller's agent URL, authorization scope, matching `delegation_type` for delegated or network paths, and `signing_keys[]` for any mutating seller authorization. +7. Keep both files aligned when a sales relationship, endpoint, or signing key starts, changes, or ends. + +## Where to go next + +- [brand.json reference](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — field-level details for `agents[]`, `properties[]`, and property relationships +- [adagents.json reference](/dist/docs/3.2.0-beta.4/governance/property/adagents) — publisher-side authorization and `delegation_type` +- [Seller verification](/dist/docs/3.2.0-beta.4/verification/overview) — buyer-side walkthrough of the full verification chain +- [Seller integration guide](/dist/docs/3.2.0-beta.4/building/operating/seller-integration) — full AdCP sales-agent implementation path diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights.mdx new file mode 100644 index 0000000000..b052ae1075 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights.mdx @@ -0,0 +1,340 @@ +--- +title: acquire_rights +description: "acquire_rights is the AdCP task for binding rights acquisition. Submit a pricing option and campaign details to receive generation credentials, rights constraints, and disclosure requirements from a brand agent." +"og:title": "AdCP — acquire_rights" +testable: true +--- + + +**Experimental.** Brand rights lifecycle ([`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights), `acquire_rights`, [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `brand.rights_lifecycle` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Binding contractual request to acquire rights from a brand agent. Parallels [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — select a `pricing_option_id` from `get_rights` and provide campaign details. The agent clears against existing contracts and returns terms, generation credentials, and disclosure requirements. + +## Schema + +- **Request**: [`acquire-rights-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/acquire-rights-request.json) +- **Response**: [`acquire-rights-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/acquire-rights-response.json) + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} + +## Response time + +Seconds to minutes for `acquired` or `rejected`. The `pending_approval` status means the rights holder needs to review — resolution may take hours to days. + +## Quick start + + +```json Request +{ + "rights_id": "janssen_likeness_voice", + "pricing_option_id": "monthly_exclusive", + "buyer": { + "domain": "bistro-oranje.nl", + "brand_id": "bistro_oranje" + }, + "campaign": { + "description": "AI-generated video ads for Bistro Oranje steakhouse featuring Daan Janssen", + "uses": ["likeness", "voice"], + "countries": ["NL"], + "format_kinds": ["video_hosted"], + "estimated_impressions": 50000, + "start_date": "2026-04-01", + "end_date": "2026-06-30" + }, + "revocation_webhook": { + "url": "https://buyer.bistro-oranje.nl/webhooks/revocation", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "whsk_bo_abc123...shared_secret_min_32_chars" + } + }, + "idempotency_key": "acq_bo_janssen_2026q2_001", + "push_notification_config": { + "url": "https://buyer.bistro-oranje.nl/webhooks/adcp/acquire_rights/op_abc123", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "whsk_bo_xyz789...shared_secret_min_32_chars" + } + } +} +``` + +```json Response (acquired) +{ + "rights_id": "janssen_likeness_voice", + "rights_status": "acquired", + "brand_id": "daan_janssen", + "terms": { + "pricing_option_id": "monthly_exclusive", + "amount": 350, + "currency": "EUR", + "period": "monthly", + "uses": ["likeness", "voice"], + "impression_cap": 100000, + "overage_cpm": 4.00, + "start_date": "2026-04-01", + "end_date": "2026-06-30", + "exclusivity": { + "scope": "Exclusive licensee for Daan Janssen in NL for food/restaurant brands", + "countries": ["NL"] + } + }, + "generation_credentials": [ + { + "provider": "midjourney", + "rights_key": "rk_mj_abc123...", + "uses": ["likeness"], + "expires_at": "2026-06-30T23:59:59Z" + }, + { + "provider": "elevenlabs", + "rights_key": "rk_el_def456...", + "uses": ["voice"], + "expires_at": "2026-06-30T23:59:59Z" + } + ], + "rights_constraint": { + "rights_id": "janssen_likeness_voice", + "rights_agent": { "url": "https://agent.lotientertainment.com/mcp", "id": "loti_entertainment" }, + "rights_holder": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" }, + "valid_from": "2026-04-01T00:00:00Z", + "valid_until": "2026-06-30T23:59:59Z", + "uses": ["likeness", "voice"], + "countries": ["NL"], + "impression_cap": 100000, + "approval_status": "approved", + "grant_status": "active", + "restrictions": [ + "All generated creatives must be submitted for approval before distribution", + "No modification of talent likeness beyond approved AI generation parameters" + ], + "disclosure": { + "required": true, + "text": "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment" + }, + "creative_approval_required": true, + "content_digest": "sha256:29dbd75733e150d48a8c594966d8eb52b7e3ebdc21d350f6e2d0031800a0ba74", + "attestation_refs": [{ + "issuer": { "type": "brand", "brand": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" } }, + "claim_type": "https://adcontextprotocol.org/claims/rights/grant", + "subject": { + "type": "resource", + "resource_type": "https://adcontextprotocol.org/claims/subjects/rights-grant", + "namespace": "https://agent.lotientertainment.com/mcp", + "id": "janssen_likeness_voice", + "content_digest": "sha256:29dbd75733e150d48a8c594966d8eb52b7e3ebdc21d350f6e2d0031800a0ba74" + }, + "locator": { "type": "issuer_credential_id", "credential_id": "cred_janssen_2026q2", "resolver_id": "primary" } + }] + }, + "restrictions": [ + "All generated creatives must be submitted for approval before distribution", + "No modification of talent likeness beyond approved AI generation parameters" + ], + "disclosure": { + "required": true, + "text": "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment" + }, + "approval_webhook": { + "url": "https://agent.lotientertainment.com/rights/rts_abc123/approve", + "authentication": { + "schemes": ["Bearer"], + "credentials": "rk_approve_abc123...token_min_32_chars" + } + }, + "usage_reporting_url": "https://agent.lotientertainment.com/rights/rts_abc123/usage" +} +``` + +```json Response (pending approval) +{ + "rights_id": "janssen_likeness_voice", + "rights_status": "pending_approval", + "brand_id": "daan_janssen", + "detail": "Creative concept requires talent approval per contract terms", + "estimated_response_time": "48h" +} +``` + +```json Response (rejected — actionable) +{ + "rights_id": "janssen_likeness_voice", + "rights_status": "rejected", + "brand_id": "daan_janssen", + "reason": "Active exclusivity with another brand for food/restaurant in NL through 2026-09-30", + "suggestions": [ + "Available in BE and DE markets", + "Available in NL after 2026-10-01" + ] +} +``` + +```json Response (rejected — final) +{ + "rights_id": "janssen_likeness_voice", + "rights_status": "rejected", + "brand_id": "daan_janssen", + "reason": "This violates our public figures brand guidelines" +} +``` + +```json Response (error) +{ + "errors": [ + { + "code": "pricing_option_unavailable", + "message": "Pricing option 'monthly_exclusive' is no longer available for this rights offering" + } + ] +} +``` + + +## Parameters + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `rights_id` | string | Yes | Rights offering identifier from [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) | +| `pricing_option_id` | string | Yes | Selected pricing option | +| `buyer` | brand-ref | Yes | Buyer's brand identity | +| `account` | account-ref | Conditional | Account context. Pass when the brand agent has a governance agent bound to this brand+operator via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) — the brand agent uses it to resolve the bound governance agent and project commitment under the [CPM-priced rights validation](#cpm-priced-rights-under-a-governance-plan). Optional when the request is ungoverned or threads a `governance_context` token on the envelope instead. | +| `campaign.description` | string | Yes | How the rights will be used | +| `campaign.uses` | string[] | Yes | Specific rights uses for this campaign | +| `campaign.countries` | string[] | No | Countries where the campaign will run | +| `campaign.format_kinds` | string[] | No | Canonical creative format kinds that will be produced | +| `campaign.format_option_refs` | FormatOptionRef[] | No | Exact publisher/product options when kind alone is insufficient | +| `campaign.format_ids` | format-id[] | No | Deprecated 3.x named-format compatibility field | +| `campaign.estimated_impressions` | integer | No | Estimated total impressions | +| `campaign.start_date` | date | No | Campaign start date | +| `campaign.end_date` | date | No | Campaign end date | +| `revocation_webhook` | push-notification-config | Yes | Webhook for revocation notifications. If the rights holder needs to revoke rights, they POST a [revocation-notification](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/revocation-notification.json) to this URL. | +| `idempotency_key` | string | No | Client-generated key for safe retries. Resubmitting with the same key returns the original response. | +| `push_notification_config` | push-notification-config | No | Webhook for async status updates if the acquisition requires approval. See [push notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). | + +### Response statuses + +The response uses a discriminated union on `status`: + +| Status | Description | Key fields | +|--------|-------------|------------| +| `acquired` | Rights cleared, credentials issued | `terms`, `generation_credentials`, `rights_constraint`, `disclosure` | +| `pending_approval` | Requires rights holder review | `detail`, `estimated_response_time` | +| `rejected` | Request denied | `reason`, `suggestions` (optional) | + +When `suggestions` is present on a rejected response, the rejection is actionable — the buyer can adjust their request and retry. When `suggestions` is absent, the rejection is final and the buyer should not retry for this rights/talent combination. This convention applies consistently across `acquire_rights` rejections, `get_rights` excluded results, and creative approval rejections. + +## Request validation + +Two campaign-field validations are normative for `acquire_rights`. Both produce [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) with the offending `field` populated and `recovery: "correctable"` (the buyer can fix the request and retry). + +### Expired campaign window + +Brand agents MUST reject with `INVALID_REQUEST` and `field: "campaign.end_date"` when `campaign.end_date` is in the past at the time of the request. Acquiring rights for a window that has already elapsed produces a zero-duration grant and is almost always a buyer-side bug — surfacing it deterministically is more useful than silently issuing credentials that immediately expire. + +Like [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy), rights grants are not time-shiftable for elapsed windows: the contract attaches to the requested period, so reject-only is the correct contract for `acquire_rights`. + +Brand agents MAY also reject when `campaign.start_date` is more than the rights agent's configured grace window in the past (typically the rights agent rejects start dates earlier than `now - 24h` since rights cannot be retroactively granted); that decision is contract-specific and SHOULD use `field: "campaign.start_date"`. The `end_date < now` check is the normative floor. + +### CPM-priced rights under a governance plan + +A request is **governance-aware** when the brand agent will project commitment against a governance plan before issuing credentials. That happens by either of two paths: + +1. **Inline path** — the request carries an intent-phase `governance_context` token on the [protocol envelope](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). The buyer threads the token explicitly per request. +2. **Bound path** — the request carries `account` (a seller-assigned `account_id`, or `account.brand` + `account.operator` resolving to a bound account), and the brand agent has a governance agent previously bound to that account via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). The brand agent looks up the bound agent without the buyer threading anything per request. + +When **both** paths are present in the same request — an inline `governance_context` token AND an `account` with a bound governance agent — the inline token wins. The token is per-request, JWS-signed against a specific plan, and is the [primary correlation key](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for audit and reporting; the bound agent serves as the resolver fallback when no token is threaded. Brand agents MUST consult the agent identified by the inline token when both are present, even if it differs from the bound agent — the buyer's per-request decision overrides the persisted binding. + +Both paths trigger the same projection rule. When the request is governance-aware and the selected pricing option has `model: "cpm"`, `campaign.estimated_impressions` is the input the brand agent uses to project commitment against remaining plan budget. To make that projection deterministic across implementations: + +- Brand agents MUST reject with `INVALID_REQUEST` and `field: "campaign.estimated_impressions"` when the request is governance-aware (either path), the selected `pricing_option.model` is `"cpm"`, and `campaign.estimated_impressions` is either omitted or `0`. Implementer-chosen defaults (e.g., assuming 1M impressions) are non-conformant — they hide a policy decision inside each implementation and produce different governance outcomes for identical requests. +- When `estimated_impressions` is provided and non-zero, the projected commitment is `(pricing_option.price / 1000) × campaign.estimated_impressions`, evaluated in `pricing_option.currency`. If `pricing_option.currency` differs from the governance plan's budget currency (as carried on the plan), the brand agent MUST reject with `INVALID_REQUEST` and `field: "pricing_option_id"` — currency conversion is not specified for governance projection, so currency-mismatched offers cannot be cleared against a governed plan. +- If the projected commitment exceeds the buyer's remaining plan budget, the agent MUST reject with `INVALID_REQUEST` and `field: "campaign.estimated_impressions"`, populating `reason` with the projected commitment and remaining budget so the buyer can adjust. +- Non-CPM pricing options (`model: "flat_rate"`, etc.) commit the flat amount regardless of impression volume; brand agents MUST NOT require `estimated_impressions` for governance projection on those options. Buyers MAY still provide `estimated_impressions` for cap-tracking purposes. + +Ungoverned requests — neither `governance_context` token nor an account with a bound governance agent — are unaffected by this validation. `estimated_impressions` remains optional in that case (sellers MAY refuse to transact ungoverned plans as a matter of commercial policy, per [Spend-commit invocation](/dist/docs/3.2.0-beta.4/governance/campaign/specification#spend-commit-invocation), but that refusal is independent of this projection rule). + +## Generation credentials + +When rights are acquired, the agent coordinates with LLM providers to issue scoped credentials: + +1. Agent clears the rights against existing contracts +2. Agent tells the provider (e.g., Midjourney): "Issue a rights key for this talent, licensed to this buyer" +3. Agent returns the credentials to the buyer + +**Any creative agent** can use these credentials. The LLM provider enforces usage constraints at generation time — the rights agent sets up the permission, the provider is the gatekeeper. + +| Field | Type | Description | +|-------|------|-------------| +| `provider` | string | LLM/generation service (e.g., "midjourney", "elevenlabs") | +| `rights_key` | string | Scoped API key for generating rights-cleared content | +| `uses` | string[] | Rights uses this credential covers | +| `expires_at` | datetime | When the credential expires (provider-determined) | +| `endpoint` | uri | Provider endpoint for rights-scoped generation (optional, uses provider default if omitted) | + +## Rights constraint + +When `status` is `acquired`, the response includes a `rights_constraint` object: + +| Field | Type | Description | +|-------|------|-------------| +| `rights_constraint` | object | Pre-built digest-pinned constraint and issuer-bound attestation references for creative manifests. Embed it unchanged in the creative's `rights` array. | + +## Creative lifecycle + +After acquiring rights: + +1. **Generate**: Creative agent uses `generation_credentials` to produce content +2. **Manifest**: Embed the `rights_constraint` from the `acquire_rights` response unchanged in the creative asset or manifest `rights` array. The rights agent pre-builds the exact grant digest and portable references; restrictions, disclosure obligations, creative-approval requirements, and every other serving-relevant term are inside that signed projection. Modifying or omitting one invalidates the digest binding. Webhook credentials remain outside the projection. +3. **Approve**: POST a [`creative-approval-request`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/creative-approval-request.json) to the `approval_webhook` URL, authenticating with the provided credentials. The response is a [`creative-approval-response`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/creative-approval-response.json) with status `approved`, `rejected`, or `pending_review`. If `pending_review`, poll the returned `status_url` for updates (suggested: every 5 minutes, back off to every 30 minutes after 1 hour). +4. **Serve**: The serving seller evaluates at least one rights attestation under its own published policy, requires a current `verified` result when its capability says `required`, and separately enforces country, use, date, and impression-cap policy. A legacy `verification_url` never authorizes delivery. +5. **Report**: Use [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) with `rights_id` for cap tracking and billing + +If `acquire_rights` returns `pending_approval` and you provided `push_notification_config`, you'll receive a webhook notification when the status changes to `acquired` or `rejected`. Otherwise, re-call `acquire_rights` with the same `rights_id` and `idempotency_key` after the `estimated_response_time` interval. Set `approval_status: 'pending'` on any creative manifests built during this period. + +## Revocation + +If the rights holder needs to revoke rights (talent controversy, contract violation, etc.), they POST a [`revocation-notification`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/revocation-notification.json) to the buyer's `revocation_webhook`, authenticating with the credentials provided at acquisition time. The notification contains an `idempotency_key` (required, used for deduplication across retries), `rights_id`, `brand_id`, `reason`, and `effective_at` timestamp. + +The buyer is responsible for: +- Deduplicating by `idempotency_key` — the same revocation may be delivered multiple times; see [Push Notifications — Reliability](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#reliability) for the canonical dedup contract +- Stopping creative delivery by `effective_at` +- Removing or replacing affected creatives from active campaigns +- Ceasing use of generation credentials (providers may also invalidate credentials independently) + +Partial revocation is supported — if `revoked_uses` is present, only those uses are revoked (e.g., voice revoked but likeness remains). + +### Acknowledging revocations + +Return HTTP `200` immediately upon receiving and validating a revocation notification. The rights holder retries on non-`2xx` responses using exponential backoff (1s, 5s, 30s, 5m, 30m). After 6 failed attempts, the rights holder may escalate through other channels. + +All webhook signing follows the AdCP [push notification signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#signature-verification) — RFC 9421 by default (rights agent signs with its `adcp_use: "request-signing"` key published at its brand.json `agents[]` entry; deprecated `webhook-signing` keys remain accepted during the compatibility window), with the deprecated HMAC-SHA256 fallback available when the rights holder populates `authentication.credentials` on the webhook registration. + +## Impression caps and overage + +When `terms.impression_cap` is set, it is a **soft cap**. Delivery is not automatically halted at the cap — the buyer is responsible for monitoring usage via [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) and managing delivery accordingly. Impressions beyond the cap are billed at `terms.overage_cpm`. If the rights holder wants a hard cap (no delivery beyond the limit), they specify this in `restrictions`. + +## Usage reporting + +The `usage_reporting_url` in the acquired response is a convenience endpoint provided by the rights agent for HTTP-based impression reporting. It accepts the same payload as the [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) MCP task. Use whichever integration is simpler for your pipeline — the MCP tool for agent-to-agent workflows, or the URL for direct HTTP calls from ad servers. + +## Renewal and updates + +To extend a rights grant, adjust impression caps, change pricing, or pause/resume, use [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights). Extended grants receive re-issued generation credentials and an updated `rights_constraint` for re-embedding in manifests. + +## Next steps + + + + Extend, adjust, or pause an existing rights grant. + + + Report impressions against rights grants for billing and cap tracking. + + + Rights constraints on creative manifests. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity.mdx new file mode 100644 index 0000000000..197868df78 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity.mdx @@ -0,0 +1,216 @@ +--- +title: get_brand_identity +description: "get_brand_identity is the AdCP task for retrieving brand data from a brand agent. Returns logos, colors, fonts, visual guidelines, tone, and voice synthesis config with public and authorized access tiers." +"og:title": "AdCP — get_brand_identity" +testable: true +--- + +Retrieve brand identity data from a brand agent. Core identity (house, names, description, logos) is always public — any agent can discover who a brand is without authentication. Linked accounts get deeper data: high-res assets, voice synthesis configs, tone guidelines, and rights availability. + +## Schema + +- **Request**: [`get-brand-identity-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/get-brand-identity-request.json) +- **Response**: [`get-brand-identity-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/get-brand-identity-response.json) + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} + +## Response time + +Typically under 2 seconds for identity data. Authorized responses with large asset collections may take longer. + +## Public by default + +Brand identity is public data. Any agent can call `get_brand_identity` without a linked account and receive the brand's core identity: house, names, description, industries, and basic logos. This is the same data available in `brand.json` — `get_brand_identity` provides it via MCP for agents that prefer a structured call over fetching and parsing the file. + +The registry enforces this: every brand indexed from `brand.json` is publicly discoverable. You can always find out what house a brand belongs to, what it's called, and what it does. + +Authorized callers (linked via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts)) get deeper data on top of the public baseline. + +Account linking is a one-time setup: a buyer agent calls [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) on the brand agent, providing its brand reference. After that, the buyer's `get_brand_identity` requests are recognized as authorized. + +| Level | What you get | +|-------|-------------| +| **Public** (no linked account) | House, names, description, industries, keller_type, basic logos, tagline | +| **Authorized** (linked via `sync_accounts`) | Everything above, plus: high-res assets, voice synthesis, tone guidelines, content restrictions, rights availability | + +If a request includes `fields` that require authorization the caller does not have, those fields are silently omitted. The response includes `available_fields` listing what sections exist but were not returned, so the caller knows what they would gain by linking their account. + +## Quick start + + +```json Request (public) +{ + "brand_id": "daan_janssen" +} +``` + +```json Response (public) +{ + "brand_id": "daan_janssen", + "house": { "domain": "lotientertainment.com", "name": "Loti Entertainment" }, + "names": [{"en": "Daan Janssen"}], + "description": "Dutch Olympic speed skater, 2x gold medalist", + "industries": ["sports_fitness"], + "keller_type": "independent", + "logos": [ + { "url": "https://cdn.lotientertainment.com/janssen/headshot.jpg", "variant": "primary" } + ], + "tagline": [{"en-US": "Speed is a choice"}, {"nl-NL": "Snelheid is een keuze"}], + "available_fields": ["tone", "voice_synthesis", "assets", "rights"] +} +``` + + + +```json Request (authorized, specific fields) +{ + "brand_id": "daan_janssen", + "fields": ["logos", "tone", "voice_synthesis"], + "use_case": "endorsement" +} +``` + +```json Response (authorized) +{ + "brand_id": "daan_janssen", + "house": { "domain": "lotientertainment.com", "name": "Loti Entertainment" }, + "names": [{"en": "Daan Janssen"}], + "logos": [ + { "url": "https://cdn.lotientertainment.com/janssen/headshot.jpg", "variant": "primary" }, + { "url": "https://assets.lotientertainment.com/janssen/hero_01_highres.jpg", "variant": "full-lockup", "width": 3000, "height": 2000 } + ], + "voice_synthesis": { + "provider": "elevenlabs", + "voice_id": "janssen_v2", + "rights_offering_id": "loti_dj_voice_2026", + "settings": { "stability": 0.7 } + }, + "tone": { + "voice": "enthusiastic, warm, competitive", + "attributes": ["athletic", "Dutch pride", "approachable"], + "dos": ["Reference athletic achievements", "Use Dutch cultural touchpoints"], + "donts": ["No injury references", "No competitor comparisons"] + } +} +``` + + + +```json Request (creative production) +{ + "brand_id": "daan_janssen", + "fields": ["colors", "fonts", "visual_guidelines"], + "use_case": "creative_production" +} +``` + +```json Response (authorized) +{ + "brand_id": "daan_janssen", + "house": { "domain": "lotientertainment.com", "name": "Loti Entertainment" }, + "names": [{"en": "Daan Janssen"}], + "colors": { + "primary": "#FF6600", + "secondary": "#1A1A2E", + "accent": "#FBA007" + }, + "fonts": { + "primary": { + "family": "Montserrat", + "files": [ + { "url": "https://cdn.example.com/fonts/montserrat-vf.woff2", "weight_range": [100, 900], "style": "normal" } + ], + "opentype_features": ["tnum"], + "fallbacks": ["Helvetica Neue", "Arial", "sans-serif"] + }, + "secondary": "Open Sans" + }, + "visual_guidelines": { + "photography": { + "realism": "photorealistic", + "lighting": "bright, natural", + "framing": ["medium shot", "action shot"] + }, + "restrictions": [ + "Never place text over the athlete", + "No competitor brand logos in frame" + ] + } +} +``` + + + +```json Response (error) +{ + "errors": [ + { "code": "brand_not_found", "message": "No brand with id 'unknown_brand' in this agent's roster" } + ] +} +``` + + +## Parameters + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `brand_id` | string | Yes | Brand identifier from the agent's brand.json brands array | +| `fields` | string[] | No | Optional sections to include (e.g., `logos`, `colors`, `fonts`, `visual_guidelines`, `tone`). Omit for all authorized sections. Core fields (`brand_id`, `house`, `names`) are always returned and do not need to be requested. | +| `use_case` | string | No | Intended use case (e.g., "endorsement", "voice_synthesis", "likeness"). Agent tailors content within the returned sections — a "likeness" use case returns action photos, a "voice_synthesis" use case returns voice configs. Does not override `fields`. | + +Valid `fields` values: `description`, `industries`, `keller_type`, `logos`, `colors`, `fonts`, `visual_guidelines`, `tone`, `tagline`, `voice_synthesis`, `assets`, `rights` + +Recommended `use_case` values: + +| Value | Agent behavior | +|-------|---------------| +| `endorsement` | Prioritize action photos, endorsement tone, brand story | +| `voice_synthesis` | Return voice synthesis config, pronunciation guides | +| `likeness` | High-res photos, appearance guidelines | +| `creative_production` | Full visual identity: colors, fonts, visual_guidelines, logos | +| `media_planning` | Basic identity and rights availability summary | + +`use_case` is advisory — it tailors content within returned sections but does not override `fields`. + +### Response + +The response mirrors the brand.json brand definition, extended with dynamic data the agent controls: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `brand_id` | string | Yes | Brand identifier | +| `house` | object | Yes | House (corporate entity): `domain` and `name` | +| `names` | object[] | Yes | Localized names | +| `description` | string | No | Brand description | +| `industries` | string[] | No | Industries or categories | +| `keller_type` | string | No | Brand architecture type: `master`, `sub_brand`, `endorsed`, `independent` | +| `logos` | object[] | No | Brand logos (matches brand.json logo shape: `url`, `variant`, `orientation`, `background`, `tags`) | +| `colors` | object | No | Brand color palette with structured roles (`primary`, `secondary`, `accent`, `background`, `text`) | +| `fonts` | object | No | Brand typography. Keys are role names (`primary`, `secondary`). Values are a CSS font-family string or an object with `family`, `files` (array of `{url, weight, weight_range, style}`), `opentype_features`, and `fallbacks` | +| `visual_guidelines` | object | No | Photography, graphic style, colorways, type scale, motion rules, restrictions | +| `tone` | object | No | Brand voice and messaging guidelines. Sub-fields: `voice` (personality adjectives), `attributes` (prompt guidance traits), `dos` (approved approaches), `donts` (prohibited topics) | +| `tagline` | string | No | Brand tagline or slogan | +| `voice_synthesis` | object | No | TTS voice synthesis configuration (`provider`, `voice_id`, `settings`, optional `rights_offering_id`). The offering ID is advisory provenance from [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights), not a buyer-specific grant; resolve it through [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) before synthesis. | +| `assets` | object[] | No | Available brand assets — matches brand.json asset shape (`asset_id`, `asset_type`, `url`, `tags`) | +| `rights` | object | No | Rights availability summary (for pricing, use `get_rights`) | +| `available_fields` | string[] | No | Sections available but not returned due to authorization level. Tells the caller what linking their account would unlock. | + +## Use cases + +- **DAM**: Returns high-res assets, current campaign guidelines, seasonal creative toolkits +- **Enterprise brand agent**: Returns approved copy, brand voice guidelines, current taglines +- **Rights management agent**: Returns talent identity — tone, voice synthesis, photos, rights availability + +## Next steps + + + + Search for licensable rights with pricing. + + + Acquire rights with contractual clearance. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights.mdx new file mode 100644 index 0000000000..f2639400c1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights.mdx @@ -0,0 +1,176 @@ +--- +title: get_rights +description: "get_rights is the AdCP task for discovering licensable talent, music, and stock media. Search with natural language, get matches with pricing options, and filter by buyer brand compatibility." +"og:title": "AdCP — get_rights" +testable: true +--- + + +**Experimental.** Brand rights lifecycle (`get_rights`, [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights), [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `brand.rights_lifecycle` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Search for licensable rights across a brand agent's roster. Returns matches with pricing options. Discovery is natural-language-first — no taxonomy, LLMs interpret intent from the query. + +## Schema + +- **Request**: [`get-rights-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/get-rights-request.json) +- **Response**: [`get-rights-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/get-rights-response.json) + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} + +## Response time + +Typically 2-10 seconds. The agent may perform compatibility checks against the buyer's brand.json, which adds latency. + +## Quick start + + +```json Request +{ + "query": "Dutch athlete for restaurant brand in Amsterdam, budget 400 EUR/month", + "uses": ["likeness", "voice"], + "buyer_brand": { "domain": "bistro-oranje.nl" }, + "include_excluded": true +} +``` + +```json Response +{ + "rights": [ + { + "rights_id": "janssen_likeness_voice", + "brand_id": "daan_janssen", + "name": "Daan Janssen", + "description": "Dutch Olympic speed skater, 2x gold medalist", + "right_type": "talent", + "match_score": 0.92, + "match_reasons": [ + "Available for food/restaurant brands in NL", + "Within budget at 350 EUR/month", + "Athletic brand aligns with Bistro Oranje's quality positioning" + ], + "available_uses": ["likeness", "voice", "name", "endorsement"], + "countries": ["NL", "BE", "DE"], + "pricing_options": [ + { + "pricing_option_id": "cpm_endorsement", + "model": "cpm", + "price": 3.50, + "currency": "EUR", + "uses": ["likeness"], + "description": "Per-impression royalty for AI-generated creatives using likeness" + }, + { + "pricing_option_id": "monthly_exclusive", + "model": "flat_rate", + "price": 350, + "currency": "EUR", + "period": "monthly", + "uses": ["likeness", "voice"], + "impression_cap": 100000, + "overage_cpm": 4.00, + "description": "Monthly exclusive license for likeness + voice, up to 100K impressions" + } + ], + "content_restrictions": ["approval_required"], + "preview_assets": [ + { "url": "https://cdn.lotientertainment.com/janssen/headshot.jpg", "usage": "preview_only" } + ] + } + ], + "excluded": [ + { + "brand_id": "pieter_van_dijk", + "name": "Pieter van Dijk", + "reason": "Dietary lifestyle conflict with steakhouse brand", + "suggestions": ["Available for plant-based and health food brands"] + } + ] +} +``` + + +## Parameters + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `query` | string | Yes | Natural language description of desired rights. Include budget, geography, use case. | +| `uses` | string[] | Yes | Rights uses being requested (`likeness`, `voice`, `name`, `endorsement`, etc.) | +| `buyer_brand` | brand-ref | No | Buyer's brand. Agent fetches buyer's brand.json for compatibility filtering. | +| `countries` | string[] | No | Countries where rights are needed (ISO 3166-1 alpha-2) | +| `brand_id` | string | No | Search within a specific brand's rights | +| `right_type` | string | No | Filter by rights type (`talent`, `music`, `stock_media`, etc.) | +| `include_excluded` | boolean | No | Include filtered-out results in the `excluded` array with reasons. Defaults to false. | +| `pagination` | object | No | Pagination parameters for large result sets | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `rights` | object[] | Matching rights with pricing, ranked by relevance | +| `rights[].rights_id` | string | Identifier for this offering — referenced in [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) | +| `rights[].brand_id` | string | Brand identifier | +| `rights[].name` | string | Display name | +| `rights[].match_score` | number | Relevance score (0-1) | +| `rights[].match_reasons` | string[] | Why this result matches | +| `rights[].available_uses` | string[] | Rights uses available | +| `rights[].countries` | string[] | Countries where available | +| `rights[].excluded_countries` | string[] | Countries excluded from availability | +| `rights[].exclusivity_status` | object | Current exclusivity availability (`available`, `existing_exclusives`) | +| `rights[].pricing_options` | object[] | Pricing options (see below) | +| `rights[].description` | string | Description of the rights subject | +| `rights[].right_type` | string | Type of rights (`talent`, `music`, `stock_media`, etc.) | +| `rights[].content_restrictions` | string[] | Content restrictions or approval requirements | +| `rights[].preview_assets` | object[] | Preview-only assets for evaluation | +| `excluded` | object[] | Filtered results with reasons (only when `include_excluded: true`) | +| `excluded[].suggestions` | string[] | Actionable alternatives if the exclusion is fixable. Absent if the exclusion is final. | + +### Rights pricing options + +Pricing options are specific to rights — they include period, impression caps, overage rates, and use-type scoping: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `pricing_option_id` | string | Yes | Referenced in `acquire_rights` and [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) | +| `model` | string | Yes | Pricing model (`cpm`, `flat_rate`, etc.) | +| `price` | number | Yes | Price amount | +| `currency` | string | Yes | ISO 4217 currency code | +| `uses` | string[] | Yes | Rights uses covered by this option | +| `period` | string | No | Billing period (`monthly`, `quarterly`, etc.) | +| `impression_cap` | integer | No | Max impressions included per period | +| `overage_cpm` | number | No | CPM for impressions exceeding the cap | + +## Composite rights + +Request multiple uses (e.g., `["likeness", "voice"]`) and the agent bundles them into a single pricing option. One call, one price. + +## Buyer brand filtering + +When `buyer_brand` is provided, the agent fetches the buyer's brand.json and uses it for compatibility filtering. For example, a vegetarian athlete would be excluded from steakhouse campaigns. Set `include_excluded: true` to see filtered results with reasons. + +## Music licensing and DDEX + +This section is for implementers building music rights agents. If you're a buyer using the brand protocol, the standard `get_rights` and [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) flow works identically for music — you don't need to know DDEX. + +The rights protocol supports music licensing alongside talent rights. Music sync platforms implement `get_rights` with `right_type: "music"` and return pricing options for sync/background use. + +AdCP's rights model draws from the [DDEX](https://ddex.net/) Party Information Exchange (PIE) pattern — each `get_rights` response is a stateless snapshot of current availability rather than a delta against previous state. Key mappings for implementers familiar with DDEX: + +| AdCP concept | DDEX equivalent | Notes | +|---|---|---| +| `rights_id` | ISRC / ISWC | AdCP uses agent-scoped IDs; include standard identifiers in `ext` | +| `available_uses` | Use types (sync, background, etc.) | AdCP uses `right-use` enum values | +| `pricing_options` | License offers | Same concept, different structure | +| `content_restrictions` | Territorial/usage restrictions | AdCP is less granular than DDEX | +| `acquire_rights` | License grant | Returns generation credentials for AI music production | + +Music rights agents should include standard identifiers (ISRC, ISWC) in the `ext` field of rights responses for interoperability with existing music licensing systems. + +## Next steps + +After selecting a rights offering: +1. Call [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) for the selected brand's full identity data +2. Call [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) with the `rights_id` and `pricing_option_id` diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/search_brands.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/search_brands.mdx new file mode 100644 index 0000000000..1d8b4fafa0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/search_brands.mdx @@ -0,0 +1,68 @@ +--- +title: search_brands +description: "Discover brands on a brand agent's roster before retrieving identity or rights details." +"og:title": "AdCP — search_brands" +--- + +`search_brands` is an experimental, read-only discovery task. It returns ranked public brand stubs from a brand agent's roster. Use the returned `brand_id` with [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) for full identity data or [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) for licensing terms. + +## Schema + +- **Request**: [`search-brands-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/search-brands-request.json) +- **Response**: [`search-brands-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/search-brands-response.json) + +## Request + +```json +{ + "query": "automotive brands with electric vehicles", + "countries": ["US"], + "pagination": { "max_results": 20 }, + "context": { "correlation_id": "brand-search-001" } +} +``` + +`query` is required. Callers can additionally constrain results with `industries`, `countries`, or `buyer_brand`. When `buyer_brand` is supplied, the agent should omit brands whose licensing restrictions make them incompatible. + +## Response + +```json +{ + "brands": [ + { + "brand_id": "nova_motors", + "house": { + "domain": "novamotors.example", + "name": "Nova Motors" + }, + "relationship_trust": "mutual", + "relationship_verified_at": "2026-08-15T12:00:00Z", + "names": [{ "en-US": "Nova Motors" }], + "description": "Electric mobility and vehicle technology", + "industries": ["automotive"], + "keller_type": "master", + "rights": { + "available_uses": ["commercial"], + "countries": ["US"] + } + } + ], + "context": { "correlation_id": "brand-search-001" } +} +``` + +An empty `brands` array is a successful response when no roster entry matches. Results are lightweight public stubs; authorized assets, detailed identity fields, and pricing remain on the follow-up tasks. + +## Fields + +| Field | Required | Description | +|---|---|---| +| `query` | Yes | Natural-language search, up to 2,000 characters | +| `industries` | No | Advertiser-industry filters | +| `countries` | No | ISO 3166-1 alpha-2 market filters | +| `buyer_brand` | No | Buyer brand used for compatibility filtering | +| `pagination` | No | Page size and continuation cursor | + +Each result includes `brand_id` and localized `names`; `house` is present when a house affiliation is on record. `relationship_trust` reports whether that affiliation is reciprocated: only `mutual` and `inline` extend trust to `house.domain`. `leaf_only`, `house_only`, and `unverifiable` are one-sided or unverified states, while `standalone` means the brand declares no house. A missing `relationship_trust` means the agent has not computed a verdict and MUST NOT be interpreted as `standalone`. `claimed_house_domain` preserves a leaf's unverified parent claim, and `relationship_verified_at` records the last bilateral confirmation for `mutual` results. + +Other public discovery fields such as description, industries, logos, architecture type, and rights availability are optional. diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights.mdx new file mode 100644 index 0000000000..9d50f8fb0d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights.mdx @@ -0,0 +1,172 @@ +--- +title: update_rights +description: "update_rights is the AdCP task for modifying active rights grants. Extend end dates, adjust impression caps, switch pricing options, or pause and resume — with re-issued generation credentials." +"og:title": "AdCP — update_rights" +testable: true +--- + + +**Experimental.** Brand rights lifecycle ([`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights), [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights), `update_rights`) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `brand.rights_lifecycle` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Modify an existing rights grant — extend dates, adjust impression caps, change pricing, or pause/resume. Parallels [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy). Only the fields you provide are updated; omitted fields remain unchanged. + +## Schema + +- **Request**: [`update-rights-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/update-rights-request.json) +- **Response**: [`update-rights-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/update-rights-response.json) + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} + +## Response time + +Seconds for most updates. Pricing changes may require rights holder approval and take longer. + +## Quick start + + +```json Request (extend end date) +{ + "rights_id": "janssen_likeness_voice", + "end_date": "2026-09-30" +} +``` + +```json Request (increase impression cap) +{ + "rights_id": "janssen_likeness_voice", + "impression_cap": 200000 +} +``` + +```json Request (pause grant) +{ + "rights_id": "janssen_likeness_voice", + "paused": true +} +``` + +```json Response (error) +{ + "errors": [ + { + "code": "invalid_update", + "message": "New impression_cap (50000) must be >= impressions already delivered (78432)" + } + ] +} +``` + +```json Response (success) +{ + "rights_id": "janssen_likeness_voice", + "terms": { + "pricing_option_id": "monthly_exclusive", + "amount": 350, + "currency": "EUR", + "period": "monthly", + "uses": ["likeness", "voice"], + "impression_cap": 200000, + "overage_cpm": 4.00, + "start_date": "2026-04-01", + "end_date": "2026-09-30", + "exclusivity": { + "scope": "Exclusive licensee for Daan Janssen in NL for food/restaurant brands", + "countries": ["NL"] + } + }, + "generation_credentials": [ + { + "provider": "midjourney", + "rights_key": "rk_mj_abc123_renewed...", + "uses": ["likeness"], + "expires_at": "2026-09-30T23:59:59Z" + }, + { + "provider": "elevenlabs", + "rights_key": "rk_el_def456_renewed...", + "uses": ["voice"], + "expires_at": "2026-09-30T23:59:59Z" + } + ], + "rights_constraint": { + "rights_id": "janssen_likeness_voice", + "rights_agent": { "url": "https://agent.lotientertainment.com/mcp", "id": "loti_entertainment" }, + "rights_holder": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" }, + "valid_from": "2026-04-01T00:00:00Z", + "valid_until": "2026-09-30T23:59:59Z", + "uses": ["likeness", "voice"], + "countries": ["NL"], + "impression_cap": 200000, + "approval_status": "approved", + "grant_status": "active", + "restrictions": [ + "All generated creatives must be submitted for approval before distribution", + "No modification of talent likeness beyond approved AI generation parameters" + ], + "disclosure": { + "required": true, + "text": "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment" + }, + "creative_approval_required": true, + "content_digest": "sha256:590b38bde70da8e40644a5b96e3a3b2a60f7cbc3d450742cef259a0f1261cada", + "attestation_refs": [{ + "issuer": { "type": "brand", "brand": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" } }, + "claim_type": "https://adcontextprotocol.org/claims/rights/grant", + "subject": { + "type": "resource", + "resource_type": "https://adcontextprotocol.org/claims/subjects/rights-grant", + "namespace": "https://agent.lotientertainment.com/mcp", + "id": "janssen_likeness_voice", + "content_digest": "sha256:590b38bde70da8e40644a5b96e3a3b2a60f7cbc3d450742cef259a0f1261cada" + }, + "locator": { "type": "issuer_credential_id", "credential_id": "cred_janssen_2026q3", "resolver_id": "primary" } + }] + }, + "implementation_date": "2026-06-28T14:30:00Z" +} +``` + + +## Parameters + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `rights_id` | string | Yes | Rights grant identifier from [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) | +| `account` | account-ref | Conditional | Account context. Pass when the brand agent has a governance agent bound to this brand+operator via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) — `update_rights` is a [modification-phase governance trigger](/dist/docs/3.2.0-beta.4/governance/campaign/specification#spend-commit-invocation), and the brand agent uses `account` to resolve the bound agent when computing the incremental commit delta. When both an inline `governance_context` token and a bound agent are present, the inline token wins. | +| `end_date` | date | No | New end date (must be >= current end date) | +| `impression_cap` | integer | No | New impression cap (must be >= impressions already delivered) | +| `pricing_option_id` | string | No | Switch to a different pricing option from the original [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) offering | +| `paused` | boolean | No | Pause (`true`) or resume (`false`) the grant | +| `idempotency_key` | string | No | Client-generated key for safe retries | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `rights_id` | string | The updated rights grant identifier | +| `terms` | object | Updated contractual terms (same shape as `acquire_rights` acquired response) | +| `generation_credentials` | array | Re-issued credentials with updated expiration and caps | +| `rights_constraint` | object | Updated digest-pinned constraint and replacement attestation references for re-embedding in creatives | +| `paused` | boolean | Whether the grant is currently paused (included when pause state changes) | +| `implementation_date` | datetime\|null | When changes take effect (`null` if pending approval) | + +## Re-issued credentials + +When you extend dates or change pricing, the rights agent re-issues generation credentials with updated expiration. Both old and new credentials may work during an overlap period — old credentials remain valid until their original expiry. Replace credentials in your creative pipeline promptly, but there is no hard cutover moment that would break in-flight generation requests. + +The updated `rights_constraint` replaces the old constraint in every active creative. The rights agent revokes or supersedes the old credential and issues a new digest/reference pair; changing terms without replacing the credential cannot produce a verified result. Sellers re-evaluate the replacement before continued delivery according to their `media_buy.rights_attestations` policy. + +## Next steps + + + + The initial rights acquisition flow. + + + Report impressions against rights grants. + + diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim.mdx new file mode 100644 index 0000000000..27e952723b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim.mdx @@ -0,0 +1,398 @@ +--- +title: verify_brand_claim +description: "verify_brand_claim is the unified AdCP brand-protocol task for asking a brand-agent whether a specific claim about its identity is owned, pending, disputed, or licensed. One tool, four claim types — subsidiary, parent, property, trademark — discriminated by a claim_type field." +"og:title": "AdCP — verify_brand_claim" +testable: true +--- + +Ask a brand-agent a verification question about a facet of its identity. **This is a prerequisite gate — check before you proceed, not a signal you consume after a decision is locked in.** One tool with four claim types covers the verification dimensions: + +| `claim_type` | The question | Used at | +|---|---|---| +| `subsidiary` | "Is this brand a subsidiary of yours?" | Brand-relationship establishment, member-feature provisioning, governance-trust extension | +| `parent` | "Is this brand your parent house?" (leaf-side mirror) | Mutual-assertion confirmation at the agent layer | +| `property` | "Is this site / app / property one of yours?" | Inventory onboarding, creative clearance, fraud escalation | +| `trademark` | "Is this trademark yours?" | Creative-clearance gates, licensee-posture confirmation | + +The brand-agent answers using its own data — which is brand.json plus the richer states (`pending_review`, `transferring`, `licensed_in`, etc.) that the static file can't express. The tool is one specific-question affordance on top of the same identity surface [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) reads. + +For high-volume verification (portfolio refresh, creative-clearance batches, crawler scans), use the bulk variant [`verify_brand_claims`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims) — same per-claim semantics, one round-trip and one rate-limit slot for the whole batch. + +## The trust rule — two calls, not one + +**A single signed `owned` response is NOT trust-extending. Mutual assertion remains the floor for positive trust.** This is the load-bearing rule of the asymmetric trust model — assertion direction requires both sides to agree. Consumers MUST call both sides when extending relationship trust: + +- For `subsidiary` claims, also call the leaf's brand-agent with `claim_type: "parent"` (or crawl the leaf's `brand.json` for its `house_domain`). +- For `property` claims, cross-check against the brand's static `brand.json` `properties[]` and (for domains) DNS/TLS evidence. +- For `trademark` claims, cross-check the public registry record. For `licensed_in` specifically, the licensor named in `details.licensor_domain` SHOULD reciprocate `licensed_out` for the same mark before the licensing relationship is trusted. +- **Only trusted rejections (`disputed` / `not_ours`) are authoritative on a single signed response** — after the [brand-authorization cross-check](#trust-model) returns verifier-local `trust: "trusted"`, the brand has standing to refuse association unilaterally. An untrusted rejection cannot revoke trust. + +Shortcuts kill the trust model. Without the reciprocation step, a malicious or mistaken house could claim subsidiaries, properties, or licensed marks it doesn't actually have. See [`brand.json` § Agent-augmented verification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#agent-augmented-verification) for the full normative trust table and the malicious-house walkthrough. + +## Schema + +- **Request**: [`verify-brand-claim-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/verify-brand-claim-request.json) +- **Response**: [`verify-brand-claim-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/verify-brand-claim-response.json) + +## Capability discovery + +The brand-agent advertises this task in its [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response. An agent that supports only some claim types declares this via the per-tool capability extension: + +```json +{ + "supported_protocols": ["brand"], + "supported_tasks": [ + "get_brand_identity", + "verify_brand_claim" + ], + "brand": { + "verify_brand_claim": { + "supported_claim_types": ["subsidiary", "parent", "trademark"] + } + } +} +``` + +When `supported_claim_types` is omitted, the agent advertises support for all four. Consumers MUST check before relying on a specific claim type; unsupported types return [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) (see [Error handling](#error-handling)). + +### Minimum viable adoption + +A brand-agent doesn't have to ship all four claim types at once. Pick the slice that matches the workflow: + +- **Property only** — creative-clearance and inventory-onboarding consumers; the smallest useful surface. +- **Subsidiary + parent** — partners doing brand-relationship establishment or governance-trust extension; ship both halves at once so mutual assertion completes at the agent layer. +- **Trademark only** — creative-clearance pipelines that need licensee posture (the differentiator from registry crawls). +- **All four** — full coverage; recommended for AAO-hosted agents serving many member configurations. + +Advertise only the types you implement. Partners check `supported_claim_types` and route accordingly; unsupported types return `UNSUPPORTED_FEATURE` cleanly. + +## Authorization tiers + +The public/authorized split per claim type: + +| Tier | What the agent returns | +|---|---| +| **Public** (no linked account) | `claim_type`, `verification_status` (always). For applicable claim types: `details.brand_id`, `details.relationship`, `details.matched_registration`, `details.countries`, `details.nice_classes`. `context_note` when populated. | +| **Authorized** (via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts)) | Everything above, plus: `details.first_observed_by_house_at`, `details.expected_resolution_window_days`, `details.use_case_authorization`, `details.licensor_domain` (when licensed_in). | + +Queue position, internal ticket state, and team routing are never exposed. + +## Per-claim-type request and response shapes + +The `details` field on the response varies by `claim_type`. Below: the request payload and the typed `details` fields each claim type returns. + +### `claim_type: "subsidiary"` + +House-side: a consumer detects `converse.com` claiming `house_domain: nikeinc.com`. Asks Nike's agent: + +```json +{ + "claim_type": "subsidiary", + "claim": { + "subsidiary_domain": "converse.com", + "subsidiary_brand_id": "converse", + "observed_at": "2026-05-14T10:00:00Z" + } +} +``` + +```json +{ + "claim_type": "subsidiary", + "verification_status": "owned", + "details": { "brand_id": "converse" } +} +``` + +The brand can also reject. Rejection direction is authoritative on a single signed response only after the [brand-authorization cross-check](#trust-model) returns verifier-local `trust: "trusted"`; no reciprocation is then required: + +```json +{ + "claim_type": "subsidiary", + "verification_status": "not_ours", + "context_note": "We have no record of this brand; the leaf's claim is in error." +} +``` + +Applicable statuses: `owned`, `pending_review`, `transferring`, `disputed`, `not_ours`, `archived`, `unknown`. (`licensed_in` / `licensed_out` don't apply — subsidiaries aren't licensed; brands and trademarks are.) `archived` means the brand once held this subsidiary (e.g., a divested business unit) but no longer does — distinct from `not_ours` (never owned). + +**Request `claim` fields:** + +| Field | Required | Notes | +|---|---|---| +| `subsidiary_domain` | Yes | Domain of the leaf brand whose `house_domain` claim is being verified. | +| `subsidiary_brand_id` | No | Stable brand identifier the leaf uses for itself. Recommended; helps the agent disambiguate when multiple brands share a domain. | +| `observed_at` | No | ISO 8601 timestamp — when the caller observed the leaf's claim. Helps the agent age claims and prioritize fresh ones in its internal queue. | + +**Response `details` fields:** + +| Field | Tier | Returned when | Notes | +|---|---|---|---| +| `brand_id` | Public | `verification_status` ∈ {`owned`, `pending_review`, `transferring`} | The house's brand_id for this subsidiary. | +| `first_observed_by_house_at` | Authorized | any | When the house first became aware of the claim. | +| `expected_resolution_window_days` | Authorized | **REQUIRED** when `verification_status` is `pending_review`; otherwise Authorized when present | The aging window. Enforcement is agent-side: the agent MUST transition the claim to a terminal status or `unknown` once the window elapses. When a `pending_review` response is older than its declared window, consumers SHOULD treat it as `unknown` and fall back to crawl. | + +### `claim_type: "parent"` (leaf-side mirror) + +Leaf-side: a consumer wants the leaf's authoritative answer about its parent. Asks Converse's agent: + +```json +{ + "claim_type": "parent", + "claim": { + "parent_domain": "nikeinc.com", + "claimant_says": "Nike's brand_refs[] lists converse.com" + } +} +``` + +```json +{ + "claim_type": "parent", + "verification_status": "owned", + "details": { "house_domain": "nikeinc.com" } +} +``` + +The leaf can also actively reject: + +```json +{ + "claim_type": "parent", + "verification_status": "disputed", + "context_note": "We are not a Nike subsidiary; their claim is in error." +} +``` + +Applicable statuses: same as `subsidiary` (mirror). + +**Request `claim` fields:** + +| Field | Required | Notes | +|---|---|---| +| `parent_domain` | Yes | Domain of the house being claimed as this brand's parent. | +| `claimant_says` | No | Free-text context about what the claimant published (e.g., "Nike's brand_refs[] lists converse.com"). Helps the agent disambiguate competing claims. | +| `observed_at` | No | ISO 8601 timestamp — when the caller observed the parent claim. | + +**Response `details` fields:** + +| Field | Tier | Returned when | Notes | +|---|---|---|---| +| `house_domain` | Public | `verification_status` ∈ {`owned`, `transferring`} | The brand's declared parent house. NOT returned for `pending_review` — the leaf hasn't yet accepted the parent claim. | +| `first_observed_by_leaf_at` | Authorized | any | When the leaf first became aware of a third-party claim about its parentage. | + +When both `verify_brand_claim` with `claim_type: "subsidiary"` (on the house) AND with `claim_type: "parent"` (on the leaf) return `owned` for the same relationship, **mutual assertion is established at the agent layer** — no static-file crawl required. This is the cleanest path for trust extension. + +### `claim_type: "property"` + +The request asks about one property; the response describes the brand's relationship with that property, including all regions where the relationship applies (which may exceed the one named in the query). + +```json +{ + "claim_type": "property", + "claim": { + "property": { + "type": "website", + "identifier": "nike.cn", + "region": "CN" + }, + "use_case": "advertising" + } +} +``` + +```json +{ + "claim_type": "property", + "verification_status": "owned", + "details": { + "relationship": "owned", + "brand_id": "nike", + "regions": ["CN"], + "use_case_authorization": { "advertising": true } + }, + "context_note": "Regional site for China market" +} +``` + +A property that spans multiple regions (e.g., a global e-commerce surface) returns all of them: + +```json +{ + "claim_type": "property", + "claim": { "property": { "type": "website", "identifier": "nike.com" } } +} +→ +{ + "claim_type": "property", + "verification_status": "owned", + "details": { + "relationship": "owned", + "brand_id": "nike", + "regions": ["US", "CA", "GB", "FR", "DE", "JP", "AU"] + } +} +``` + +The brand can also reject. Rejection direction is authoritative on a single signed response only after the [brand-authorization cross-check](#trust-model) returns verifier-local `trust: "trusted"`: + +```json +{ + "claim_type": "property", + "claim": { "property": { "type": "website", "identifier": "fake-nike-store.com" } } +} +→ +{ + "claim_type": "property", + "verification_status": "not_ours", + "context_note": "Unaffiliated third-party site; we do not authorize use of our marks on it." +} +``` + +Applicable statuses: `owned`, `transferring`, `disputed`, `not_ours`, `archived`, `unknown`. (`pending_review` is uncommon for properties; use `transferring` for in-flight ownership changes.) `archived` means the brand once operated this property (e.g., a sold-off domain) but no longer does. + +**Request `claim` fields:** + +| Field | Required | Notes | +|---|---|---| +| `property.type` | Yes | `website`, `mobile_app`, `ctv_app`, `desktop_app`, `dooh`, `podcast`, `radio`, `linear_tv`, `streaming_audio`, `ai_assistant`. | +| `property.identifier` | Yes | Domain for websites/podcasts, bundle id for apps, etc. | +| `property.store` | When type is an app | `apple`, `google`, `amazon`, `roku`, `fire_tv`, `samsung`, `lg`, `vizio`, `other`. | +| `property.region` | No | Single ISO 3166-1 alpha-2 code (or `"global"`) — the region the caller cares about. The response's `details.regions` carries the full applicable set. | +| `use_case` | No | Free-text use case (e.g., `"advertising"`). The agent MAY scope its answer accordingly. | + +**Response `details` fields:** + +| Field | Tier | Returned when | Notes | +|---|---|---|---| +| `relationship` | Public | `verification_status` ∈ {`owned`, `transferring`} | `owned` / `direct` / `delegated` / `ad_network` — mirrors brand.json's `properties[].relationship`. | +| `brand_id` | Public | `verification_status` ∈ {`owned`, `transferring`} | The brand within the house that owns this property. | +| `regions` | Public | `verification_status` ∈ {`owned`, `transferring`} | ISO 3166-1 alpha-2 codes, or `["global"]` sentinel for no regional restriction. May include regions beyond the one the request named. | +| `use_case_authorization` | Authorized | any | Per-use-case permission map. Registered keys: `advertising`, `endorsement`, `retail_listing`, `editorial`, `commercial_advertising`, `merchandise_resale`. Agents MAY add extensions. | + +### `claim_type: "trademark"` + +```json +{ + "claim_type": "trademark", + "claim": { + "mark": "AIR JORDAN", + "registry": "USPTO", + "number": "1234567" + } +} +``` + +```json +{ + "claim_type": "trademark", + "verification_status": "owned", + "details": { + "matched_registration": { + "registry": "USPTO", + "number": "1234567", + "mark": "AIR JORDAN", + "registration_status": "active" + }, + "countries": ["US"], + "nice_classes": [25, 41] + } +} +``` + +```json +{ + "claim_type": "trademark", + "verification_status": "licensed_in", + "details": { + "matched_registration": { "registry": "EUIPO", "number": "EU98765", "mark": "CONVERSE", "registration_status": "active" }, + "licensor_domain": "converseholdings-eu.com", + "countries": ["FR", "DE", "IT", "ES"], + "nice_classes": [25] + } +} +``` + +**`licensed_in` reciprocation.** Consumers SHOULD treat `licensed_in` as **unverified** until the named `licensor_domain`'s brand-agent reciprocates `licensed_out` for the same mark (same mutual-assertion shape as ownership, just across the licensing edge). Without reciprocation, the brand could unilaterally claim a licensed relationship that doesn't exist. + +The brand can also reject. Rejection direction is authoritative on a single signed response only after the [brand-authorization cross-check](#trust-model) returns verifier-local `trust: "trusted"`: + +```json +{ + "claim_type": "trademark", + "claim": { "mark": "AIR JORDAN", "registry": "EUIPO" } +} +→ +{ + "claim_type": "trademark", + "verification_status": "disputed", + "context_note": "EU mark in this jurisdiction held by separate entity; we contest their registration and do not authorize use as ours." +} +``` + +Applicable statuses: `owned`, `licensed_in`, `licensed_out`, `transferring`, `disputed`, `not_ours`, `archived`, `unknown`. (`pending_review` is uncommon — trademark registrations are public-record events with definitive ownership at any given time.) `archived` means the brand once held this mark (expired, cancelled, transferred to another party) but no longer does. + +**`details` fields:** + +| Field | Tier | Notes | +|---|---|---| +| `matched_registration` | Public | The registration the agent matched the query to. Returned when `verification_status` is `owned`, `licensed_in`, `licensed_out`, or `transferring`. | +| `licensor_domain` | Public | Domain of the licensor when `verification_status` is `licensed_in`. | +| `countries` | Public | ISO 3166-1 alpha-2 codes the response covers. | +| `nice_classes` | Public | Nice Classification class numbers. Disambiguates cross-industry marks. | +| `use_case_authorization` | Authorized | Per-use-case permission for this mark — the differentiator from registry crawls. | + +## Trust model + +The agent's response is signed under the brand's `adcp_use: "response-signing"` JWK. This is a payload-envelope JWS — the signature lives inside the response body, distinct from RFC 9421 §2.2.9 transport response signing (which AdCP 3.x does not define). `verify_brand_claim` is on the spec's [designated-task response-signing list](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing); response signing on tasks outside that list is forbidden. + +The signature attests authorship of the response payload under the brand's published key during the envelope's `iat`/`exp` window; it is not a non-repudiation receipt and does not bind the brand to assertions beyond the direction-asymmetric semantics below. The required `signed_response` envelope binds the response to the designated task, resolved `brand_domain`, responding `agent_url`, caller identity, request payload, and freshness window. Verifiers that rely on the signature MUST validate the envelope against [`response-payload-jws-envelope.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/response-payload-jws-envelope.json), reject expired envelopes for online decisions, and reject any mismatch between unsigned task-body fields and `signed_response.payload.response`. + +A valid signature proves authorship, not brand authority. For 3.2, verifiers SHOULD run the additive [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) and represent its result with [`brand-response-authorization-result.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/brand-response-authorization-result.json). A failed or unavailable cross-check yields verifier-local `trust: "untrusted"`; it does not rewrite `verification_status` and MUST NOT extend or revoke relationship trust on its own. This applies to both assertion and rejection directions. Mandatory cryptographic brand authorization and hard rejection are reserved for 4.0. + +For a verifier that performs the 3.2 cross-check, the direction-asymmetric rules below apply only when the verifier-local result is `trust: "trusted"`. An `untrusted` response remains unauthenticated evidence regardless of direction and cannot extend or revoke relationship trust. + +The trust model for a trusted response is **direction-asymmetric**: + +- **Rejection direction** (agent says `disputed` / `not_ours`) is authoritative only after the signer passes the brand-authorization cross-check. A trusted brand can refuse association unilaterally; no mutual reciprocation required. +- **Assertion direction** (agent says `owned` / `pending_review` / `transferring` / `licensed_*`) is informative but NOT trust-extending on its own. The reciprocating side must still confirm before trust extends. + +When both the house-side and leaf-side agents speak (via `claim_type: "subsidiary"` and `claim_type: "parent"` respectively), **mutual assertion is established at the agent layer**. When only one side has an agent, fall back to crawl-based mutual-assertion inference per [`brand.json` § Mutual-assertion trust model](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#mutual-assertion-trust-model). + +See [`brand.json` § Agent-augmented verification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#agent-augmented-verification) for the full trust table and the malicious-house walkthrough. + +## Caching + +Per-status: + +- `owned` / `not_ours` / `disputed` — stable. 24-72h. +- `pending_review` — volatile. Max-age ≤1h. +- `transferring` — volatile until transition. Max-age ≤4h. +- `licensed_in` / `licensed_out` — moderately volatile. 24h. +- `use_case_authorization` — most volatile. Re-check per session. +- `unknown` — short cache (≤1h). + +Agents SHOULD set `Cache-Control: max-age=N`. Consumers MAY override downward but SHOULD NOT exceed agent-supplied `max-age`. + +Agents SHOULD set `signed_response.payload.exp` no later than the HTTP freshness lifetime implied by `Cache-Control: max-age`. Consumers using the signed response for online decisions MUST use the earlier of the HTTP cache expiry and the signed `exp`; after that point the envelope remains audit evidence only, not a fresh authorization signal. + +## Error handling + +| Error code | Cause | +|---|---| +| [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) | Caller's signed envelope did not verify. | +| [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited) | Agent has rate-limited the caller per `{caller_identity, claim_type, claim-target}`. Agents SHOULD return `Retry-After` and prefer returning cached prior answer. | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | The agent does not implement the requested `claim_type`. Check `supported_claim_types` via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | Required `claim` fields are missing or malformed (e.g., `subsidiary_domain` not a valid hostname). | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | For `claim_type: "trademark"` — multiple registrations match. Narrow with `registry`, `number`, or `countries`. | + +```json +{ + "errors": [ + { + "code": "UNSUPPORTED_FEATURE", + "message": "claim_type 'property' is not supported by this agent. Supported: subsidiary, parent, trademark." + } + ] +} +``` diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims.mdx new file mode 100644 index 0000000000..e76d737d08 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims.mdx @@ -0,0 +1,163 @@ +--- +title: verify_brand_claims +description: "verify_brand_claims is the bulk variant of verify_brand_claim — verify many claims against one brand-agent in a single round-trip. Same four claim types (subsidiary, parent, property, trademark); results are returned positionally aligned with the request." +"og:title": "AdCP — verify_brand_claims" +testable: true +--- + +Bulk variant of [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim). The agent answers many verification questions in a single round-trip, returning one result per claim in the same order the caller sent them. Use when MCP round-trip cost dominates the per-claim work — crawlers refreshing brand portfolios, creative-clearance pipelines clearing a creative batch against one rights-holder, inventory-onboarding scans verifying a supply-path against a house. + +**This is a bulk affordance, not a different operation.** Per-claim semantics — trust model, applicable statuses, authorization tiers, per-claim-type `details` shapes — are identical to the single-target tool. Everything documented on the single-target page applies per-result; this page covers only the bulk-specific concerns. + +## When to use the bulk variant + +| Workflow | Variant | Why | +|---|---|---| +| One-off verification (single page, single creative, single subsidiary check) | [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) | No batching benefit; simpler error model. | +| Portfolio refresh (re-verify all known subsidiaries / properties / marks for one brand) | `verify_brand_claims` | MCP overhead dominates. | +| Crawler-driven full-portfolio verification (Nike portfolio: ~100 properties across regions) | `verify_brand_claims` | 100 → 1 round-trip. | +| Creative-clearance batch (clear N creatives against one rights-holder pre-flight) | `verify_brand_claims` | Same rate-limit slot for the batch (see below). | +| Cross-brand verification (different claims against different agents) | One bulk call per brand-agent | Each agent is a separate addressable endpoint; bulk is intra-agent. | + +## Schema + +- **Request**: [`verify-brand-claims-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/verify-brand-claims-request.json) +- **Response**: [`verify-brand-claims-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand/verify-brand-claims-response.json) + +## Capability discovery + +Bulk support is advertised separately from the single-target tool. Agents MAY ship the single-target tool only, the bulk tool only, or both. A `supported_claim_types` declaration applies to BOTH tools when both are advertised — the bulk variant cannot accept claim types the agent's single-target implementation cannot answer. + +```json +{ + "supported_protocols": ["brand"], + "supported_tasks": [ + "get_brand_identity", + "verify_brand_claim", + "verify_brand_claims" + ], + "brand": { + "verify_brand_claim": { + "supported_claim_types": ["subsidiary", "parent", "property", "trademark"] + } + } +} +``` + +Agents MAY advertise a lower per-call batch ceiling than the spec's 100 cap. When the ceiling differs, advertise it via an `extensions`-style entry on the capability descriptor or document it out-of-band; consumers SHOULD treat 100 as the maximum and SHOULD chunk accordingly when the agent's cap is lower. + +## Order is preserved + +The agent MUST return `results[]` in the same order as the request's `claims[]` (positional zip-by-index). Callers pass a position-indexed batch and consume results by index. This guarantee lets callers correlate inputs and outputs without re-keying: + +``` +request.claims[7] ↔ response.results[7] +``` + +If the batch fails wholesale (auth, rate-limit, malformed request), the response carries top-level `errors[]` and omits `results`. There is no "partial response with results AND batch errors" mode — batch errors and per-result errors are mutually exclusive at the wire. + +## Partial failure — per-result errors + +Per-claim failures (an [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) for one of many claims, a [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) for an ambiguous trademark query in a portfolio of properties) DO NOT fail the batch. The corresponding entry in `results[]` carries an `error` field instead of `claim_type`/`status`, and the rest of the batch is unaffected: + +```json +{ + "results": [ + { "claim_type": "property", "status": "owned", "details": { "regions": ["US"] } }, + { "error": { "code": "VALIDATION_ERROR", "message": "Multiple registrations match 'CONVERSE'; narrow with registry+number." } }, + { "claim_type": "subsidiary", "status": "not_ours" } + ] +} +``` + +Batch-level errors are reserved for failures that prevent the agent from answering anything: + +| Tier | Where it goes | Example codes | +|---|---|---| +| Per-result | `results[i].error` | `UNSUPPORTED_FEATURE`, [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) for malformed input in one item, `VALIDATION_ERROR` for an ambiguous match | +| Batch-level | top-level `errors[]` | [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid), [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited), malformed request, `claims[]` over the cap | + +Full error-code semantics are documented on the [single-target task page § Error handling](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim#error-handling). + +## Caching + +Each result MAY carry its own staleness — `pending_review` is short-lived (≤1h), `owned` is stable (24-72h). Per-status caching guidance is per the single-target page. + +Top-level `Cache-Control: max-age` on the bulk response represents the **lowest-common max-age across the batch**: a batch with one `pending_review` and 99 `owned` results SHOULD cache at the `pending_review` ceiling, because consumer-side cache invalidation typically operates at response granularity. Callers that need per-result staleness should either split batches by expected status volatility, or re-verify volatile claims individually. + +Agents that support per-result cache hints MAY surface them via `ext` (e.g., `results[i].ext.cache.max_age_seconds`); this remains an extension surface, not part of the normative response. + +## Rate-limiting + +A bulk call consumes a **single rate-limit slot** per-call, not per-result. A batch of 100 claims hits the per-`{caller, query-target}` limit once, not 100 times. This is the core economic argument for the bulk variant — the limit is on the round-trip, not on the verification work. + +Implications: + +- Agents SHOULD size rate limits in calls/window rather than claims/window when bulk is advertised. If claim-volume matters operationally, advertise a per-batch claim cap (see Capability discovery). +- Callers SHOULD prefer one bulk call over N single calls when verifying against the same agent — both for cost and for staying inside the limit. +- A [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited) response on a bulk call is a batch-level error; the whole batch is rejected. Retry with `Retry-After` honoured. + +## Trust model + +Identical to the single-target tool. Per-result `status` follows the same direction-asymmetric rules only after the envelope receives verifier-local `trust: "trusted"`: trusted rejections (`disputed` / `not_ours`) are authoritative, while trusted assertions (`owned` / `pending_review` / `transferring` / `licensed_*`) require reciprocation before extending positive trust. An `untrusted` envelope cannot extend or revoke relationship trust in either direction. + +One top-level `signed_response` envelope attests the full `results[]` array. Its `request_hash` binds the entire `claims[]` request, caller identity, resolved `brand_domain`, and responding `agent_url`; there is no per-result signature. Consumers using signed bulk results for online decisions apply the same freshness rule as the single-target task: use the earlier of HTTP cache expiry and `signed_response.payload.exp`. Audit stores that extract one rejected result from a bulk response MUST also retain the original batch request and result index, because the envelope verifies the whole batch rather than a standalone per-result artifact. + +The single-target [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) applies to the one batch envelope. Batch verifiers SHOULD deduplicate brand.json resolution by `brand_domain` and JWKS resolution by canonical resolved `jwks_uri` within a call, then attach one verifier-local authorization result to the envelope. An unavailable or failed binding makes every result in that envelope `untrusted`; it does not alter the signer-asserted per-result `verification_status` values. + +**No "single-call mutual assertion" shortcut.** A bulk call against one agent does NOT establish mutual assertion for the assertion-direction claims in that batch, even if both halves of a relationship pair appear inside the same bulk request. Mutual assertion is a property of two parties agreeing — the leaf-side agent still has to be called separately for any `subsidiary` claim that returns `owned`, the licensor's agent still has to be called for any `licensed_in`, and so on. Batching is about MCP-round-trip economics, not about collapsing the trust model. + +See [`brand.json` § Agent-augmented verification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#agent-augmented-verification) for the full trust table. + +## Example — portfolio refresh + +A crawler refreshes a known Nike portfolio (one subsidiary check + three property checks) in one round-trip: + +```json +{ + "claims": [ + { + "claim_type": "subsidiary", + "claim": { "subsidiary_domain": "converse.com", "subsidiary_brand_id": "converse" } + }, + { + "claim_type": "property", + "claim": { "property": { "type": "website", "identifier": "nike.com" } } + }, + { + "claim_type": "property", + "claim": { "property": { "type": "website", "identifier": "nike.cn", "region": "CN" } } + }, + { + "claim_type": "trademark", + "claim": { "mark": "AIR JORDAN", "registry": "USPTO", "number": "1234567" } + } + ] +} +``` + +```json +{ + "results": [ + { "claim_type": "subsidiary", "status": "owned", "details": { "brand_id": "converse" } }, + { "claim_type": "property", "status": "owned", "details": { "relationship": "owned", "brand_id": "nike", "regions": ["US", "CA", "GB", "FR", "DE", "JP", "AU"] } }, + { "claim_type": "property", "status": "owned", "details": { "relationship": "owned", "brand_id": "nike", "regions": ["CN"] }, "context_note": "Regional site for China market" }, + { "claim_type": "trademark", "status": "owned", "details": { "matched_registration": { "registry": "USPTO", "number": "1234567", "mark": "AIR JORDAN", "registration_status": "active" }, "countries": ["US"], "nice_classes": [25, 41] } } + ] +} +``` + +To extend governance trust through the `subsidiary` result, the caller still needs to call Converse's brand-agent with `claim_type: "parent"`. The bulk call is round-trip economy; it is not a trust-model shortcut. + +## Batch-level error example + +```json +{ + "errors": [ + { + "code": "RATE_LIMITED", + "message": "Caller has exhausted per-window quota. Retry after the indicated interval." + } + ] +} +``` diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance.mdx new file mode 100644 index 0000000000..dc95f7a54b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance.mdx @@ -0,0 +1,164 @@ +--- +title: UI guidance for rejected claims +description: "Non-normative consumer-side guidance for rendering verify_brand_claim disputed / not_ours rejections in DSPs, portfolio explorers, creative-clearance UIs, and brand-safety pipelines. Covers attribution language, recovery paths for the rejected publisher, audit trail recommendations, and legal-exposure considerations." +"og:title": "AdCP — UI guidance for rejected claims" +--- + +When [`verify_brand_claim`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) returns `disputed` or `not_ours` and the [brand-authorization cross-check](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) returns verifier-local `trust: "trusted"`, the rejection is authoritative — a trusted brand has standing to refuse association unilaterally. A skipped or failed cross-check is untrusted and MUST NOT trigger relationship revocation. For a trusted rejection, the signed answer travels alone; the consumer surface that renders it owes the humans on both sides a sane presentation. + +This page is non-normative. It collects conventions for the consumer side — DSPs, portfolio explorers, creative-clearance UIs, brand-safety pipelines — and for the leaf publisher whose claim was rejected. + +## Rendering rejected claims + +The rejected response carries a `verification_status` (`disputed` or `not_ours`) and usually a `context_note` written by the brand-agent. The note is intended for human eyes; surface it. + +### Attribution language + +**Always attribute the rejection to the rejecting brand.** A signed `not_ours` from Nike's brand-agent says *Nike says this is not theirs* — it does NOT say *this publisher is fake*. The distinction matters legally; see [Legal exposure](#legal-exposure) below. + +| Don't render | Render instead | +|---|---| +| "fake-nike-store.com is fraudulent" | "Nike, Inc. does not recognize fake-nike-store.com as one of its properties" | +| "This subsidiary claim is invalid" | "Nike, Inc. has rejected this brand's subsidiary claim" | +| "Trademark not owned" | "Brand X disputes the claim that this mark is theirs in this jurisdiction" | + +### DSP inventory shopping + +When a DSP buyer agent checks a property claim before bidding and gets `not_ours` or `disputed`: + +- **Exclude the property from the buy by default.** A rejected property claim means the publisher's house attribution is in question — bid risk is elevated regardless of the underlying inventory quality. +- **Surface the rejection inline in the inventory row**, not in a separate audit log. The buyer needs the signal at decision time. +- **Show the `context_note` verbatim** as the brand's explanation. Don't paraphrase — the brand wrote it deliberately. +- **Offer the buyer a manual-override path** for cases where the property is legitimately operated under a different relationship the buyer has separately verified. + +```text +┌─────────────────────────────────────────────────────────────┐ +│ ◯ premium-sports-network.com CPM $4.20 ━━━ │ +│ │ +│ ⚠ Nike, Inc. has rejected this site's house-affiliation │ +│ claim ("Unaffiliated third-party site; we do not │ +│ authorize use of our marks on it.") │ +│ │ +│ [View details] [Override and bid anyway] │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Portfolio explorer + +A portfolio explorer (the AAO registry, a brand-safety vendor's lookup tool) renders brand relationships. When a relationship edge has been rejected at the agent layer: + +- **Don't show the edge as if it exists with a warning icon.** Show it as *contested* — a distinct visual state from *verified*, *unverified-pending-reciprocation*, and *missing*. +- **Render both sides of the rejected edge.** "Brand X claims subsidiary-of Brand Y. Brand Y has rejected this claim." +- **Timestamp the rejection.** Brands change positions; a 2-year-old rejection of what is now a real acquisition shouldn't dominate the UI. +- **Link the leaf to its update path** (see [Recovery paths](#recovery-paths-for-the-rejected-leaf) below). + +### Creative-clearance UI + +Creative-clearance pipelines call `verify_brand_claim` with `claim_type: "trademark"` to confirm a generated creative isn't trespassing on a mark. When the response is `disputed` or `not_ours`: + +- **Block the creative from publish by default.** The mark is contested or denied; promoting the creative invites takedown. +- **Render the disputing brand's `context_note`** so the creative reviewer can decide whether to escalate to legal. +- **Don't auto-retry** with a different mark variant — the rejection is jurisdictional and a near-miss may produce the same result. + +### Brand-safety pipeline + +Brand-safety vendors aggregate `verify_brand_claim` signals across the supply chain. When a property is rejected by its claimed house: + +- **Demote the property in safety scoring** but don't silently zero it out — the publisher may have legitimate independent inventory. +- **Surface the rejection in the safety report** with full attribution: "Brand X rejected this site's affiliation claim on $DATE." Buyers reading the report need to know who made the call. +- **Recompute on a schedule** matching the agent's `Cache-Control: max-age`. Don't pin the rejection state forever — the underlying status can transition. + +## Recovery paths for the rejected leaf + +The leaf publisher whose `house_domain` (or `properties[]`, or `trademarks[]`) claim was rejected has **no protocol-level recourse beyond updating or removing the claim**. There is no "appeal" task in the brand protocol. This is by design — a brand has standing to refuse association without a counter-process. + +But a consumer surface that lands on a rejected leaf SHOULD give that leaf operator a clear next-step UI. Otherwise the publisher sees their site demoted with no explanation. + +### Surface the rejection to the leaf + +If the consumer surface knows it's looking at the leaf (e.g., the leaf logged into a portfolio explorer or DSP self-service portal): + +```text +┌─────────────────────────────────────────────────────────────┐ +│ Your brand.json claims house_domain: nikeinc.com │ +│ │ +│ Nike, Inc.'s brand-agent has rejected this claim: │ +│ "We have no record of this brand; the leaf's claim is in │ +│ error." │ +│ │ +│ What this means: AdCP consumers will treat your site as │ +│ standalone (not a Nike subsidiary). Your own brand identity │ +│ is unaffected. │ +│ │ +│ Next steps: │ +│ • If you should be in Nike's portfolio, contact │ +│ (from Nike's brand.json). │ +│ • If the claim was mistaken, edit your brand.json to │ +│ remove `house_domain`, or point it at the correct │ +│ parent. │ +└─────────────────────────────────────────────────────────────┘ +``` + +### What the leaf cannot do + +- **There is no protocol-defined challenge mechanism.** The leaf cannot "force" reconsideration through AdCP; that is an out-of-band business conversation. +- **A leaf claiming `house_domain: A` against A's published rejection does NOT establish the relationship.** Consumers will continue to treat the leaf as standalone. +- **Re-asserting via different surfaces (a new brand-agent on a new subdomain) doesn't help** — the consumer trust gate is domain control + house-side reciprocation, not number of assertions. + +## Audit trail and appeal-process notes + +Out-of-spec but worth documenting: keep a record of rejections so a brand or publisher can see the history. + +### What to record per rejected response + +- **Timestamp** of the response. +- **Caller identity** that initiated the verify call (your own user, or the upstream service). +- **Full signed envelope** of the brand-agent's response — signature included, for downstream attestation. +- **`verification_status`**, **`context_note`**, and the `claim` payload that triggered it. +- **Bulk context**, when the answer came from `verify_brand_claims`: the full original `claims[]` request and the rejected result index. The single bulk envelope signs the whole `results[]` array, not a standalone per-result artifact. +- **Cache validity window**: the earlier of `Cache-Control: max-age` and `signed_response.payload.exp`, so you know when the record stopped being fresh. + +A signed envelope is durable historical evidence when its signature verifies, its `request_hash` matches the triggering request, and the rejected claim falls within the envelope's `iat`/`exp` window. If a buyer is challenged for excluding a property based on a house-brand rejection, that verified envelope is the artifact the buyer hands back. + +### Appeal-process surface + +If your platform supports an appeal flow (a vendor-mediated dispute between leaf and house), keep it OUT of the protocol layer and IN your platform's relationship-management surface. The protocol's job is to convey the brand's authoritative answer; your platform's job is to broker the business conversation if there is one. + +## Legal exposure + +Broadcasting one brand's rejection of another party carries defamation risk. Two considerations: + +### Attribute, don't editorialize + +Render rejections as the brand's first-person statement, attributed to the brand: + +- **Good**: "Nike, Inc. has stated that fake-nike-store.com is not one of its properties." +- **Bad**: "fake-nike-store.com is a fraudulent Nike imitator." + +The first is a reportable fact (Nike's signed statement); the second is an accusation made by your platform. + +### The consumer surface is responsible, not AdCP + +AdCP delivers a signed answer from one party to another. The consumer surface — the UI that renders that answer to a third party — owns the editorial decisions about how to present it. AdCP does not pre-litigate defamation; render with care. + +Specifically: + +- **The rejecting brand owns the `context_note` text.** If a brand writes "fake-nike-store.com is a scam," that's the brand's statement and the brand's exposure. Your surface can render it verbatim or summarize it more neutrally; both are reasonable depending on your audience. +- **Your platform owns any text outside the `context_note`.** Headlines, severity labels, badges ("VERIFIED FRAUD") are your editorial choices and your exposure. +- **Status-icon design carries weight.** A red X next to a publisher's name reads differently than a yellow "house affiliation contested" badge. Choose the visual register that matches the underlying signal. + +### When in doubt, attribute and link + +The lowest-risk pattern is to attribute the statement to the brand and link to the signed source: + +```text +"Nike, Inc. says this is not theirs." [View signed response] +``` + +The buyer or reviewer can click through to the signed envelope and form their own view. Your platform delivered the signal without amplifying it. + +## Related + +- [verify_brand_claim](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) — The task this guidance applies to +- [Building a brand agent](/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent) — Agent-side implementation, including the public/authorized split and signing setup +- [brand.json § Agent-augmented verification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#agent-augmented-verification) — The asymmetric trust model that makes rejections authoritative diff --git a/dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing.mdx b/dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing.mdx new file mode 100644 index 0000000000..6946594848 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing.mdx @@ -0,0 +1,597 @@ +--- +title: Rights licensing walkthrough +sidebarTitle: Rights licensing +"og:image": /images/walkthrough/brand-panel-01-campaign-brief.png +description: "AdCP rights licensing walkthrough: follow a buyer from campaign brief through talent discovery (get_rights), acquisition (acquire_rights), creative approval, and lifecycle management including extension and revocation." +"og:title": "AdCP — Rights licensing walkthrough" +--- + +Meet Carlos. He runs programmatic at Pinnacle Media, a mid-size agency in Amsterdam. His client, Bistro Oranje — a steakhouse chain expanding across the Netherlands — wants a celebrity athlete in their next campaign. Not stock footage. Not a lookalike. A real, licensed Dutch athlete whose likeness and voice AI tools can generate into on-brand ads. + +The problem: how do you find available talent, negotiate rights, get authorization for your AI tools, and track usage — all through agents, at programmatic speed? + +This walkthrough follows Carlos from campaign brief to live delivery — and what happens when things change mid-flight. + +**The workflow in seven steps:** +1. **Brief** — Define what the campaign needs +2. **Discover** — Fetch `brand.json` to find the rights agent +3. **Search** — Query available talent with `get_rights` +4. **Acquire** — Submit a binding request with `acquire_rights` +5. **Approve** — Handle approval, rejection, or pending paths +6. **Generate** — Create and deliver on-brand ads +7. **Manage** — Extend, pause, or pull the campaign + +Carlos at his desk reviewing the Bistro Oranje campaign brief, with restaurant brand imagery on one screen and athlete photos on another + +## Step 1: The brief + +Bistro Oranje wants a Dutch Olympic athlete as the face of their summer campaign. Video ads, display banners, and audio spots across the Netherlands. Budget: EUR 5,000 for rights, plus creative production and media spend. The campaign runs June through August. + +Carlos has used AdCP for media buying before. Rights licensing works the same way — his buyer agent talks to a rights agent the same way — same protocol, same tools. + + + +| What Carlos says | What the protocol calls it | +|---|---| +| "Find me a Dutch athlete for a food brand" | `get_rights` with natural language `query` | +| "How much for likeness and voice?" | `pricing_options` in the `get_rights` response | +| "Lock in 3 months, Netherlands only" | `acquire_rights` with campaign dates and countries | +| "Send me the keys so my creative tools can generate" | `generation_credentials` in the `acquire_rights` response | +| "The talent's agency needs to approve the creative" | `creative-approval-request` via the `approval_webhook` | +| "We need to extend through September" | `update_rights` with a new `end_date` | +| "The talent got injured — pull everything" | Revocation notification to the `revocation_webhook` | + + + +--- + +## Step 2: Discover the brand + +Carlos's buyer agent starts where every AdCP interaction starts: `brand.json`. The agent fetches `https://lotientertainment.com/.well-known/brand.json` and finds a talent agency managing a roster of athletes. + +A buyer agent robot following a glowing trail from a restaurant website to a brand.json file floating in the air, revealing identity data like colors, logos, and tone + +The `rights_agent` field tells the buyer agent everything it needs to know before making any MCP calls — what is licensable, what types of rights, and where. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "lotientertainment.com", + "name": "Loti Entertainment", + "architecture": "house_of_brands" + }, + "brands": [ + { + "id": "daan_janssen", + "names": [{ "en": "Daan Janssen" }], + "description": "Dutch Olympic speed skater, 2x gold medalist", + "industries": ["sports_fitness"], + "rights_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment", + "available_uses": ["likeness", "voice", "endorsement"], + "right_types": ["talent"], + "countries": ["NL", "BE", "DE"] + } + } + ] +} +``` + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant Domain as lotientertainment.com + participant Rights as Rights Agent (MCP) + + Buyer->>Domain: GET /.well-known/brand.json + Domain-->>Buyer: brand.json with rights_agent + Note over Buyer: Discovers rights agent URL,
available uses, countries + Buyer->>Rights: get_brand_identity (brand_id: "daan_janssen") + Rights-->>Buyer: Visual identity, photos, tone +``` + +The buyer agent also calls `get_brand_identity` to retrieve visual assets and tone guidelines. These are needed later when creative tools generate on-brand ads featuring the athlete. + +```json +{ + "brand_id": "daan_janssen", + "fields": ["logos", "colors", "tone", "visual_guidelines"] +} +``` + +This returns high-res photos, brand colors, and appearance guidelines — everything a creative agent needs to generate ads that look right. + +--- + +## Step 3: Search for talent + +Now Carlos's agent calls `get_rights` on the rights agent. Carlos describes what he wants in plain language. No dropdown menus, no category codes — the agent understands intent. + +A catalog display showing talent cards with availability indicators, pricing tags, and geographic coverage maps, like a talent agency's digital showcase + +**Request:** + +```json +{ + "query": "Dutch athlete available for food and restaurant brands in the Netherlands, budget around EUR 5000 for 3 months", + "uses": ["likeness", "voice"], + "buyer_brand": { + "domain": "bistrooranje.nl" + }, + "countries": ["NL"], + "right_type": "talent", + "include_excluded": true +} +``` + +The `include_excluded: true` flag asks the rights agent to return talent that cannot be licensed as-is, along with reasons and suggestions. Without this flag, the response only includes available talent. + +The response returns Daan Janssen as a 92% match — Dutch nationality, no food category conflicts, budget-aligned. Two pricing options: CPM at EUR 3.50 per impression, or a flat monthly rate at EUR 1,500 with a 100K impression cap. The response also shows Emma van Dijk as excluded due to a food category exclusivity in the Netherlands, with suggestions for alternative markets. + + + +```json +{ + "rights": [ + { + "rights_id": "loti_dj_talent_2026", + "brand_id": "daan_janssen", + "name": "Daan Janssen", + "description": "Dutch Olympic speed skater, 2x gold medalist. Available for food, lifestyle, and fitness brands.", + "right_type": "talent", + "match_score": 0.92, + "match_reasons": [ + "Dutch nationality matches geographic request", + "No food category exclusivity conflicts", + "Budget aligns with available pricing options" + ], + "available_uses": ["likeness", "voice", "endorsement"], + "countries": ["NL", "BE", "DE"], + "exclusivity_status": { + "available": true, + "existing_exclusives": [ + "Exclusive commitment in sportswear category (NL, BE, DE)" + ] + }, + "pricing_options": [ + { + "pricing_option_id": "dj_cpm_likeness_voice", + "model": "cpm", + "price": 3.50, + "currency": "EUR", + "uses": ["likeness", "voice"], + "description": "Likeness and voice, per-impression pricing" + }, + { + "pricing_option_id": "dj_flat_monthly", + "model": "flat_rate", + "price": 1500, + "currency": "EUR", + "uses": ["likeness", "voice"], + "period": "monthly", + "impression_cap": 100000, + "overage_cpm": 4.00, + "description": "Monthly flat rate with 100K impression cap" + } + ], + "content_restrictions": [ + "No depiction in competitive sports contexts", + "Alcohol adjacency prohibited", + "Creative approval required for video formats" + ] + } + ], + "excluded": [ + { + "brand_id": "emma_van_dijk", + "name": "Emma van Dijk", + "reason": "Exclusive commitment in food and beverage category (NL)", + "suggestions": [ + "Available for food brands in BE and DE markets", + "Exclusivity expires 2026-12-31 — available in NL from January 2027" + ] + } + ] +} +``` + + + +Carlos's agent sees two pricing options for Daan Janssen. The per-impression model works if volume is unpredictable. The flat monthly rate is better for a planned campaign — EUR 1,500/month with a 100,000 impression cap means the full 3-month campaign costs EUR 4,500, within budget. + +The `excluded` array shows Emma van Dijk is unavailable in the Netherlands for food brands, but the suggestions tell Carlos's agent she is available in Belgium and Germany, or in the Netherlands starting January 2027. Suggestions mean the exclusion is actionable — the agent can adjust and retry. + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant Rights as Rights Agent + + Buyer->>Rights: get_rights (query, uses, buyer_brand, countries) + Rights-->>Buyer: Matching rights with pricing options + Note over Buyer: Evaluates pricing options,
checks content restrictions,
reviews exclusion reasons +``` + +--- + +## Step 4: Acquire the rights + +Carlos reviews the options and picks the flat monthly rate. His buyer agent submits `acquire_rights` — a binding contractual request. + +Two robots, a buyer agent and a brand agent, shaking hands over a glowing contract document with terms floating above it — dates, geography, and pricing + +Carlos's agent submits `acquire_rights` with the flat monthly pricing option, campaign dates (June through August), webhooks for revocation and push notifications, and an idempotency key for safe retries. + + + +```json +{ + "rights_id": "loti_dj_talent_2026", + "pricing_option_id": "dj_flat_monthly", + "buyer": { + "domain": "bistrooranje.nl" + }, + "campaign": { + "description": "Summer steakhouse campaign featuring Daan Janssen in video, display, and audio ads promoting Bistro Oranje locations across the Netherlands", + "uses": ["likeness", "voice"], + "countries": ["NL"], + "format_kinds": ["video_hosted", "image"], + "estimated_impressions": 250000, + "start_date": "2026-06-01", + "end_date": "2026-08-31" + }, + "revocation_webhook": { + "url": "https://api.pinnaclemedia.com/webhooks/revocation", + "auth": { + "type": "bearer", + "token": "whk_pinnacle_abc123" + } + }, + "push_notification_config": { + "url": "https://api.pinnaclemedia.com/webhooks/rights-updates", + "auth": { + "type": "bearer", + "token": "whk_pinnacle_def456" + } + }, + "idempotency_key": "bistro-dj-summer-2026-v1" +} +``` + + + +Three outcomes are possible. + +```mermaid +flowchart TD + A[acquire_rights request] --> B{Rights agent
evaluates} + B -->|Cleared| C["acquired + Terms + credentials + rights constraint"] + B -->|Needs review| D["pending_approval + Estimated response time"] + B -->|Cannot fulfill| E["rejected + Reason + optional suggestions"] + + C --> F[Creative generation begins] + D --> G[Webhook notification when resolved] + E --> H{Suggestions
present?} + H -->|Yes| I[Adjust and resubmit] + H -->|No| J[Move on to other talent] + + style C fill:#047857,color:#fff + style D fill:#d97706,color:#fff + style E fill:#dc2626,color:#fff +``` + +Carlos's agent gets everything it needs to start creating: keys for Midjourney (likeness) and ElevenLabs (voice), the legal disclosure text for every ad, and a link to submit finished creatives for the talent's approval. The monthly cap of 100,000 impressions translates to a total campaign cap of 300,000 across the three-month term. + + + +```json +{ + "rights_id": "loti_dj_talent_2026", + "rights_status": "acquired", + "brand_id": "daan_janssen", + "terms": { + "pricing_option_id": "dj_flat_monthly", + "amount": 1500, + "currency": "EUR", + "period": "monthly", + "uses": ["likeness", "voice"], + "impression_cap": 100000, + "overage_cpm": 4.00, + "start_date": "2026-06-01", + "end_date": "2026-08-31" + }, + "generation_credentials": [ + { + "provider": "midjourney", + "rights_key": "rk_mj_dj_2026_bistro_7f3a9b", + "uses": ["likeness"], + "expires_at": "2026-09-01T00:00:00Z" + }, + { + "provider": "elevenlabs", + "rights_key": "rk_el_dj_2026_bistro_4e8c1d", + "uses": ["voice"], + "expires_at": "2026-09-01T00:00:00Z" + } + ], + "restrictions": [ + "No depiction in competitive sports contexts", + "Alcohol adjacency prohibited", + "Creative approval required for video formats" + ], + "disclosure": { + "required": true, + "text": "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment." + }, + "approval_webhook": { + "url": "https://rights.lotientertainment.com/api/creative-approval", + "auth": { + "type": "bearer", + "token": "appr_loti_dj_2026_9x4k" + } + }, + "usage_reporting_url": "https://rights.lotientertainment.com/api/usage", + "rights_constraint": { + "rights_id": "loti_dj_talent_2026", + "rights_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment" + }, + "rights_holder": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" }, + "valid_from": "2026-06-01T00:00:00Z", + "valid_until": "2026-09-01T00:00:00Z", + "uses": ["likeness", "voice"], + "countries": ["NL"], + "impression_cap": 300000, + "right_type": "talent", + "approval_status": "approved", + "grant_status": "active", + "restrictions": [ + "No depiction in competitive sports contexts", + "Alcohol adjacency prohibited", + "Creative approval required for video formats" + ], + "disclosure": { + "required": true, + "text": "Features AI-generated likeness of Daan Janssen, used under license from Loti Entertainment." + }, + "creative_approval_required": true, + "content_digest": "sha256:4feebc941c805632ab259451fd1cda47fc56985dc62e177844ebfd377556ab7a", + "attestation_refs": [{ + "issuer": { "type": "brand", "brand": { "domain": "lotientertainment.com", "brand_id": "daan_janssen" } }, + "claim_type": "https://adcontextprotocol.org/claims/rights/grant", + "subject": { + "type": "resource", + "resource_type": "https://adcontextprotocol.org/claims/subjects/rights-grant", + "namespace": "https://rights.lotientertainment.com/mcp", + "id": "loti_dj_talent_2026", + "content_digest": "sha256:4feebc941c805632ab259451fd1cda47fc56985dc62e177844ebfd377556ab7a" + }, + "locator": { "type": "issuer_credential_id", "credential_id": "cred_loti_dj_2026", "resolver_id": "primary" } + }] + } +} +``` + + + +--- + +## Step 5: Approval and rejection + +Not every request gets approved immediately. The protocol handles two other paths. + +Split panel showing two paths: left side has a golden key credential being handed over for an approved request; right side shows a rejected stamp with two branches — one looping back with a lightbulb for suggestions, another with a final X + +### Pending approval + +Some requests need human review — the talent's management, a legal team, or the athlete themselves. The rights agent returns `pending_approval` with an estimated timeline. + +```json +{ + "rights_id": "loti_dj_talent_2026", + "rights_status": "pending_approval", + "brand_id": "daan_janssen", + "detail": "Video format requests require creative concept review by talent management", + "estimated_response_time": "48h" +} +``` + +When the decision is made, the rights agent sends a webhook to the `push_notification_config` URL. The buyer agent does not poll. + +### Rejection with suggestions (actionable) + +If the request cannot be fulfilled as-is, but the buyer can adjust, the rejection includes `suggestions`. Their presence is the signal — if suggestions exist, the rejection is fixable. + +```json +{ + "rights_id": "loti_dj_talent_2026", + "rights_status": "rejected", + "brand_id": "daan_janssen", + "reason": "Requested dates conflict with an existing exclusivity commitment in the food category for this market", + "suggestions": [ + "Available in NL from 2026-09-01 onward", + "Available immediately in BE and DE markets", + "Consider likeness-only (without voice) — available at reduced rate" + ] +} +``` + +Carlos's agent can revise — shift the dates, change the geography, or drop voice rights — and resubmit. + +### Rejection without suggestions (final) + +When there are no suggestions, the rejection is final for this talent and campaign combination. + +```json +{ + "rights_id": "loti_dj_talent_2026", + "rights_status": "rejected", + "brand_id": "daan_janssen", + "reason": "This request does not meet the talent's current licensing criteria" +} +``` + +No `suggestions` field. The buyer agent moves on. The reason may be vague intentionally — agencies manage confidential rules (the talent's personal boundaries, legal constraints, internal policies) that are not appropriate to disclose. The protocol respects this: a sanitized reason is enough for the buyer agent to understand the outcome without exposing private business logic. + +--- + +At this point, Carlos has licensed talent and is ready to generate creative. The next section covers what happens after acquisition: generation, delivery, and lifecycle management. + + + + Learn the protocol hands-on through the buyer certification program. + + + How rights licensing works from the buyer's perspective. + + + +--- + +## Step 6: Generate and deliver + +With credentials in hand, Carlos's creative tools go to work. The Midjourney credential generates likeness. The ElevenLabs credential generates voice. Each provider validates the `rights_key` at generation time — the credential itself is the authorization. + +Carlos reviewing AI-generated ads on his screen — a display banner and video still featuring the licensed athlete, with a verification badge and shield icon + +### Creative approval + +For video formats, the content restrictions require approval before distribution. The creative agent submits the finished ad to the `approval_webhook`. + +```json +{ + "rights_id": "loti_dj_talent_2026", + "creative_id": "bistro_summer_video_01", + "creative_url": "https://cdn.pinnaclemedia.com/creatives/bistro_summer_video_01.mp4", + "creative_format": { + "agent_url": "https://creatives.pinnaclemedia.com", + "id": "video_16x9_30s" + }, + "description": "30-second video spot featuring Daan Janssen recommending Bistro Oranje summer menu" +} +``` + +### Rights constraint in the creative manifest + +Every creative that uses licensed talent carries the `rights_constraint` from the `acquire_rights` response unchanged — the buyer does not construct or re-sign it. A single ad can combine talent likeness from one rights holder and music from another, each with different validity periods and geographic restrictions. The serving seller evaluates each issuer-bound reference under its own allowlist and binds the result to the exact grant digest. A deprecated `verification_url`, if present on legacy data, is ignored for authorization and is never fetched as a revocation oracle. + +### Usage reporting + +Impressions are reported back to the rights agent for billing and cap enforcement. + +The `impression_cap` in the terms (100,000 per month) is a soft cap by default. If the campaign exceeds it, additional impressions are billed at the `overage_cpm` rate (EUR 4.00). The rights agent tracks cumulative usage and can notify the buyer when approaching the cap. + +--- + +## Step 7: The lifecycle continues + +Rights are not static. Campaigns change, contracts extend, and sometimes things go wrong. + +Timeline view showing the full rights lifecycle: an active campaign with an impression counter ticking, a pause and update midstream, and a revocation alert notification appearing on Carlos's screen + +### Updating rights + +Midway through the campaign, Bistro Oranje wants to extend through September. Carlos's agent calls `update_rights`. + +```json +{ + "rights_id": "loti_dj_talent_2026", + "end_date": "2026-09-30", + "impression_cap": 150000, + "idempotency_key": "bistro-dj-extend-sept-v1" +} +``` + +The response includes updated terms and re-issued generation credentials with the new expiration. The old credentials continue working during an overlap period — no gap in creative delivery. + +If the campaign needs to pause (talent injury, brand issue, seasonal break), the agent can set `paused: true`. Credentials are suspended. Set `paused: false` to resume. + +### Natural expiration + +When the campaign ends and `valid_until` is reached, credentials expire automatically. Generation requests stop working. No action is required from either party. + +### Revocation + +If the talent's agency needs to revoke rights — a scandal, a contract violation, a legal issue — they POST a revocation notification to the buyer's `revocation_webhook`. + +```json +{ + "idempotency_key": "rev_01HW9DHSP8TV1N3R5T7V9X1Z3B5D", + "rights_id": "loti_dj_talent_2026", + "brand_id": "daan_janssen", + "reason": "Rights revoked due to updated talent representation terms", + "effective_at": "2026-07-15T18:00:00Z" +} +``` + +The buyer acknowledges receipt. If the notification fails to deliver, the rights agent retries automatically. + +When `effective_at` is in the future, the buyer has a grace period to wind down creative delivery. When it is the current time, the revocation is immediate — stop serving now. + +Partial revocation is also supported. If `revoked_uses` is present in the notification, only those uses are revoked. The rest of the grant remains active. + +```mermaid +stateDiagram-v2 + [*] --> Active: acquire_rights (acquired) + Active --> Active: update_rights (extend, adjust cap) + Active --> Paused: update_rights (paused: true) + Paused --> Active: update_rights (paused: false) + Active --> PartialRevocation: Revocation (revoked_uses present) + PartialRevocation --> Active: Remaining uses continue + Active --> Revoked: Revocation (full) + Paused --> Revoked: Revocation (full) + Active --> Expired: valid_until reached + Revoked --> [*] + Expired --> [*] +``` + +--- + +## What you have seen + +The brand protocol handles rights from discovery (`brand.json`) through licensing (`get_rights`, `acquire_rights`) to lifecycle management (`update_rights`, revocation webhooks). Every step uses the same MCP transport your buyer agent already speaks. The rights constraint travels with the creative — so every participant in the supply chain can verify before serving. + + + +Bistro Oranje's campaign is halfway through July when they learn Daan Janssen has signed a new sportswear exclusivity deal that now includes food brands in Belgium. Their campaign only runs in the Netherlands. Does Carlos need to do anything? Why or why not? + +*Think about: geographic scoping in the rights grant, the difference between existing exclusivities and new ones, and what the `countries` field in Carlos's `acquire_rights` terms actually covers.* + + + +--- + +## Go deeper + + + + Full technical specification for the brand.json file format. + + + How rights licensing works from the buyer's perspective. + + + How AdCP protects and monetizes talent rights. + + + Implement a brand agent that serves identity and rights. + + + Search for licensable talent with pricing and availability. + + + Submit a binding request and receive generation credentials. + + + Modify an existing rights grant — extend, pause, adjust. + + + Earn your buyer certification and learn the protocol hands-on. + + diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide.mdx new file mode 100644 index 0000000000..6c20d58cc1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide.mdx @@ -0,0 +1,1042 @@ +--- +title: A2A Guide +description: "AdCP A2A integration guide: client setup, agent card verification, SSE streaming for async tasks, artifact handling, and response format for Agent-to-Agent Protocol." +"og:title": "AdCP — A2A Guide" +--- + + +Transport-specific guide for integrating AdCP using the Agent-to-Agent Protocol. For task handling, status management, and workflow patterns, see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +## A2A Protocol Versions + +AdCP tracks the [A2A specification](https://a2a-protocol.org/latest/) under Linux Foundation governance. The **1.0** wire format is the target; **v0.3** remains widely deployed and is supported through the compatibility period. + +### What Changed in 1.0 + +| Area | v0.3 | 1.0 | +|------|------|-----| +| Agent Card transport | `url` + `protocolVersion` at root | `supportedInterfaces[]` array with per-interface `url`, `protocolBinding`, `protocolVersion` | +| `Part` discriminator | `kind: "text" \| "data" \| "file"` | No `kind` — content determined by which field is set (`text`, `data`, `url`, `raw`) | +| File fields | `uri`, `name`, `mimeType` | `url` (by reference) or `raw` (base64 bytes), `filename`, `mediaType` | +| Message role | `"user"` / `"agent"` | `"ROLE_USER"` / `"ROLE_AGENT"` (ProtoJSON canonical) | +| Task state | `"completed"`, `"working"`, … | `"TASK_STATE_COMPLETED"`, `"TASK_STATE_WORKING"`, … | +| Timestamps | ISO-8601 | ISO-8601 UTC with ms precision (`YYYY-MM-DDTHH:mm:ss.sssZ`) | + +AdCP's own unified top-level `status` field (returned by `@adcp/sdk`) continues to use the lowercase shorthand (`"completed"`, `"working"`, …) — that is an AdCP abstraction over the raw A2A `status.state`, not an A2A wire value. + +### Dual-Version Compatibility + +Servers that need to serve both v0.3 and 1.0 clients advertise both interfaces in their Agent Card and enable explicit compatibility at the transport layer (e.g. `enable_v0_3_compat=True` in the Python SDK). Backward compatibility is **not** enabled by default. + +Clients that speak 1.0 can talk to a v0.3 server when the SDK provides downward translation; the reverse (v0.3 client → 1.0-only server) requires the server to enable compat. + +### Examples in This Guide + +Examples below use **1.0 wire format** (no `kind` field, ProtoJSON enums). For a v0.3 server, the same Part becomes `{ kind: "text", text: "…" }` and states become lowercase. AdCP extraction clients (see [A2A Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction)) accept both shapes during the compatibility period. + +## A2A Client Setup + +Deterministic AdCP invocation on A2A 1.0 uses the [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension), identified by `https://adcontextprotocol.org/extensions/adcp/v3`. Clients activate it on every request with `A2A-Extensions`. + +### 1. Initialize an A2A 1.0 client + +```javascript +const endpoint = 'https://seller.example/a2a/jsonrpc'; +const profileUri = 'https://adcontextprotocol.org/extensions/adcp/v3'; + +function normalizeState(state) { + return state?.replace(/^TASK_STATE_/, '').toLowerCase().replaceAll('_', '-'); +} + +// Minimal JSON-RPC binding used by this guide. Production SDKs should +// encapsulate the same headers, messageId generation, and response unwrapping. +const a2a = { + async getAgentCard() { + const response = await fetch('https://seller.example/.well-known/agent-card.json'); + if (!response.ok) throw new Error(`Agent Card failed: ${response.status}`); + return response.json(); + }, + async send({ message, configuration }) { + const wireMessage = { + ...message, + messageId: message.messageId ?? crypto.randomUUID() + }; + const response = await fetch(endpoint, { + method: 'POST', + headers: { + 'content-type': 'application/json', + 'authorization': `Bearer ${process.env.ADCP_API_KEY}`, + 'A2A-Version': '1.0', + 'A2A-Extensions': profileUri + }, + body: JSON.stringify({ + jsonrpc: '2.0', + id: crypto.randomUUID(), + method: 'SendMessage', + params: { message: wireMessage, ...(configuration && { configuration }) } + }) + }); + const envelope = await response.json(); + if (envelope.error) throw new Error(envelope.error.message); + const task = envelope.result.task; + if (!task) throw new Error('Expected the SendMessage response task branch'); + const summary = task.status.message?.parts?.find(part => typeof part.text === 'string')?.text + ?? task.artifacts?.[0]?.parts?.find(part => typeof part.text === 'string')?.text; + return { + ...task, + taskId: task.id, + a2aStatus: task.status, + status: normalizeState(task.status.state), + message: summary + }; + } +}; +``` + +### 2. Verify Agent Card + +```javascript +// Check available skills +const agentCard = await a2a.getAgentCard(); +const adcpProfile = agentCard.capabilities.extensions?.find( + ext => ext.uri === 'https://adcontextprotocol.org/extensions/adcp/v3' +); +if (!adcpProfile) throw new Error('Agent does not advertise the AdCP A2A profile'); +console.log(agentCard.skills.map(s => s.id)); +// ["get_products", "create_media_buy", "sync_creatives", ...] +``` + +### 3. Send Your First Task + +```javascript +const response = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "get_products", + input: { + buying_mode: "brief", + brief: "Find video products for a pet food campaign" + } + } + }] + } +}); + +// All responses include unified status field (AdCP 1.6.0+) +console.log(response.status); // "completed" | "input-required" | "working" | etc. +console.log(response.message); // Human-readable summary +``` + +## Message Structure (A2A-Specific) + +### Profile Invocation Messages + +A profile invocation contains exactly one authoritative DataPart with `{ skill, input }`. It may also contain advisory TextParts. Text never overrides the structured input: + +```javascript +// SDK-generated display label + authoritative structured invocation +const response = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [ + { + text: "AdCP task: create_media_buy" + }, + { + data: { + skill: "create_media_buy", + input: { + idempotency_key: "550e8400-e29b-41d4-a716-446655440000", + account: { account_id: "acc_demo_001" }, + brand: { domain: "brand.example" }, + proposal_id: "proposal_001", + total_budget: { amount: 100000, currency: "USD" }, + start_time: "asap", + end_time: "2027-06-30T23:59:59Z" + } + } + } + ] + } +}); +``` + +### Skill Invocation Methods + +#### Natural Language (Separate Interface) + +The Agent Card used above marks the AdCP profile `required: true`, so a +text-only request is invalid on that interface. An agent that also supports +generic conversation publishes a separate Agent Card/interface without the +required profile. Context correlation does not turn text into typed AdCP input. + +#### Explicit Skill (Deterministic) +```javascript +// Explicit skill with an exact task request +const task = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "get_products", + input: { + buying_mode: "brief", + brief: "Premium CTV inventory under $50 CPM" + } + } + }] + } +}); +``` + +#### Structured Invocation with Generated Display Text +```javascript +// Display text contains no information beyond the structured invocation +const task = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [ + { + text: "AdCP task: get_products" + }, + { + data: { + skill: "get_products", + input: { + buying_mode: "brief", + brief: "Premium CTV inventory for a spring campaign under $45 CPM" + } + } + } + ] + } +}); +``` + +The profile rejects `parameters` as an alias and rejects ambiguous messages with multiple invocation DataParts. SDKs should omit TextParts by default or generate a display-only label; implementers should never put instructions there. File and resource references belong in fields defined by the selected AdCP request schema. See the [profile specification](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension#invocation-message) for the normative rules. + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for complete status handling patterns. + +## A2A Response Format + +**New in AdCP 1.6.0**: All responses include unified status field. + +### Normalized SDK Response Structure + +AdCP responses over A2A **MUST** include at least one DataPart (a Part carrying a `data` field) containing the task response. A TextPart (a Part carrying a `text` field) for human-readable messages is **recommended** but optional. + +The following is the normalized `@adcp/sdk` client shape. It flattens raw A2A +`Task.status.state` to lowercase `status` and exposes the A2A Task `id` as +`taskId`; it is not the raw A2A 1.0 wire object. + +```json +{ + "status": "completed", // Normalized A2A transport status + "taskId": "task-123", // Raw A2A Task.id + "contextId": "ctx-456", // Automatic context management + "artifacts": [{ // A2A-specific artifact structure + "artifactId": "artifact-product-catalog-abc", + "name": "product_catalog", + "parts": [ + { + "text": "Found 12 video products perfect for pet food campaigns" + }, + { + "data": { + "status": "completed", + "cache_scope": "account", + "products": [...], + "total": 12 + } + } + ] + }] +} +``` + +The A2A 1.0 wire format carries no `kind` discriminator — the Part's content type is implied by which field is set (`text`, `data`, `url`, or `raw`). For v0.3 servers/clients, the equivalent Part includes `"kind": "text"` / `"kind": "data"` / `"kind": "file"`. + +**For complete canonical format specification, see [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format).** + +### Normalized A2A Fields +- **taskId**: A2A Task `id`, renamed by the SDK adapter +- **contextId**: Automatically managed by A2A protocol +- **artifacts**: Multi-part deliverables with text and data parts +- **status**: AdCP's unified lowercase shorthand, mapped from A2A's `status.state` (see [A2A Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction#wire-format-compatibility)) + +### Processing Artifacts + +AdCP responses use the **last `DataPart` as authoritative** when multiple data parts exist (e.g., from streaming operations): + +```javascript +// Extract the artifact (currently AdCP returns single artifact per response) +const artifact = response.artifacts?.[0]; + +if (artifact) { + // Detect Part type by presence of field (1.0) with kind fallback (v0.3) + const isText = (p) => typeof p.text === 'string' || p.kind === 'text'; + const isData = (p) => p.data != null || p.kind === 'data'; + + const message = artifact.parts?.find(isText)?.text; + const data = artifact.parts?.filter(isData).at(-1)?.data; + + return { + artifactId: artifact.artifactId, + message, + data, + status: response.status + }; +} + +return { status: response.status }; +``` + +**For complete response structure requirements, error handling, and implementation patterns, see [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format).** + +## Push Notifications and AdCP Webhooks + +A2A transport notifications and AdCP application webhooks have different +lifetimes. `configuration.taskPushNotificationConfig` asks A2A to deliver +updates for the current A2A Task. It does not track a durable AdCP operation +after that Task completes. For an AdCP Submitted result, put +`push_notification_config` inside the task's typed `input`; its +`operation_id` is the durable webhook correlation key. + +**Durable AdCP webhook:** + +```javascript +const operationId = crypto.randomUUID(); + +await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "create_media_buy", + input: { + idempotency_key: crypto.randomUUID(), + account: { account_id: "acc_demo_001" }, + brand: { domain: "brand.example" }, + proposal_id: "proposal_001", + total_budget: { amount: 100000, currency: "USD" }, + start_time: "asap", + end_time: "2027-06-30T23:59:59Z", + push_notification_config: { + url: "https://buyer.example/webhooks/adcp", + operation_id: operationId + } + } + } + }] + } +}); +``` + +When transport-level delivery is useful while the handler is still running, +pass the separate A2A 1.0 configuration: + +```javascript +configuration: { + taskPushNotificationConfig: { + id: crypto.randomUUID(), + url: "https://buyer.example/webhooks/a2a", + token: "client-validation-token" + } +} +``` + +An initial `SendMessage` request does not set `taskId` in that configuration; +the A2A server assigns the transport Task ID. A2A's configuration has no +AdCP `operation_id` field. + +For webhook payload formats, protocol comparison, and detailed handling examples, see [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). + +## SSE Streaming (A2A-Specific) + +A2A streaming uses the protocol operations `SendStreamingMessage` and +`SubscribeToTask`, whose SSE events each contain a `StreamResponse` branch. +Clients must send the same authentication, `A2A-Version`, and `A2A-Extensions` +service parameters required by non-streaming calls. A bare browser +`EventSource` cannot set those headers and is not a portable profile client. + +The minimal helper earlier in this guide implements non-streaming +`SendMessage`. With the default `returnImmediately: false`, that operation +waits for a terminal or interrupted A2A state. A streaming-capable adapter +should expose the official streaming operations and parse `{ task }`, +`{ statusUpdate }`, `{ artifactUpdate }`, and `{ message }` frames. If an AdCP +handler ultimately returns `status: "submitted"`, the final A2A Task is still +completed; poll the durable operation with fresh typed `get_task_status` +invocations. + +### A2A Webhook Payload Examples + +**Example 1: `Task` payload for completed operation** + +When a task finishes, the server sends the full `Task` object wrapped in the A2A 1.0 `StreamResponse` envelope. The task result lives in `.artifacts`: + +```json +{ + "task": { + "id": "task_456", + "contextId": "ctx_123", + "status": { + "state": "TASK_STATE_COMPLETED", + "timestamp": "2026-01-22T10:30:00.000Z" + }, + "artifacts": [{ + "artifactId": "media-buy-result", + "name": "task_result", + "parts": [ + { + "text": "Media buy created successfully" + }, + { + "data": { + "status": "completed", + "media_buy_id": "mb_12345", + "confirmed_at": "2026-01-22T10:30:00.000Z", + "revision": 1, + "creative_deadline": "2026-01-30T23:59:59.000Z", + "packages": [ + { + "package_id": "pkg_001", + "context": { "line_item": "li_ctv_sports" } + } + ] + } + } + ] + }] + } +} +``` + +**CRITICAL**: For **`completed`, `failed`, or `rejected`** status, the AdCP task result **MUST** be in `.artifacts[0].parts[]`. If the server has only a free-text fatal message (no structured payload), it MAY fall back to `status.message.parts[]` — clients handle both. + +The A2A 1.0 `StreamResponse` oneof wraps every SSE frame and push-notification payload with exactly one of: `{ task }`, `{ statusUpdate }`, `{ artifactUpdate }`, `{ message }` (A2A 1.0 §3.2.3, §4.3.3). Non-streaming responses from the native A2A Get Task operation and v0.3 servers deliver the bare object. Clients unwrap before reading fields. + +**Example 2: `TaskStatusUpdateEvent` for progress updates** + +During execution, interim status updates can include optional data in `status.message.parts[]`. SSE/push frames wrap the event as `{ "statusUpdate": { … } }`: + +```json +{ + "statusUpdate": { + "taskId": "task_456", + "contextId": "ctx_123", + "status": { + "state": "TASK_STATE_INPUT_REQUIRED", + "message": { + "messageId": "msg-input-required-001", + "taskId": "task_456", + "contextId": "ctx_123", + "role": "ROLE_AGENT", + "parts": [ + { "text": "Campaign budget $150K requires VP approval" }, + { + "data": { + "reason": "BUDGET_EXCEEDS_LIMIT" + } + } + ] + }, + "timestamp": "2026-01-22T10:15:00.000Z" + } + } +} +``` + +**Do not conflate the two `submitted` values.** Native A2A `TASK_STATE_SUBMITTED` is an interim transport state and may appear in a `TaskStatusUpdateEvent` before an AdCP handler returns. An AdCP response whose DataPart contains `status: "submitted"` is instead pinned inside an A2A `TASK_STATE_COMPLETED` Task by the AdCP v3 profile. Observe that durable AdCP operation with `get_task_status`. + +### A2A Webhook Payload Types + +Per the [A2A 1.0 specification](https://a2a-protocol.org/latest/specification/#433-push-notification-payload), the server sends different payload types wrapped in the `StreamResponse` oneof: + +| Envelope Key | Inner Payload | When Used | What It Contains | +|--------------|---------------|-----------|------------------| +| `task` | `Task` | Final states (`completed`, `failed`, `canceled`, `rejected`) or when full context needed | Complete task object with all history and artifact data | +| `statusUpdate` | `TaskStatusUpdateEvent` | Native A2A transitions during handler execution (`working`, `input-required`, `auth-required`, `submitted`) | Lightweight transport status with message parts | +| `artifactUpdate` | `TaskArtifactUpdateEvent` | Streaming artifact updates | Artifact chunk with `append` / `lastChunk` flags | +| `message` | `Message` | Out-of-band agent messages | A message unattached to a task status transition | + +For AdCP, most webhooks will be: +- `{ task }` for final results (`completed`, `failed`, `rejected`) +- `{ statusUpdate }` for progress updates (`working`, `input-required`, `auth-required`) + +Clients unwrap the single-key envelope before reading fields. Non-streaming responses (for example, native A2A Get Task) deliver the bare payload — unwrapping a single-key envelope is a no-op there. + +**Envelope semantics:** +- **`{ artifactUpdate }`** frames carry incremental artifact chunks with boolean flags `append` (concatenate parts onto the named artifact) and `lastChunk` (marks the final chunk). AdCP clients consuming streams SHOULD accumulate these into the target artifact, then apply the extraction algorithm when the `{ task }` frame arrives with a terminal state. Clients consuming push notifications typically receive the already-merged `Task` object and can ignore individual `artifactUpdate` frames. See A2A 1.0 §7.3. +- **`{ message }`** frames are out-of-band agent messages unattached to a task status transition. AdCP is task-oriented — task-facing clients SHOULD log and ignore bare `message` envelopes. + +### Webhook Trigger Rules + +Webhooks are sent when **all** of these conditions are met: + +1. **Task type supports async** (e.g., `create_media_buy`, `sync_creatives`, `get_products`) +2. **`configuration.taskPushNotificationConfig` is provided** in the request +3. **The A2A transport task runs asynchronously** — initial A2A state is `working` or native `submitted` + +If the initial response is already terminal (`completed`, `failed`, `rejected`), no webhook is sent—you already have the result. + +An AdCP `status: "submitted"` DataPart does not keep the A2A Task open and does not turn A2A push notifications into AdCP-operation notifications. The profile returns it inside a completed A2A Task; use `get_task_status` (or an AdCP webhook explicitly defined by the task schema) for the durable operation. + +**Status changes that trigger webhooks:** +- `working` → Progress update (task actively processing) +- `input-required` → Human input needed +- `auth-required` (1.0) → Re-authentication challenge during execution +- `completed` → Final result available +- `failed` → Error details +- `rejected` (1.0) → Policy/validation rejection with `adcp_error` +- `canceled` → Cancellation confirmed + +### Data Schema Validation + +The DataPart `data` field in A2A webhooks uses status-specific schemas: + +| Status | Schema | Contents | +|--------|--------|----------| +| `completed` | `[task]-response.json` | Full task response (success branch) | +| `failed` | `[task]-response.json` | Full task response (error branch) | +| `rejected` (1.0) | `[task]-response.json` (error branch) | Policy/validation rejection with `adcp_error` | +| `working` | `[task]-async-response-working.json` | Progress info (`percentage`, `step`) | +| `input-required` | `[task]-async-response-input-required.json` | Requirements, approval data | +| `auth-required` (1.0) | `[task]-async-response-auth-required.json` | Auth challenge (scheme, URL, scopes) | +| native A2A `submitted` | Transport status payload | Handler has not yet returned an AdCP response | + +Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/async-response-data.json) + +### Webhook Handler Example + +```javascript +const express = require('express'); +const app = express(); + +app.post('/webhooks/a2a/:taskType/:operationId', async (req, res) => { + const { taskType, operationId } = req.params; + const rawBody = req.body; + + // Verify webhook authenticity (Bearer token example) + const authHeader = req.headers.authorization; + if (!authHeader || !authHeader.startsWith('Bearer ')) { + return res.status(401).json({ error: 'Missing Authorization header' }); + } + const token = authHeader.substring(7); + if (token !== process.env.A2A_WEBHOOK_TOKEN) { + return res.status(401).json({ error: 'Invalid token' }); + } + + // Unwrap A2A 1.0 StreamResponse envelope: { task } | { statusUpdate } | { artifactUpdate } | { message } + const envelopeKeys = ['task', 'message', 'statusUpdate', 'artifactUpdate']; + const bodyKeys = Object.keys(rawBody || {}); + const webhook = (bodyKeys.length === 1 && envelopeKeys.includes(bodyKeys[0])) + ? rawBody[bodyKeys[0]] + : rawBody; + + // Extract basic fields from A2A webhook payload + const taskId = webhook.id || webhook.taskId; + const contextId = webhook.contextId; + const status = webhook.status?.state || webhook.status; + + // Normalize 1.0 / v0.3 state values + const normalizeState = (s) => s?.replace(/^TASK_STATE_/, '').toLowerCase().replace(/_/g, '-'); + const normalizedStatus = normalizeState(status); + + // Detect Part type by field presence (1.0) with kind fallback (v0.3) + const isDataPart = (p) => p.data != null || p.kind === 'data'; + const isTextPart = (p) => typeof p.text === 'string' || p.kind === 'text'; + + // Extract AdCP data based on status + let adcpData, textMessage; + + const FINAL = ['completed', 'failed', 'canceled', 'rejected']; + + if (FINAL.includes(normalizedStatus)) { + // FINAL STATES: Extract from .artifacts (fallback to status.message.parts) + const artifactParts = webhook.artifacts?.[0]?.parts; + const dataPart = artifactParts?.filter(isDataPart).at(-1) + ?? webhook.status?.message?.parts?.find(isDataPart); + const textPart = artifactParts?.find(isTextPart) + ?? webhook.status?.message?.parts?.find(isTextPart); + adcpData = dataPart?.data; + textMessage = textPart?.text; + } else { + // INTERIM STATES: Extract from status.message.parts (optional) + const dataPart = webhook.status?.message?.parts?.find(isDataPart); + const textPart = webhook.status?.message?.parts?.find(isTextPart); + adcpData = dataPart?.data; + textMessage = textPart?.text; + } + + // Handle status changes (normalized works for both 1.0 and v0.3 wire values) + switch (normalizedStatus) { + case 'input-required': + // Alert human that input is needed + await notifyHuman({ + task_id: taskId, + context_id: contextId, + message: textMessage, + data: adcpData + }); + break; + + case 'auth-required': + // A2A 1.0: re-authenticate and resume the task + // SECURITY: validate challenge_url against the agent's registered origin + // before opening/fetching. See A2A Response Extraction §Auth Challenge URL Validation. + if (!isValidChallengeUrl(adcpData?.challenge_url, agentAuthOrigin(taskId))) { + return res.status(400).json({ error: 'Invalid challenge_url for agent' }); + } + await startAuthChallenge({ + task_id: taskId, + auth_scheme: adcpData?.auth_scheme, + challenge_url: adcpData.challenge_url, + scopes: adcpData?.scopes // show to user for fresh consent, do not auto-grant + }); + break; + + case 'completed': + // Process the completed operation + if (adcpData?.media_buy_id) { + await handleMediaBuyCreated({ + media_buy_id: adcpData.media_buy_id, + packages: adcpData.packages + }); + } + break; + + case 'failed': + // Handle failure + await handleOperationFailed({ + task_id: taskId, + error: adcpData?.adcp_error ?? adcpData?.errors, + message: textMessage + }); + break; + + case 'rejected': + // A2A 1.0: policy/validation rejection with structured adcp_error + await handleOperationRejected({ + task_id: taskId, + error: adcpData?.adcp_error, + message: textMessage + }); + break; + + case 'working': + // Update progress UI + await updateProgress({ + task_id: taskId, + percentage: adcpData?.percentage, + message: textMessage + }); + break; + + case 'canceled': + await handleOperationCanceled(taskId); + break; + } + + // Always return 200 for successful processing + res.status(200).json({ status: 'processed' }); +}); +``` + +## Context Management (A2A-Specific) + +A2A assigns `contextId` on the first exchange. A client continues that context +by placing the returned value inside the next `Message`. The typed invocation +remains complete and authoritative on every turn. + +```javascript +// First request: the server assigns a contextId. +const response1 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ data: { + skill: "get_products", + input: { buying_mode: "brief", brief: "Find premium video products" } + }}] + } +}); + +// Follow-up: contextId is a Message field, not a sibling of message. +const response2 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + contextId: response1.contextId, + role: "ROLE_USER", + parts: [{ data: { + skill: "get_products", + input: { buying_mode: "brief", brief: "Premium sports video products" } + }}] + } +}); +``` + +## File and Multi-Modal Inputs + +Generic A2A messages can combine text, data, and files. The activated AdCP v3 A2A profile deliberately narrows invocation messages to one structured DataPart plus optional advisory TextParts. Put resource references in the selected AdCP task's typed `input`; do not add a FilePart that the task schema cannot validate. + +### Creative Upload with Context + +```javascript +// The asset URL is part of the typed AdCP request. +const response = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [ + { + text: "AdCP task: sync_creatives" + }, + { + data: { + skill: "sync_creatives", + input: { + idempotency_key: crypto.randomUUID(), + account: { account_id: "acc_demo_001" }, + creatives: [{ + creative_id: "cr_hero_30s", + name: "Sports hero 30s", + format_kind: "video_hosted", + assets: { + video_main: { + asset_type: "video", + url: "https://cdn.example.com/hero-30s.mp4", + mime_type: "video/mp4", + duration_ms: 30000, + width: 1920, + height: 1080 + } + } + }] + } + } + } + ] + } +}); +``` + +If a task schema does not define a field for the file or resource, that input is not supported by the AdCP v3 A2A profile. Use a separate generic A2A interface or first transform the resource into schema-valid AdCP fields. + +## Available Skills + +All AdCP tasks are available as A2A skills. Use explicit invocation for deterministic execution: + +**Task Management**: For comprehensive guidance on tracking async operations across all domains, polling patterns, and webhook integration, see [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). + +### Skill Structure +```javascript +// Standard pattern for explicit skill invocation +await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "skill_id", // Exact AgentSkill.id from Agent Card + input: { // Task-specific request + // See task documentation for request fields + } + } + }] + } +}); +``` + +### Available Skills +- **Protocol**: `get_adcp_capabilities` (start here to discover agent capabilities) +- **Media Buy**: `get_products`, `create_media_buy`, `update_media_buy`, `sync_creatives`, `get_media_buy_delivery`, `provide_performance_feedback` +- **Signals**: `get_signals`, `activate_signal` + +**Task Parameters**: See [Media Buy](/dist/docs/3.2.0-beta.4/media-buy) and [Signals](/dist/docs/3.2.0-beta.4/signals/overview) documentation for complete parameter specifications. + +## Agent Cards + +A2A 1.0 agents advertise capabilities via Agent Cards at `.well-known/agent-card.json`. + +### Discovering Agent Cards +```javascript +// Get agent capabilities +const agentCard = await a2a.getAgentCard(); + +// List available skills +const skillIds = agentCard.skills.map(skill => skill.id); +console.log('Available skill IDs:', skillIds); + +// Get skill details +const getProductsSkill = agentCard.skills.find(s => s.id === 'get_products'); +console.log('Examples:', getProductsSkill.examples); + +// Pick a transport interface (1.0) +const jsonrpc = agentCard.supportedInterfaces?.find( + i => i.protocolBinding === 'JSONRPC' && i.protocolVersion === '1.0' +); +console.log('Endpoint:', jsonrpc?.url); +``` + +### Sample Agent Card Structure (A2A 1.0) + +In 1.0, the top-level `url` and `protocolVersion` fields from v0.3 are replaced by a `supportedInterfaces` array. Each entry advertises one transport binding and protocol version. `supportsAuthenticatedExtendedCard` moved to `capabilities.extendedAgentCard`. + +```json +{ + "name": "AdCP Media Buy Agent", + "description": "AI-powered media buying agent", + "version": "1.0.0", + "securitySchemes": { + "bearerAuth": { + "httpAuthSecurityScheme": { + "scheme": "Bearer", + "bearerFormat": "JWT" + } + } + }, + "securityRequirements": [{ + "schemes": { "bearerAuth": { "list": [] } } + }], + "supportedInterfaces": [ + { + "url": "https://sales.example.com/a2a/jsonrpc", + "protocolBinding": "JSONRPC", + "protocolVersion": "1.0" + } + ], + "defaultInputModes": ["application/json"], + "defaultOutputModes": ["application/json"], + "capabilities": { + "streaming": true, + "pushNotifications": true, + "extendedAgentCard": false, + "extensions": [ + { + "uri": "https://adcontextprotocol.org/extensions/adcp/v3", + "description": "AdCP structured task invocation profile", + "required": true + } + ] + }, + "skills": [ + { + "id": "get_adcp_capabilities", + "name": "Discover AdCP capabilities", + "description": "Discover runtime AdCP versions, protocols, and features", + "tags": ["adcp"] + }, + { + "id": "get_products", + "name": "Discover advertising products", + "description": "Discover available advertising products", + "tags": ["adcp", "media-buy"], + "examples": [ + "Find premium CTV inventory for sports fans", + "Show me video products under $50 CPM" + ] + } + ] +} +``` + +### Dual-Advertising for v0.3 Compatibility + +Servers transitioning from v0.3 advertise both interfaces. Clients pick the version they understand: + +```json +{ + "supportedInterfaces": [ + { + "url": "https://sales.example.com/a2a/jsonrpc", + "protocolBinding": "JSONRPC", + "protocolVersion": "1.0" + }, + { + "url": "https://sales.example.com/", + "protocolBinding": "JSONRPC", + "protocolVersion": "0.3" + } + ] +} +``` + +Python SDK servers must also pass `enable_v0_3_compat=True` when constructing routes — backward compatibility is not enabled by default. See the [A2A Python SDK 1.0 migration guide](https://github.com/a2aproject/a2a-python/blob/v1.0.0/docs/migrations/v1_0/README.md). + +### AdCP Extension + + +Use [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for runtime capability discovery. The Agent Card extension declaration identifies the A2A wire profile only. + + +Include the versioned AdCP profile under `capabilities.extensions[]` and activate it on every invocation with `A2A-Extensions: https://adcontextprotocol.org/extensions/adcp/v3`. + +The A2A protocol's `AgentExtension` has: +- **`uri`**: Extension identifier (`https://adcontextprotocol.org/extensions/adcp/v3`) +- **`description`**: Human-readable description of how you use AdCP +- **`required`**: `true` on an interface that requires the structured AdCP profile +- **`params`**: Omitted or empty for this profile + +```javascript +// Check if agent supports AdCP +const agentCard = await fetch('https://sales.example.com/.well-known/agent-card.json') + .then(r => r.json()); + +// Find the AdCP profile under AgentCapabilities. +const adcpExt = agentCard.capabilities.extensions?.find( + ext => ext.uri === 'https://adcontextprotocol.org/extensions/adcp/v3' +); + +if (adcpExt) { + // Activate the profile, then call the runtime discovery task. + const capabilities = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: 'ROLE_USER', + parts: [{ data: { skill: 'get_adcp_capabilities', input: {} } }] + } + }); + console.log(capabilities); +} +``` + +The profile forbids copying AdCP versions, supported domains, or feature flags into extension params. Those values change at runtime and remain authoritative only in `get_adcp_capabilities`. The unversioned v2 `adcp-extension.json` capability payload is not part of this profile. + +:::note +The `adcp_version` field in agent card metadata is a v2 convention and is not part of the v3 spec. For v3 version negotiation, the buyer sends release-precision `adcp_version` (e.g., `"3.1"`) on every request, and the seller advertises supported releases via `adcp.supported_versions` on [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) and echoes `adcp_version` at the envelope root on every response. The legacy integer-only `adcp_major_version` field is still accepted for backwards compatibility. See [versioning.mdx § Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) for the full contract. +::: + +**Benefits**: +- Clients can negotiate one versioned, deterministic AdCP message shape +- Runtime capability discovery has one authority: `get_adcp_capabilities` +- Breaking profile changes negotiate through a new extension URI rather than ambiguous params + +## Integration Example + +```javascript +// Use unified status handling (see Core Concepts) +async function handleA2aResponse(response, invocation) { + switch (response.status) { + case 'input-required': + // Collect fields and rebuild a complete, schema-valid typed request. + const refinedInput = await collectTypedInput(invocation.input, response.message); + return a2a.send({ + message: { + messageId: crypto.randomUUID(), + taskId: response.taskId, + contextId: response.contextId, + role: "ROLE_USER", + parts: [{ data: { skill: invocation.skill, input: refinedInput } }] + } + }); + + case 'working': + // Monitor via SSE streaming + return streamUpdates(response.taskId); + + case 'completed': + // Extract last DataPart — presence of .data field identifies it in 1.0 + const parts = response.artifacts[0].parts; + const dataParts = parts.filter(p => p.data != null || p.kind === 'data'); + return dataParts[dataParts.length - 1].data; + + case 'failed': + throw new Error(response.message); + } +} + +// Example usage with multi-modal message +const result = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [ + { text: "AdCP task: get_products" }, + { + data: { + skill: "get_products", + input: { + idempotency_key: "550e8400-e29b-41d4-a716-446655442071", + buying_mode: "brief", + brief: "Luxury car inventory for in-market shoppers" + } + } + } + ] + } +}); + +const finalResult = await handleA2aResponse(result, { + skill: "get_products", + input: { + idempotency_key: "550e8400-e29b-41d4-a716-446655442071", + buying_mode: "brief", + brief: "Luxury car inventory for in-market shoppers" + } +}); +``` + +## A2A-Specific Considerations + +### Error Handling + +Failed tasks carry structured AdCP errors in artifact `DataPart` under the `adcp_error` key. For the full extraction logic and recovery behavior, see [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors). + +```javascript +try { + const response = await a2a.send(message); + + if (response.status === 'failed') { + // Check for structured AdCP error in artifacts + // Detect DataPart by field presence (1.0) or kind (v0.3) + const dataPart = response.artifacts?.[0]?.parts?.find( + p => p.data != null || p.kind === 'data' + ); + const adcpError = dataPart?.data?.adcp_error; + + if (adcpError) { + // Structured error with code, recovery, retry_after, etc. + console.log('AdCP error:', adcpError.code, adcpError.recovery); + if (adcpError.recovery === 'transient') { + // Retry after delay + await sleep((adcpError.retry_after || 5) * 1000); + return retry(); + } + } + throw new Error(response.message); + } +} catch (a2aError) { + // A2A transport error (connection, auth, etc.) + console.error('A2A Error:', a2aError); +} +``` + +### Creative Upload Error Handling + +For uploading creative assets and handling validation errors, use the `sync_creatives` task. See [sync_creatives Task Reference](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for complete testable examples. + +The `@adcp/sdk` library handles A2A artifact extraction automatically, so you don't need to manually parse the response structure. + +## Best Practices + +1. **Use hybrid messages** for best results (text + data + optional files) +2. **Check status field** before processing artifacts +3. **Leverage SSE streaming** for real-time updates on long operations +4. **Reference Core Concepts** for status handling patterns +5. **Use agent cards** to discover available skills and examples + +## Next Steps + +- **Core Concepts**: Read [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.2.0-beta.4/media-buy) and [Signals](/dist/docs/3.2.0-beta.4/signals/overview) +- **Protocol Comparison**: Compare with [MCP integration](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide) +- **Examples**: Find complete workflow examples in Core Concepts + +**For status handling, async operations, and clarification patterns, see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) - this guide focuses on A2A transport specifics only.** diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension.mdx new file mode 100644 index 0000000000..0b0234358d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension.mdx @@ -0,0 +1,298 @@ +--- +title: AdCP A2A Profile Extension v3 +sidebarTitle: A2A profile extension +description: "Normative A2A 1.0 profile for invoking AdCP tasks with versioned extension negotiation, structured DataParts, and AdCP-level async polling." +"og:title": "AdCP — A2A Profile Extension v3" +testable: false +--- + +# AdCP A2A Profile Extension v3 + +This document defines the normative AdCP profile for [A2A 1.0](https://a2a-protocol.org/latest/specification/). It narrows A2A messages and task results enough for independent AdCP clients and agents to interoperate without defining a new transport. + +## Extension identifier + +The extension URI is: + +```text +https://adcontextprotocol.org/extensions/adcp/v3 +``` + +The `extensions/adcp` path scopes this identifier to the AdCP profile registered +through A2A's extension mechanism. It is an extension identifier and normative +document URL, not a JSON Schema URL, so it does not live under `/schemas/3.2.0-beta.4/`. + +The URI is versioned by the compatible AdCP major: `/v3` identifies the A2A +profile for AdCP 3.x. The negotiated AdCP release still selects the exact task +schemas—for example, 3.0, 3.1, or 3.2 schemas under `/schemas/3.2.0-beta.4/`—without +requiring a new extension identity for every additive minor release. AdCP 4.x +will use `/extensions/adcp/v4`. This profile has no extension dependencies +beyond A2A 1.0. + +## Advertisement and activation + +An A2A interface that implements this profile MUST advertise the extension under `AgentCard.capabilities.extensions[]`: + +```json +{ + "supportedInterfaces": [ + { + "url": "https://sales.example.com/a2a/jsonrpc", + "protocolBinding": "JSONRPC", + "protocolVersion": "1.0" + } + ], + "capabilities": { + "extensions": [ + { + "uri": "https://adcontextprotocol.org/extensions/adcp/v3", + "description": "AdCP structured task invocation profile", + "required": true + } + ] + } +} +``` + +The `AgentExtension.params` member MUST be omitted or empty. It MUST NOT contain AdCP versions, protocol domains, feature flags, or other runtime capabilities. Clients activate the profile on every request using the A2A service parameter: + +```http +A2A-Version: 1.0 +A2A-Extensions: https://adcontextprotocol.org/extensions/adcp/v3 +``` + +For HTTP-based bindings, service parameters are HTTP headers. The response SHOULD echo the URI in `A2A-Extensions` to confirm activation, as specified by A2A 1.0. An agent that declares the profile `required: true` MUST reject a request that does not activate it; it MUST NOT guess that an unactivated DataPart is an AdCP invocation. + +## SDK and adapter behavior + +This profile is designed to be implemented once in an A2A transport adapter, +not separately in every AdCP task handler. Extension support remains explicit +opt-in, as required by A2A. Once a developer enables this profile, an SDK or +adapter that claims support for it MUST automate the profile mechanics: + +- on the server, advertise the extension and verify request activation; +- on the client, discover the declaration and activate the extension; +- encode and decode `{ skill, input }` DataParts; +- validate `input` against the selected task request schema and dispatch the + named AdCP handler; +- map the handler's direct response into the A2A Task artifact; and +- expose AdCP Submitted results by their `task_id`, with + `get_task_status` as the polling operation. + +Application code should register the same typed AdCP handler it would expose +over another transport. It should not parse A2A Parts, author prompt text, or +reimplement the mapping rules. Raw A2A clients can implement the wire rules +directly, but SDKs SHOULD make the normal integration path work from typed task +inputs and outputs alone. + +## Runtime discovery + +The Agent Card declaration says only that the interface supports this wire profile. Runtime AdCP discovery remains the `get_adcp_capabilities` task. + +After activating the profile, a client SHOULD invoke `get_adcp_capabilities` before other AdCP tasks. Its response remains the source of truth for supported AdCP versions, protocol domains, feature flags, and seller capabilities. Agents MUST NOT duplicate that information in `AgentExtension.params`; duplicate static metadata becomes stale and creates two competing authorities. + +Agent Card `skills[]` entries identify the AdCP tasks dispatchable on that interface. For every AdCP task, `AgentSkill.id` MUST equal the exact AdCP task name; `AgentSkill.name` is a human-readable label and need not equal the task name. The invocation's `skill` member references `AgentSkill.id`, never `AgentSkill.name`. The `get_adcp_capabilities` ID MUST appear on every interface that implements this profile. An agent that can return an AdCP Submitted response under this profile MUST also advertise the `get_task_status` ID. + +## Invocation message + +An activated invocation Message MUST contain exactly one DataPart whose `data` value has this shape: + +```json +{ + "skill": "get_products", + "input": { + "buying_mode": "brief", + "brief": "Premium CTV inventory for a spring campaign" + } +} +``` + +The invocation object has exactly two members: + +| Member | Requirement | +|---|---| +| `skill` | Required non-empty string. The exact `AgentSkill.id`, which for this profile is the AdCP task name, such as `get_products` or `create_media_buy`. | +| `input` | Required object. The task request, validated unchanged against that task's AdCP request schema. | + +`parameters` is not an alias for `input` in this profile. A client that activates v3 and sends `parameters`, omits `input`, or sends more than one invocation DataPart is non-conformant. The agent MUST reject the invocation rather than choose among ambiguous inputs. + +The Message MAY also contain TextParts solely for display, accessibility, or +logging. Senders SHOULD omit them by default. An SDK MAY synthesize a short +label from the structured invocation, but the text MUST NOT introduce any +instruction or fact that is absent from `skill` and `input`. Implementations +MUST NOT ask a human integrator to author this text, and receivers MUST NOT +merge it into `input`, pass it to the task handler as an instruction, or use it +to override structured data. FileParts and additional DataParts are outside +this v3 invocation profile. References to files or other resources belong in +fields defined by the selected AdCP request schema. + +```json +{ + "messageId": "msg-get-products-001", + "role": "ROLE_USER", + "parts": [ + { + "text": "AdCP task: get_products" + }, + { + "data": { + "skill": "get_products", + "input": { + "buying_mode": "brief", + "brief": "Premium CTV inventory for a spring campaign" + } + } + } + ] +} +``` + +If the A2A Task enters `TASK_STATE_INPUT_REQUIRED` before the AdCP handler +returns, a continuation MUST carry a new `messageId` and the existing A2A +`taskId` and `contextId` inside the Message. Its Parts still follow this +profile: exactly one authoritative `{ skill, input }` DataPart, with a complete +schema-valid task request. The continued Task keeps the same A2A Task ID. + +## Response mapping + +When the AdCP handler returns a schema-valid task response, the A2A invocation is complete. A non-streaming A2A `SendMessage` response MUST select its `task` branch. That Task has `status.state` `TASK_STATE_COMPLETED`, and its artifact contains the direct AdCP response in a DataPart: + +```json +{ + "task": { + "id": "a2a-task-7f8c", + "contextId": "ctx-products-7f8c", + "status": { + "state": "TASK_STATE_COMPLETED" + }, + "artifacts": [ + { + "artifactId": "adcp-result", + "parts": [ + { + "data": { + "status": "completed", + "cache_scope": "account", + "products": [] + } + } + ] + } + ] + } +} +``` + +`artifactId` is the ordinary A2A identifier for that artifact. It is opaque, +needs to be unique only within the A2A Task, and does not identify an AdCP +schema or task type; `adcp-result` above is merely an example value. There is +no single generic AdCP result schema. The invoked `skill` selects the +task-specific response schema, and the DataPart MUST contain that response +directly, without a `{ "response": ... }` framework wrapper. A response +artifact MAY also contain advisory TextParts. Clients use the +[A2A response extraction algorithm](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction) +to select the authoritative DataPart. + +Profile-routing errors that prevent handler invocation use native A2A error handling. A fatal failure after task execution starts may use an A2A failed or rejected Task with a structured `adcp_error` DataPart. A schema-valid AdCP business outcome—including a task-specific rejection or partial result with `errors[]`—is still a completed A2A invocation. + +## Submitted AdCP work + +A2A task state and AdCP task state are separate state machines. If an AdCP handler returns a Submitted response, the A2A invocation has still completed: + +```json +{ + "task": { + "id": "a2a-task-create-42", + "contextId": "ctx-create-42", + "status": { + "state": "TASK_STATE_COMPLETED" + }, + "artifacts": [ + { + "artifactId": "adcp-result", + "parts": [ + { + "text": "The media buy is awaiting IO signature." + }, + { + "data": { + "status": "submitted", + "task_id": "adcp-task-9a21", + "message": "Awaiting IO signature" + } + } + ] + } + ] + } +} +``` + +The A2A Task identifier (`a2a-task-create-42`) identifies the completed transport invocation. The AdCP `task_id` (`adcp-task-9a21`) identifies the durable AdCP operation. They are independent identifiers and clients MUST NOT assume they are equal. + +The AdCP handle appears exactly once, as `task_id` in the AdCP DataPart. Agents MUST NOT duplicate it as `artifact.metadata.adcp_task_id` or any other A2A metadata member. + +To observe the durable operation, the client sends a new activated invocation of the AdCP `get_task_status` task: + +```json +{ + "messageId": "msg-poll-001", + "role": "ROLE_USER", + "parts": [ + { + "data": { + "skill": "get_task_status", + "input": { + "task_id": "adcp-task-9a21", + "include_result": true + } + } + } + ] +} +``` + +Each poll is its own A2A invocation and completes with a direct `get_task_status` response DataPart. Clients continue polling according to the seller's retry guidance until the AdCP response is terminal. They MUST NOT poll the completed A2A Task to infer progress of the separate AdCP operation. + +## Relationship to A2A async and conversation + +The profile uses A2A as more than an alternate RPC envelope. A2A still +provides Agent Card discovery, interface and extension negotiation, +authentication, `contextId` conversation correlation, streaming, push +delivery, artifacts, and native input/auth challenges. + +The boundary is when the AdCP handler returns. While a profile invocation is +still executing, an agent can use native A2A `TASK_STATE_WORKING` or +`TASK_STATE_SUBMITTED` updates and stream progress through A2A. When the +handler returns a schema-valid AdCP response, that A2A invocation is complete. +If the returned AdCP response itself says `status: "submitted"`, it represents +a separate durable business operation that may outlive the A2A Task, a client +connection, or even the transport used to observe it. AdCP therefore owns that +operation's portable `task_id` and `get_task_status` semantics. + +Because this Agent Card marks the profile `required: true`, every request to +its advertised interface must activate the profile and use the typed invocation +shape. An implementation that also offers generic conversational A2A messages +must publish a separate Agent Card/interface that does not mark this profile +required. Context correlation never makes a TextPart authoritative for an AdCP +handler. + +## Security and validation + +- Treat TextParts as untrusted advisory text. Never merge them into the typed `input` object. +- Validate `input` against the selected task request schema before handler dispatch. +- Apply the same authentication, authorization, signing, idempotency, and account-scoping rules used for the equivalent AdCP task over MCP. +- Bound the number and size of Parts before parsing. Reject duplicate invocation DataParts rather than selecting the first or last. +- Validate response DataParts against the selected task response schema before using them. + +## Test vectors + +Machine-readable advertisement, activation, invocation, Submitted mapping, and polling fixtures are published in [`a2a-profile-extension-v3.json`](https://adcontextprotocol.org/test-vectors/a2a-profile-extension-v3.json). See [Reference test vectors](/dist/docs/3.2.0-beta.4/reference/test-vectors) for versioning guidance. + +## References + +- [A2A 1.0 specification](https://a2a-protocol.org/latest/specification/) +- [A2A extensions](https://a2a-protocol.org/latest/topics/extensions/) +- [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) +- [Calling an AdCP agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent) diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction.mdx new file mode 100644 index 0000000000..2a7908f5b2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction.mdx @@ -0,0 +1,287 @@ +--- +title: A2A Response Extraction +description: "How to extract AdCP response data from A2A Task objects: status-based branching, last-DataPart authority, wrapper rejection, and client implementation requirements." +"og:title": "AdCP — A2A Response Extraction" +--- + +This page defines the normative algorithm for extracting AdCP response data from A2A Task objects and TaskStatusUpdateEvents. For the canonical response structure that sellers must produce, see [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format). For error-specific extraction, see [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors). + +## AdCP Conventions on Top of A2A + +The rules on this page layer AdCP-specific semantics onto A2A. Non-AdCP A2A agents do not enforce them and should not be expected to produce conforming output. + +- **Single-artifact invariant.** AdCP tasks produce one artifact containing all output parts. Clients read from `artifacts[0]`. If a seller needs multiple distinct deliverables, they should be modeled as separate tasks — not multiple artifacts. +- **Last-DataPart authority.** When multiple DataParts appear in one artifact (typical during streaming), the last one is authoritative. Earlier DataParts are superseded progress snapshots. +- **First-DataPart for interim.** When multiple DataParts appear in `status.message.parts`, the first is used — interim updates are single-event snapshots, not accumulated. +- **Wrapper rejection.** A DataPart whose `.data` is `{ response: {...} }` (single key named `response`) is treated as a framework-wrapper bug, not a valid payload. +- **Two status layers.** `task.status.state` is the A2A transport lifecycle; the extracted DataPart is the complete AdCP response and carries its own `status`. They normally align, but a structured AdCP business rejection uses A2A `completed` with DataPart `status: "rejected"` because the transport call succeeded. +- **Submitted profile mapping.** Under the [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension), an AdCP DataPart with `status: "submitted"` is carried by an A2A `TASK_STATE_COMPLETED` Task and extracted from its artifact. Native A2A `TASK_STATE_SUBMITTED` remains an interim transport state used only before the AdCP handler has returned. + +## Wire-Format Compatibility + +This algorithm handles both **A2A 1.0** and **v0.3** responses. Extraction must not assume one wire format — the same AdCP client may talk to both during the v0.3 compatibility period. + +**State values.** The `status.state` field arrives as either the ProtoJSON form (`"TASK_STATE_COMPLETED"`, `"TASK_STATE_WORKING"`, …) in 1.0 or the lowercase form (`"completed"`, `"working"`, …) in v0.3. Clients normalize before comparison. + +**Part shape.** A 1.0 DataPart has a non-null `data` field and no `kind`. A v0.3 DataPart has `kind: "data"` and a `data` field. Both satisfy "the `data` field is a non-null object." The same holds for TextParts (`text` field present) and FileParts (`url`/`raw` in 1.0, or `kind: "file"` in v0.3). Per A2A 1.0 §4.1.6, a Part is a strict `oneof` — exactly one of `text`, `raw`, `url`, or `data` is set. Clients receiving a Part with multiple content fields SHOULD treat it as malformed. + +**Response envelopes.** A2A 1.0 non-streaming `SendMessage` responses select +one branch of `SendMessageResponse`, normally `{ "task": { ... } }` for this +profile. Streaming responses and push-notification payloads use a +`StreamResponse` oneof with exactly one of `task`, `message`, `statusUpdate`, or +`artifactUpdate` (A2A 1.0 §3.2.3, §4.3.3). Native `GetTask` and SDKs that +explicitly unwrap `SendMessageResponse` may deliver a bare Task. Extraction +unwraps a supported single-key envelope before applying the algorithm below. + +## Status-Based Extraction + +The extraction location depends on the task's status. State names in this table are shown in normalized lowercase form — match against the normalized state, not the raw wire value. + +| Status | Type | Data Location | DataPart Selection | +|---|---|---|---| +| `completed` | Final | `.artifacts[0].parts[]` (fallback: `status.message.parts[]`) | Last DataPart | +| `failed` | Final | `.artifacts[0].parts[]` (fallback: `status.message.parts[]`) | Last DataPart | +| `canceled` | Final | `.artifacts[0].parts[]` | Last DataPart (typically none) | +| `rejected` | Final transport rejection (1.0) | `.artifacts[0].parts[]` | Last DataPart (normally carries `adcp_error`) | +| `working` | Interim | `status.message.parts[]` | First DataPart | +| native A2A `submitted` | Interim transport state | `status.message.parts[]` | First DataPart | +| `input-required` | Interim | `status.message.parts[]` | First DataPart | +| `auth-required` | Interim (1.0) | `status.message.parts[]` | First DataPart (carries auth challenge data — scheme, URL, scopes) | + +Final states fall back to `status.message.parts[]` when `.artifacts` is absent or empty — this covers servers that put a final payload in the status message rather than a separate artifact. + +Canceled tasks rarely carry data — extraction returns null when no DataPart is present, which is the expected case. Native A2A `rejected` tasks are transport rejections and are expected to carry an `adcp_error` DataPart describing why the call was rejected (tier/policy/validation). + +An AdCP structured business rejection is different. The seller successfully handled the call and produced a typed result, so A2A uses `task.status.state: "completed"`; the authoritative DataPart carries `status: "rejected"`, `reason`, and any task-specific fields. The same rule applies to an AdCP Submitted response: the A2A state is `completed`, while the authoritative DataPart carries `status: "submitted"` and `task_id`. Extractors MUST return the DataPart unchanged and MUST NOT overwrite its `status` with the A2A transport state. + +## Extraction Algorithm + +Clients MUST extract AdCP data from A2A responses using these steps: + +0. **Unwrap A2A response envelopes.** If the input is an object with exactly one top-level key named `task`, `message`, `statusUpdate`, or `artifactUpdate` and that key's value is a non-null, non-array object, replace the input with that value. This covers the A2A 1.0 `SendMessageResponse` task/message branches and `StreamResponse` oneof. Bare `Task` / `TaskStatusUpdateEvent` objects from `GetTask`, an explicitly unwrapping SDK, or v0.3 pass through unchanged. An `artifactUpdate` carries no task status; once unwrapped its `status.state` is absent and step 1 returns null. + + Unwrap **exactly once**. Clients MUST NOT recurse. If the unwrapped inner object itself has the single-key envelope shape (`{ task: { task: {...} } }` or any combination), treat as malformed and return null — this is a nested-envelope smuggling attempt. An envelope whose inner value's top-level keys include any of `task` / `message` / `statusUpdate` / `artifactUpdate` MUST be rejected. + + Bare `{ message }` envelopes are valid out-of-band agent messages and MUST be ignored by task-oriented extractors — step 1 returns null when the unwrapped object has no `status.state`. After authentication and envelope validation, a push receiver SHOULD still acknowledge a recognized `{ message }` delivery with 2xx even when it does not mutate task state. Malformed or unauthenticated deliveries remain transport errors. +1. **Read `status.state`.** If absent, return null. Normalize to lowercase form (`TASK_STATE_COMPLETED` → `completed`) before comparing. After normalization, the state MUST match one of the known final/interim tokens by **exact ASCII string equality**. Clients MUST NOT collapse repeated separators, trim whitespace, or apply Unicode case-folding beyond ASCII lowercase. Any other value — including novel `TASK_STATE_*` inputs the client does not recognize — is "unknown" and extraction returns null (step 4). This state selects the extraction location; it does not replace a `status` field present in the extracted AdCP DataPart. +2. **Final states** (`completed`, `failed`, `canceled`, `rejected`): + a. Look in `artifacts[0].parts[]` for DataParts (a Part whose `data` field is a non-null object — regardless of whether `kind` is present). + b. Use the **last** DataPart as authoritative (see [Last-DataPart Authority](#last-datapart-authority)). + c. **Reject wrappers**: If the DataPart's `.data` has a single key `response` containing an object, this is a framework wrapper bug. Throw or log an error. + d. Return `.data`. + e. **Fallback**: If no artifacts or no DataPart in artifacts, check `status.message.parts[]` using step 3. +3. **Interim states** (`working`, `submitted`, `input-required`, `auth-required`): + a. Look in `status.message.parts[]` for DataParts. + b. Use the **first** DataPart. + c. Return `.data`, or null if no DataPart found. +4. **Unknown states**: Return null. Forward-compatible clients SHOULD NOT throw on unrecognized status values. + +State normalization: strip a `TASK_STATE_` prefix, lowercase, replace underscores with hyphens. That maps both A2A 1.0 (`"TASK_STATE_INPUT_REQUIRED"`) and v0.3 (`"input-required"`) onto the same value. + +DataPart detection uses field presence — a 1.0 Part `{ "data": {...} }` and a v0.3 Part `{ "kind": "data", "data": {...} }` both satisfy the "non-null object `data` field" test. + + +```javascript A2A Client +function normalizeState(state) { + if (typeof state !== 'string') return null; + return state.replace(/^TASK_STATE_/, '').toLowerCase().replace(/_/g, '-'); +} + +function isDataPart(p) { + return p != null + && p.data != null + && typeof p.data === 'object' + && !Array.isArray(p.data); +} + +// A2A 1.0 StreamResponse oneof: { task } | { message } | { statusUpdate } | { artifactUpdate } +function unwrapStreamEnvelope(input) { + if (input == null || typeof input !== 'object' || Array.isArray(input)) return input; + const keys = Object.keys(input); + if (keys.length !== 1) return input; + const envelopeKeys = ['task', 'message', 'statusUpdate', 'artifactUpdate']; + if (envelopeKeys.includes(keys[0]) && typeof input[keys[0]] === 'object' && input[keys[0]] !== null) { + return input[keys[0]]; + } + return input; +} + +function extractAdcpResponseFromA2A(input) { + const task = unwrapStreamEnvelope(input); + const state = normalizeState(task?.status?.state); + if (!state) return null; + + const FINAL = ['completed', 'failed', 'canceled', 'rejected']; + const INTERIM = ['working', 'submitted', 'input-required', 'auth-required']; + + if (FINAL.includes(state)) { + // Final: last DataPart from artifacts[0] + const artifact = task.artifacts?.[0]; + if (artifact?.parts) { + const dataParts = artifact.parts.filter(isDataPart); + if (dataParts.length > 0) { + const last = dataParts[dataParts.length - 1]; + // Reject framework wrappers + const keys = Object.keys(last.data); + if (keys.length === 1 && keys[0] === 'response' && typeof last.data.response === 'object') { + throw new Error( + 'Invalid response format: DataPart contains wrapper object {response: {...}}. ' + + 'This is a server-side bug.' + ); + } + return last.data; + } + } + // Fallback to status.message.parts + return extractFromMessage(task); + } + + if (INTERIM.includes(state)) { + return extractFromMessage(task); + } + + return null; // Unknown state +} + +function extractFromMessage(task) { + const parts = task.status?.message?.parts; + if (!Array.isArray(parts)) return null; + const dataPart = parts.find(isDataPart); + return dataPart?.data ?? null; +} +``` + + +## Last-DataPart Authority + +For final states, the **last** DataPart in `artifacts[0].parts[]` is authoritative. During streaming, intermediate DataParts may contain stale progress data that gets superseded by the final result: + +```json +{ + "status": {"state": "TASK_STATE_COMPLETED"}, + "artifacts": [{ + "parts": [ + {"text": "Found products"}, + {"data": {"progress": 25}}, + {"data": {"products": [...], "total": 12}} + ] + }] +} +``` + +The extracted data is `{"products": [...], "total": 12}`, not `{"progress": 25}`. + +For interim states, the **first** DataPart is used because interim updates are single-event snapshots, not accumulated. + +## Wrapper Rejection + +Clients MUST reject DataParts where `.data` is wrapped in a framework-specific object: + +```json +// REJECTED: wrapper detected +{"data": {"response": {"products": [...]}}} + +// ACCEPTED: direct payload +{"data": {"products": [...]}} +``` + +The detection rule: if `.data` has exactly one key named `response` whose value is an object, it is a wrapper. This is a server-side bug — clients should throw or log an error, not silently unwrap. + +Wrapper detection applies to **final states only** (artifacts). Interim status messages are lightweight progress snapshots — wrapper detection is not required for `status.message.parts`. + +**Exception**: A `.data` object that has `response` alongside other keys is NOT a wrapper: +```json +// NOT a wrapper — response is one of several keys +{"data": {"response": {...}, "status": "completed", "errors": []}} +``` + +## Relationship to Error Extraction + +This algorithm extracts *any* AdCP data from A2A responses, including error payloads (`adcp_error`). Error-specific extraction ([Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors)) is a specialization that checks for the `adcp_error` key in the extracted data. + +The transport-errors spec provides its own `extractAdcpErrorFromA2A` function that scans all artifacts for `adcp_error`. That function is optimized for error detection (scanning all parts for the error key). This function is the general-purpose extractor (last DataPart from first artifact). For failed tasks with a single `adcp_error` DataPart, both produce equivalent results. + +Typical client flow: + +```javascript +function handleA2aResponse(task) { + const data = extractAdcpResponseFromA2A(task); + + // Check if the extracted data is an error + if (data?.adcp_error) { + return handleError(data.adcp_error); + } + + return handleSuccess(data); +} +``` + +## Security Considerations + +### Seller-Controlled Data + +All data in `.artifacts[].parts[].data` and `status.message.parts[].data` is seller-controlled. The prompt injection, data boundary, and size limit requirements from [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors#security-considerations) apply. + +### Prototype Pollution + +Clients MUST NOT merge extracted DataPart payloads into application state via `Object.assign` or spread without filtering keys. Validate against the expected task response schema before merging. + +### FilePart URI Validation + +A2A responses may include FileParts. In 1.0 these are Parts carrying a `url` field (file by reference) or a `raw` field (base64 bytes); in v0.3 they carry `kind: "file"` with a `uri` field. Clients MUST validate that the URL uses the `https` scheme, contains no userinfo component, and matches an expected domain allowlist. Reject `javascript:`, `data:`, `file:`, and `http:` URIs. For `raw` parts, enforce a max decoded size before accepting. + +### Auth Challenge URL Validation + +When handling `auth-required`, the seller sends an auth challenge in `status.message.parts` — typically a DataPart with fields like `auth_scheme`, `challenge_url`, and `scopes`. A seller-controlled URL that the client opens or fetches is an OAuth-phishing and SSRF vector. Before initiating any user-facing or programmatic auth flow, clients MUST validate `challenge_url`: + +- Scheme MUST be `https`. Reject `http:`, `javascript:`, `data:`, `file:`. +- URL MUST NOT contain a userinfo component (`user:pass@host` form). +- Host MUST match the authenticated seller's registered auth origin for this agent card. Clients SHOULD maintain a per-agent allowlist seeded from the Agent Card's `supportedInterfaces[].url` origin or a declared `authOrigin` extension field — not derived from the task payload. +- Any `redirect_uri`, `return_url`, or similar query parameter MUST be dropped or overwritten by the client before navigation. Never forward a seller-supplied redirect. +- `scopes` MUST be treated as a request, not a grant. Show scopes to the user and obtain fresh consent for each challenge. + +Response-size and timeout bounds apply if the client fetches the challenge URL server-side (e.g., 256 KB response cap, 10 second timeout, redirect limit of 3). + +### Seller-Controlled String Hygiene + +All `adcp_error.message`, `adcp_error.details.*`, and status TextPart content is seller-controlled. Clients rendering these in UI MUST escape for the target context (HTML, Slack, CLI). Clients logging them MUST strip CRLF to prevent log-injection. This applies to all states carrying `adcp_error` (`failed`, `rejected`, system-initiated `canceled`) and to free-text `status.message`. + +### Size Limits + +Clients SHOULD enforce a maximum DataPart size (e.g., 1MB) before schema validation. Unlike error payloads (capped at 4096 bytes), success payloads can be larger but still need bounds. + +### Intermediary Injection + +The last-DataPart convention assumes the artifact is received intact from a single trusted sender. In multi-hop scenarios (buyer → orchestrator → seller), an intermediary could inject additional parts. Clients operating through intermediaries SHOULD validate that the artifact part count matches expectations. + +## Client Library Requirements + +Client libraries that implement this spec MUST: + +1. **Unwrap A2A 1.0 stream envelopes.** A single-key object with key `task`, `message`, `statusUpdate`, or `artifactUpdate` is a `StreamResponse` wrapper — unwrap to the inner object before applying the rest of the algorithm. Bare objects pass through unchanged. +2. **Accept both A2A 1.0 and v0.3 wire shapes.** Normalize `status.state` before comparison (strip `TASK_STATE_` prefix, lowercase, underscores to hyphens). Detect DataParts by field presence (`data` is a non-null object), not by `kind`. +3. **Branch on normalized state.** Final states (`completed`, `failed`, `canceled`, `rejected`) use artifacts; interim states (`working`, `submitted`, `input-required`, `auth-required`) use `status.message.parts`. +4. **Use last DataPart for final states.** Skip DataParts with null, non-object, or array `.data`. +5. **Use first DataPart for interim states.** +6. **Detect and reject wrappers.** Single-key `{response: {...}}` payloads are bugs. +7. **Fall back gracefully.** If artifacts are empty for a final state, check `status.message.parts`. +8. **Handle unknown states.** Return null, do not throw. + +## Test Vectors + +Machine-readable test vectors are available at [`/static/test-vectors/a2a-response-extraction.json`](https://adcontextprotocol.org/test-vectors/a2a-response-extraction.json). Each vector contains: + +- `status`: the A2A task status +- `path`: extraction path (`artifact`, `status_message`, or `none`) +- `response`: the A2A Task or TaskStatusUpdateEvent +- `expected_data`: the AdCP data that should be extracted (or `null`) +- `expected_error_type`: if present, the extraction should throw (e.g., `wrapper_detected`) + +Client libraries SHOULD validate their extraction logic against these vectors. + +## See Also + +- [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format) — canonical response structure for sellers +- [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors) — error extraction from MCP and A2A +- [MCP Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction) — equivalent spec for MCP +- [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) — A2A transport integration diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format.mdx new file mode 100644 index 0000000000..aaba32d3cd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format.mdx @@ -0,0 +1,681 @@ +--- +title: A2A Response Format +description: "A2A response format for AdCP: required DataPart structure, artifact layout for completed and async tasks, and status-specific response patterns over Agent-to-Agent Protocol." +"og:title": "AdCP — A2A Response Format" +--- + + +This document defines the **canonical structure** for AdCP responses transmitted over the A2A protocol. + +## A2A Wire Format + +Examples below use **A2A 1.0** wire format: Parts carry no `kind` discriminator (content type is implied by which field is set — `text`, `data`, `url`, or `raw`), roles are `ROLE_USER` / `ROLE_AGENT`, and task states are `TASK_STATE_*` (ProtoJSON canonical). See the [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide#a2a-protocol-versions) for a side-by-side with v0.3. + +There are two distinct status layers. A2A `task.status.state` describes transport execution; the AdCP DataPart's top-level `status` describes the task-specific protocol result. They usually align, but they are not aliases. For example, a structured `get_products` business rejection uses A2A `TASK_STATE_COMPLETED` and DataPart `status: "rejected"`: the invocation completed and produced a deliberate commercial-refusal result. + +The [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension) also pins an AdCP `status: "submitted"` response inside an A2A `TASK_STATE_COMPLETED` Task. Native A2A `TASK_STATE_SUBMITTED` is an interim transport state before the AdCP handler returns; it is not the mapping for queued AdCP work. + +For v0.3 servers, the same DataPart becomes `{ "kind": "data", "data": {...} }` and states become lowercase. Extraction clients accept both shapes during the compatibility period. + +## Required Structure + +### Final Responses (status: "completed") + +**AdCP responses over A2A MUST:** +- Include at least one DataPart (a Part carrying a non-null `data` field) containing the task response payload +- Use single artifact with multiple parts (not multiple artifacts) +- Use the last DataPart as authoritative when multiple data parts exist +- NOT wrap AdCP payloads in custom framework objects (no `{ response: {...} }` wrappers) + +**Recommended non-streaming `SendMessageResponse` pattern:** + +```json +{ + "task": { + "id": "task_123", + "contextId": "ctx_456", + "status": { + "state": "TASK_STATE_COMPLETED" + }, + "artifacts": [{ + "artifactId": "task-result", + "name": "task_result", + "parts": [ + { + "text": "Found 12 video products perfect for pet food campaigns" + }, + { + "data": { + "status": "completed", + "cache_scope": "account", + "products": [...], + "total": 12 + } + } + ] + }] + } +} +``` + +- **TextPart** (Part with `text` field): Human-readable summary — **recommended** but optional +- **DataPart** (Part with `data` field): Structured AdCP response payload — **required** +- **FilePart** (Part with `url` or `raw` field): Optional file references (previews, reports) + +AdCP profile responses use exactly one artifact. Put related TextParts, +DataParts, and FileParts in that artifact; model fundamentally separate +deliverables as separate AdCP tasks. + +### AdCP Submitted Responses (A2A completed) + +When the AdCP handler returns `status: "submitted"`, the handler invocation is finished even though the durable AdCP operation is queued. The profile therefore uses an A2A completed Task and carries the Submitted response in the artifact: + +```json +{ + "task": { + "id": "a2a-task-create-42", + "contextId": "ctx-create-42", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [{ + "data": { + "status": "submitted", + "task_id": "adcp-task-9a21", + "message": "Awaiting IO signature" + } + }] + }] + } +} +``` + +The A2A Task id and AdCP `task_id` are independent. The AdCP handle MUST remain only in the direct DataPart; do not copy it to `artifact.metadata.adcp_task_id`. Poll by sending a new profile invocation with `skill: "get_task_status"` and `input.task_id: "adcp-task-9a21"`, not by polling the completed A2A Task. + +### Interim A2A Responses (working, native submitted, input-required, auth-required) + +Interim status updates are delivered as `TaskStatusUpdateEvent`, with optional progress/challenge data carried in `status.message.parts[]` (not in `artifacts`). Artifacts accumulate during the task lifecycle but are read as the final deliverable once the task reaches a terminal state. + +```json +{ + "taskId": "task_123", + "contextId": "ctx_456", + "status": { + "state": "TASK_STATE_WORKING", + "timestamp": "2026-01-22T10:15:00.000Z", + "message": { + "messageId": "msg-progress-001", + "taskId": "task_123", + "contextId": "ctx_456", + "role": "ROLE_AGENT", + "parts": [ + { + "text": "Processing your request. Analyzing 50,000 inventory records..." + }, + { + "data": { + "percentage": 45, + "current_step": "analyzing_inventory" + } + } + ] + } + } +} +``` + +When delivered over SSE or as a push notification, this event is wrapped in the A2A 1.0 `StreamResponse` oneof: `{ "statusUpdate": { … } }`. Non-streaming responses such as native A2A Get Task deliver the bare object. Clients unwrap before reading `status.state` — see [A2A Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction#extraction-algorithm). + +**Interim response characteristics:** +- **TextPart** is recommended for human-readable status +- **DataPart** is optional but follows AdCP schemas when provided +- Interim status schemas (`*-async-response-working.json`, `*-async-response-input-required.json`, etc.) are work-in-progress and may evolve +- Implementors may choose to handle interim data more loosely given schema evolution + +**When a final A2A transport state is reached** (`completed`, `failed`, `canceled`, or native A2A `rejected`), the full AdCP task response is delivered on a `Task` object with the DataPart in `.artifacts[0].parts[]`. + +### Framework Wrappers (NOT PERMITTED) + +**CRITICAL**: DataPart content MUST be the direct AdCP response payload, not wrapped in framework-specific objects. + +```json +// ❌ WRONG - Wrapped in custom object +{ + "data": { + "response": { // ← Framework wrapper + "products": [...] + } + } +} + +// ✅ CORRECT - Direct AdCP payload +{ + "data": { + "status": "completed", + "cache_scope": "account", + "products": [] + } +} +``` + +**Why this matters:** +- Breaks schema validation (clients expect `products` at root, not `response.products`) +- Adds unnecessary nesting layer +- Violates protocol-agnostic design (wrapper is framework-specific) +- Complicates client extraction code + +**If your implementation adds wrappers**, this is a bug that should be fixed in the framework layer, not worked around in client code. + +## Canonical Client Behavior + +This section defines EXACTLY how clients MUST extract AdCP responses from A2A protocol responses. + +### Quick Reference + +| Status | Webhook Type | Data Location | Schema Required? | Returns | +|--------|--------------|---------------|-----------------|---------| +| `working` | `TaskStatusUpdateEvent` | `status.message.parts[]` | ✅ Yes (if present) | `{ status, taskId, message, data? }` | +| native A2A `submitted` | `TaskStatusUpdateEvent` | `status.message.parts[]` | ✅ Yes (if present) | `{ status, taskId, message, data? }` | +| `input-required` | `TaskStatusUpdateEvent` | `status.message.parts[]` | ✅ Yes (if present) | `{ status, taskId, message, data? }` | +| `auth-required` (1.0) | `TaskStatusUpdateEvent` | `status.message.parts[]` | ✅ Yes (auth challenge) | `{ status, taskId, message, data }` | +| `completed` | `Task` | `.artifacts[]` (fallback: `status.message.parts[]`) | ✅ Required | `{ status, taskId, message, data }` | +| `failed` | `Task` | `.artifacts[]` (fallback: `status.message.parts[]`) | ✅ Required | `{ status, taskId, message, data }` | +| `rejected` (1.0) | `Task` | `.artifacts[]` | ✅ Required (`adcp_error`) | `{ status, taskId, message, data }` | + +**Key Insights**: +- **Final statuses** use `Task` object with data in `.artifacts`. If a server has no structured payload (e.g., JSON-RPC parse error, pre-task auth failure), it may place only a text message in `status.message.parts` — clients fall back to that location. +- **Interim statuses** use `TaskStatusUpdateEvent` with optional data in `status.message.parts[]`. +- **Stream/webhook delivery** wraps the payload in the A2A 1.0 `StreamResponse` oneof (`{ task }`, `{ statusUpdate }`, `{ artifactUpdate }`, `{ message }`). Clients unwrap before reading fields. +- All statuses use AdCP schemas when data is present. +- Interim status schemas are work-in-progress and may evolve. + +### Rule 1: Status-Based Handling + +Clients MUST branch on the normalized A2A transport state to determine the correct data extraction location. The raw wire value at `status.state` is `TASK_STATE_COMPLETED` in 1.0 or `completed` in v0.3. Normalize before comparing, extract the DataPart, and then branch separately on the AdCP payload's own `status`; never replace that payload status with the transport state. See [A2A Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction#extraction-algorithm). + +```javascript +const INTERIM = ['working', 'submitted', 'input-required', 'auth-required']; +const FINAL = ['completed', 'failed', 'canceled', 'rejected']; + +function handleA2aResponse(response) { + const status = response.status; // normalized A2A transport state + + // INTERIM STATUSES - Extract from status.message.parts (TaskStatusUpdateEvent) + if (INTERIM.includes(status)) { + return { + status: status, + taskId: response.taskId, + contextId: response.contextId, + message: extractTextPartFromMessage(response), + data: extractDataPartFromMessage(response), // Optional AdCP data (required for auth-required) + }; + } + + // FINAL STATUSES - Extract from .artifacts (Task object), fallback to status.message + if (FINAL.includes(status)) { + return { + status: status, + taskId: response.taskId, + contextId: response.contextId, + message: extractTextPartFromArtifacts(response) ?? extractTextPartFromMessage(response), + data: extractDataPartFromArtifacts(response) ?? extractDataPartFromMessage(response), + }; + } + + // Forward-compatible: unknown future states return null, do not throw + return { status, taskId: response.taskId, contextId: response.contextId, message: null, data: null }; +} +``` + +**Critical**: +- **Interim statuses** use `TaskStatusUpdateEvent` → extract from `status.message.parts[]` +- **Final statuses** use `Task` object → extract from `.artifacts[0].parts[]`, falling back to `status.message.parts[]` if artifacts are empty + +### Rule 2: Data Extraction Helpers + +Extract data from the appropriate location based on webhook type: + +```javascript +// Part-type detectors: field presence (A2A 1.0) with kind fallback (v0.3) +const isDataPart = (p) => + p.data != null && typeof p.data === 'object' && !Array.isArray(p.data); +const isTextPart = (p) => typeof p.text === 'string'; + +// For FINAL statuses (Task object) - extract from .artifacts, return null if absent +function extractDataPartFromArtifacts(response) { + const dataParts = response.artifacts?.[0]?.parts?.filter(isDataPart) || []; + if (dataParts.length === 0) return null; // caller falls back to status.message.parts + + // Use LAST data part as authoritative + const lastDataPart = dataParts[dataParts.length - 1]; + const payload = lastDataPart.data; + + // CRITICAL: Payload MUST be direct AdCP response, not a framework wrapper. + // A wrapper is a single-key object { response: {...} } — reject it. + // Objects that have 'response' alongside other keys are NOT wrappers. + const keys = Object.keys(payload); + if (keys.length === 1 && keys[0] === 'response' && typeof payload.response === 'object') { + throw new Error( + 'Invalid response format: DataPart contains wrapper object. ' + + 'Expected direct AdCP payload (e.g., {products: [...]}) ' + + 'but received {response: {products: [...]}}. ' + + 'This is a server-side bug that must be fixed.' + ); + } + + return payload; +} + +function extractTextPartFromArtifacts(response) { + const textPart = response.artifacts?.[0]?.parts?.find(isTextPart); + return textPart?.text || null; +} + +// For INTERIM statuses (TaskStatusUpdateEvent) - extract from status.message.parts +function extractDataPartFromMessage(response) { + const dataPart = response.status?.message?.parts?.find(isDataPart); + return dataPart?.data || null; +} + +function extractTextPartFromMessage(response) { + const textPart = response.status?.message?.parts?.find(isTextPart); + return textPart?.text || null; +} +``` + +These detectors work for both wire formats: a 1.0 DataPart has `data` set (no `kind`), a v0.3 DataPart has `kind: "data"` and `data` set — both satisfy `p.data != null`. + +### Rule 3: Schema Validation + +All AdCP responses use schemas, but validation approach varies by status: + +```javascript +function validateResponse(response, taskName) { + const status = response.status; + let data, schemaName; + + // Extract data and determine schema based on status + if (INTERIM.includes(status)) { + // INTERIM: Optional data from status.message.parts + data = extractDataPartFromMessage(response); + + if (data) { + // Interim status has its own schema (work-in-progress) + schemaName = `${taskName}-async-response-${status}.json`; + + // Optional: Implementors may skip interim validation as schemas evolve + if (STRICT_VALIDATION_MODE) { + validateAgainstSchema(data, loadSchema(schemaName)); + } + } + } else if (FINAL.includes(status)) { + // FINAL: Required data from .artifacts (fallback to status.message.parts) + data = extractDataPartFromArtifacts(response) ?? extractDataPartFromMessage(response); + schemaName = `${taskName}-response.json`; + + // Required: Final responses must validate + if (!validateAgainstSchema(data, loadSchema(schemaName))) { + throw new Error( + `Response payload does not match ${taskName} schema. ` + + `Ensure DataPart contains direct AdCP response structure.` + ); + } + } +} +``` + +**Schema Evolution Note**: Interim status schemas (`*-async-response-working.json`, etc.) are work-in-progress. Implementors may choose to handle these more loosely while schemas stabilize. + +### Complete Example + +Putting it all together with proper handling of both Task and TaskStatusUpdateEvent payloads: + +```javascript +async function executeTask(taskName, params) { + const response = await a2aClient.send({ + message: { + messageId: crypto.randomUUID(), + role: 'ROLE_USER', + parts: [{ data: { skill: taskName, input: params } }] + } + }); + + // 1. Status-based handling (extracts from correct location) + const result = handleA2aResponse(response); + + // 2. Schema validation + validateResponse(response, taskName); + + return result; +} + +// Usage +const result = await executeTask('get_products', { + brief: 'CTV inventory in California' +}); + +// Handle different response types +if (result.status === 'working') { + // TaskStatusUpdateEvent - data from status.message.parts + console.log('Processing:', result.message); + if (result.data) { + console.log('Progress:', result.data.percentage + '%'); + } +} else if (result.status === 'input-required') { + // TaskStatusUpdateEvent - data from status.message.parts + console.log('Input needed:', result.message); + console.log('Reason:', result.data?.reason); +} else if (result.status === 'completed') { + // Task object - data from .artifacts + console.log('Success:', result.message); + console.log('Products:', result.data.products); // Full AdCP response +} +``` + +## Last Data Part Authority Pattern + +
+Why this pattern? + +An artifact can accumulate multiple DataParts while streaming. Only the final +Task artifact uses last-DataPart authority: + +```json +{ + "task": { + "id": "task_123", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "product-result", + "parts": [ + {"text": "Found 12 products"}, + {"data": {"progress": 25}}, + {"data": {"status": "completed", "cache_scope": "account", "products": [...], "total": 12}} + ] + }] + } +} +``` + +**Note:** This is an AdCP-specific convention, not required by A2A protocol. Document this in your Agent Card when serving non-AdCP clients. +
+ +## Test Cases + +### ✅ Correct Behavior + +```javascript +// Test 1: Working status (TaskStatusUpdateEvent) - extract from status.message.parts +const workingResponse = { + taskId: 'task_123', + contextId: 'ctx_456', + status: { + state: 'TASK_STATE_WORKING', + message: { + messageId: 'msg-progress-001', + taskId: 'task_123', + contextId: 'ctx_456', + role: 'ROLE_AGENT', + parts: [ + { text: 'Processing inventory...' }, + { data: { percentage: 50, current_step: 'analyzing' } } + ] + } + } +}; + +const result1 = handleA2aResponse(workingResponse); +assert(result1.data.percentage === 50, 'Should extract data from status.message.parts'); +assert(result1.message === 'Processing inventory...', 'Should extract text from status.message.parts'); + +// Test 2: Completed status (Task) - extract from .artifacts +const completedResponse = { + id: 'task_123', + contextId: 'ctx_456', + status: { + state: 'TASK_STATE_COMPLETED', + timestamp: '2026-01-22T10:30:00.000Z' + }, + artifacts: [{ + artifactId: 'product-result', + parts: [ + { text: 'Found 3 products' }, + { data: { status: 'completed', cache_scope: 'account', products: [...], total: 3 } } + ] + }] +}; + +const result2 = handleA2aResponse(completedResponse); +assert(result2.data !== undefined, 'Completed status must have data'); +assert(Array.isArray(result2.data.products), 'Data should be direct AdCP payload'); + +// Test 3: Wrapper detection (should reject) +const wrappedResponse = { + id: 'task_123', + status: { state: 'TASK_STATE_COMPLETED' }, + artifacts: [{ + artifactId: 'product-result', + parts: [ + { data: { response: { products: [...] } } } + ] + }] +}; + +assert.throws(() => { + extractDataPartFromArtifacts(wrappedResponse); +}, /Invalid response format.*wrapper/); +``` + +### ❌ Incorrect Behavior (Common Mistakes) + +```javascript +// WRONG: Extracting from wrong location for interim status +function badHandleWorking(response) { + // ❌ TaskStatusUpdateEvent doesn't have .artifacts - data is in status.message.parts + const data = response.artifacts?.[0]?.parts?.find(isDataPart)?.data; + return { status: 'working', data }; // Will be null/undefined! +} + +// WRONG: Extracting from wrong location for completed status +function badHandleCompleted(response) { + // ❌ Task object has data in .artifacts, not in status.message.parts + const data = response.status?.message?.parts?.find(p => p.data)?.data; + return { status: 'completed', data }; // Will be null/undefined! +} + +// WRONG: Not checking for wrappers +function badExtraction(response) { + const payload = response.artifacts[0].parts[0].data; + // ❌ Returns { response: { products: [...] } } instead of { products: [...] } + return payload; // Client receives wrong structure! +} + +// WRONG: Accessing nested response field +function badClientUsage(result) { + // ❌ Client code shouldn't need to do this + const products = result.data.response.products; + // Should be: result.data.products +} +``` + + +## Error Handling + +A schema-valid business outcome, including a partial result with an `errors[]` +member, is still a completed A2A invocation. A non-streaming `SendMessage` +response selects the task branch: + +```json +{ + "task": { + "id": "task_123", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "signal-result", + "parts": [{ + "data": { + "status": "completed", + "signals": [], + "errors": [{ + "code": "NO_DATA_IN_REGION", + "message": "No signal data available for Australia" + }] + } + }] + }] + } +} +``` + +A fatal failure after execution starts uses a failed Task and carries structured +error data in its artifact. Pre-task routing failures use the A2A binding error +mechanism. + +```json +{ + "task": { + "id": "task_456", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_FAILED" }, + "artifacts": [{ + "artifactId": "adcp-error", + "parts": [{ + "data": { + "adcp_error": { + "code": "AUTHENTICATION_FAILED", + "message": "The API token is invalid or expired" + } + } + }] + }] + } +} +``` + +| Situation | A2A state | Data location | +|---|---|---| +| Schema-valid success, partial result, business rejection, or AdCP Submitted result | `TASK_STATE_COMPLETED` | `task.artifacts[0].parts[]` | +| Fatal failure after execution starts | `TASK_STATE_FAILED` | `task.artifacts[0].parts[]` | +| Native A2A policy rejection | `TASK_STATE_REJECTED` | `task.artifacts[0].parts[]` | +| Working, input-required, auth-required, or native submitted update | matching interim state | `statusUpdate.status.message.parts[]` | + +## Webhook Payloads + +A2A push notifications use a `StreamResponse` branch. Terminal delivery wraps +the same Task structure used by `SendMessageResponse`: + +```json +{ + "task": { + "id": "task_123", + "contextId": "ctx_456", + "status": { + "state": "TASK_STATE_COMPLETED", + "timestamp": "2026-01-22T10:30:00.000Z" + }, + "artifacts": [{ + "artifactId": "media-buy-result", + "parts": [ + { "text": "Media buy approved and live" }, + { "data": { "status": "completed", "media_buy_id": "mb_456", "confirmed_at": "2026-01-22T10:30:00.000Z", "revision": 1, "packages": [] } } + ] + }] + } +} +``` + +Interim delivery selects `statusUpdate`, and its server-authored Message carries +its own `messageId` plus the matching `taskId` and `contextId`: + +```json +{ + "statusUpdate": { + "taskId": "task_123", + "contextId": "ctx_456", + "status": { + "state": "TASK_STATE_INPUT_REQUIRED", + "timestamp": "2026-01-22T10:20:00.000Z", + "message": { + "messageId": "msg-input-001", + "taskId": "task_123", + "contextId": "ctx_456", + "role": "ROLE_AGENT", + "parts": [ + { "text": "Select a supported campaign start time." }, + { "data": { "reason": "START_TIME_REQUIRED" } } + ] + } + } + } +} +``` + +## File Parts in Responses + +File references may accompany the authoritative DataPart inside the Task +artifact. They never replace the typed AdCP response: + +```json +{ + "task": { + "id": "task_creative_789", + "contextId": "ctx_creative_789", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "creative-result", + "parts": [ + { "data": { "status": "completed", "creative_id": "cr_789" } }, + { "url": "https://cdn.example.com/cr_789/preview.mp4", "filename": "preview.mp4", "mediaType": "video/mp4" } + ] + }] + } +} +``` + +## Retry and Idempotency + +A continuation of an input-required A2A Task sends a new Message containing a +new `messageId`, the existing `taskId` and `contextId`, and a complete typed +profile invocation. Ordinary AdCP idempotency rules still apply to the task +input. Native `GetTask` observes an A2A transport Task; it does not replace +`get_task_status` for a durable AdCP operation. + +## Implementation Checklist + +When implementing A2A responses for AdCP: + +**Final Responses (status: "completed" or "failed") - Use `Task` object:** +- [ ] **Always include status field** from TaskState enum +- [ ] **Use `.artifacts` array with at least one DataPart** containing AdCP response payload +- [ ] **Include TextPart** with human-readable message (recommended for UX) +- [ ] **Use single artifact with multiple parts** (not multiple artifacts) +- [ ] **Use last DataPart as authoritative** if multiple exist +- [ ] **Never nest AdCP data in custom wrappers** (no `{ response: {...} }` objects) +- [ ] **DataPart content MUST match AdCP schemas** (validate against `[task]-response.json`) +- [ ] **Map an AdCP `status: "submitted"` response to A2A completed**, keep `task_id` only in the DataPart, and direct clients to the AdCP `get_task_status` task + +**Interim A2A Responses (status: "working", native "submitted", "input-required") - Use `TaskStatusUpdateEvent`:** +- [ ] **Use `status.message.parts[]` for optional data** (not `.artifacts`) +- [ ] **TextPart** is recommended for human-readable status updates +- [ ] **DataPart** is optional but follows AdCP schemas when provided (`[task]-async-response-[status].json`) +- [ ] **Interim schemas are work-in-progress** - clients may handle more loosely +- [ ] **Include progress indicators** when applicable (percentage, current_step, ETA) + +**Error Handling:** +- [ ] **Use `status: "failed"` for protocol errors only** (auth, invalid params, system errors) +- [ ] **Use `errors` array for task failures** (platform auth, partial data) with `status: "completed"` + +**General:** +- [ ] **Include taskId and contextId** for tracking +- [ ] **Follow discriminated union patterns** for task responses (check schemas) +- [ ] **Use correct payload type**: `Task` for final states, `TaskStatusUpdateEvent` for interim +- [ ] **Support taskId-based deduplication** for retry detection + +## See Also + +- [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) - Complete A2A integration guide +- [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) - Status handling patterns +- [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) - Fatal vs non-fatal errors +- [Protocol Comparison](/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison) - MCP vs A2A differences diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/index.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/index.mdx new file mode 100644 index 0000000000..fb54f61fa1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/index.mdx @@ -0,0 +1,28 @@ +--- +title: L0 — Wire & transport +sidebarTitle: L0 — Wire & transport +description: "Wire-and-transport layer of the AdCP stack. JSON-over-HTTP framing, MCP message envelopes, A2A SSE streams, schema validation, language-native type generation." +"og:title": "AdCP — L0 (Wire & transport)" +--- + +L0 takes protocol bytes off the wire and turns them into typed in-memory values, or serializes outbound requests against the published schemas. Symmetric on both sides — same primitives, mirrored direction. + +## What an SDK at L0 must provide + +If you're picking an SDK or porting one to a new language, this is the L0 build target: + +- **Generated language-native types** from the published JSON schemas (one type per request/response pair, plus shared resource types). +- **A schema validator** wired against the bundled schemas — so adopters can validate inbound and outbound payloads without hand-rolling the schema-loading dance. +- **Transport adapters** for at least one of \{MCP, A2A\}; ideally both. These typically wrap upstream protocol SDKs rather than reimplementing them. +- **A schema-bundle accessor** that finds the right schema files for the active AdCP version without forcing the adopter to hardcode paths. + +For the cumulative cross-layer story (what L0+L1+L2+L3 buys you), see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#l0--wire--transport). + +## Pages in this layer + +- **[Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas)** — schema bundle, supply-chain verification, type generation, version pinning. +- **[MCP guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide)** — `tools/call` envelope, JSON-RPC 2.0, transport adapter shape. +- **[A2A guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide)** — SSE event streams, task framing, artifact extraction. +- **[A2A response format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format)** — A2A wire-format reference. +- **[MCP response extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction)** — parsing `tools/call` responses to typed values. +- **[A2A response extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction)** — parsing A2A streams and artifacts. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide.mdx new file mode 100644 index 0000000000..e3f0ed607c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide.mdx @@ -0,0 +1,904 @@ +--- +title: MCP Guide +description: "AdCP MCP integration guide: tool call patterns, context_id management, response parsing, and wire format for Model Context Protocol implementations." +"og:title": "AdCP — MCP Guide" +--- + + +Transport-specific guide for integrating AdCP using the Model Context Protocol. For task handling, status management, and workflow patterns, see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +## Testing AdCP via MCP + +You can test AdCP tasks using the [CLI tools](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk#cli-tools) or by chatting with [Addie](https://agenticadvertising.org), the AgenticAdvertising.org assistant. + +## Tool Call Patterns + +### Basic Tool Invocation + +```javascript +// Standard MCP tool call +const response = await mcp.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442072", + buying_mode: "brief", + brand: { + domain: "premiumpetfoods.com" + }, + brief: "Video campaign for pet owners" +}); + +// All responses include status field (AdCP 1.6.0+) +console.log(response.status); // "completed" | "input-required" | "working" | etc. +console.log(response.message); // Human-readable summary +``` + +### Tool Call with Filters + +```javascript +// Structured parameters +const response = await mcp.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442073", + buying_mode: "brief", + brand: { + domain: "betnow.com" + }, + brief: "Sports betting app for March Madness", + filters: { + channels: ["ctv"], + delivery_type: "guaranteed", + max_cpm: 50 + } +}); +``` + +### Tool Call with Application-Level Context + +```javascript +// Pass opaque application-level context; agents must carry it back +const response = await mcp.call('build_creative', { + target_capability_id: 'premium_bespoke_display', + creative_manifest: { /* ... */ }, + context: { ui: 'buyer_dashboard', session: '123' } +}); + +// Response includes the same context at the top level +console.log(response.context); // { ui: 'buyer_dashboard', session: '123' } +``` + +## MCP Response Format + +**Normative:** AdCP MCP responses use a **flat structure** — envelope fields (`status`, `context_id`, `context`, `task_id`, `timestamp`, `replayed`, `adcp_error`, `governance_context`) and task-body fields appear as siblings at the root of the tool response. The `payload` object defined on [`core/protocol-envelope.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/protocol-envelope.json) is a documentary grouping construct, NOT a serialized wire key: body fields are NOT nested under a `payload:` key on MCP. This matches MCP's native `structuredContent` convention. + +```json +{ + "status": "completed", // envelope: unified task status + "message": "Found 5 products", // envelope: human-readable summary + "context_id": "ctx-abc123", // envelope: session identifier (server-managed) + "context": { "ui": "buyer_dashboard" }, // envelope: per-request opaque echo (caller-owned) + "timestamp": "2026-05-19T14:25:30Z", // envelope: response generation time + "products": [...], // body: task-specific data, sibling of envelope fields + "errors": [...] // body: per-record / payload-level errors (warning severity allowed) +} +``` + +**Producer rule.** MCP tool implementations MUST emit envelope fields and body fields as flat siblings at the root. Nesting body fields under a `payload:` key is non-conformant — receivers parse from the flat root, and a nested representation breaks every shipping SDK. + +**Receiver rule.** MCP tool consumers MUST parse envelope and body fields from the flat root of the tool response. Receivers MUST NOT require a nested `payload:` key; the schema's `payload` is documentation, not a wire requirement. When `status` is absent on the response (legacy or transport-native state carrier), receivers MUST default to `completed` for non-error responses and inspect `adcp_error` for error envelopes. + +**`context_id` vs `context` — semantically orthogonal.** +- `context_id` is a **server-managed session identifier** for tracking related operations across multiple tool invocations. The server issues it; the caller MAY echo it on subsequent calls to thread a session. Distinct from MCP's transport-level session. +- `context` is a **caller-supplied opaque echo object** ([`core/context.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/context.json)) — the agent preserves it byte-for-byte without parsing. Used for buyer-side correlation (UI session IDs, trace IDs, custom metadata). +- Both MAY appear on the same response. They are NOT aliases. + +**Status handling**: see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for complete status handling patterns. + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for complete status handling patterns. + +## Available Tools + +All AdCP tasks are available as MCP tools: + +### Protocol Tools +```javascript +await mcp.call('get_adcp_capabilities', {...}); // Discover agent capabilities (start here) +``` + +### Media Buy Tools +```javascript +await mcp.call('get_products', {...}); // Discover inventory +// Read each returned product's canonical format_options[] for format specs +await mcp.call('create_media_buy', {...}); // Create campaigns +await mcp.call('update_media_buy', {...}); // Modify campaigns +await mcp.call('sync_creatives', {...}); // Manage creative assets +await mcp.call('get_media_buy_delivery', {...}); // Performance metrics +await mcp.call('provide_performance_feedback', {...}); // Share outcomes +``` + +### Signals Tools +```javascript +await mcp.call('get_signals', {...}); // Discover audience signals +await mcp.call('activate_signal', {...}); // Deploy signals to platforms +``` + +**Task Parameters**: See individual task documentation in [Media Buy](/dist/docs/3.2.0-beta.4/media-buy) and [Signals](/dist/docs/3.2.0-beta.4/signals/overview) sections. + +## MCP Tasks as a Transport Wrapper + +AdCP task lifecycle state is application-layer state. MCP Tasks can wrap a `tools/call` request so the MCP client, rather than the LLM, waits for the `CallToolResult`; they do not replace the AdCP `task_id`, status payloads, webhooks, or polling/reconciliation surfaces. + +A task-augmented MCP call can complete successfully after delivering an AdCP payload whose `status` is still `submitted`. From that point, the media-buy, creative, signals, or governance workflow remains open at the AdCP layer and should be observed with webhooks or AdCP polling. + +:::warning Client support is limited +Most chat-based MCP clients (Claude Desktop, Cursor) do not yet support MCP Tasks. If your client doesn't support task-augmented tool calls, use standard `tools/call` plus **webhooks** or **AdCP polling** instead — these work with any MCP client. See [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) and [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for transport-independent patterns. + +MCP Tasks are useful when you control the MCP client (e.g., building your own orchestrator with `@modelcontextprotocol/sdk`) and want protocol-level waiting for the initial `tools/call` result. They are optional transport plumbing, not the canonical AdCP task store. +::: + +### SDK Implementation + +If you use the `@modelcontextprotocol/sdk` package, MCP Tasks support requires minimal code. Pass an `InMemoryTaskStore` (or your own `TaskStore` implementation) to the Server constructor — the SDK auto-registers handlers for `tasks/get`, `tasks/result`, `tasks/list`, and `tasks/cancel`: + +```typescript +import { Server } from '@modelcontextprotocol/sdk/server/index.js'; +import { InMemoryTaskStore } from '@modelcontextprotocol/sdk/experimental/tasks'; + +const taskStore = new InMemoryTaskStore(); + +const server = new Server( + { name: 'my-adcp-agent', version: '1.0.0' }, + { + capabilities: { + tools: {}, + tasks: { + list: {}, + cancel: {}, + requests: { tools: { call: {} } }, + }, + }, + taskStore, + }, +); +``` + +In your `tools/call` handler, check for the `task` field and use the store: + +```typescript +server.setRequestHandler(CallToolRequestSchema, async (request, extra) => { + const taskField = request.params.task; + const result = await executeMyTool(request.params); + + if (!taskField) return result; // Synchronous path + + // Task-augmented: extra.taskStore handles requestId, sessionId, + // and sends notifications/tasks/status on completion + const task = await extra.taskStore.createTask({ ttl: taskField.ttl }); + await extra.taskStore.storeTaskResult( + task.taskId, + result.isError ? 'failed' : 'completed', + result, + ); + return { task: await extra.taskStore.getTask(task.taskId) }; +}); +``` + +The SDK handles polling, cancellation, TTL cleanup, and `_meta` injection for `tasks/result` responses. `InMemoryTaskStore` is non-persistent — for production, implement a `TaskStore` backed by your database. + +If you use `McpServer` instead of `Server`, register task-capable tools with `server.experimental.tasks.registerToolTask()` — the higher-level API enforces this for tools that declare `taskSupport`. + +:::warning Production task isolation +`InMemoryTaskStore` does not scope tasks by session — any client that knows a task ID can read, cancel, or list it. For production, implement a `TaskStore` that filters by `sessionId` on every operation. Also clamp client-provided TTL values server-side and enforce rate limits on task creation. +::: + +### Server Capabilities + +AdCP MCP servers declare `tasks` in their capabilities: + +```json +{ + "capabilities": { + "tools": {}, + "tasks": { + "list": {}, + "cancel": {}, + "requests": { + "tools": { "call": {} } + } + } + } +} +``` + +### Tool-Level Task Support + +Each tool declares whether it supports task-augmented execution via `execution.taskSupport`: + +| Tool | `taskSupport` | Rationale | +|------|---------------|-----------| +| `get_products` | `optional` | Complex searches, HITL clarification | +| `create_media_buy` | `optional` | External systems, approval workflows | +| `update_media_buy` | `optional` | External system updates | +| `build_creative` | `optional` | Human creative review, long production renders | +| `sync_creatives` | `optional` | Asset processing and transcoding | +| `get_signals` | `optional` | Complex audience discovery | +| `activate_signal` | `optional` | Platform deployment | +| `sync_plans` | `optional` | Governance plan processing | +| `check_governance` | `optional` | External policy evaluation | +| `report_plan_outcome` | `optional` | External system updates | +| `acquire_rights` | `optional` | Approval workflows | +| `update_rights` | `optional` | External updates | +| `get_rights` | `optional` | External lookups | +| `get_adcp_capabilities` | `forbidden` | Instant, static | +| `preview_creative` | `forbidden` | Renders existing manifest | +| `list_creatives` | `forbidden` | Session state lookup | +| `get_media_buys` | `forbidden` | Session state lookup | +| `get_media_buy_delivery` | `forbidden` | Session state lookup | +| `get_creative_delivery` | `forbidden` | Session state lookup | +| `get_plan_audit_logs` | `forbidden` | Session state lookup | +| `get_brand_identity` | `forbidden` | Instant lookup | + +Tools with `taskSupport: "optional"` can be called either way: +- **Without `task` field**: Synchronous — returns the result directly +- **With `task` field**: Returns a `CreateTaskResult` immediately; poll the MCP task via transport-native `tasks/get`, retrieve the `CallToolResult` via transport-native `tasks/result`, then inspect the AdCP payload inside that result. + +### Invoking a Tool as a Task + +Include the `task` field in your `tools/call` request: + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { + "name": "get_products", + "arguments": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655442005", + "buying_mode": "brief", + "brief": "Premium CTV inventory for luxury auto" + }, + "task": { + "ttl": 3600000 + } + } +} +``` + +The server returns a task handle immediately: + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "task": { + "taskId": "786512e2-9e0d-44bd-8f29-789f320fe840", + "status": "working", + "statusMessage": "Searching inventory for luxury auto CTV placements", + "createdAt": "2025-11-25T10:30:00Z", + "lastUpdatedAt": "2025-11-25T10:30:00Z", + "ttl": 3600000, + "pollInterval": 5000 + } + } +} +``` + +The client polls the MCP transport task with `tasks/get` (respecting `pollInterval`) until the task reaches a terminal state (`completed`, `failed`, or `cancelled`), then retrieves the `CallToolResult` via `tasks/result`. To abort the transport task, send `tasks/cancel` with the MCP `taskId`. + +After retrieving the `CallToolResult`, inspect the AdCP response payload. If it contains `status: "submitted"` and an AdCP `task_id`, the transport task has delivered the queued AdCP response but the application workflow is still open. Continue with webhooks or AdCP polling (`get_task_status`, or legacy `tasks/get` in 3.x). + +### MCP Task Status vs. AdCP Status + +AdCP uses a richer set of statuses than MCP Tasks. If an implementation mirrors AdCP progress into a transport-native MCP Task, use this mapping only for the MCP wrapper. The AdCP payload remains the source of truth for domain workflow state: + +| AdCP Status | MCP Task Status | Notes | +|-------------|-----------------|-------| +| `working` | `working` | Direct mapping | +| `submitted` | `working` | Use `statusMessage` to indicate queued state | +| `input-required` | `input_required` | Server moves task to `input_required`, sends elicitation via `tasks/result` | +| `completed` | `completed` | Direct mapping | +| `failed` | `failed` | Direct mapping | +| `rejected` (transport lifecycle) | `failed` | MCP Tasks has no native rejected state; use `statusMessage` for the invocation-level rejection reason | +| `rejected` (task-specific business outcome) | `completed` | Store the AdCP result unchanged with payload `status: "rejected"`; direct tool calls use `isError: false` | +| `canceled` | `cancelled` | Spelling difference (AdCP uses American, MCP uses British) | +| `auth-required` | `input_required` | Elicitation requests credentials | + +### Webhooks for Long-Lived Operations + +MCP Tasks handles waiting within the MCP session, but many AdCP operations outlive a single session (e.g., a media buy that takes 24 hours for publisher approval). For these, register `push_notification_config` on the AdCP call: + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { + "name": "create_media_buy", + "arguments": { + "buyer_ref": "nike_q1_2025", + "packages": [], + "push_notification_config": { + "url": "https://buyer.com/webhooks/adcp/create_media_buy/op_abc123", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "shared_secret_32_chars" + } + } + }, + "task": { + "ttl": 86400000 + } + } +} +``` + +The MCP Task tracks the transport wrapper within the session. The webhook tracks the AdCP application task independently and remains valid even after the MCP session ends. See [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for webhook payload formats and authentication. + +## Context Management (MCP-Specific) + +**Critical**: MCP requires manual context management. You must pass `context_id` to maintain conversation state. + +### Context Session Pattern + +```javascript +class McpAdcpSession { + constructor(mcpClient) { + this.mcp = mcpClient; + this.contextId = null; + } + + async call(tool, params, options = {}) { + const request = { + tool: tool, + arguments: { ...params } + }; + + // Include context from previous calls + if (this.contextId) { + request.arguments.context_id = this.contextId; + } + + // Include webhook config in tool arguments + if (options.push_notification_config) { + request.arguments.push_notification_config = options.push_notification_config; + } + + // Task augmentation for async operations + if (options.task) { + request.task = options.task; + } + + const response = await this.mcp.callTool(request); + + // Save context for next call + if (response.context_id) { + this.contextId = response.context_id; + } + + return response; + } + + reset() { + this.contextId = null; + } +} +``` + +### Usage Examples + +#### Basic Session with Context +```javascript +const session = new McpAdcpSession(mcp); + +// First call - no context needed +const products = await session.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442074", + buying_mode: "brief", + brief: "Sports campaign" +}); + +// Follow-up - context automatically included +const refined = await session.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442075", + buying_mode: "brief", + brief: "Focus on premium CTV" +}); +// Session remembers previous interaction +``` + +#### Async Operations with MCP Tasks + +For tools with `taskSupport: "optional"`, pass the `task` option to use MCP Tasks: + +```javascript +const session = new McpAdcpSession(mcp); + +// Synchronous call (no task augmentation) +const products = await session.call('get_products', { + idempotency_key: '550e8400-e29b-41d4-a716-446655442006', + buying_mode: 'brief', + brief: "Sports campaign" +}); + +// Task-augmented call for a long-running operation +const result = await session.call('create_media_buy', + { + packages: [...], + }, + { + task: { ttl: 86400000 }, // 24-hour TTL + push_notification_config: { // Webhook backup for session-outliving ops + url: "https://buyer.com/webhooks/adcp/create_media_buy/op_abc123", + authentication: { + schemes: ["HMAC-SHA256"], + credentials: "shared_secret_32_chars" + } + } + } +); + +// result is a CreateTaskResult for the MCP wrapper. +// After tasks/result, inspect the AdCP payload; if it is still submitted, +// continue via webhook or AdCP get_task_status / legacy tasks/get. +``` + +**Webhook POST format:** +```json +{ + "task_id": "task_456", + "status": "completed", + "timestamp": "2025-01-22T10:30:00Z", + "result": { + "media_buy_id": "mb_12345", + "packages": [...] + } +} +``` + +**Note:** Receivers MUST correlate webhooks using `operation_id` (and `task_type`) from the payload body, **not** by parsing the webhook URL. Buyers MAY embed `operation_id` in the URL path or query for their own server-side routing convenience (the URL structure is opaque to the seller and entirely buyer-defined), but the seller never parses that URL — the seller echoes the buyer-supplied `operation_id` it was given at registration, and the wire-level source of truth for correlation is the payload field. See [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/mcp-webhook-payload.json) and [Webhooks — Operation IDs](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#operation-ids-and-url-templates). + +The `result` field contains the AdCP data payload. For `completed`/`failed` statuses, this is the full task response (e.g., `create-media-buy-response.json`). For other statuses, use the status-specific schemas (e.g., `create-media-buy-async-response-working.json`). + +#### MCP Webhook Envelope Fields + +The [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/mcp-webhook-payload.json) envelope includes: + +**Required fields:** +- `idempotency_key` — Per-fire transport dedup key (see schema for full semantics) +- `operation_id` — Buyer-supplied correlation identifier echoed verbatim by the seller. Receivers use this — **not** the URL path — to route notifications to the originating task. Sellers MUST NOT derive this by parsing the URL; the URL structure is implementation-defined from the seller's point of view. +- `task_id` — Unique task identifier for correlation +- `task_type` — Task name (e.g., `create_media_buy`, `sync_creatives`) for routing to per-task handlers +- `status` — Current task status (completed, failed, working, input-required, etc.) +- `timestamp` — ISO 8601 timestamp when webhook was generated + +**Optional fields:** +- `notification_id` — Event-layer stable id for re-emission tracking (see schema) +- `protocol` — AdCP protocol family (`media-buy` or `signals`) +- `context_id` — Conversation/session identifier +- `message` — Human-readable context about the status change + +**Data field:** +- `result` — Task-specific AdCP payload (see Data Schema Validation below) + +#### Webhook Trigger Rules + +Webhooks are sent when **all** of these conditions are met: + +1. **Task type supports async** (e.g., `create_media_buy`, `sync_creatives`, `get_products`) +2. **`pushNotificationConfig` is provided** in the request +3. **Task runs asynchronously** — initial response is `working` or `submitted` + +If the initial response is already terminal (`completed`, `failed`, `rejected`), no webhook is sent—you already have the result. + +**Status changes that trigger webhooks:** +- `working` → Progress update (task actively processing) +- `input-required` → Human input needed +- `completed` → Final result available +- `failed` → Error details + +#### Data Schema Validation + +The `result` field in MCP webhooks uses status-specific schemas: + +| Status | Schema | Contents | +|--------|--------|----------| +| `completed` | `[task]-response.json` | Full task response (success branch) | +| `failed` | `[task]-response.json` | Full task response (error branch) | +| `working` | `[task]-async-response-working.json` | Progress info (`percentage`, `step`) | +| `input-required` | `[task]-async-response-input-required.json` | Requirements, approval data | +| `submitted` | `[task]-async-response-submitted.json` | Acknowledgment (usually minimal) | + +Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/async-response-data.json) + +#### Webhook Handler Example + +```javascript +const express = require('express'); +const app = express(); + +app.post('/webhooks/adcp/:task_type/:agent_id/:operation_id', async (req, res) => { + const { task_type, agent_id, operation_id } = req.params; + const webhook = req.body; + + // Verify webhook authenticity (HMAC-SHA256 example) + const signature = req.headers['x-adcp-signature']; + const timestamp = req.headers['x-adcp-timestamp']; + if (!verifySignature(webhook, signature, timestamp)) { + return res.status(401).json({ error: 'Invalid signature' }); + } + + // Handle status changes + switch (webhook.status) { + case 'input-required': + // Alert human that input is needed + await notifyHuman({ + operation_id, + message: webhook.message, + context_id: webhook.context_id, + data: webhook.result + }); + break; + + case 'completed': + // Process the completed operation + if (task_type === 'create_media_buy') { + await handleMediaBuyCreated({ + media_buy_id: webhook.result.media_buy_id, + packages: webhook.result.packages + }); + } + break; + + case 'failed': + // Handle failure + await handleOperationFailed({ + operation_id, + error: webhook.result?.errors, + message: webhook.message + }); + break; + + case 'working': + // Update progress UI + await updateProgress({ + operation_id, + percentage: webhook.result?.percentage, + message: webhook.message + }); + break; + + case 'canceled': + await handleOperationCanceled(operation_id, webhook.message); + break; + } + + // Always return 200 for successful processing + res.status(200).json({ status: 'processed' }); +}); + +function verifySignature(payload, signature, timestamp) { + const crypto = require('crypto'); + const expectedSig = crypto + .createHmac('sha256', process.env.WEBHOOK_SECRET) + .update(timestamp + JSON.stringify(payload)) + .digest('hex'); + return signature === `sha256=${expectedSig}`; +} +``` + +#### Task Management and Polling +```javascript +// Check status of a specific AdCP task +const taskStatus = await session.call('get_task_status', { + task_id: 'task_456', + include_result: true +}); +if (taskStatus.status === 'completed') { + console.log('Result:', taskStatus.result); +} + +// State reconciliation +const reconciliation = await session.call('list_tasks', { + filters: { statuses: ['submitted', 'working', 'input-required'] } +}); +if (reconciliation.tasks.length > 0) { + console.log('Found open AdCP tasks:', reconciliation.tasks); + // Start tracking these tasks +} + +// List all pending operations +const pending = await session.listPendingTasks(); +console.log(`${pending.tasks.length} operations in progress`); +``` + +### Context Expiration Handling + +```javascript +async function handleContextExpiration(session, tool, params) { + try { + return await session.call(tool, params); + } catch (error) { + if (error.message?.includes('context not found')) { + // Context expired - start fresh + session.reset(); + return session.call(tool, params); + } + throw error; + } +} +``` + +**Key Difference**: Unlike A2A which manages context automatically, MCP requires explicit context_id management. + +## Handling Async Operations + +When an AdCP response returns `working` or `submitted` status, you need a way to receive the result. This applies whether or not your MCP client supports MCP Tasks — the patterns below work with any client. + +| Approach | Best For | Trade-offs | +|----------|----------|------------| +| **Webhooks** | Production systems, any task duration | Handles hours/days, but requires a public endpoint | +| **Polling** | Simple integrations, short tasks | Easy to implement, but inefficient for long waits | +| **MCP Tasks** | Custom clients using the MCP SDK | Protocol-native wrapper for the initial `tools/call`, but does not replace AdCP task tracking | + +### Option 1: Webhooks (recommended) + +Configure a webhook URL and the server will POST the result when the operation completes. This is the right approach for `submitted` operations that are blocked on external dependencies (publisher approval, human review). + +```javascript +const response = await session.call('create_media_buy', + { + packages: [...], + budget: { total: 150000, currency: "USD" } + }, + { + push_notification_config: { + url: "https://buyer.com/webhooks/adcp/create_media_buy/op_abc123", + authentication: { + schemes: ["HMAC-SHA256"], + credentials: "shared_secret_32_chars" + } + } + } +); + +// If status is 'submitted', the server will POST the result to your webhook +// No polling needed — just handle the webhook when it arrives +``` + +See [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for payload formats and authentication. + +### Option 2: Polling (backup) + +Use AdCP polling as a backup for `submitted` operations, or when you can't expose a webhook endpoint. In 3.x, prefer `get_task_status` when the seller advertises it; otherwise use legacy `tasks/get`: + +```javascript +async function pollForResult(session, taskId, pollInterval = 30000) { + while (true) { + const response = await session.call('get_task_status', { + task_id: taskId, + include_result: true + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + return response; + } + + if (response.status === 'input-required') { + const input = await promptUser(response.message); + return session.call('create_media_buy', { + context_id: response.context_id, + additional_info: input + }); + } + + await new Promise(resolve => setTimeout(resolve, pollInterval)); + } +} +``` + +### Handling different statuses + +```javascript +const initial = await session.call('create_media_buy', { + packages: [...], + budget: { total: 100000, currency: "USD" } +}); + +switch (initial.status) { + case 'completed': + // Done — result is inline + console.log('Created:', initial.media_buy_id); + break; + + case 'working': + // Server is actively processing (>30s) — just wait, result will arrive + // No polling needed; 'working' is a progress signal, not a polling trigger + console.log('Processing:', initial.message); + break; + + case 'submitted': + // Blocked on external dependency — use webhook or poll + console.log(`Task ${initial.task_id} queued for approval`); + break; + + case 'input-required': + // Blocked on user input + console.log('Need more info:', initial.message); + break; +} +``` + +## Integration Example + +```javascript +// Initialize MCP session with context management +const session = new McpAdcpSession(mcp); + +// Use unified status handling (see Core Concepts) +async function handleAdcpCall(tool, params, options = {}) { + const response = await session.call(tool, params, options); + + switch (response.status) { + case 'input-required': + // Handle clarification (see Core Concepts for patterns) + const input = await promptUser(response.message); + return session.call(tool, { ...params, additional_info: input }); + + case 'working': + // Server is actively processing — just wait, result will arrive + console.log('Processing:', response.message); + return response; + + case 'submitted': + // Blocked on external dependency — webhook or poll + console.log(`Task ${response.task_id} submitted, webhook will notify`); + return { pending: true, task_id: response.task_id }; + + case 'completed': + return response; // Task-specific fields are at the top level + + case 'failed': + throw new Error(response.message); + } +} + +// Example usage +const products = await handleAdcpCall('get_products', { + brief: "CTV campaign for luxury cars" +}); +``` + +## MCP-Specific Considerations + +### Server-side tool wrappers MUST tolerate envelope fields + +Buyer SDKs send envelope-level fields (`idempotency_key`, `context_id`, `context`, `governance_context`, `push_notification_config`) uniformly across all AdCP tool calls — including read-only tools that don't consume them. MCP tool implementations MUST accept these fields and ignore the ones they don't use; they MUST NOT reject a call because an envelope field is present. Common traps: + +- **FastMCP / Pydantic strict signatures** — declare `idempotency_key: str | None = None` (and the other envelope fields) as accept-and-ignore optionals, or use `**kwargs` to swallow unknowns. `model_config = ConfigDict(extra='allow')` on input models if you control them. +- **Zod / valibot with `.strict()`** on input schemas — drop `.strict()` or use a passthrough variant. +- **OpenAPI codegen** that injects `additionalProperties: false` into input models — fix the generator config; the spec's request schemas declare `additionalProperties: true`. + +A wrapper that raises `unexpected_keyword_argument` on `idempotency_key` will fail compliance against any buyer SDK that follows the envelope contract. See [security.mdx > Server-side tool wrapper conformance](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#server-side-tool-wrapper-conformance) for the normative rule. + +### Tool Discovery +```javascript +// List available tools — use get_adcp_capabilities for runtime feature detection +const tools = await mcp.listTools(); + +// Check which tools support async execution +const asyncTools = tools.filter(t => t.execution?.taskSupport === 'optional'); +``` + +### AdCP Extension via MCP Server Card + + +**Recommended**: Use [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for runtime capability discovery. The server card extension provides static metadata for tool catalogs and registries. + + +MCP servers can declare AdCP support via a server card at `/.well-known/mcp.json` (or `/.well-known/server.json`). AdCP-specific metadata goes in the `_meta` field using the `adcontextprotocol.org` namespace. + +```json +{ + "name": "io.adcontextprotocol/media-buy-agent", + "version": "1.0.0", + "title": "AdCP Media Buy Agent", + "description": "AI-powered media buying agent implementing AdCP", + "tools": [ + { "name": "get_products" }, + { "name": "create_media_buy" }, + { "name": "get_adcp_capabilities" } + ], + "_meta": { + "adcontextprotocol.org": { + "adcp_version": "2.6.0", + "protocols_supported": ["media_buy"], + "extensions_supported": ["sustainability"] + } + } +} +``` + +**Discovering AdCP support:** + +```javascript +// Check both possible locations for MCP server card +const serverCard = await fetch('https://sales.example.com/.well-known/mcp.json') + .then(r => r.ok ? r.json() : null) + .catch(() => null) + || await fetch('https://sales.example.com/.well-known/server.json') + .then(r => r.json()); + +// Check for AdCP metadata +const adcpMeta = serverCard?._meta?.['adcontextprotocol.org']; + +if (adcpMeta) { + console.log('AdCP Version:', adcpMeta.adcp_version); + console.log('Supported domains:', adcpMeta.protocols_supported); + // ["media_buy", "creative", "signals"] + console.log('Typed extensions:', adcpMeta.extensions_supported); + // ["sustainability"] +} +``` + +**Benefits:** +- Clients can discover AdCP capabilities without making test calls +- Declare which protocol domains you implement (media_buy, creative, signals) +- Declare which typed extensions you support (see [Context & Sessions](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#extension-fields-ext)) +- Enable compatibility checks based on version + +:::note +The `adcp_version` field in server card metadata is a v2 convention and is not part of the v3 spec. For v3 version negotiation, the buyer sends release-precision `adcp_version` (e.g., `"3.1"`) on every request, and the seller advertises supported releases via `adcp.supported_versions` on [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) and echoes `adcp_version` at the envelope root on every response. The legacy integer-only `adcp_major_version` field is still accepted for backwards compatibility. See [versioning.mdx § Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) for the full contract. +::: + +**Note:** The `_meta` field uses reverse DNS namespacing per the [MCP server.json spec](https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/server-json/generic-server-json.md). AdCP servers should support both `/.well-known/mcp.json` and `/.well-known/server.json` locations. + +### Parameter Validation +```javascript +// MCP provides tool schemas for validation +const toolSchema = await mcp.getToolSchema('get_products'); +// Use schema to validate parameters before calling +``` + +### Error Handling + +AdCP errors are returned as tool-level responses with `isError: true` and the error in `structuredContent.adcp_error`. For the full extraction logic and JSON-RPC transport codes, see [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors). + +```javascript +try { + const response = await session.call('get_products', params); + + // Check for AdCP application errors (isError: true with structured data) + if (response.isError) { + const adcpError = response.structuredContent?.adcp_error; + if (adcpError) { + // Structured error with code, recovery, retry_after, etc. + console.log('AdCP error:', adcpError.code, adcpError.recovery); + } + } +} catch (mcpError) { + // MCP transport errors (connection, auth, etc.) + // Check for AdCP-structured transport errors + const adcpError = mcpError.data?.adcp_error; + if (adcpError) { + console.log('Transport error:', adcpError.code); + } else { + console.error('MCP Error:', mcpError); + } +} +``` + +## Best Practices + +1. **Use session wrapper** for automatic context management +2. **Check status field** before processing response data +3. **Handle context expiration** gracefully with retries +4. **Reference Core Concepts** for status handling patterns +5. **Validate parameters** using MCP tool schemas when available + +## Next Steps + +- **Core Concepts**: Read [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.2.0-beta.4/media-buy) and [Signals](/dist/docs/3.2.0-beta.4/signals/overview) +- **Protocol Comparison**: Compare with [A2A integration](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) +- **Examples**: Find complete workflow examples in Core Concepts + +**For status handling, async operations, and clarification patterns, see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) - this guide focuses on MCP transport specifics only.** diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction.mdx new file mode 100644 index 0000000000..1a614af476 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction.mdx @@ -0,0 +1,163 @@ +--- +title: MCP Response Extraction +description: "How to extract AdCP success response data from MCP tool results: structuredContent, text fallback, and client implementation requirements." +"og:title": "AdCP — MCP Response Extraction" +--- + +This page defines the normative algorithm for extracting AdCP success response data from MCP tool results. For error extraction, see [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors). + +## Layer Separation + +| Path | When | Data Source | +|---|---|---| +| Success extraction (this page) | `isError` absent or `false` | `structuredContent` or `content[].text` | +| Error extraction ([transport-errors](/dist/docs/3.2.0-beta.4/building/operating/transport-errors)) | `isError: true` | `structuredContent.adcp_error` or text fallback | + +Clients MUST check `isError` before deciding which extraction path to use. A response with `isError: true` MUST NOT be processed as a success response, even if it contains `structuredContent` with non-error data. + +## Extraction Algorithm + +Clients MUST extract AdCP data from MCP tool results in this order: + +1. **Guard: reject error responses.** If `isError` is truthy, return null. Error extraction is a separate path. +2. **`structuredContent`** — If present and is a non-array object, return it. If the only key is `adcp_error`, return null (this is an error response missing the `isError` flag). +3. **Text fallback** — Iterate `content[]` items in array order. For each item where `type === 'text'`, enforce a 1MB size limit, then attempt `JSON.parse`. If the result is a non-array object, return it. Skip items that fail to parse, parse as non-objects, or contain only an `adcp_error` key. +4. **No structured data found** — Return null. The response is plain text with no machine-readable AdCP data. + + +```javascript MCP Client +function extractAdcpResponseFromMcp(response) { + // 1. Error responses go through transport-errors extraction + if (response.isError) return null; + + // 2. structuredContent (preferred — MCP 2025-03-26+) + if (response.structuredContent != null + && typeof response.structuredContent === 'object' + && !Array.isArray(response.structuredContent)) { + const sc = response.structuredContent; + // adcp_error-only structuredContent is an error missing isError flag + const keys = Object.keys(sc); + if (keys.length === 1 && keys[0] === 'adcp_error') return null; + return sc; + } + + // 3. Text fallback — JSON.parse content[].text + if (response.content && Array.isArray(response.content)) { + for (const item of response.content) { + if (item.type === 'text' && item.text) { + if (item.text.length > 1_048_576) continue; // 1MB size limit + try { + const parsed = JSON.parse(item.text); + if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) { + // Skip adcp_error-only payloads (error missing isError flag) + const keys = Object.keys(parsed); + if (keys.length === 1 && keys[0] === 'adcp_error') continue; + return parsed; + } + } catch { /* not JSON */ } + } + } + } + + return null; +} +``` + + +## Extraction Paths + +### structuredContent (Preferred) + +MCP 2025-03-26 introduced `structuredContent` for typed tool results. AdCP servers return the full response payload here: + +```json +{ + "content": [{"type": "text", "text": "Found 3 products matching your brief."}], + "structuredContent": { + "status": "completed", + "message": "Found 3 products", + "products": [ + {"product_id": "ctv_sports_premium", "name": "Premium Sports CTV"}, + {"product_id": "ctv_news_standard", "name": "Standard News CTV"} + ] + } +} +``` + +The `structuredContent` object IS the AdCP response — task-specific fields (`products`, `media_buy_id`, `status`, etc.) are at the top level, not nested. + +### Text Fallback + +Older MCP servers (pre-2025-03-26) serialize the response as JSON in `content[].text`: + +```json +{ + "content": [ + {"type": "text", "text": "{\"status\":\"completed\",\"products\":[{\"product_id\":\"ctv_premium\"}]}"} + ] +} +``` + +Clients parse the first text item that yields a JSON object. When both `structuredContent` and text JSON exist, `structuredContent` takes precedence. + +## Relationship to Error Extraction + +Success and error extraction are complementary: + +```javascript +function handleMcpResponse(response) { + // Try error extraction first (only runs if isError is true) + const error = extractAdcpErrorFromMcp(response); + if (error) return handleError(error); + + // Then try success extraction + const data = extractAdcpResponseFromMcp(response); + if (data) return handleSuccess(data); + + // Plain text response — no structured data + return handlePlainText(response.content); +} +``` + +## Security Considerations + +### Seller-Controlled Data + +All data in `structuredContent` and `content[].text` is seller-controlled. The same prompt injection and data boundary requirements from [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors#security-considerations) apply. + +### Size Limits + +Clients SHOULD enforce a maximum payload size before processing. A recommended limit is 1MB for `structuredContent`. For text fallback, apply the limit before `JSON.parse` to prevent memory exhaustion from oversized payloads. + +### Prototype Pollution + +Clients MUST NOT merge extracted response objects into application state via `Object.assign` or spread without filtering keys. Seller-controlled keys like `__proto__` or `constructor` can trigger prototype pollution. Validate against the expected task response schema before merging. + +### Type Confusion + +Clients MUST check `isError` before success extraction. Without this guard, a client could process an error response as success data, leading to incorrect business logic (e.g., treating a `RATE_LIMITED` error as product data). + +## Client Library Requirements + +Client libraries that implement this spec MUST: + +1. **Check `isError` before extraction.** Return null for error responses. +2. **Prefer `structuredContent`.** Only fall back to text parsing when `structuredContent` is absent. +3. **Validate parsed text.** Only accept non-array objects from `JSON.parse`. Reject arrays, strings, numbers, booleans, and null. +4. **Handle `adcp_error`-only `structuredContent`.** When `structuredContent` contains only an `adcp_error` key, return null — this is an error response that may be missing the `isError` flag. + +## Test Vectors + +Machine-readable test vectors are available at [`/static/test-vectors/mcp-response-extraction.json`](https://adcontextprotocol.org/test-vectors/mcp-response-extraction.json). Each vector contains: + +- `path`: extraction path (`structuredContent` or `text_fallback`) +- `response`: the MCP tool result envelope +- `expected_data`: the AdCP data that should be extracted (or `null`) + +Client libraries SHOULD validate their extraction logic against these vectors. + +## See Also + +- [Transport Error Mapping](/dist/docs/3.2.0-beta.4/building/operating/transport-errors) — error extraction from MCP and A2A +- [A2A Response Extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction) — equivalent spec for A2A +- [MCP Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide) — MCP transport integration diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas.mdx new file mode 100644 index 0000000000..d11fcb139b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas.mdx @@ -0,0 +1,467 @@ +--- +title: Schemas +sidebarTitle: Schemas +description: "AdCP JSON schemas: where to fetch them, the protocol tarball, schema versioning, bundled vs $ref-resolving variants, and how to verify supply-chain provenance via Sigstore." +"og:title": "AdCP — Schemas" +--- + +The L0 wire layer is JSON-over-HTTP framed by published JSON Schemas. This page is the reference for getting the schemas — where they live, how to pin a version, how to verify supply-chain provenance, and the directory shape inside a release. If you're picking an SDK rather than the schemas themselves, see [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk). + +## Schema access + +AdCP schemas are available from two sources: + +| Source | URL | Best For | +|--------|-----|----------| +| Website | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/` | Runtime fetching, version aliases | +| GitHub | `https://github.com/adcontextprotocol/adcp/tree/main/dist/schemas` | Offline access, CI/CD pipelines | + +Both sources contain identical schemas. The GitHub repository includes all released versions with bundled schemas committed directly to the codebase. + +### Schema identity and offline resolution + +The `latest` tree and releases cut after this behavior was introduced use canonical HTTPS URIs for root `$id` values and external `$ref` values, for example `https://adcontextprotocol.org/schemas/{version}/core/product.json`. These URIs are stable schema identifiers; a validator does not have to fetch them over the network. Older release directories are immutable and retain their original `/schemas/...` references; for offline use of those releases, select their `bundled/` schemas. + +When using the modular schema tree from a downloaded tarball, configure the validator or code generator to map the canonical `https://adcontextprotocol.org/schemas/{version}/` prefix to the extracted `schemas/` directory. Tools that cannot register URI-to-file mappings should use the corresponding `schemas/bundled/` artifact, which has external `$ref` values resolved inline. + +For Python's `jsonschema`, the `referencing` registry can perform that mapping without network access: + +```python +import json +from pathlib import Path + +from jsonschema import Draft7Validator +from referencing import Registry, Resource +from referencing.exceptions import NoSuchResource + +VERSION = "3.2.0" +SCHEMA_ROOT = Path(f"adcp-{VERSION}/schemas") +CANONICAL_PREFIX = f"https://adcontextprotocol.org/schemas/{VERSION}/" + +def retrieve_local_schema(uri: str) -> Resource: + if not uri.startswith(CANONICAL_PREFIX): + raise NoSuchResource(ref=uri) + relative_path = uri.removeprefix(CANONICAL_PREFIX) + contents = json.loads((SCHEMA_ROOT / relative_path).read_text()) + return Resource.from_contents(contents) + +root = json.loads( + (SCHEMA_ROOT / "media-buy/get-products-response.json").read_text() +) +validator = Draft7Validator( + root, + registry=Registry(retrieve=retrieve_local_schema), +) +``` + +## One-shot protocol bundle + +Syncing hundreds of individual schema files adds up. Every AdCP release also publishes a single gzipped tarball containing the complete protocol — schemas, compliance storyboards, and the OpenAPI registry — so clients can pull one artifact instead of crawling the tree. + +| Path | Contents | Notes | +|------|----------|-------| +| `https://adcontextprotocol.org/protocol/latest.tgz` | Current development bundle | Changes with every merge | +| `https://adcontextprotocol.org/protocol/{version}.tgz` | Pinned release bundle | Immutable once published | +| `https://adcontextprotocol.org/protocol/{version}.tgz.sha256` | SHA-256 checksum | Use to verify download integrity | +| `https://adcontextprotocol.org/protocol/{version}.tgz.sig` | Sigstore detached signature | Use to verify publisher identity. Present only when the release was cut via the `release.yml` workflow — absent for out-of-band republishes. | +| `https://adcontextprotocol.org/protocol/{version}.tgz.crt` | Fulcio-issued signing certificate | Pairs with `.sig` for `cosign verify-blob`. Present only when the release was cut via the `release.yml` workflow — absent for out-of-band republishes. | + +Every tarball extracts into a single `adcp-{version}/` directory (safe extraction, no tarbomb). Inside: + +``` +adcp-{version}/ + README.md # quickstart + links + CHANGELOG.md # release notes + manifest.json # version, generated_at, contents summary + schemas/ # full JSON schema tree (same as /schemas/{version}/) + compliance/ # protocols/, specialisms/, universal/, test-kits/, index.json + openapi/registry.yaml # OpenAPI description +``` + +Verify the checksum before extracting: + +```bash +curl -OL https://adcontextprotocol.org/protocol/3.1.0.tgz +curl -OL https://adcontextprotocol.org/protocol/3.1.0.tgz.sha256 +shasum -a 256 -c 3.1.0.tgz.sha256 +tar xzf 3.1.0.tgz +cd adcp-3.1.0 +``` + +Pull it once per version, cache by SHA, and you have everything needed to validate requests, run storyboards, and render documentation offline. The `@adcp/sdk` `sync-schemas` command uses this under the hood. + +Available tarballs are also listed at [`/protocol/`](https://adcontextprotocol.org/protocol/). + +### Verifying protocol bundle signatures + +The SHA-256 sidecar lives on the same origin as the tarball, so it only protects against in-transit tampering. For supply-chain protection — proving the bundle came from the AdCP release workflow and was not swapped for a malicious one even if the host were compromised — every released `{version}.tgz` is also published with a Sigstore detached signature. + +The signature is produced by the GitHub Actions release workflow using keyless OIDC: there is no long-lived AdCP signing key to leak. The certificate binds the signature to the workflow identity that issued it. + +```bash +# Pull the tarball and the two signature sidecars +curl -OL https://adcontextprotocol.org/protocol/3.1.0.tgz +curl -OL https://adcontextprotocol.org/protocol/3.1.0.tgz.sig +curl -OL https://adcontextprotocol.org/protocol/3.1.0.tgz.crt + +# Verify (requires cosign 2.x — `brew install cosign`) +cosign verify-blob \ + --signature 3.1.0.tgz.sig \ + --certificate 3.1.0.tgz.crt \ + --certificate-identity-regexp '^https://github\.com/adcontextprotocol/adcp/\.github/workflows/release\.yml@refs/(heads|tags)/.*$' \ + --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ + 3.1.0.tgz +``` + +`cosign verify-blob` exits non-zero if the signature was made by anything other than the AdCP release workflow, even if the SHA matches and TLS is valid. Use this in any pipeline that ingests the protocol bundle as an enforcement source. The `@adcp/sdk`, `adcp-client-python`, and `adcp-go` SDKs perform this verification automatically when the sidecars are present. + +The `refs/(heads|tags)/.*` wildcard is intentional — releases sign during the push-triggered workflow run, so the cert subject names the release branch (e.g. `refs/heads/3.0.x` for v3.0.1+, `refs/heads/main` for v3.0.0). The trust gate is upstream `release.yml`'s `on.push.branches` allowlist, not the consumer's regex. Literal-allowlist regexes (`(main|2\.6\.x)`-style) silently break every time a new maintenance branch is added — see [Verifying protocol tarballs](/dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs) for the full trust model and the cert-subject-by-release lookup. + +Older releases that predate signing, and versions republished out of band (bypassing the signing workflow), remain checksum-only — clients should treat missing sidecars as a "checksum-only" trust level rather than a verification failure. + +## Compliance storyboards + +Storyboards live alongside schemas at `/compliance/{version}/`. They define the test scenarios AAO runs to verify an agent's capability claims. + +| Path | Purpose | +|------|---------| +| `/compliance/{version}/universal/` | Required for every agent (capability discovery, error handling, schema validation) | +| `/compliance/{version}/protocols/{protocol}/` | Baseline required to claim a protocol (`media-buy`, `creative`, `signals`, `governance`, `brand`, `sponsored-intelligence`) | +| `/compliance/{version}/specialisms/{id}/` | Optional specialization claims (e.g. `sales-guaranteed`, `sales-broadcast-tv`) | +| `/compliance/{version}/index.json` | Enumerates available protocols, specialisms, and universal storyboards | + +Declare `supported_protocols` (for protocol baselines) and `specialisms` (for narrow capability claims) in `get_adcp_capabilities` — the compliance runner executes the matching bundles to verify. See the full [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for every protocol and specialism an agent can claim. + +## Common schemas + +| Schema | URL | +|--------|-----| +| Product | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/product.json` | +| Media Buy | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/media-buy.json` | +| Creative Format | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/format.json` | +| Schema Registry | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/index.json` | + + +**For AI coding agents:** point your coding agent to **[https://docs.adcontextprotocol.org/mcp](https://docs.adcontextprotocol.org/mcp)** for MCP integration documentation. + + +## Schema versioning + +AdCP uses semantic versioning. Choose the right path for your use case: + +| Path | Example | Best For | +|------|---------|----------| +| Exact version | `/schemas/3.0.0/`, `/compliance/3.0.0/`, `/protocol/3.0.0.tgz` | Production, SDK generation | +| Major version | `/schemas/3.2.0-beta.4/`, `/compliance/v3/` | Development, documentation | +| Minor version | `/schemas/v3.0/`, `/compliance/v3.0/` | Stable development (patch updates only) | + +The same version semantics apply to `/schemas`, `/compliance`, and `/protocol/{version}.tgz` — one release cuts all three. + +### Production (recommended) + +Pin to an exact version for stability: + +```javascript +const SCHEMA_VERSION = '3.0.0'; +const schema = await fetch( + `https://adcontextprotocol.org/schemas/${SCHEMA_VERSION}/core/product.json` +); +``` + +### Development + +Use the major version alias to stay current with backward-compatible updates: + +```javascript +const schema = await fetch( + 'https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/product.json' +); +``` + +### SDK type generation + +```bash +# TypeScript +npx json-schema-to-typescript \ + https://adcontextprotocol.org/schemas/3.0.0/core/product.json \ + --output types/product.d.ts + +# Python +datamodel-codegen \ + --url https://adcontextprotocol.org/schemas/3.0.0/core/product.json \ + --output models/product.py +``` + +## Bundled schemas + +For tools that don't support `$ref` resolution, use bundled schemas with all references resolved inline. Bundled schemas are available from both the website and GitHub: + +### MCP 2026 tool-schema projection + +Beginning with AdCP 3.2, every release also includes a self-contained JSON +Schema 2020-12 projection for MCP `2026-07-28` tool discovery: + +``` +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/manifest.json +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/media-buy/get-products-request.json +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/media-buy/get-products-response.json +``` + +The projection manifest maps every AdCP tool to downloadable `inputSchema` and +`outputSchema` files. Servers can select and embed these schemas when building +their `tools/list` response; publishing the artifacts does not automatically +change a server's MCP registration. MCP disables automatic network +dereferencing by default, so each projected schema is a compact, self-contained +document containing only local fragment references. + +The 3.2 projection separates MCP discovery from canonical validation. Projected +`outputSchema` files preserve the canonical draft-07 validation outcomes. +Projected `inputSchema` files are host-compatible `tools/list` hints: the build +flattens unconditional object properties and optional version fields into the +root, but omits root `allOf`, `anyOf`, `oneOf`, conditionals, and negations that +strict tool hosts reject. Nested combinators remain intact. Servers MUST +validate every call against the canonical draft-07 request schema referenced by +the version-root manifest; a payload accepted by discovery can still receive a +structured `INVALID_REQUEST` at call time. + +The build tests inspect every projected schema for dialect, local-reference +integrity, and self-containment; enforce AdCP-defined defensive depth, +schema-object, and compact-serialization byte bounds following MCP guidance; +and assert that discovery inputs retain their structural property surfaces. +Repeated shared schemas are stored once under `$defs` rather than recursively +inlined. + +#### Production surface profile + +The MCP projection also publishes a filtered production profile: + +``` +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/profiles/production/manifest.json +``` + +For AdCP 3.2, this is the clean active discovery catalog: it excludes the +compliance-only controller and tools deprecated by 3.2, including the +`get_products` and `list_creative_formats` compatibility facades. Its schemas +remove low-signal presentation annotations while retaining descriptions needed +to explain root constraints omitted from discovery. Output validation semantics +remain identical to the full MCP projection; input schemas remain permissive +discovery hints. +Each manifest tool retains its `protocol` classification for deterministic +selection. + +The profile is not a recommendation to load all active AdCP tools into one +agent context. It currently spans 66 tools across the protocol families. A +production host MUST expose only the protocols and tools it implements and +SHOULD further select the smallest capability-appropriate subset for each +agent session. Use the full projection for documentation, compatibility, and +conformance; use this profile as the filtered catalog from which a host builds +that subset, and use the canonical draft-07 schemas for request validation. +Removing descriptions makes the +artifacts smaller, but does not by itself solve `tools/list` context cost. + +#### Active role catalogs + +Hosts and clients can use one of two role-filtered catalogs instead of selecting +active tools from the entire production profile: + +``` +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/profiles/media-buy/manifest.json +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/profiles/creative/manifest.json +``` + +The `media-buy` catalog covers active 3.2 operations for a seller-hosted +product-to-delivery role. It includes product discovery, proposals, purchase, +control, reporting, audiences, catalogs, event sources, accounts, governance, +and separately synchronized creatives. These operations are one production +lifecycle rather than separate "sales" and "sales lifecycle" surfaces. +Creative construction is deliberately excluded. + +The `creative` catalog covers creative construction, transformation, preview, +validation, catalog inputs, library synchronization, delivery, accounts, +governance, usage, and task management. Shared account, catalog, and +creative-trafficking tools intentionally appear in both catalogs; they describe +role-oriented active surfaces, not mutually exclusive protocol ownership. + +These are active-3.2 catalogs, not complete 3.x server registrations. A server +that supports callers using the deprecated 3.x compatibility facades must also +advertise the applicable `get_products`, `create_media_buy`, and +`update_media_buy` definitions from the full projection. Cross-agent buyer +orchestration can additionally require signals, brand, external governance, +property, or content-standard services that are intentionally outside the +seller-hosted role catalog. +Clients that combine compatibility facades with an active role catalog use the +full projection's `task_result_resolution`, because the role-scoped resolver +intentionally covers only task types present in that active catalog. + +Each role also publishes an input-only client prompt view: + +``` +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/profiles/media-buy/model-context/manifest.json +https://adcontextprotocol.org/schemas/{version}/mcp/2026-07-28/profiles/creative/model-context/manifest.json +``` + +Model-context manifests contain only structural `inputSchema` entries. They are +client-side prompt projections, not standalone MCP `tools/list` registrations: +servers SHOULD continue advertising `outputSchema`, and clients SHOULD validate +structured results with the parent role catalog. A controlled client can omit +the output schema only when assembling its model prompt while retaining the +parent response schemas and task-result resolution metadata out of band. + +Structural schemas deliberately omit descriptions. To support tool selection, +clients combine the model-context inputs with each live MCP tool's concise +`name` and `description`; the downloadable model-context manifest is not a +description catalog by itself. Every tool in the published active Media Buy +and Creative role catalogs carries a concise manifest `summary` that a host can +use as that live description. + +#### Capability-selected runtime projection + +AdCP 3.2 hosts MUST derive a live MCP tool surface from the release manifest +and the tools the endpoint can actually dispatch. A runtime projection is a +selection of the generated per-tool bundles, not another schema profile and +not a second hand-maintained tool catalog. + +The deterministic selection algorithm is: + +1. Build `implemented_tools` from the endpoint's dispatch registry. Every name + MUST exist in the canonical release manifest. Do not infer implementation + from documentation, a role profile, or a protocol claim. +2. If the session has no narrower capability scope, select + `implemented_tools`. Otherwise, select the implemented tools whose manifest + `protocol` is enabled, unioned with exact enabled tool names. Convert + `supported_protocols` snake case to manifest kebab case (`media_buy` → + `media-buy`) before comparing. Exact tool claims that are not implemented + are configuration errors; hosts MUST fail closed rather than advertise + them. +3. Treat `protocol` as ownership metadata, not dependency closure. Shared task, + account, or discovery tools are included only when the host adds their exact + names. Selection never pulls in neighboring tools implicitly. +4. Production projections MUST exclude the `compliance` protocol. Deprecated + compatibility facades are included only when the endpoint really implements + and advertises them; deprecation alone is not a runtime filter. +5. Sort selected names lexicographically. For each selected name, emit one MCP + `tools/list` entry containing `name`, the optional manifest `summary` as the + live `description`, and the corresponding self-contained `inputSchema` from + the MCP projection. Do not emit unselected tools or load response schemas + into the model-facing list. +6. Keep the release manifest and response bundles available outside model + context. SDKs validate a direct result through that tool's `response_schema`; + they resolve terminal polling results through `task_result_resolution`. + +The coarse protocol set normally comes from `supported_protocols`. Exact names +come from the active capability blocks (for example `lifecycle_tools`, +`repair_tasks`, and `projection_tasks`) plus shared tools the host exposes for +that session. The implementation registry remains the upper bound in every +case. Unknown protocol or tool names, duplicate selector inputs, and production +attempts to expose compliance tools are errors. + +For caller-side version adaptation, the live discovery result is authoritative. +An SDK calls a current split 3.2 tool when that name is present. If it is absent, +the SDK checks the current tool's `legacy_fallback` manifest entry and may use +the named legacy tool only when that name is live: `direct` is a one-call +translation, `orchestrated` must preserve the current operation's state and +idempotency semantics across the sequence, and `none` is unsupported. SDKs +MUST NOT infer a fallback from a shared protocol classification. + +The checked-in `production`, `media-buy`, and `creative` profiles remain useful +catalogs and role-oriented starting points. They are not mandatory runtime +combinations. The complete canonical projection remains the authority for +documentation, conformance, compatibility analysis, code generation, and lazy +response validation. + +AdCP 4.0 will make JSON Schema 2020-12 the canonical source dialect. That +major-version migration is where the protocol may selectively use +`unevaluatedProperties`, `dependentRequired`, `dependentSchemas`, and other +2020-12 semantics to tighten contracts. Published v3 schemas remain draft-07 +for their support lifetime. + +### Website access + +``` +https://adcontextprotocol.org/schemas/3.0.0/bundled/media-buy/create-media-buy-request.json +``` + +### GitHub access + +Bundled schemas are committed to the repository at `dist/schemas/{VERSION}/bundled/`: + +```bash +# Clone and access locally +git clone https://github.com/adcontextprotocol/adcp.git +ls adcp/dist/schemas/3.0.0/bundled/media-buy/ + +# Or fetch directly via GitHub raw +curl https://raw.githubusercontent.com/adcontextprotocol/adcp/main/dist/schemas/3.0.0/bundled/media-buy/get-products-request.json +``` + +### Directory structure + +``` +dist/schemas/{VERSION}/ +├── bundled/ # Fully dereferenced schemas +│ ├── media-buy/ # Media buying tasks +│ ├── creative/ # Creative tasks +│ ├── signals/ # Signal protocol tasks +│ ├── property/ # Property/governance tasks +│ ├── content-standards/ # Content standards tasks +│ ├── sponsored-intelligence/ # Sponsored intelligence tasks +│ ├── protocol/ # Protocol tasks +│ └── core/ # Core shared schemas and legacy task lifecycle schemas +├── mcp/2026-07-28/ # Self-contained JSON Schema 2020-12 tool projections +│ └── profiles/ +│ ├── production/ # Active, non-compliance structural catalog +│ ├── media-buy/ # Active seller media-buy catalog + prompt view +│ └── creative/ # Active creative catalog + prompt view +├── core/ # Modular schemas with $ref +├── trusted-match/ # Serve-time Context Match and Identity Match schemas +├── media-buy/ +└── index.json # Schema registry +``` + +`index.json` is the directory authority. It declares the bundle's `published_version`, stability metadata, and `protocol_layers`: the negotiation layer (`media-buy`, `creative`, `signals`, `account`, `governance`, `brand`, `sponsored-intelligence`) and the decisioning/serving layer (`trusted-match`). + +### Bundled schema categories + +All request/response task schemas are bundled: + +| Category | Tasks | +|----------|-------| +| `bundled/media-buy/` | get-products, create-media-buy, update-media-buy, list-creative-formats, sync-creatives, build-creative, list-creatives, get-media-buy-delivery, list-authorized-properties, provide-performance-feedback | +| `bundled/creative/` | list-creative-formats, preview-creative | +| `bundled/signals/` | get-signals, activate-signal | +| `bundled/property/` | create-property-list, get-property-list, list-property-lists, update-property-list, delete-property-list, validate-property-delivery | +| `bundled/content-standards/` | create-content-standards, get-content-standards, list-content-standards, update-content-standards, calibrate-content, validate-content-delivery, get-media-buy-artifacts | +| `bundled/sponsored-intelligence/` | si-get-offering, si-initiate-session, si-send-message, si-terminate-session | +| `bundled/protocol/` | get-adcp-capabilities, get-task-status, list-tasks | +| `bundled/core/` | tasks-get, tasks-list | + +See the [schema registry](https://adcontextprotocol.org/schemas/3.2.0-beta.4/index.json) for all available schemas. + +## Version discovery + +```bash +# Get the canonical stable schema bundle and registry URL. +curl https://adcontextprotocol.org/schemas/latest.json | jq '{version: .latest_stable, index}' + +# Or read the full file-based discovery index. +curl https://adcontextprotocol.org/schemas/index.json | jq '.aliases' + +# The versioned registry also carries the full semver of its bundle. +# (Note: `published_version` carries full semver including patch. +# It's distinct from the per-request/response wire `adcp_version` +# field defined in core/version-envelope.json, which uses +# release-precision — never send `published_version` on the wire.) +curl https://adcontextprotocol.org/schemas/3.2.0-beta.4/index.json | jq '.published_version' +``` + +Do not infer the canonical version from directory order or `versions[0]`; pre-release artifacts remain discoverable for pinned historical builds. Use `latest_stable` or the `aliases` map for canonical stable selection. + +Check [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes) for version history and migration guides. + +## Registry API + +The AgenticAdvertising.org registry provides a public REST API for brand resolution, property resolution, agent discovery, and authorization validation. No authentication required. + + + Resolve brands, discover agents, and validate authorization via REST. + diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L1/index.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L1/index.mdx new file mode 100644 index 0000000000..09c2ccbe90 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L1/index.mdx @@ -0,0 +1,25 @@ +--- +title: L1 — Identity & signing +sidebarTitle: L1 — Identity & signing +description: "Identity-and-signing layer of the AdCP stack. RFC 9421 HTTP message signatures, public-key resolution, replay-window enforcement, key rotation." +"og:title": "AdCP — L1 (Identity & signing)" +--- + +L1 cryptographically verifies that the request came from who the headers claim it did, and that the body wasn't modified in transit. RFC 9421 HTTP message signatures with replay-window enforcement and key rotation. Symmetric on both sides — agents verify inbound and sign outbound webhooks; callers sign outbound and verify inbound webhooks. + +## What an SDK at L1 must provide + +If you're picking an SDK or porting one to a new language, this is the L1 build target: + +- **RFC 9421 message-signature signing** for outbound requests. +- **RFC 9421 verification** for inbound requests, including replay-window enforcement on `created` / `expires` and `keyid`-based key lookup. +- **A pluggable signing-provider abstraction** — in-process keys for development, KMS / HSM providers for production. +- **Test fixtures or a verifier-test harness** so adopters can assert their signing wiring is correct without booting a full agent. + +For the cumulative cross-layer story (what L0+L1 buys you), see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#l1--identity--signing). + +## Pages in this layer + +- **[Security implementation profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security)** — RFC 9421 wire details, KMS integration, replay-window tuning. +- **[Portable attestations](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#portable-attestations)** — reference-first claim credentials, evaluator allowlists, safe resolution, verification outcomes, and action binding. +- **[Webhook verifier tuning](/dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning)** — clock-skew handling, key-rotation transitions, signature failure diagnostics. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing.mdx new file mode 100644 index 0000000000..6d17ef00e3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing.mdx @@ -0,0 +1,769 @@ +--- +title: Request Signing Guide +description: "Step-by-step guide to RFC 9421 request signing in AdCP: key generation, JWKS publication, brand.json setup, client-side signing, server-side verification, webhook signing, key rotation, and conformance testing." +"og:title": "AdCP — Request Signing Guide" +--- + +AdCP supports [HTTP Message Signatures (RFC 9421)](https://www.rfc-editor.org/rfc/rfc9421) for cryptographic request authentication. A buyer signs outbound requests so the seller can verify who sent them and that the payload wasn't tampered with. A seller signs outbound webhooks so the buyer can verify authenticity. + +Signing remains **optional through AdCP 3.2** and becomes **mandatory in AdCP 4.0** for all spend-committing operations. Starting in 3.2, however, every accepted signature on a request with a body must cover `Content-Digest`. Agents that don't support signing may continue using their existing authentication path. + + +This is the practical implementation guide. For the normative specification — covered components, canonicalization rules, the full verifier checklist, replay dedup sizing, and the complete error taxonomy — see [Security: Signed Requests](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer). + + + +Code examples below use **JavaScript/TypeScript**, **Python**, and **Go** SDK helpers in tabs. All three SDKs implement the same RFC 9421 profile against the same conformance vectors — the API surface differs but the wire output is identical. If your language isn't listed, the [conformance vectors](#testing) and the [normative spec](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) are language-agnostic. + + +## When you need this + +| You are a... | You need to... | Why | +|---|---|---| +| **Buyer** (calls seller tools) | Sign outbound requests | Sellers may require proof the request came from you | +| **Buyer** (receives webhooks) | Verify inbound webhook signatures | Confirm the webhook came from the seller | +| **Seller** (receives tool calls) | Verify inbound request signatures | Confirm the buyer is who they claim to be | +| **Seller** (sends webhooks) | Sign outbound webhooks | Let buyers verify webhook authenticity | +| **Orchestrator** (proxies to sellers) | Sign outbound requests + verify inbound webhooks | You're the buyer from the seller's perspective | + +## Key concepts + +### Signature coverage + +The AdCP signing profile covers these request components: + +- `@method` — HTTP method +- `@target-uri` — full canonicalized request URL +- `@authority` — lowercased host header +- `content-type` — media type +- `content-digest` — SHA-256 or SHA-512 hash of the exact request body bytes; REQUIRED for every body-bearing request signed under the 3.2 profile + +If any covered component changes after signing, verification fails. + +For DNS hosts, signers and verifiers MUST remove one trailing root-label dot +after IDNA ToASCII processing and before deriving both `@target-uri` and +`@authority`. Thus `https://example.com./p` signs as +`https://example.com/p` with authority `example.com`; U-label and A-label IDN +forms produce the same bytes. Multiple trailing dots are malformed and MUST be +rejected. This codifies the shipping SDK behavior under +[DR-0008](https://github.com/adcontextprotocol/adcp/blob/main/governance/decisions/DR-0008-sdk-canon-for-wire-contracts.md). + +### Key separation + +Every agent publishes signing keys with a distinct `kid` and `adcp_use` tag: + +- `adcp_use: "request-signing"` — for signing outbound tool calls and outbound webhooks +- `adcp_use: "webhook-signing"` — deprecated; still accepted on the webhook path for backward compatibility + +For blast-radius isolation, publish a second `request-signing` key under a separate `kid` for webhook delivery rather than reusing the same key material for tool calls and webhooks. + +### Discovery chain + +Verifiers find your public key through a three-step chain: + +``` +Your domain (e.g., agent.example.com) + -> /.well-known/brand.json # brand manifest with agent declarations + -> agents[].jwks_uri # pointer to your key store + -> /.well-known/jwks.json # JSON Web Key Set with public keys +``` + +The `@adcp/client` SDK provides `BrandJsonJwksResolver` which handles this chain automatically with caching and refresh. + +## Step 1: Generate a signing key + +### CLI + +```bash +adcp signing generate-key --alg ed25519 --kid my-agent-2026 \ + --private-out ./private.jwk --public-out ./public-jwks.json +``` + +This generates an Ed25519 keypair and writes: +- `private.jwk` — the private key (JWK with `d` field). Keep this secret. +- `public-jwks.json` — the public key in JWKS format. Publish this. + +### Programmatic + + + +```typescript +import { generateKeyPair, exportJWK } from 'jose'; + +const { publicKey, privateKey } = await generateKeyPair('EdDSA', { crv: 'Ed25519' }); +const publicJwk = await exportJWK(publicKey); +const privateJwk = await exportJWK(privateKey); + +const kid = 'my-agent-2026'; +publicJwk.kid = kid; +publicJwk.use = 'sig'; +publicJwk.key_ops = ['verify']; +publicJwk.adcp_use = 'request-signing'; +``` + + +```python +from adcp.signing import generate_signing_keypair + +# CLI equivalence: adcp-keygen --alg ed25519 --purpose request-signing --kid my-agent-2026 +pem_bytes, public_jwk = generate_signing_keypair( + alg="ed25519", + purpose="request-signing", + kid="my-agent-2026", +) +# pem_bytes — write to disk with mode 0600 and O_EXCL, or pass to a secret manager. +# public_jwk — publish in your JWKS endpoint. Already includes kid, use, key_ops, and adcp_use. +``` + + +```go +import "github.com/adcontextprotocol/adcp-go/adcp/signing" + +res, err := signing.GenerateKeyForProfile( + signing.AlgEd25519, + "my-agent-2026", + signing.ProfileRequestSigning, +) +if err != nil { /* handle */ } +// res.PrivateKeyPEM — write to disk with mode 0600, or pass to a secret manager. +// res.PublicJWK — serialize and publish in your JWKS endpoint. AdCP-required +// fields (kid, kty, crv, alg, use, key_ops, adcp_use) are set. +``` + +Use `signing.ProfileWebhookSigning` for the webhook RFC 9421 profile. Publish the corresponding public key with `adcp_use: "request-signing"`; if you want webhook-only key material, use a separate `kid`. + + + +### Supported algorithms + +| Algorithm | `alg` value | Key type | Notes | +|---|---|---|---| +| Ed25519 | `ed25519` (RFC 9421) / `EdDSA` (JWK) | `OKP` / `Ed25519` | Preferred. Fast, small signatures. | +| ECDSA P-256 | `ecdsa-p256-sha256` (RFC 9421) / `ES256` (JWK) | `EC` / `P-256` | Edge-runtime friendly (Cloudflare Workers, Vercel Edge). | + + +The algorithm name differs between the JWK entry (`"alg": "EdDSA"`) and the RFC 9421 `Signature-Input` parameter (`alg="ed25519"`). See the [algorithm naming table](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#adcp-rfc-9421-profile) in the spec. + + +### Storing the private key + +Pick the strongest option your runtime supports. From most to least secure: + +- **Cloud KMS** (GCP Cloud KMS, AWS KMS, Azure Key Vault): the private key is generated inside the HSM and never leaves it. Signing is performed by calling the KMS API; you only ever hold the JWK reference, not the key bytes. The TypeScript SDK exposes `createKmsSigner` for GCP Cloud KMS — see [`@adcp/client/signing/kms`](https://github.com/adcontextprotocol/adcp-client/tree/main/src/lib/signing/kms). Recommended for any agent handling spend-committing operations. +- **Secret manager** (GCP Secret Manager, AWS Secrets Manager, HashiCorp Vault): load at boot, keep in memory for the process lifetime. Easier than KMS but the key material lives in your process — leaks via memory dumps, logging, or compromised dependencies. +- **Environment variable**: `ADCP_SIGNING_PRIVATE_KEY='{"kid":"...","kty":"OKP",...}'`. Acceptable for dev and small deployments. Same memory-resident risk as a secret manager. +- **File**: development only. Never commit to version control. Use mode `0600` and `O_EXCL` so an existing file is never overwritten — `Path.write_bytes` inherits the process umask (often `0644`, world-readable) and is unsafe for private-key material. + + +Once you choose KMS, signing latency rises (one round-trip to the HSM per request). Profile under load before committing — the TypeScript and Python SDKs cache JWK metadata aggressively and can sustain hundreds of signs/sec against GCP KMS in our internal tests, but your numbers depend on region and concurrency. + + +## Step 2: Publish your public keys + +### JWKS endpoint + +Serve a JSON Web Key Set at a stable HTTPS URL (defaults to `/.well-known/jwks.json`): + +```json +{ + "keys": [ + { + "kid": "my-agent-2026", + "kty": "OKP", + "crv": "Ed25519", + "x": "", + "use": "sig", + "key_ops": ["verify"], + "adcp_use": "request-signing" + } + ] +} +``` + +Only public keys go here — no `d` field. Set `Cache-Control: max-age=3600` or similar. If you use separate key material for webhook delivery, publish a second `request-signing` JWK with a distinct `kid`. Deprecated `webhook-signing` JWKs remain accepted on the webhook path for backward compatibility. + +### brand.json + +Serve at `/.well-known/brand.json` on your brand domain. The `jwks_uri` is how verifiers find your keys: + +```json +{ + "name": "My Company", + "domain": "example.com", + "agents": [ + { + "url": "https://agent.example.com", + "jwks_uri": "https://agent.example.com/.well-known/jwks.json", + "capabilities": ["media-buy"], + "adcp_use": ["request-signing"] + } + ] +} +``` + +## Step 3: Sign outbound requests (buyer / orchestrator) + +### Wrapping fetch / HTTP client + + + +`createSigningFetch` wraps any `fetch`-compatible function to sign outbound requests automatically: + +```typescript +import { createSigningFetch } from '@adcp/client/signing'; + +const privateJwk = JSON.parse(process.env.ADCP_SIGNING_PRIVATE_KEY); + +const signingFetch = createSigningFetch(fetch, { + keyid: 'my-agent-2026', + alg: 'ed25519', + privateKey: privateJwk, +}); + +// Use signingFetch anywhere you'd use fetch. +// Signature, Signature-Input, and Content-Digest headers are added automatically. +await signingFetch('https://seller.example.com/mcp', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(payload), +}); +``` + + +The Python SDK auto-signs every outbound request when `signing` is configured on `ADCPClient`: + +```python +from adcp import ADCPClient +from adcp.signing import SigningConfig, load_private_key_pem + +private_key = load_private_key_pem(open("private-key.pem", "rb").read()) + +client = ADCPClient( + base_url="https://seller.example.com/mcp", + signing=SigningConfig( + key_id="my-agent-2026", + alg="ed25519", + private_key=private_key, + cover_content_digest=True, + ), +) +# Every request the client sends carries Signature, Signature-Input, and +# Content-Digest headers. +``` + +For lower-level control (e.g., signing an arbitrary `httpx.Request` outside the client), call `sign_request` directly: + +```python +from adcp.signing import sign_request + +signed = sign_request( + method="POST", + url="https://seller.example.com/mcp", + headers={"Content-Type": "application/json"}, + body=request_body_bytes, + private_key=private_key, + key_id="my-agent-2026", + alg="ed25519", + cover_content_digest=True, +) +# signed.as_dict() returns the headers to attach to the outgoing request. +``` + + +The Go SDK exposes a `Signer` you wrap your `http.Client` transport with: + +```go +import ( + "net/http" + "github.com/adcontextprotocol/adcp-go/adcp/signing" +) + +priv, _, _ := signing.LoadPrivateKey(pemBytes) +signer, _ := signing.NewSigner(signing.SignerOptions{ + KeyID: "my-agent-2026", + Algorithm: signing.AlgEd25519, + PrivateKey: priv, +}) + +client := &http.Client{ + Transport: signer.RoundTripper(http.DefaultTransport, true /* cover content-digest */), +} + +req, _ := http.NewRequest("POST", "https://seller.example.com/mcp", body) +req.Header.Set("Content-Type", "application/json") +resp, _ := client.Do(req) +// Signature, Signature-Input, and Content-Digest are added by the transport. +``` + +For one-off signing without the transport, call `signer.SignRequest(req, signing.SignOptions{CoverContentDigest: true})` directly on the request. + + + +### Capability-aware signing + +`buildAgentSigningFetch` checks whether the target seller supports `signed-requests` and only signs when supported. This is the recommended approach for production: + +```typescript +import { buildAgentSigningFetch, CapabilityCache } from '@adcp/client/signing/client'; + +const capabilityCache = new CapabilityCache(); + +const signingFetch = buildAgentSigningFetch({ + upstream: fetch, + signing: { + kid: 'my-agent-2026', + alg: 'ed25519', + private_key: privateJwk, + agent_url: 'https://agent.example.com', + sign_supported: true, + }, + getCapability: () => capabilityCache.get('https://seller.example.com'), +}); +``` + +This avoids sending signatures to agents that don't expect them and caches capability lookups. + +## Step 4: Verify inbound signatures (seller) + +### Framework middleware + + + +For raw Express routes, mount `createExpressVerifier` after a raw-body middleware. Use `mcpToolNameResolver` for the `resolveOperation` callback — it parses the JSON-RPC envelope and returns the MCP tool name: + +```typescript +import { + createExpressVerifier, + StaticJwksResolver, + InMemoryReplayStore, + InMemoryRevocationStore, +} from '@adcp/client/signing'; +import { mcpToolNameResolver } from '@adcp/client/server'; + +app.post( + '/mcp', + rawBodyMiddleware(), // req.rawBody must hold the byte-exact body + createExpressVerifier({ + capability: { + supported: true, + covers_content_digest: 'required', + required_for: ['create_media_buy', 'update_media_buy'], + }, + jwks: new StaticJwksResolver(buyerPublicKeys), + replayStore: new InMemoryReplayStore(), + revocationStore: new InMemoryRevocationStore(), + resolveOperation: mcpToolNameResolver, + }), + handler +); +// On verify: req.verifiedSigner = { keyid, agent_url?, verified_at }. +// On reject: 401 with WWW-Authenticate: Signature error="". +``` + + +The Python SDK ships framework wrappers for Flask and Starlette/FastAPI. Both call into the same `verify_request_signature` and raise `SignatureVerificationError` on rejection — map that to a 401 with `unauthorized_response_headers`: + +```python +from fastapi import FastAPI, Request, HTTPException +from adcp.signing import ( + VerifyOptions, + VerifierCapability, + CachingJwksResolver, + InMemoryReplayStore, + StaticRevocationChecker, +) +from adcp.signing.middleware import ( + verify_starlette_request, + unauthorized_response_headers, +) +from adcp.signing.errors import SignatureVerificationError + +app = FastAPI() + +verify_options = VerifyOptions( + capability=VerifierCapability( + supported=True, + covers_content_digest="required", + required_for={"create_media_buy", "update_media_buy"}, + ), + jwks_resolver=CachingJwksResolver(), + replay_store=InMemoryReplayStore(), + revocation_checker=StaticRevocationChecker(set()), +) + +@app.post("/mcp") +async def mcp(request: Request): + try: + signer = await verify_starlette_request(request, options=verify_options) + except SignatureVerificationError as exc: + raise HTTPException( + status_code=401, + detail=exc.code, + headers=unauthorized_response_headers(exc), + ) + # signer.key_id, signer.agent_url, signer.verified_at available for audit. + body = await request.body() + return await handle_mcp(body, signer) +``` + +For Flask: swap `verify_starlette_request` for `verify_flask_request` (sync). For non-Starlette ASGI frameworks, call `verify_request_signature` directly. + + +Mount `signing.Middleware` in your `http.Handler` chain. The middleware verifies inbound signatures, populates a `VerifiedSigner` in the request context on success, and writes a `401` with `WWW-Authenticate: Signature error=""` on failure: + +```go +import ( + "net/http" + "github.com/adcontextprotocol/adcp-go/adcp/signing" +) + +resolver := signing.NewCachingJWKSResolver() +replay := signing.NewMemoryReplayStore(0 /* default cap */) +revocation := signing.NewStaticRevocationSource(nil) + +mw := signing.Middleware(signing.MiddlewareOptions{ + Resolver: resolver, + Replay: replay, + Revocation: revocation, + OperationResolver: signing.DefaultOperationResolver, // /adcp/ + ContentDigestPolicy: signing.DigestRequired, + RequiredFor: []string{"create_media_buy", "update_media_buy"}, +}) + +http.Handle("/mcp", mw(handler)) + +// Inside handler: +func handler(w http.ResponseWriter, r *http.Request) { + v := signing.VerifiedSignerFromContext(r.Context()) + if v == nil { + // Operation not in RequiredFor and request was unsigned — proceed + // with bearer auth or whatever fallback you've configured. + } + // v.KeyID, v.AgentURL, v.VerifiedAt, v.Algorithm — available for audit. +} +``` + +For MCP servers: replace `signing.DefaultOperationResolver` with a custom resolver that parses the JSON-RPC envelope and returns the MCP tool name (the equivalent of `mcpToolNameResolver` in the TS SDK). + + + +### Composing signature + bearer auth with `requireAuthenticatedOrSigned` + +`requireAuthenticatedOrSigned` bundles the full composition: presence-gated routing (signature auth when headers present, fallback otherwise) plus `requiredFor` enforcement — unauthenticated requests for signing-required operations get `401 request_signature_required` even when no credentials at all are supplied. + +```typescript +import { + serve, + verifyApiKey, + verifySignatureAsAuthenticator, + requireAuthenticatedOrSigned, + mcpToolNameResolver, + MUTATING_TASKS, +} from '@adcp/client/server'; +import { BrandJsonJwksResolver, InMemoryReplayStore, InMemoryRevocationStore } from '@adcp/client/signing/server'; + +serve(createAgent, { + authenticate: requireAuthenticatedOrSigned({ + signature: verifySignatureAsAuthenticator({ + capability: { supported: true, required_for: ['create_media_buy'], covers_content_digest: 'required' }, + jwks: new BrandJsonJwksResolver(), + replayStore: new InMemoryReplayStore(), + revocationStore: new InMemoryRevocationStore(), + resolveOperation: mcpToolNameResolver, + }), + fallback: verifyApiKey({ keys: { 'sk_live_abc': { principal: 'acct_42' } } }), + requiredFor: [...MUTATING_TASKS], + resolveOperation: mcpToolNameResolver, + }), +}); +``` + +`MUTATING_TASKS` is the full list of spend-committing and state-changing operations exported from `@adcp/client/server` — use it rather than maintaining your own list. + +### JWKS resolver options + +| Resolver | Use case | +|---|---| +| `StaticJwksResolver` | Fixed set of known buyer keys. Good for dev/testing. | +| `HttpsJwksResolver` | Fetches JWKS from a URL with caching and refresh. | +| `BrandJsonJwksResolver` | Full discovery chain: brand.json → jwks_uri → JWKS. Recommended for production. | + +## Step 5: Verify inbound webhooks (buyer / orchestrator) + +When sellers send webhooks, verify the signature to confirm authenticity. The webhook profile uses the same RFC 9421 mechanics as request signing but with `tag="adcp/webhook-signing/v1"` and `Content-Digest` always covered (no opt-out). + + + +```typescript +import { + verifyWebhookSignature, + BrandJsonJwksResolver, + InMemoryReplayStore, +} from '@adcp/client/signing/server'; + +const jwks = new BrandJsonJwksResolver(); +const replayStore = new InMemoryReplayStore(); + +app.post('/webhook', async (req, res) => { + try { + await verifyWebhookSignature(req, { jwks, replayStore }); + } catch { + return res.status(401).json({ error: 'invalid webhook signature' }); + } + + // Process the verified webhook... +}); +``` + + +```python +from adcp.signing import ( + WebhookVerifyOptions, + BrandJsonJwksResolver, + InMemoryReplayStore, + verify_webhook_signature, +) +from adcp.signing.errors import SignatureVerificationError + +webhook_options = WebhookVerifyOptions( + jwks_resolver=BrandJsonJwksResolver(), + replay_store=InMemoryReplayStore(), +) + +@app.post("/webhook") +async def webhook(request: Request): + body = await request.body() + try: + sender = verify_webhook_signature( + method=request.method, + url=str(request.url), + headers=dict(request.headers), + body=body, + options=webhook_options, + ) + except SignatureVerificationError: + raise HTTPException(status_code=401, detail="invalid webhook signature") + # sender.key_id, sender.agent_url available for audit; process the webhook. +``` + + +```go +import ( + "github.com/adcontextprotocol/adcp-go/adcp/signing" +) + +// Mount the same Middleware on your webhook receiver, but configure it for +// the webhook profile — adcp_use="request-signing" (deprecated +// "webhook-signing" also accepted), Content-Digest required, no required_for +// gating (webhooks always carry signatures). +webhookMW := signing.Middleware(signing.MiddlewareOptions{ + Resolver: signing.NewBrandJSONJWKSResolver(), + Replay: signing.NewMemoryReplayStore(0), + Revocation: signing.NewStaticRevocationSource(nil), + Profile: signing.ProfileWebhookSigning, + ContentDigestPolicy: signing.DigestRequired, +}) + +http.Handle("/webhook", webhookMW(webhookHandler)) + +func webhookHandler(w http.ResponseWriter, r *http.Request) { + sender := signing.VerifiedSignerFromContext(r.Context()) + // sender.KeyID, sender.AgentURL — process the verified webhook. +} +``` + + + +## Step 6: Sign outbound webhooks (seller) + + + +Pass a `signerKey` to `createAdcpServer` and the framework signs every outbound webhook automatically: + +```typescript +serve(() => createAdcpServer({ + name: 'My Seller', + version: '1.0.0', + webhooks: { + signerKey: { + keyid: 'my-seller-webhook-2026', + alg: 'ed25519', + privateKey: webhookPrivateJwk, + }, + }, + mediaBuy: { /* ... */ }, +})); +``` + + +Sign each outbound webhook with `sign_webhook` and attach the returned headers before sending: + +```python +from adcp.signing import sign_webhook, load_private_key_pem +import httpx, json + +private_key = load_private_key_pem(open("webhook-private-key.pem", "rb").read()) + +async def post_webhook(url: str, payload: dict) -> None: + body = json.dumps(payload).encode("utf-8") + headers = {"Content-Type": "application/json"} + signed = sign_webhook( + method="POST", + url=url, + headers=headers, + body=body, + private_key=private_key, + key_id="my-seller-webhook-2026", + alg="ed25519", + ) + headers.update(signed.as_dict()) # adds Signature, Signature-Input, Content-Digest + async with httpx.AsyncClient() as client: + await client.post(url, content=body, headers=headers) +``` + + +Configure a `Signer` with `ProfileWebhookSigning` and use it via `SignRequest` or its `RoundTripper`: + +```go +priv, _, _ := signing.LoadPrivateKey(webhookPemBytes) +webhookSigner, _ := signing.NewSigner(signing.SignerOptions{ + KeyID: "my-seller-webhook-2026", + Algorithm: signing.AlgEd25519, + PrivateKey: priv, + Profile: signing.ProfileWebhookSigning, +}) + +webhookClient := &http.Client{ + Transport: webhookSigner.RoundTripper(http.DefaultTransport, true /* always cover content-digest for webhooks */), +} +// Use webhookClient.Post / .Do to deliver webhooks; signatures are added automatically. +``` + + + +Publish the webhook signing public key as a JWK with `"adcp_use": "request-signing"`. The webhook verifier still accepts deprecated `"webhook-signing"` keys for backward compatibility, but new signers should use `request-signing`. If you want independent webhook rotation or blast-radius isolation, publish a separate `request-signing` JWK with a webhook-specific `kid`. + +## Step 7: Declare the capability + +If your seller verifies inbound signatures, declare `signed_requests` (alias `request_signing` in the on-wire schema) in your `get_adcp_capabilities` response so buyers know to sign: + +For AdCP 3.2, `covers_content_digest: 'required'` is part of the signing profile rather than an operation-level choice. The operation lists still control where signing is supported, shadowed, or required; they never weaken body binding. Keep `either` or `forbidden` only on an explicitly configured 3.0/3.1 compatibility endpoint. + + + +```typescript +createAdcpServer({ + capabilities: { + overrides: { + signed_requests: { + supported: true, + required_for: ['create_media_buy', 'update_media_buy'], + supported_for: ['sync_creatives', 'sync_audiences'], + covers_content_digest: 'required', + }, + }, + }, + mediaBuy: { /* ... */ }, +}); +``` + + +```python +from adcp.server.responses import capabilities_response + +class MySeller(ADCPHandler): + async def get_adcp_capabilities(self, params, context=None): + return capabilities_response( + ["media_buy"], + request_signing={ + "supported": True, + "required_for": ["create_media_buy", "update_media_buy"], + "supported_for": ["sync_creatives", "sync_audiences"], + "covers_content_digest": "required", + }, + ) +``` + + +```go +// In your get_adcp_capabilities handler, set the request_signing block on +// the response builder: +return adcp.CapabilitiesResponse(adcp.CapabilitiesData{ + SupportedProtocols: []string{"media-buy"}, + RequestSigning: &adcp.RequestSigningCapability{ + Supported: true, + RequiredFor: []string{"create_media_buy", "update_media_buy"}, + SupportedFor: []string{"sync_creatives", "sync_audiences"}, + CoversContentDigest: "required", + }, +}), nil +``` + + + +Buyers call `get_adcp_capabilities` and read `request_signing.required_for` and `supported_for` to know which operations you expect them to sign. + +## Key rotation + +The JWKS endpoint supports multiple keys simultaneously for zero-downtime rotation: + +1. Generate a new keypair with a new `kid` +2. Add the new public key to JWKS (both old and new are published) +3. Update signing configuration to use the new private key +4. After 24–48 hours, remove the old public key from JWKS + +For emergency rotation (key compromise), add the old `kid` to `revoked_kids` in your revocation list and rotate to a new key immediately. See [Revocation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#revocation) for the revocation list format. + +## Testing + +### Conformance vectors + +The spec ships legacy-profile wire vectors, dedicated 3.2 wire vectors, and the 3.2 post-parse body-integrity reference-evaluator matrix at `/compliance/latest/test-vectors/request-signing/` (source at `static/compliance/source/test-vectors/request-signing/`). Select fixtures by `signing_profile_version`; the root positive and negative directories are 3.1 compatibility fixtures, not 3.2 conformance cases. + +- **Legacy 3.1 positive vectors**: valid signed requests using the legacy binary encoding +- **Legacy 3.1 negative vectors**: invalid requests a 3.1 verifier must reject with the stated error code +- **Profile-3.2 wire vectors**: body-bound positives and rejections of malformed RFC 8941 `sf-binary` + +```bash +# Debug a single vector with the matching public key fixture. +# Use "latest" for convenience. Pin and record exact released values for both +# versions when you need to reproduce a verifier debugging run. +VECTOR_VERSION=latest +SDK_VERSION=latest +VECTOR_DIR="$(mktemp -d)" +trap 'rm -rf "$VECTOR_DIR"' EXIT +VECTOR_BASE="https://adcontextprotocol.org/compliance/${VECTOR_VERSION}/test-vectors/request-signing" + +curl --fail --silent --show-error \ + --output "${VECTOR_DIR}/vector.json" \ + "${VECTOR_BASE}/positive/001-basic-post.json" +curl --fail --silent --show-error \ + --output "${VECTOR_DIR}/keys.json" \ + "${VECTOR_BASE}/keys.json" + +npx "@adcp/sdk@${SDK_VERSION}" signing verify-vector \ + --vector "${VECTOR_DIR}/vector.json" \ + --keys "${VECTOR_DIR}/keys.json" +``` + +### Grade your verifier + +```bash +adcp grade request-signing https://agent.example.com/mcp --auth-token $TOKEN +``` + +### Error codes + +When verification fails, return `401` with `WWW-Authenticate: Signature error=""`. + +The negative vectors grade `` **byte-for-byte** against the vector's `expected_outcome.error_code`, so a rejection that is correct in substance still fails its vector if the code string differs. Take the code from the taxonomy rather than from memory. + +For the codes — with retry semantics for each, and the rules for the `WWW-Authenticate` header itself — see [Transport error taxonomy](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#transport-error-taxonomy). Signing-key discovery via `brand_json_url` raises its own `request_signature_brand_*` and `request_signature_key_origin_*` codes, listed under [Discovering an agent's signing keys via `brand_json_url`](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#discovering-an-agents-signing-keys-via-brand_json_url). + +## Related + +- [Security: Signed Requests](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) — normative spec with verifier checklist, canonicalization rules, and replay dedup sizing +- [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) — webhook setup including signature verification +- [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) — full compliance validation including signing conformance +- [Build an Agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) — SDK setup and storyboard validation +- [RFC 9421](https://www.rfc-editor.org/rfc/rfc9421) — HTTP Message Signatures specification diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L1/security.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L1/security.mdx new file mode 100644 index 0000000000..f80f258cb8 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L1/security.mdx @@ -0,0 +1,2119 @@ +--- +title: Security +description: "AdCP security guide: risk classification for financial operations, webhook HMAC verification, replay prevention, access control, and credential management for production deployments." +"og:title": "AdCP — Security" +--- + + +**Critical for Production Use** + +AdCP handles financial commitments and potentially sensitive campaign data. Implementations managing real advertising budgets must implement the security controls outlined in this document. + + + +**Looking for the *why*?** This page is the normative implementation reference — the rules a compliant agent follows. For the threat model, the layered defense narrative, and a checklist for brand IT and CISOs, see the [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model). + + +## Overview + +AdCP operates in a high-stakes environment where: +- **Financial transactions** involve real advertising spend +- **Multi-party trust** requires coordination between authenticated agents, publishers, and orchestrators +- **Sensitive data** includes first-party signals, pre-launch creatives, and competitive targeting strategies +- **Asynchronous operations** span multiple systems and protocols + +## Risk Classification + +### High-Risk Operations (Financial) + +These operations commit real advertising budgets: + +| Operation | Risk | Primary Threat | +|-----------|------|----------------| +| `create_media_buy` | Creates financial commitments | Budget fraud, credential theft | +| `update_media_buy` | Modifies budgets and campaign parameters | Unauthorized modifications | + +**Requirements:** +- Short-lived credentials — right-sized to the blast radius of a leaked token. ≤1 hour is a reasonable default for tokens that can commit spend; ≤15 minutes is appropriate for tokens that can commit spend above a material threshold or that cross organizational boundaries. Document and justify the chosen window rather than defaulting to the lowest number. +- Request signing for transaction integrity +- Multi-factor authentication or approval workflows for large budgets +- Full audit trail with immutable logging + +### Medium-Risk Operations (Data Access) + +These operations access sensitive business data: + +| Operation | Risk | +|-----------|------| +| `get_media_buy_delivery` | Exposes performance metrics and spend data | +| `list_creatives` | Access to creative assets | +| `sync_creatives` | Uploads potentially sensitive creative content | + +### Low-Risk Operations (Discovery) + +These operations are publicly accessible: + +| Operation | Risk | +|-----------|------| +| `get_adcp_capabilities` | Agent capability discovery | +| `get_products` | Public inventory discovery | + +## Webhook Security + +AdCP 3.0 unifies webhook signing on the [AdCP RFC 9421 profile](#webhook-callbacks) — the seller signs outbound webhooks with a key published through its operator `brand.json` `agents[].jwks_uri`, and the buyer verifies against that JWKS. When the publisher's `adagents.json` pins `signing_keys[]` for that seller, the pin is authoritative. Nothing secret crosses the wire; identity is cryptographically established the same way it is for inbound requests. + +**9421 webhook signing is baseline-required in 3.0.** Any seller that emits webhooks MUST sign them per the [Webhook callbacks](#webhook-callbacks) profile unless the buyer explicitly opts into the legacy scheme below by populating `push_notification_config.authentication`, `accounts[].notification_configs[].authentication`, or `sync_agent_notification_configs.notification_configs[].authentication`. + +### Legacy HMAC-SHA256 fallback (deprecated, removed in 4.0) + +Buyers who need to interoperate with receivers that have not yet adopted the 9421 profile MAY opt in by populating `push_notification_config.authentication.credentials`, `accounts[].notification_configs[].authentication.credentials`, or `sync_agent_notification_configs.notification_configs[].authentication.credentials`. When `authentication` is present on the buyer's request, the seller signs with HMAC-SHA256 using the semantics defined in [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#legacy-hmac-sha256-fallback). The legacy scheme is a 3.x-only compatibility affordance; sellers MAY decline to support it, and it is removed in AdCP 4.0. + +Normative rules for the legacy scheme when a seller elects to support it: + +- **Algorithm**: HMAC-SHA256 only +- **Signed message**: `{unix_timestamp}.{raw_http_body_bytes}` — never re-serialize the JSON +- **Byte-equality invariant**: The HMAC is computed over raw bytes, not over a parsed JSON value. Signers and verifiers MUST compare the bytes on the wire directly; re-parsing and re-serializing a payload — even with matching libraries and compact separators — is not guaranteed to reproduce the signed bytes, because key ordering, unicode-escape policy, and number representation all diverge across serializers (see "Non-canonicalized aspects" below for concrete examples). This scheme does not define a canonical JSON form; the "Canonical on-wire form" and "Verifier input" rules below narrow the most common byte-drift failures on the signer and verifier sides respectively, but do not eliminate byte-level divergence. +- **Canonical on-wire form**: The `{raw_http_body_bytes}` MUST be byte-identical to the bytes the signer puts on the wire as the HTTP body. When the signer constructs the body by serializing a JSON value, it MUST use the JSON compact separators `","` (item separator) and `":"` (key separator) — no whitespace between tokens. The language-level serializers JavaScript `JSON.stringify`, Go `encoding/json` `json.Marshal`, Ruby `JSON.generate`, and Java Jackson `writeValueAsString` produce compact output by default; HTTP clients that wrap them (axios, Go `net/http` with a `json.Marshal`-ed body, Ruby `Net::HTTP` with `JSON.generate`, Java OkHttp with Jackson) inherit those defaults. In Python, `httpx` serializes with compact separators, but stdlib `json.dumps` defaults to `", "` / `": "` and HTTP clients that hand their payload to `json.dumps` without a `separators` kwarg (`requests(json=...)`, `aiohttp`) emit spaced bodies — signers on those paths MUST pass `separators=(",", ":")` explicitly. This enumeration is non-exhaustive; signers MUST verify their HTTP client's actual on-wire serialization (e.g., capture the request body via a proxy or hook) rather than rely on this list. The signature covers the bytes the receiver sees, not the object the signer serialized. +- **Non-canonicalized aspects**: Key ordering, unicode-escape policy, and number representation are NOT canonicalized by this scheme. For numbers in particular, language defaults diverge (`JSON.stringify(1.0)` → `1`, Python `json.dumps(1.0)` → `1.0`, Go `json.Marshal(1.0)` → `1`; floats like `0.1` and scientific notation hit similar cliffs), so a signer that serializes with one library and then re-parses / re-serializes with another before sending can produce signer-verifier drift even with compact separators — the byte-equality invariant above is the only thing that holds the scheme together. +- **Duplicate object keys**: Signers MUST NOT emit duplicate object keys AND MUST reject duplicate-key input from upstream callers before serialization. The signer-side MUST is load-bearing because it is the only place this failure mode can be caught: a signer that silently collapses a duplicate-key payload emits a cryptographically-clean signed frame whose semantics differ from the caller's intent, and the verifier cannot detect the upstream divergence from the wire — the signed bytes look normal. Signer-side conformance is unverifiable on the wire and is expected to be enforced by out-of-band audit / interop testing, not runtime detection (this shape is routine in signing specs; COSE and JOSE use the same pattern). Verifiers MUST reject bodies containing duplicate object keys after HMAC verification succeeds, returning a structured malformed-body error (distinct from a signature-mismatch error — the signature IS valid; the body is malformed). Per RFC 8259 §4, the names within a JSON object "SHOULD be unique" and the behavior of software that receives an object with non-unique names is unpredictable — so two verifiers parsing the same HMAC-valid bytes can disagree on the parsed value. This is a parser-differential attack class (cf. CVE-2017-12635 where one CouchDB parser read `roles=[]` and another read `roles=["_admin"]` from the same signed body). Every body carried on the legacy HMAC webhook scheme is a state-change notification (creative status, media-buy status, governance transitions), so the MUST applies unconditionally to this scheme. The detection MUST use a parser that exposes duplicate keys — a last-wins/first-wins default that silently discards them does not satisfy this requirement. Per-language strict-parse escape hatches for both signer input-validation and verifier body-checking: see [step 14 of the webhook verifier checklist](#webhook-callbacks) for the canonical non-exhaustive enumeration, including the libraries that only *appear* strict by default but silently collapse data-key duplicates. The verifier-side conformance fixture is `duplicate-keys-conflicting-values` in `static/test-vectors/webhook-hmac-sha256.json`, with `expected_verifier_action: "reject-malformed"`. Signer-side conformance fixtures live in the same file under `signer_side.rejection_vectors`: `signer-upstream-duplicate-key-rejection` (top-level), `signer-upstream-duplicate-key-deep-nested` (verifies the signer's check recurses into nested objects, not only top-level keys), `signer-upstream-duplicate-key-array-contained` (verifies the signer's check descends into objects inside arrays — a blind spot in hand-rolled validators that recurse into objects but not array members), and `signer-upstream-duplicate-key-three-deep` (verifies the walker does not halt at a shallow fixed depth). A positive-case fixture `signer-upstream-clean-input` lives under `signer_side.positive_vectors` so that a signer rejecting everything does not trivially pass the negative fixtures — interop harnesses MUST assert both rejection of the duplicate-key inputs and acceptance of the clean input. Signers that surface upstream-input rejections via logs or error responses MUST apply the same key-name sanitization rules defined in [step 14b of the webhook verifier checklist](#webhook-callbacks) (truncate at first non-printable to ``, truncate to last UTF-8 codepoint at or below 32 bytes, cap count at 4) — the signer-side channel has the same attacker-controlled-byte shape as the verifier-side channel, just with the direction of trust inverted. **Error identifier is normative; error-object internals are not.** When a signer surfaces the rejection via an error, the error identifier (error-code string in a discriminated union, exception class name in typed-throw idioms, tag in a sum type) MUST be `duplicate_key_input` exactly — case-sensitive, no prefix or suffix — so that multi-SDK integrations can write `if (error.code === 'duplicate_key_input') { ... }` and have the dispatch work regardless of which SDK signed the frame. The internal shape of the error carrier (field names for the sanitized key list, overflow-marker string, typed-exception constructor arguments) is implementation-defined. Verifiers that crash / fail-closed are conformant-but-suboptimal (the request is not silently accepted, but senders receive no actionable error code); verifiers SHOULD return a structured malformed-body error instead. The non-conformant failure mode — silent accept where the signature verifier's parse diverges from the downstream business-logic parse — is now forbidden; a verifier that does not detect duplicate keys before handing the payload to business logic does not conform to this scheme. +- **Verifier input**: Verifiers MUST use the raw HTTP body bytes as received on the wire, captured before any JSON parse or re-serialize. Every modern HTTP framework exposes a pre-parse raw-body hook (Express `express.raw()`, FastAPI `Request.body()`, aiohttp `Request.read()`, Go `io.ReadAll(r.Body)` before `json.Unmarshal`). The raw-capture hook MUST run before any JSON-parse middleware on the same route; a globally-mounted `express.json()` or FastAPI `BaseModel` body binding that consumes the request body before the verifier runs leaves the verifier operating on a re-stringified payload, not the signed bytes — this is a common deployment mistake. Verifiers SHOULD NOT re-serialize a parsed payload to reconstruct the signed bytes: re-serialization silently fails against signers whose output differs in key order, unicode escapes, or number formatting, and masks signer bugs the verifier should surface. A verifier that genuinely cannot capture raw bytes MUST fail closed and surface the infrastructure gap rather than accept a re-serialized approximation. +- **Timestamp source**: The `{unix_timestamp}` in the signed message MUST be the exact ASCII integer sent in the `X-ADCP-Timestamp` header. Signers and verifiers MUST NOT derive it from any body field. +- **Timing-safe comparison**: MUST use constant-time comparison (e.g., `timingSafeEqual`) +- **Replay window**: Reject requests where `|current_time - timestamp| > 300` seconds +- **Minimum secret length**: 32 bytes +- **Header format**: `X-ADCP-Signature: sha256=` and `X-ADCP-Timestamp: `. Receivers MUST ignore any deprecated body-level `signature` field when authenticating the delivery; the headers are authoritative. + +**Verification order** (legacy scheme): +1. Reject if `X-ADCP-Signature` or `X-ADCP-Timestamp` header is missing +2. Reject if timestamp is non-numeric +3. Reject if timestamp is outside the 5-minute window +4. Compute and compare HMAC + +**Secret rotation** (legacy scheme): +- Receivers MUST accept signatures from both current and previous secret during rotation +- Rotation window SHOULD NOT exceed the replay window (5 minutes) +- Publishers begin signing with the new secret immediately upon rotation + +### Webhook URL validation (SSRF) + +Any URL that a buyer, seller, or governance agent provides for another party to fetch is an SSRF vector. This includes `push_notification_config.url`, `accounts[].notification_configs[].url`, `sync_agent_notification_configs.notification_configs[].url`, `accounts[].governance_agents[].url` (the seller fetches this when it calls `check_governance`), collection-list `webhook_url`, TMP provider `endpoint`, `adagents.json` `authoritative_location`, and `reporting_bucket.setup_instructions`. + +Account-level webhook subscribers registered through `sync_accounts.accounts[].notification_configs[]` and agent-level subscribers registered through `sync_agent_notification_configs.notification_configs[]` also require endpoint ownership proof before activation. SSRF validation proves the seller is not calling an internal network address; it does not prove the buyer controls the public HTTPS endpoint. Sellers MUST complete an RFC 9421-signed activation challenge or equivalent proof-of-control before treating a new or changed active subscriber as active. Account-level challenge signatures bind the account, subscriber ID, exact normalized webhook URL through the covered `@target-uri`, expiry through the signature's `expires` parameter, delivery auth metadata, and normalized event type set; the receiver MUST verify every binding before echoing the single-use nonce. Paused subscribers (`active: false`) may skip only the outbound proof challenge while inactive; sellers MUST still enforce URL parsing, HTTPS, hostname normalization, and reserved-range rejection at write time, and paused subscribers MUST NOT receive fires until reactivated. Account-level challenges use [`webhook-challenge.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/webhook-challenge.json) and bind `account_id`; agent-level challenges use [`agent-webhook-challenge.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/agent-webhook-challenge.json) and bind `scope: "agent"` instead of an account. + +Before any outbound fetch to a counterparty-controlled URL, fetchers MUST: + +1. **Reject non-HTTPS URLs** in production. +2. **Resolve the hostname** and reject the fetch if the resolved IP falls in any reserved range: + - IPv4: RFC 1918 (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`), RFC 6598 CGNAT (`100.64.0.0/10`), loopback (`127.0.0.0/8`), link-local (`169.254.0.0/16` — explicitly includes `169.254.169.254` used by AWS/GCP/Azure/Alibaba instance metadata), broadcast (`255.255.255.255`), `0.0.0.0/8`, multicast (`224.0.0.0/4`). + - IPv6: loopback (`::1`), unique-local (`fc00::/7`), link-local (`fe80::/10`), IPv4-mapped (`::ffff:0:0/96` — the most common bypass, mapping reserved IPv4 into IPv6), multicast (`ff00::/8`), and the AWS IMDSv2 fd00:ec2::254 address. +3. **Pin the connection to the validated IP.** DNS-based filtering alone is vulnerable to DNS rebinding: an attacker serves a public IP at validation time and a private IP at connect time. Fetchers MUST pin the connection. **Preferred**: (a) pass the validated IP directly to the TCP connect call and set the `Host:` header from the URL. **Fallback** (only when the HTTP client cannot accept a pre-resolved IP): (b) validate the socket's post-handshake peer address against the reserved-range list before sending any request body. Note: (b) depends on the client library exposing a peer-address hook that fires before the first body byte ships; many common libraries do not, so implementations choosing (b) MUST verify the hook in testing. Re-resolving DNS without pinning is not sufficient. +4. **Refuse to follow redirects** when fetching counterparty-controlled URLs (a 30x response lets the origin redirect to a reserved address that bypassed the initial check). Two bounded exceptions, each re-validating steps 1–3 on every hop and capping the chain: the [brand.json resolution](#buyer-identity-resolution) (one redirect, no chains), and the initial `/.well-known/adagents.json` fetch, which follows **same-registrable-domain** redirects only (`apex ↔ www`, HTTPS-preserving, ≤ 3 hops, anchored on the originally-requested domain) so standard apex→www hosting resolves — see [managed networks](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#why-not-http-redirects). The `adagents.json` `authoritative_location` dereference takes no exception: redirects on that second hop MUST be refused. +5. **Cap response size and timeouts.** Recommended: 5 MB body cap, 10 s connect, 10 s read. The only exception is the dereferenced authoritative file in the managed-network indirection pattern — second-hop only, after a pointer file's `authoritative_location` redirects to the network origin — which uses a recommended 20 MB cap because it fans out across a publisher network. Pointer files themselves stay at 5 MB. See [managed networks security](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations). +6. **Do not echo fetch errors to the agent that supplied the URL.** Detailed error messages (connection refused vs. timed out vs. TLS failure) are a side-channel for probing internal network topology. + +#### Destination port: permissive by default + +Publishers SHOULD NOT enforce a destination-port allowlist on counterparty-supplied URLs (`push_notification_config.url`, collection-list `webhook_url`, TMP provider `endpoint`, etc.) by default. The URL contract is `format: "uri"` only; the protocol does not constrain ports. Buyers legitimately host webhook receivers on non-standard TLS ports — Tomcat default `:9443`, Spring Boot default `:4443`, path-routed multi-tenant gateways, and per-tenant subdomains-with-port carve-outs — and a default port allowlist silently rejects them with no recourse short of asking the publisher operator to widen the list. + +The SSRF guard the protocol relies on is the **IP-range check + DNS-rebinding-resistant connect pin** in steps 2–3 above, not port filtering. The reserved-range check covers the realistic SSRF threat (smuggling traffic to internal services on `10.0.0.0/8`, `127.0.0.0/8`, `169.254.169.254`, etc.); port filtering on top of a routable public IP is a marginal defense whose cost (rejecting conformant buyers) typically exceeds its benefit. + +Operators who want a destination-port allowlist as defense-in-depth — for example, locked-down enterprise environments where the publisher's egress firewall already restricts outbound ports — SHOULD opt in explicitly via SDK or deployment configuration, with `{443, 8443}` as a reasonable hardened-mode starting point. SDKs that ship a `DEFAULT_ALLOWED_PORTS` constant MUST default it to "no restriction" and surface `{443, 8443}` as an opt-in profile, never as a default. Sellers that activate hardened mode MUST document the allowed-port set in their operator-facing documentation so buyers can size their integration before discovering the constraint at first-webhook-delivery time. + +The wire-level URL contract is **unconstrained beyond `format: "uri"`**; hardened-mode port filtering is an operator-side policy choice, not a protocol-side requirement. + +Feature-specific security sections extend these rules with their own lifecycle and content-handling requirements: +- [Offline reporting buckets](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#security-considerations-for-offline-delivery) — IAM-layer prefix scoping, credential revocation on account status change. +- [Collection lists](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#security-considerations) — `auth_token` scope and revocation, distribution-ID validation, webhook signature normative rules. +- [Managed networks `authoritative_location`](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations) — validator fetch semantics, change detection, relationship termination. +- [TMP provider registration](/dist/docs/3.2.0-beta.4/trusted-match/specification#provider-registration-security) — dynamic registration authentication, router-to-provider auth, `/health` info-leakage rules. + +## Portable attestations + +Portable attestations let one agent reference an independently issued claim without making the presenter or AdCP the trust authority. A seller or governance agent publishes what it will evaluate through `get_adcp_capabilities.adcp.attestations`; a presenter supplies an `AttestationReference`; the evaluator resolves and verifies the credential under its own policy. + +The evaluator is always the **verifier-of-record**. A presentation is a locator and claim hint. It is not proof, a routing instruction, or permission to fetch an arbitrary URL. RFC 9421 request signing authenticates the presenting agent and protects the request in transit, but it does not prove the presented claim. + +### Data model and separation + +Implementations MUST keep three layers distinct: + +1. **Presentation** — the portable reference supplied by a buyer or another agent. +2. **Credential** — the issuer-signed claim found through the reference or supplied as an embedded proof. +3. **Evaluation** — the receiving seller's or governance agent's result after applying its trust policy. + +{/* Using latest because these schemas are not yet released in any version. + Update to the correct version alias after the next release. */} +The shared schemas are [`attestation-reference.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attestation-reference.json), [`attestation-issuer.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attestation-issuer.json), [`attestation-subject.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attestation-subject.json), and [`attestation-evaluation.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attestation-evaluation.json). + +Every presentation identifies an issuer, an open URI-namespaced `claim_type`, a typed subject, and at least one delivery path: + +| Path | Presentation fields | Evaluator behavior | +|---|---|---| +| HTTPS credential | `locator.type: credential_uri` + `credential_uri` | Match the URI's canonical origin to the accepted issuer's `credential_origins` before DNS resolution or any request. | +| Issuer credential ID | `locator.type: issuer_credential_id` + `credential_id` + `resolver_id` | Resolve `resolver_id` to a URL from the evaluator's own capability configuration, then send the fixed resolver request defined below. The presentation never carries the resolver URL. | +| Embedded credential | `embedded_credential.format` + `embedded_credential.value` | Enforce the advertised byte limit before parsing, then verify the supported format locally or through an accepted verifier. | + +A presentation MAY carry both a locator and an embedded credential. In that case `content_digest` is REQUIRED, the evaluator MUST obtain both representations, and the exact bytes of each MUST independently match that digest before either is trusted. It MUST verify both credentials under the same proof-format and issuer rules. A missing, unverifiable, or mismatched representation is a hard failure; the evaluator MUST NOT select the representation that passes or fall back to an unpinned body. `credential_version` and `validity_hint` are planning hints only; the credential is authoritative for version, validity, scope, and revocation. + +For a resource subject, `subject.content_digest` optionally pins the content or immutable snapshot the credential is about. It is part of the complete typed subject comparison. It is distinct from the presentation-level `content_digest`, which pins credential bytes. + +Issuer and claim identifiers are open vocabularies. An evaluator listing them expresses only its own policy; it is not an AgenticAdvertising.org endorsement or a global trust registry. + +The presenter MAY nominate `verify_agent.agent_url`, but it MUST match `accepted_verifiers[]` after [URL canonicalization](/dist/docs/3.2.0-beta.4/reference/url-canonicalization). The evaluator MAY use that verifier, another accepted verifier, or local verification. It MUST NOT call an off-list presenter-supplied endpoint. + +### Normative evaluation procedure + +For every presentation, an evaluator MUST perform these steps in order: + +1. **Validate without network access.** Reject malformed issuer, subject, locator, proof format, and digest fields. JSON inputs MUST be strict-parsed with duplicate object keys rejected before JCS, digest computation, schema validation, or field extraction; a last-key-wins or first-key-wins parser is insufficient. +2. **Apply the capability allowlist.** Match the canonical issuer, claim type, delivery method, proof format when known, and nominated verifier. Reject an untrusted issuer, resolver, credential origin, or verifier without an outbound request. +3. **Select delivery.** For `credential_uri`, validate the canonical origin against the issuer capability. For `issuer_credential_id`, map `resolver_id` through that capability. For embedded delivery, enforce `max_embedded_credential_bytes` before parsing. +4. **Resolve safely when needed.** Apply the fetch contract below to the evaluator-selected URL. +5. **Verify the credential deterministically.** Confirm proof/signature integrity, issuer identity, claim type, complete typed subject, claim scope, validity period, and revocation state. Verify `content_digest` before using credential contents. Cryptographic verification, issuer-key authorization, canonicalization, equality checks, and outcome selection MUST run in deterministic code rather than an LLM. Credential bytes and resolver responses MUST NOT be placed in an LLM context before these checks; an LLM MAY assist a later policy workflow but cannot establish a `verified` outcome. +6. **Apply local trust policy.** A cryptographically valid credential may still be unacceptable for this claim, subject, jurisdiction, action, or time. +7. **Emit a stable outcome.** Never convert resolution or policy failure into success merely because the presenter asserted the claim. +8. **Bind the result.** Carry the exact presentation digest and action binding in the domain result or readback that relied on it. + +### Attestation resolution fetch contract + +For `issuer_credential_id`, the resolver transport is fixed: `POST` to the evaluator-configured resolver URL with `Content-Type: application/json` and a strict JSON body whose only member is `{"credential_id":""}`. The credential ID MUST NOT be interpolated into the URL path or query. Credential-URI fetches carry no Authorization header or cookies. Resolver authentication, when configured as `evaluator_managed`, is loaded by the evaluator and sent only to the exact configured resolver endpoint; credentials from the incoming task, a credential response, or another origin MUST NOT be forwarded. + +Before every credential or resolver request, evaluators MUST: + +1. Require HTTPS and reject userinfo, fragments, and non-HTTPS schemes. +2. Match the canonical credential origin or configured resolver ID to `accepted_issuers[]` before DNS resolution. +3. Resolve the hostname and reject private, loopback, link-local, unique-local, CGNAT, multicast, special-use, and cloud-metadata destinations, including IPv4-mapped IPv6 forms. +4. Pin the connection to the validated address, or validate the post-TLS peer address before sending request bytes, to prevent DNS rebinding. +5. Disable redirects and treat every 3xx response as `resolution_failed`. The redirect limit is zero. Authentication headers and cookies MUST NOT be forwarded to any other endpoint. +6. Apply a connect timeout of at most 10 seconds, a read timeout of at most 10 seconds, and a streamed response-body cap of 1 MiB. +7. Keep resolver credentials outside AdCP task payloads and LLM-visible arguments. `authentication: evaluator_managed` means the evaluator loads them from its own secret store. +8. Avoid returning connection-detail differences to the presenter. Map network details to stable outcomes without exposing internal topology. + +Before parsing a task that can carry portable attestations, implementations MUST enforce an overall task-body cap of 4 MiB, a maximum JSON nesting depth of 64, and at most 100,000 aggregate object members and array elements. These are whole-task caps, not per-attestation allowances, and apply in addition to the advertised per-credential `max_embedded_credential_bytes` (whose protocol ceiling is 1 MiB). Reject an over-limit body before schema evaluation, JCS, credential extraction, logging of body content, or any LLM-visible processing. An evaluator that advertises `embedded` delivery MUST advertise and enforce `max_embedded_credential_bytes`. + +These rules extend the general [SSRF profile](#webhook-url-validation-ssrf). A URL is never authorized solely because it appeared in a signed request. + +Resolver access can disclose which buyer, signal, campaign, or claim is being evaluated. Evaluators SHOULD prefer privacy-preserving resolution, send no unnecessary campaign identifiers, disclose resolver access to their operators and users, and bound logs and caches accordingly. + +### Issuer signing-key authority + +A mathematically valid signature does not by itself establish the `AttestationIssuer` named by the presentation or credential. For each accepted proof format, the evaluator MUST authorize the verification key for that canonical issuer through either (a) the proof format's authenticated issuer-key discovery and binding procedure or (b) an evaluator-managed local trust anchor configured for that issuer and proof format. Unauthenticated key URLs, presenter-supplied keys, and a credential's bare `kid` value are not trust anchors. A credential signed correctly by a key that is not authorized for its claimed issuer has outcome `invalid`, even if the key is trusted for another issuer. + +Key discovery is itself part of the proof-format verifier and MUST apply that format's transport, chain, algorithm, key-use, revocation, and freshness requirements. The evaluator MUST bind cached keys to canonical issuer identity and proof format; it MUST NOT reuse a same-named `kid` across issuers. + +### Outcomes, action binding, and caching + +Stable outcomes are `verified`, `not_found`, `expired`, `revoked`, `invalid`, `unsupported`, `unverifiable`, `untrusted_issuer`, `untrusted_resolver`, `subject_mismatch`, `digest_mismatch`, and `resolution_failed`. Only `verified` means all required credential and policy checks passed. + +Every `AttestationEvaluation` requires `reference_digest`, computed as SHA-256 over the RFC 8785 JSON Canonicalization Scheme representation of the complete `AttestationReference`, including an embedded credential. Duplicate JSON object keys MUST already have been rejected before canonicalization. Outcomes based on obtained credential bytes also carry `credential_digest` and `proof_format`, so the digest's byte interpretation is explicit. For dual delivery, `credential_digest` records the resolved bytes while `reference_digest` independently binds the embedded bytes; both representations have already matched the required presentation digest. A domain consumer that relies on the result MUST carry `action_binding` with a domain-defined action type and either an action identifier or canonical action digest. + +This produces two independent bindings: `reference_digest` identifies exactly what was evaluated; `action_binding` identifies the governance decision, evidence snapshot, rights decision, or other action that relied on it. Portable credentials SHOULD remain reusable across sellers unless the issuer's model requires a specific audience; the transaction binding belongs to the evaluation result rather than automatically inside every credential. + +Evaluators MAY cache results, but cache keys MUST include canonical issuer identity, locator, proof format, and credential or reference digest. Cache lifetime MUST be bounded by the earliest of credential expiry, issuer/verifier key refresh, revocation freshness policy, evaluator policy, and `valid_until`. Trust-policy or revocation changes invalidate prior success. + +### Rights-grant attestation profile (3.2) + +Rights constraints compose the shared portable-attestation primitive; they do not define a rights-only JWS or trust store. The buyer carries `rights_constraint.attestation_refs[]`, the serving seller remains verifier-of-record, and only the seller produces [`RightsAttestationEvaluation`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/rights-attestation-evaluation.json) readback. A buyer-authored evaluation or the mere presence of a reference has no authorization value. + +The rights profile uses these identifiers: + +- claim type: `https://adcontextprotocol.org/claims/rights/grant` +- resource subject type: `https://adcontextprotocol.org/claims/subjects/rights-grant` +- action type: `https://adcontextprotocol.org/actions/rights-grant-evaluation` + +Each reference MUST use a `brand` issuer exactly equal to `rights_holder`. After URL canonicalization, `subject.namespace` MUST equal `rights_constraint.rights_agent.url`; `subject.id` MUST equal `rights_id`; and `subject.content_digest` MUST equal the constraint's `content_digest`. The digest is `sha256:` plus lowercase-hex SHA-256 of `UTF8(JCS(rights_constraint minus { content_digest, attestation_refs, verification_url }))`. Omitting an optional member is distinct from supplying an empty value. The projection deliberately excludes `verification_url`, which is a deprecated legacy display hint with no fetch or authorization semantics, and includes `ext` plus future grant fields so new serving restrictions cannot be added outside the signed projection. + +For AdCP 3.2, every acquired `acquire_rights` response and every reissued `update_rights` constraint MUST carry `content_digest` plus at least one `attestation_refs` entry. The schema keeps them optional only so a 3.2 parser can ingest 3.1 constraints; absence means machine-unverified/informational, never authorized. Multiple references are alternative delivery or proof paths—one current `verified` result is sufficient unless evaluator policy requires more. + +The resolved or embedded credential MUST cryptographically protect the exact issuer, claim type, complete typed subject, grant version, validity, and credential identifier. A `verified` result additionally requires authenticated issuer-bound status evidence for that exact credential and grant, an approved constraint, current credential and grant validity, exact digest agreement, and evaluator policy accepting the issuer, proof format, delivery method, jurisdiction, and consuming action. The evaluator MUST bind the actual status-proof verification key through the same exact holder rights-agent JWKS and `attestation-signing` purpose as the credential key; signature validity without that authority check is insufficient. Verified evaluations MUST carry `revocation_checked_at` and `valid_until`; the latter is the earliest credential/grant expiry, revocation-freshness bound, key-refresh bound, and local-policy bound. Missing, stale, swapped, superseded, or unverifiable status cannot produce `verified`. A seller still checks the actual use, country, time, and impression-cap ledger; a grant evaluation cannot prove remaining cap. Partial revocation revokes the old credential and issues a new narrowed constraint/reference rather than leaving the old broad credential valid. + +For 3.2 evaluation, `rights_holder` is mandatory and issuer-key authorization chains to that exact BrandRef. Before DNS or any fetch, the evaluator MUST exact-match the holder against its accepted issuer policy; an off-policy holder fails with zero network access. Resolve `rights_holder.domain` using the standard SSRF-safe brand.json contract: HTTPS only, reserved/private/link-local IP rejection before and after DNS, DNS pinning, bounded redirects and response size (256 KiB), deadlines, and negative caching. When `brand_id` is present, select exactly one `brands[]` entry whose `id` equals it; use that entry's `agents[]` when present, otherwise the house `agents[]` fallback. When `brand_id` is absent, the document must unambiguously represent the single brand or house. Select exactly one applicable entry with `type: "rights"`, canonical `url == rights_agent.url`, and exact `id == rights_agent.id`. Never aggregate sibling-brand agents or discover a key from a credential-supplied URL. Resolve JWKS only from the selected entry and bind the actual credential verification key by JWK thumbprint, not `kid` alone. AdCP-agent credential keys use the shared portable-credential purpose `adcp_use: "attestation-signing"`; this is not a rights-only purpose. `response-signing` remains reserved for designated brand-response payloads. + +Every seller-produced rights evaluation MUST bind both `action_id == rights_id` and `action_digest == content_digest` under the rights action type and MUST satisfy `reference_digest == sha256(JCS(reference))`. It MUST have `outcome: verified`, and the seller MUST retrieve the byte-identical result from its own local evaluation store keyed by `(evaluated_by, reference_digest)` before relying on it. The `evaluated_by` string is descriptive, not provenance: buyer-authored, foreign-seller, absent-store, and locally mismatched readback all fail closed. This is a reusable evaluation of one exact rights grant, not a serving authorization. The same evaluator may reuse its locally persisted result for another creative carrying the identical unchanged grant until `evaluation.valid_until`; another seller never trusts that readback as its own evaluation. Creative identity, media buy, use, country, delivery scope, and cap state are separate eligibility inputs and MUST be checked at the consuming boundary. The seller persists the exact reference/evaluation pair in creative readback and re-evaluates no later than `evaluation.valid_until`. + +Sellers advertise this behavior with `media_buy.rights_attestations.requirement`. Presence requires `adcp.attestations` and the exact rights claim URI in `accepted_claim_types`. `required` makes a current verified result a serving-eligibility condition. `optional` permits a separately established legacy contractual path, but the constraint remains machine-unverified and implementations MUST NOT downgrade to `verification_url`. + +Versioned fixtures under `/compliance/{version}/test-vectors/attestations/` cover resolved and embedded credentials, off-policy issuers and resolvers, expiry and revocation, subject and digest mismatch, and resolution failure. Implementations must produce the expected outcome and perform no network access for off-policy cases. + +## Authentication Best Practices + +### Credential Storage + +```javascript +// Use secure key management systems +// Never commit credentials to version control +// Use environment variables or secret managers + +// Example: Secure credential retrieval +async function getCredentials(agentId) { + // Retrieve from secure storage (AWS KMS, Vault, etc.) + const encrypted = await secretManager.get(`agent/${agentId}/apiKey`); + return decrypt(encrypted); +} +``` + +### Token Expiration + +Use short-lived tokens for high-risk operations: + +```javascript +const TOKEN_LIFETIMES = { + discovery: 3600, // 1 hour for read operations + financial: 900, // 15 minutes for financial operations + refresh: 86400 // 24 hours for refresh tokens +}; + +function validateToken(token, operationType) { + const decoded = jwt.verify(token, secret); + const maxAge = TOKEN_LIFETIMES[operationType] || TOKEN_LIFETIMES.discovery; + + if (Date.now() - decoded.iat > maxAge * 1000) { + throw new Error('Token expired for this operation type'); + } + + return decoded; +} +``` + +## Agent and Account Isolation + +Every piece of state — media buys, creatives, idempotency cache entries, session IDs, governance tokens — is scoped to the [account](/dist/docs/3.2.0-beta.4/reference/glossary#a) that owns it. Cross-account reads MUST return a generic "not found" rather than leak existence. The authenticated [agent](/dist/docs/3.2.0-beta.4/reference/glossary#a) is how the seller knows *who is calling*; the `account` on the request is *what billing relationship the call is acting on*. Isolation requires both checks. + +Sales agents MUST: + +1. **Bind on create** — permanently associate each object (media buy, creative, session, etc.) with the account used on the request that created it. +2. **Verify on access** — on every subsequent read or modification, verify the authenticated agent has access to the object's bound account. +3. **Fail closed** — when verification fails, return a generic error (status 403 or 404 is acceptable, but the body MUST NOT distinguish "unauthorized" from "not found" or name the account). Never fall through to the resource query. + +See [Accounts & Security — Data Isolation](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security#data-isolation) for the billing-relationship model these rules enforce, and the glossary for the formal definitions of [Account](/dist/docs/3.2.0-beta.4/reference/glossary#a) and [Agent](/dist/docs/3.2.0-beta.4/reference/glossary#a). + +### The two-step pattern + +Every account-scoped request whose schema requires `account` carries an explicit `AccountRef` (via `account_id` for account-id namespaces, or the `{brand, operator}` natural key for buyer-declared accounts). A seller MUST NOT silently replace a missing required `account` with a credential-implied default. For tasks where `account` is optional, omission semantics are task-local and must be documented by that task. Correct isolation is two checks, performed in order: + +1. **Auth precheck** — the request's `account` MUST be in the authenticated agent's authorized set. Fail closed with a 403 or a generic "not found" (never "you are not authorized for that account" — that's an existence leak). +2. **Resource query** — filter by the request's `account_id` as the primary key constraint. Not by the whole authorized set — only by the specific account this request is acting on. + +```javascript +// Two-step: precheck request account is authorized, then scope the query to it. +// authorizedAccountIds is a Set populated once at auth-time, not an Array. +// Set.has() is O(1); Array.includes() is O(n) and scans element-by-element, which +// on large authorized-account sets introduces a timing difference between early +// and late matches that a caller can probe across requests. +async function getMediaBuy(mediaBuyId, requestAccountId, authAgent) { + // Step 1: auth precheck + if (!authAgent.authorizedAccountIds.has(requestAccountId)) { + // Generic error - don't reveal whether the account exists + throw new NotFoundError("Media buy not found"); + } + + // Step 2: resource query scoped to the specific account + const mediaBuy = await db.mediaBuys.findOne({ + id: mediaBuyId, + account_id: requestAccountId // Primary filter + }); + + if (!mediaBuy) { + // Generic error - same shape as the precheck failure + throw new NotFoundError("Media buy not found"); + } + + return mediaBuy; +} +``` + +Filtering by the *whole* authorized set on a by-ID lookup is a regression: a `get_media_buy(X)` issued under account A would succeed for a buy owned by account B if both are in the agent's authorized set. The request-supplied `account_id` is what ties a lookup to the caller's *stated* intent. + +### Row-Level Security + +The most common isolation failure is **IDOR via joined or nested relations**: a query scopes the primary table by `account_id` but joins or returns fields from a related table (line items, creatives, delivery rows) that was never filtered by the same principal. Defend per-principal at the data layer, not just in handler code, so a bug in one handler cannot punch through the wall: + +```sql +-- PostgreSQL example +-- app.current_account is set by the auth layer AFTER the precheck above succeeds +CREATE POLICY account_isolation ON media_buys + USING (account_id = current_setting('app.current_account')::uuid); + +ALTER TABLE media_buys ENABLE ROW LEVEL SECURITY; +``` + +For **list endpoints** (`get_media_buys` without an explicit account filter), RLS scopes to the agent's authorized set via a session variable populated at auth time: + +```sql +CREATE POLICY account_isolation_list ON media_buys + FOR SELECT + USING (account_id = ANY(current_setting('app.authorized_accounts')::uuid[])); +``` + +### Client-side isolation: cross-principal tool-call confusion + +The rules above are server-side enforcement. They protect the seller's data even when a legitimate-but-compromised agent is the caller. The **client-side companion** is the buyer agent's obligation not to let text supplied by principal X drive tool calls that use principal Y's authority. + +An LLM-driven buyer agent typically holds credentials for multiple principals at once: several sellers (one credential set per seller) and, inside an agency agent, several brand accounts. Any untrusted string the agent processes — product descriptions returned by a seller, campaign names inherited from a brief, rejection reasons in an error envelope, webhook event bodies — is text sourced from *one* of those principals. If the agent's planning loop can call tools across all of them from a single LLM context, a prompt injected in seller X's text can cause the agent to call `create_media_buy` on seller Y's endpoint, or to spend brand A's budget on brand B's inventory. This is the [confused-deputy](https://en.wikipedia.org/wiki/Confused_deputy_problem) problem at tool-call granularity: the attacker doesn't need to escape the sandbox — the agent's own legitimate authority does the damage. + +Operators running LLM-powered AdCP agents MUST apply at least the following controls: + +1. **Tag text with its principal of origin.** Every string the LLM context ingests from the network (tool results, webhook bodies, registry documents, creative metadata) MUST be annotated internally with the `{principal_domain, tool_name, response_field}` triple that produced it. Dropping the annotation at ingest time is where this defense dies. +2. **Restrict tool-call targets to the calling principal.** A tool call whose target principal is not the same as the principal that supplied the string(s) driving the decision MUST either (a) be refused, (b) go through a human approval step, or (c) be mediated by an explicit per-principal policy the operator has declared up front. The default MUST be refuse, not allow. +3. **Segregate credential scopes by LLM context.** A single LLM planning loop MUST NOT hold live credentials for principals whose interests can conflict (e.g., two brands competing for the same inventory; a buyer credential and a governance agent's signing key in one context). The scope-segregation is enforced at the process / tool-registration layer, not by instructing the LLM — the LLM MUST NOT have the affordance to misuse. +4. **Log every cross-principal *attempt*, not just successes.** Refusals under rule 2 are the signal operators MUST monitor — a rising refusal rate from a given principal is the earliest detectable sign of an injection campaign targeting your agent. + +This threat is distinct from ordinary prompt injection: ordinary injection exfiltrates data or triggers unauthorized tool calls within *one* principal's authority. Cross-principal confusion uses principal X's untrusted text to reach principal Y's authority without the attacker ever holding Y's credentials. The server-side Layer 2 controls above detect the attempt only if principal Y's account isn't already in the buyer agent's authorized set — when it is (the whole point of agency and multi-seller agents), the server sees a legitimate-looking call. + +The protocol cannot force this discipline on the client agent. The test for it is operational: every LLM-powered AdCP buyer MUST be able to describe, in writing, which principals can appear together in the same planning context and what gates a cross-principal tool call. + +## Time Semantics + +AdCP operates across jurisdictions, ad servers, and daypart calendars. Implementations MUST be precise about time or buyers and sellers will disagree about what "delivered by 5pm" meant. + +### Timestamp format + +All timestamp fields in AdCP requests, responses, and webhook payloads MUST be [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) with an explicit timezone offset. + +``` +✅ 2026-04-19T10:00:00Z // UTC, recommended +✅ 2026-04-19T10:00:00-04:00 // explicit offset +❌ 2026-04-19T10:00:00 // no offset — ambiguous +❌ 2026-04-19 10:00:00 // not ISO 8601 +``` + +Implementations MUST reject ambiguous ("naïve") timestamps with `INVALID_REQUEST`. Implementations SHOULD use UTC (`Z` suffix) on the wire and convert to local time at the presentation layer. + +### Intervals + +Any time window in AdCP — flight dates, reporting windows, daypart targeting, idempotency replay TTLs — uses a **half-open interval**: `[start, end)`. The start timestamp is inclusive; the end timestamp is exclusive. A campaign with `start_time: 2026-04-01T00:00:00Z` and `end_time: 2026-05-01T00:00:00Z` runs for April and stops at the first tick of May. + +### Daypart targeting + +Daypart definitions MUST declare their **timezone semantics** — which of the three meanings the time values carry: + +- **Buyer-declared zone** — an IANA zone name alongside the daypart (e.g., `timezone: "America/New_York"`). The daypart is evaluated against that zone regardless of viewer or publisher location. Use this when the buyer wants "9–11pm New York time" enforced globally. +- **Publisher-local** — the daypart is evaluated in the publisher's declared local zone. Use this when the buyer wants "prime time on the publisher's schedule" and is willing to let the publisher decide what that means. +- **Viewer-local** — the daypart is evaluated against each viewer's timezone, resolved at serve time from the viewer's location signal. Use this when the buyer wants "serve at 8pm local" across a global audience. + +A daypart with no declared semantics is ambiguous and MUST be rejected with `INVALID_REQUEST`. Sellers MUST honor the declared semantics; if a seller cannot support the requested mode (e.g., a publisher operating in a single zone cannot serve viewer-local dayparting), the seller MUST reject with `INVALID_REQUEST` rather than silently converting. Per-agent defaults are non-normative and MUST NOT be relied on. + +## Request Safety + +### Idempotency + +`idempotency_key` is **required on every state-mutating AdCP task request**. Guaranteed pure-read tasks may leave it optional, but they MUST accept and apply the replay contract when a caller supplies one. Keys are scoped per `(authenticated agent, account)` — they have no meaning across agents on the same seller, across accounts under the same agent, or across sellers. + +**Product-discovery migration in 3.2.** AdCP 3.2 adds four compact tools alongside the stable `get_products` facade: + +- `list_products` is a naturally idempotent synchronous read; its key is optional and sellers apply the replay contract when one is supplied. +- `request_proposals`, `refine_proposals`, and `decline_proposals` require a key because they can allocate tasks or change proposal state. +- `get_products` remains valid throughout 3.x as a deprecated compatibility facade, with an optional key. Sellers MUST honor the replay contract whenever the caller supplies one. + +The compact tools reuse legacy implementation paths where useful but are distinct logical operations. A retry MUST keep the same tool name and payload. Reusing a key on another tool is a different payload and returns `IDEMPOTENCY_CONFLICT`; callers must not switch names after an ambiguous failure. + +`request_proposals` binds each opaque proposal ID to its full BrandKey (`domain`, optional `brand_id`, and optional `countries[]`) and, when supplied, its seller account. A natural account's operator-unit ID, fixed currency, and sandbox flag are part of that account binding, so distinct advertiser objects do not share an idempotency or proposal namespace. Country arrays are canonicalized as unique uppercase codes in lexical order; the operator unit's mutable display name is excluded from identity. `refine_proposals` and `decline_proposals` resolve that binding before idempotency lookup, require every resolvable ID in a batch to share one binding, and scope the key to the resolved account or BrandKey. Callers do not repeat identity data on those mutation requests, and sellers MUST return the same not-found response for an absent proposal and a proposal outside the caller's principal/account scope. When no ID in a batch resolves, sellers use a principal-local negative-lookup scope; this permits safe replay of an all-`unable` result without creating a cross-account oracle. + +This section applies only to AdCP task requests. OpenRTB bid streams have their own semantics (`BidRequest.id` is a transaction ID, not an idempotency key) and are out of scope. + +#### Normative seller behavior + +1. **Schema validation runs first.** Sellers MUST validate the request against its schema (including presence and format of `idempotency_key` when declared) BEFORE consulting the idempotency cache. A malformed request returns `INVALID_REQUEST` without ever touching the cache — otherwise cache misses become a timing side channel that leaks whether schema validation accepted the key format. Validation errors are never cached (per rule 2). +2. **First call is canonical.** On **task success** (`status: completed` or `status: submitted` for async operations), the seller stores the inner response payload (not the protocol envelope) keyed by `(authenticated_agent, account_id, idempotency_key)` along with a hash of the canonical request payload. **The cache entry is immutable** — replays within the TTL MUST return the originally-cached payload (with `replayed: true`), and state-tracking fields in that payload MUST NOT be refreshed to reflect the resource's current state. This rule applies across both success branches: + + - **Async tasks** — the cached response is the `submitted` result containing `task_id`. Even if the async task subsequently completes, fails, or is canceled, a replay MUST return the originally-cached `submitted` response, NOT the current terminal state. The buyer uses the returned `task_id` to observe current state via `tasks/get` or webhook, exactly as it would have on the first call. + - **Synchronous-success tasks** — when the initial response carries state-tracking fields (e.g., `status`, `packages`, `affected_packages` on `create_media_buy`; per-record `status` arrays on `sync_creatives` / `sync_accounts`; resource snapshots on `acquire_rights` / `activate_signal`), replay MUST return the originally-cached payload regardless of intervening mutations to the resource. A media buy that was created with `status: pending_creatives`, then mutated to `canceled` via `update_media_buy`, replays as `status: pending_creatives` — the cached bytes are a historical snapshot of the create-time response, not a current-state read. Buyers MUST consult the resource's read endpoint (`get_media_buys`, `list_accounts`, `list_creatives`, etc.) for current state; see "Buyer obligations" below. + + This preserves the byte-stable cache property uniformly and keeps the idempotency layer decoupled from resource lifecycle — sellers don't need to update cache entries when task or resource state changes. The alternative ("refresh state fields on replay") would force every seller to thread the resource state machine through the idempotency cache, multiply the number of valid cache contents for a given key (a single key's replay would no longer be deterministic across calls), and break the canonical-replay invariant the rest of these rules build on. Sellers MUST NOT implement a hybrid where some state-tracking fields refresh on replay and others do not — partial refresh is the worst of both options and is non-conformant. +3. **Only successful responses are cached.** On any error — validation, governance denial, transport failure, internal error — the key is **not** stored. A retry re-executes. This matches buyer intent: a retry after a 5xx should try again, not replay a failure. It also prevents a buyer's malformed request from being locked into a key for its full TTL. +4. **Replay returns the cached response.** A subsequent request with the same `idempotency_key` AND an equivalent canonical-form payload (see "Payload equivalence" below) MUST return the stored inner response without re-executing side effects. The seller injects `replayed: true` onto the outgoing protocol envelope at response time — `replayed` is an envelope-level field produced by the idempotency layer, NOT part of the cached inner response. Injection at replay time keeps the cached payload byte-stable across replays regardless of envelope changes (new `timestamp`, rotated `governance_context`, etc.). Transport-specific note for MCP: MCP tool responses do not have a separate envelope slot; servers MAY expose `replayed` inside the tool result object itself (e.g., at the top of the structured return) or via a response metadata field. REST and A2A responses use the envelope field directly. +5. **Key reuse with a different canonical payload is a conflict.** Same key, different canonical hash within the replay window MUST be rejected with `IDEMPOTENCY_CONFLICT`. Sellers MUST NOT silently apply the second request. +6. **Expired keys are rejected explicitly.** After `replay_ttl_seconds` elapses the seller MAY evict the cache entry. A request arriving after eviction with a key the seller has seen SHOULD be rejected with `IDEMPOTENCY_EXPIRED` rather than silently treated as new — silent re-execution is exactly the double-booking footgun the key was meant to prevent. Sellers SHOULD allow a ±60s clock-skew window at the TTL boundary (the same tolerance applied to JWS `exp` elsewhere in this document) so that a retry arriving seconds after nominal expiry is still replayed from cache rather than treated as fresh. + + **Durability is normative.** The declared `replay_ttl_seconds` is a durability contract, not a best-effort cache hint. Sellers MUST back the idempotency cache with storage that survives process restarts, pod replacements, region failovers, and operator-initiated cache flushes for the declared TTL. In-memory-only stores (plain `Map`, single-process LRU without a backing tier) are non-conformant whenever `replay_ttl_seconds` exceeds process lifetime — which is always true at the 3600 s floor. The consequence of silent eviction below declared TTL is a **displaced-replay window**: the sender legitimately retries with the same `idempotency_key` under a fresh signature nonce (which is how a signed retry is supposed to work — nonces are per-send, not per-event), passes the signature replay check, and finds the app-layer cache empty because the receiver's in-memory state was dropped. The side effect runs twice. Sellers MUST NOT declare a `replay_ttl_seconds` higher than their cache tier can durably honor, and MUST fail-closed (`IDEMPOTENCY_EXPIRED`) rather than fail-open (silent re-execution) when they cannot distinguish "never seen" from "evicted under declared TTL." A seller whose operational reality is "memory-only, lost on pod restart" is required to declare `replay_ttl_seconds` no higher than the shortest guaranteed pod lifetime — in practice, this forces a durable tier. +7. **Replay window is declared, not inferred.** Sellers MUST declare `capabilities.idempotency.replay_ttl_seconds` on `get_adcp_capabilities` (minimum 3600s / 1h, recommended 86400s / 24h, maximum 604800s / 7d). Clients MUST NOT fall back to an assumed default — a seller with no declaration is non-compliant and MUST be treated as unsafe for retry-sensitive operations. +8. **Cache-growth defense.** Sellers MUST apply per-`(authenticated_agent, account)` rate limits on idempotency cache inserts separately from request rate limits, and MUST return `RATE_LIMITED` (see [error taxonomy](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#rate-limit-handling)) when the per-agent insert rate exceeds the configured ceiling rather than let the cache grow unbounded. A buyer submitting N fresh keys per second on a cheap success-path operation (e.g., `log_event`) would otherwise force unbounded storage, with amplification proportional to `replay_ttl_seconds` at the 3600 s floor. The natural bound is `inserts_per_hour × replay_ttl_hours ≤ max_cache_rows_per_agent`. + + **Recommended ceilings (3.1+):** the original 60/sec sustained / 300/sec burst single-budget ceiling was sized against a write-heavy launch pattern (≤10 media buys/min × 10 packages × 10 creatives with 3–5× headroom). When callers key read traffic, those responses also contribute to insert rate — a single agentic dashboard polling `get_products(brief)` + `list_creatives` + `list_accounts` across 5 accounts at 1Hz is ~15 inserts/sec on reads alone, before any write activity. Operators that cache keyed reads SHOULD adopt a **split budget** per `(authenticated_agent, account)`: + + - **Reads: 300 inserts/sec sustained, 1,500/sec burst over rolling 10s windows.** Dominated by dashboard polling and agentic state re-reads under the [Polling / state re-read](#agent-retry-vs-polling-vs-re-plan) rule. Read traffic is typically bursty during user-driven UI interactions and steady at low rates during agent runs. + - **Writes: 60 inserts/sec sustained, 300/sec burst.** Unchanged from the original write-heavy sizing — preserved as a separate budget so a buyer's dashboard polling can't exhaust the write capacity that protects `create_media_buy` / `sync_creatives` / `activate_signal` from double-execution races. + - **Combined cap (defense in depth):** total inserts SHOULD NOT exceed 350/sec sustained / 1,700/sec burst per agent — the sum of the two budgets with a small cushion, so an attacker who saturates the read budget cannot starve write capacity. + + Operators with steady low-volume traffic MAY tighten below these starting values; operators with burst onboarding or trafficking patterns larger than this ceiling MUST raise rather than accept silent rejection of legitimate traffic. Sellers that cache keyed reads MUST keep separate read and write counters even when they tighten the magnitudes — a shared single-budget cap is the failure mode this rule prevents. The sustained bound is a rolling 60-second window — a burst that empties a 10-second window still counts toward the next 50 seconds of the 60-second rolling bound. Sellers that adopt a different window shape (fixed-minute bucket, EWMA) MUST document it so buyers with retry logic can predict when `RATE_LIMITED` fires; silent window-shape divergence between sellers means identical buyer traffic passes one seller and is rejected by another on conformant implementations. At the 3600 s TTL floor the combined-cap rates bound per-agent residency to ~1.26M entries — an order of magnitude above the original 216k from the write-only sizing, reflecting the read-traffic addition; per-agent storage budgeting should account for this. The numeric recommendations are SHOULD-level; the rate-limit-and-reject-with-`RATE_LIMITED` behavior itself is MUST. Sellers MUST expose the ceilings as tunable configuration parameters — the 300/60 read/write split numbers are first-deployment starting points for an agentic-buyer dashboard pattern, not frozen defaults. Sellers SHOULD NOT publish exact configured ceiling numerics in capability responses — doing so makes the ceiling an ecosystem-wide attack target. Buyers discover the effective ceilings through the `RATE_LIMITED` + `retry_after` response, not through capability introspection. + + The ceiling is per `(authenticated_agent, account)` — the same scope as the idempotency key itself (bullet 1) — so a multi-account agency does not have its per-account budgets collapsed into a single shared quota. `RATE_LIMITED` rejections MUST populate `retry_after` (seconds) per the [error handling taxonomy](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#rate-limit-handling) and MUST NOT be cached as idempotency responses (rule 3: only successful responses are cached). Sellers SHOULD enforce `retry_after` as a cheap rejection floor — a buyer retrying before `retry_after` elapses SHOULD hit a pre-auth token bucket (e.g., at a reverse-proxy layer) rather than re-entering the full schema-validate-and-cache-check pipeline on every retry. Without this discipline, misbehaving buyers can amplify load on the rate-limiter itself. + +9. **Concurrent retries — first-insert-wins.** A second request carrying the same `(authenticated_agent, account_id, idempotency_key)` MAY arrive while the first request is still executing — most commonly when the buyer's transport timeout fires before the seller's downstream call returns, and the buyer retries. Sellers MUST resolve the race deterministically; they MUST NOT execute the side effect twice and MUST NOT silently drop the second request. Resolution is a `(unique constraint, INSERT … ON CONFLICT DO NOTHING)` pattern on the scope tuple: the first row to land owns execution and stores the canonical payload hash on the in-flight row (NOT a sentinel); subsequent requests observe an existing row whose response slot is not yet populated but whose payload hash IS populated. + + Sellers MUST handle the second request by one of two policies and MUST behave consistently across calls — clients infer the policy from the first response within a session and apply it to subsequent retries: + + - **Wait-and-replay** (preferred for fast operations, <5s typical): the seller blocks the second request until the first completes, then returns the cached response with `replayed: true`. Total wall-time for the second call is bounded by the seller's request-timeout budget. + - **Reject-and-redirect** (preferred for slow operations involving long-running downstream calls): the seller returns `IDEMPOTENCY_IN_FLIGHT` immediately, with top-level `error.retry_after` (seconds) populated based on the first request's elapsed time and expected completion. Buyers MUST retry with the same `idempotency_key` after the hint elapses — a buyer that mints a fresh key on `IDEMPOTENCY_IN_FLIGHT` turns a safe retry into the exact double-execution race this rule prevents. + + A second request with the same key AND a *different* canonical payload during the in-flight window MUST return `IDEMPOTENCY_CONFLICT` (rule 5), not `IDEMPOTENCY_IN_FLIGHT` — the canonical-form mismatch is computable at INSERT time against the row's stored hash, so the conflict is detectable without waiting for the first request's response. Sellers whose backing store cannot persist the real canonical hash until the handler completes (e.g., a placeholder-sentinel pattern) MUST upgrade the store to persist the hash at INSERT time before declaring rule 9 conformance — the alternative (returning `IDEMPOTENCY_IN_FLIGHT` on a same-key-different-payload race and only surfacing the conflict after the first request completes) silently delays detection of a real client bug. + + Per rule 3, if the first request ultimately fails (validation error, downstream timeout, internal error), the `(in_flight)` row is released — the key returns to "never seen" state and a subsequent retry re-executes from scratch. Sellers MUST bound the lifetime of an in-flight row to their declared per-task handler timeout, and MUST release the row (treat as failed per rule 3) when that timeout fires — even if the downstream has not yet responded. Without this bound, a hung handler indefinitely returns `IDEMPOTENCY_IN_FLIGHT` for the same key, locking the buyer out of any safe retry path. + + Sellers using reject-and-redirect MUST set top-level `error.retry_after` to a value no greater than `replay_ttl_seconds` (declared in `capabilities.idempotency`). A buyer instructed to wait past the seller's own replay window is being told to wait until the response can no longer be replayed — the wait is vacuous and the buyer either ends up minting a fresh key (the failure mode this rule prevents) or hits `IDEMPOTENCY_EXPIRED` on retry. Sellers SHOULD also declare `capabilities.idempotency.in_flight_max_seconds` — the maximum lifetime of an in-flight row, scoped to the seller's per-task handler timeout. Buyers SHOULD use that declared value as the primary retry-budget bound when present; when absent, fall back to the order-of-magnitude heuristic (a value derived from the seller's typical handler latency, an order of magnitude below the replay TTL, never the TTL ceiling itself). + + Sellers MUST NOT leak the in-flight state across the scope boundary: an attacker probing a candidate key MUST receive the same response shape and timing whether the row exists, is in flight, or has never existed. + +10. **Crossing service boundaries — downstream reconciliation.** Sellers commonly invoke downstream systems during request handling — SSP/ad-server calls on `create_media_buy`, payment-provider calls on billing operations, governance-agent calls on `check_governance`. These calls have their own failure modes that can leave the seller in a "downstream unknown" state: the network connection dropped after the downstream accepted the request but before its response arrived; the seller process crashed mid-call; a region failover swapped the worker before the response was persisted. Rule 3 (only successful responses cached) is necessary but not sufficient: a seller that simply doesn't cache and re-executes on retry will double-invoke the downstream and create duplicate side effects there. + + **Conformance grading.** This rule is reviewer-graded, not programmatically graded by the compliance storyboard suite. Black-box observation cannot distinguish "the seller has a claim row" from "the seller got lucky on the test run." The `parallel_dispatch_runner` test-kit lists rule-10 conformance under `reviewer_checks` — sellers attesting to rule-10 conformance MUST surface their operational runbook describing which pattern applies to which downstream, and reviewers verify the implementation against that runbook. The other normative rules (1–9) are programmatically graded. + + Sellers MUST adopt one of two reconciliation patterns for every downstream call whose duplicate-invocation has business consequences (resource creation, payment movement, irreversible state change). Read-only downstream calls (cache lookups, eligibility checks that don't write) are exempt — but borderline cases like fraud-scoring lookups that also write to a downstream audit log count as writes for this rule (the audit log entry is the side effect). + + - **Write-claim-before-invoke (preferred default).** Before invoking the downstream, the seller persists a "claim" row in the same transaction as the idempotency cache row — typically `{idempotency_key, downstream_provider, downstream_request_id, status: 'invoked', invoked_at}` — using the seller-generated `downstream_request_id` it will pass to the downstream as the downstream's own correlation/idempotency identifier. On retry, before invoking the downstream again, the seller MUST look up the claim row by `(idempotency_key, downstream_provider)` and reconcile: query the downstream by `downstream_request_id` to determine the true outcome, then resume cache population from there. The seller MUST NOT treat a missing local record as "downstream call did not happen" — a crash between downstream-accepts and local-persist is exactly the case where it did happen and the local record is missing. If the downstream reports no record of `downstream_request_id` (the claim row was persisted but the seller crashed before invoking), the seller MUST treat the call as not-yet-invoked and proceed with the invocation; the claim row already reserves the `downstream_request_id`, so the downstream's own idempotency will dedup any subsequent retry. On an ambiguous response from the downstream lookup (transient 5xx, network error, malformed response), the seller MUST fail closed — return a transient error to the buyer (so the buyer retries against the same `idempotency_key` per rule 9) rather than proceed with invocation on an unauthenticated "no record" signal. + - **Thread-buyer-key (acceptable when the downstream protocol supports it).** The seller passes a per-downstream-provider derivative of the buyer's `idempotency_key` as the downstream's own idempotency key — typically `HMAC(K_provider, idempotency_key)` where `K_provider` is derived from the seller's KMS-managed root keyed by provider identity (one key per downstream, not one shared seller secret across all downstreams). Per-provider derivation prevents cross-provider replay if any single downstream is compromised; a shared seller secret across all downstreams collapses every provider into a single key-exposure blast radius. The downstream's at-most-once guarantee then covers the case the seller's local persistence missed. The seller MUST still write a claim row on the success path so the cached response can be populated correctly, but the downstream itself becomes the source of truth on retry. The seller MUST NOT pass the buyer's raw `idempotency_key` to any downstream operated by a different trust principal — the buyer's key is a capability token within its TTL (see "Keys are security-sensitive" below) and forwarding it across a trust boundary widens the capability surface. "Different trust principal" means any system the seller does not operate under the same security boundary; passing the raw key to a purely intra-tenant microservice the seller owns end-to-end (same KMS, same audit log, same operator) does NOT cross a trust boundary and is permitted, though per-provider derivation is still the better default. + + Sellers MUST document which pattern applies to which downstream in their operational runbook. Sellers MUST NOT use a third pattern of "best-effort dedup on downstream response inspection" — comparing the downstream's response payload to a cached fingerprint to decide whether the call already happened — because the downstream's response shape changes across versions and the fingerprint is a synchronization bug waiting to happen. A claim row OR a threaded key. Not pattern-match-on-response. + + Sellers MUST NOT include the buyer's `idempotency_key` (or any reversible derivative thereof) in error envelopes returned to the buyer when those errors originated from the downstream. Downstream errors that mention the seller's per-downstream-provider key (or the buyer's key, if the seller incorrectly threaded it raw) MUST be re-keyed or stripped before propagating to the buyer — otherwise a downstream error message becomes a cross-trust-boundary key-disclosure surface. + + The buyer-visible consequence of this rule: when a seller invokes a slow downstream and the buyer retries during the window, the seller's response on the second request is determined by the seller's policy under rule 9 (`IDEMPOTENCY_IN_FLIGHT` or wait-and-replay), not by the downstream's behavior. Buyers do not need to know which downstream is in the path — the seller MUST present a uniform retry surface regardless. + +#### Payload equivalence + +"Equivalent" means **identical canonical JSON form**, not field-by-field semantic comparison. Sellers MUST determine equivalence by hashing the canonical form and comparing hashes. The canonical form is [RFC 8785 JSON Canonicalization Scheme (JCS)](https://www.rfc-editor.org/rfc/rfc8785) — number serialization, key ordering, and escaping all follow JCS §3 normatively. + +**Fields excluded from the hash** (closed list — sellers MUST NOT extend it): + +- `idempotency_key` — the key itself +- `context` — buyer-opaque echo data (trace IDs, correlation IDs) changes on retry by design +- `governance_context` — on the envelope; may be a refreshed signed token on retry +- `push_notification_config.authentication.credentials` — may be a rotated bearer token. The URL and scheme remain in the hash; only the credential value is excluded. + +Everything else in the request body — including `ext` — is included, and "missing optional field" is NOT equivalent to "field explicitly set to null" (JCS preserves the distinction, and so does the hash). **Buyers MUST NOT place rotating tokens or retry-unstable values inside `ext`.** `ext` is part of the canonical payload; a value that changes between retries will trigger `IDEMPOTENCY_CONFLICT` even when the buyer's intent is unchanged. Rotating credentials belong in the exclusion-list fields above; buyer-side trace data belongs in `context`. Sellers MUST NOT extend the exclusion list via capabilities, config, or extension — the list is fixed by this spec, and drift there silently weakens retry-safety guarantees across the ecosystem. **Any future addition to the exclusion list is a breaking change to payload equivalence** (buyers who put a now-excluded value in `ext` would see previously-distinct retries start deduping against each other), so the list will only grow via a major-version bump with migration notes. New PRs proposing an addition MUST demonstrate why the field is semantically outside the retry contract — not just that a particular buyer happened to rotate it. + +**Reference implementation**: `SHA-256(JCS(payload - excluded_fields))`. + +- TypeScript / JavaScript: [`@truestamp/canonify`](https://www.npmjs.com/package/@truestamp/canonify) or [`canonicalize`](https://www.npmjs.com/package/canonicalize) +- Python: [`pyjcs`](https://pypi.org/project/pyjcs/) or the reference implementation from [RFC 8785 appendix](https://www.rfc-editor.org/rfc/rfc8785) +- Go: [`gowebpki/jcs`](https://github.com/gowebpki/jcs) +- Rust: [`serde_jcs`](https://crates.io/crates/serde_jcs) + +AdCP SDK middleware ships JCS canonicalization so sellers don't roll their own. Rolling your own canonical form is a common source of "works on my machine" idempotency bugs — JCS is precisely specified to avoid that. + +#### Server-side tool wrapper conformance + +Buyer SDKs send envelope-level fields (`idempotency_key`, `context_id`, `context`, `governance_context`, `push_notification_config`) **uniformly across all AdCP tool calls** — buyers cannot know per-tool which envelope fields the seller's wrapper happens to declare. Servers MUST tolerate envelope-level fields that arrive in tool params but are not declared in the tool's parameter schema. Concretely: + +- **`idempotency_key`** is required on state-mutating task schemas. Guaranteed pure-read schemas and the 3.x `get_products` compatibility facade may leave it optional, but tool wrappers MUST accept it when supplied; the idempotency layer routes it per rules 2-9. Wrappers that reject the field with `unexpected_keyword_argument` (FastMCP/Pydantic strict signatures) are non-conformant. +- **`context_id`, `context`, `push_notification_config`, `governance_context`** MUST be accepted on every tool, including reads. Tools that don't consume a given field MUST ignore it; they MUST NOT reject the call because the envelope field is present. + +This is the server-side counterpart to the `additionalProperties: true` default that every published AdCP request schema declares. Configuring a server-side validator in a way that contradicts the schema's own `additionalProperties` declaration is a conformance violation. Common server-implementation traps: + +- **FastMCP / Pydantic with strict signatures** — a tool wrapper declared as `def get_products(brief: str)` raises `unexpected_keyword_argument` when the buyer sends `idempotency_key` inside the same params object. Fix: declare `idempotency_key: str | None = None` (and the other envelope fields) as accept-and-ignore optional parameters, or use a `**kwargs` catch-all and discard unknown keys. Pydantic-on-input uses `Extra.allow` or `model_config = ConfigDict(extra='allow')`. +- **Zod / valibot with `.strict()`** on the inbound request schema rejects unknown keys for the same reason; remove `.strict()` on input schemas, or compose with a passthrough variant. +- **OpenAPI-generated server stubs** with `additionalProperties: false` injected by the codegen tool — verify the generated input schema mirrors the spec's `additionalProperties: true` default; some generators flip the default during model emission. + +The wire-level invariant is: a buyer SDK MUST be able to send the same envelope-field set to every AdCP tool on every seller, and any seller that rejects on envelope fields breaks the cross-seller portability the protocol promises. This rule is normative for 3.1+; pre-existing wrappers that reject envelope fields are non-conformant at the next maintenance bump. + +Reference: this rule generalizes the per-validator pattern already established for response-side validators in [`runner-output-contract.yaml` > `response_schema_validator_semantics`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/universal/runner-output-contract.yaml) — both rules express the same principle ("validator configuration MUST NOT contradict the schema's own `additionalProperties` declaration") on the two ends of the wire. + +#### Response-level replay indicator + +The protocol envelope carries a top-level `replayed` boolean on responses to any request that resolved via the idempotency cache: + +```json +{ + "status": "completed", + "replayed": true, + "timestamp": "2026-04-18T14:35:00Z", + "payload": { + "media_buy_id": "mb_01HW7J8K9P0Q1R2S3T4U5V6W7X" + } +} +``` + +`replayed` is produced by the seller's idempotency layer at response time, not stored in the cache. On a fresh execution it is `false` (or omitted — buyers MUST treat omission as `false`). On a cached replay it is `true`; the inner `payload` is byte-for-byte what was stored on the original successful execution. Envelope fields (`timestamp`, `context_id`, etc.) may differ — they describe the current response, not the cached one. + +Buyers use `replayed` for: + +- **Agent side-effect suppression** — an agent that acts on response data before a human sees it (notifications, downstream tool calls, memory writes) MUST check `replayed` to avoid re-emitting on retry. "Campaign created!" notifications, LLM memory inserts, and downstream agent calls are exactly what silent replay breaks. +- **Side-effect invariants** — downstream systems expecting exactly-once event semantics read `replayed` before treating the response as a new event. +- **Billing reconciliation** — "we processed N buys this month" counts `replayed: false` only. +- **Logging** — distinguishing "retry succeeded by returning cache" from "retry triggered a new execution" (the latter usually signals a bug in the replay window or key management). +- **State-machine routing** — state-tracking fields in the cached `payload` (e.g., `status: pending_creatives` on a replayed `create_media_buy`) are a historical snapshot, not a current-state read (see seller rule 2 and "Replay responses are historical snapshots" under buyer obligations). Buyers MUST re-read via the resource's read endpoint before any state-dependent action. + +#### IDEMPOTENCY_CONFLICT response shape + +Standard AdCP error envelope. The error body: + +- MUST include `code: "IDEMPOTENCY_CONFLICT"` and a human-readable `message` +- MUST NOT include the cached response, the original payload, a canonical-form diff, or any fingerprint derived from them. A `field` json-pointer hint seems harmless but reveals schema shape (e.g., `/packages/0/budget` tells an attacker the victim's payload had a budget in the first package). Sellers MUST NOT emit one. A legitimate buyer debugging a retry can diff their own two payloads — they have both. + +```json +{ + "errors": [ + { + "code": "IDEMPOTENCY_CONFLICT", + "message": "idempotency_key was used with a different payload within the replay window. Either resend the exact original payload (to return the cached response) or generate a fresh UUID v4 to submit this new payload.", + "recovery": "correctable" + } + ], + "context": { "correlation_id": "..." } +} +``` + +Leaking cached state turns key-reuse into a read oracle. An attacker who guesses or steals a victim's key could otherwise probe it to infer payload structure. The error body exposes only the code. + +#### SI send_message idempotency model + +`si_send_message` needs a narrower scope than other mutations because conversational turns advance session state. The key is scoped `(authenticated_agent, account_id, session_id, idempotency_key)`. + +- **Retry of turn N within the TTL returns the cached response for turn N**, even if turn N+1 has since been accepted. Idempotency returns what you did, not rewinds what the session is. The buyer's retry is asking "did my message get through" — the answer is still "yes, here's what came back." +- **A new `si_send_message` with a fresh `idempotency_key` is a new turn**, processed against the current session state. Buyers MUST generate a fresh key per logical turn, not per HTTP attempt. +- **If the seller has advanced session state past turn N and cannot reproduce the cached response byte-for-byte** (e.g., the session was pruned for storage), the seller MAY return `SESSION_NOT_FOUND` or `IDEMPOTENCY_EXPIRED` rather than reconstruct. Buyers retrying far past a session timeout should expect this. + +#### Buyer obligations + +Whenever a buyer sends an `idempotency_key`, it MUST generate a unique key per `(seller, request)` pair. Reusing the same key across sellers allows colluding sellers to correlate requests from the same buyer. Use a fresh UUID v4 for each keyed request. On retry after a network error, buyers MUST resend the exact same payload with the same key — changing either side breaks at-most-once semantics. In particular, buyers MUST NOT change `push_notification_config.url` between retries with the same key; URL is part of the canonical hash and rotating it triggers `IDEMPOTENCY_CONFLICT`. Rotate the key when changing webhook configuration. + +**Network retry vs. agent re-plan vs. polling / state re-read.** Three cases that look similar but need different handling: + +- **Network retry** — socket timeout, 5xx, transient failure. The buyer has the *same intent* and sent the *same bytes* — and MUST resend them with the *same key*. This is what idempotency_key exists for. +- **Agent re-plan** — the buyer is an agent whose planner re-ran (prompt re-executed, tool output changed, policy re-evaluated) and produced a *different payload*. The intent has changed. The agent MUST mint a *new key* and treat the prior request as abandoned. Reusing the prior key with a different canonical payload returns `IDEMPOTENCY_CONFLICT`, which is the seller correctly telling the agent "you're not retrying, you're doing something new." +- **Polling / state re-read** — a dashboard polling `get_products(brief)`, `list_creatives`, `list_accounts` at intervals; a buyer agent reading `get_media_buys` to fetch fresh state after a mutation; any "give me current state at time T" call. When the task schema requires a key or the buyer elects to send one, the buyer MUST mint a fresh `idempotency_key` per call. Reusing the prior poll's key would replay the cached snapshot (up to `replay_ttl_seconds`), silently returning stale data — exactly the failure mode the cache exists to prevent on mutations. This rule also governs the re-read step in the [Replay responses are historical snapshots](#replay-responses-are-historical-snapshots) pattern below: a keyed "re-read for current state" call MUST carry a fresh key, never the key from the mutation it's reading state for. + +When in doubt, ask whether the buyer's intent is **"give me the same answer as before"** (network retry — reuse the key) or **"give me the current answer"** (polling / state re-read — mint a new key) or **"do this new thing"** (agent re-plan — mint a new key). Agentic clients that loop through an LLM to build the request SHOULD freeze and cache the serialized bytes alongside the key on first send for the network-retry case, so retries send the identical payload even if the planner would produce something slightly different on re-execution. + +**Bootstrap carve-out — `get_adcp_capabilities`.** The discovery call itself is exempt from any schema-level key requirement. `get_adcp_capabilities` is how the buyer learns whether the seller declares `adcp.idempotency.replay_ttl_seconds`, so a fail-closed rule against the discovery call would deadlock the bootstrap. Buyers MAY omit `idempotency_key` on `get_adcp_capabilities`, and sellers MUST accept the call without it. Buyers that send `idempotency_key` on `get_adcp_capabilities` (e.g., SDKs that include the field uniformly) get the standard cache behavior — but the discovery call carries no state and replay is harmless. Every task request that carries a key remains subject to rules 1–9; the fail-closed obligation below applies to retry-sensitive operations once the capability fetch has completed. + +**When the seller's capability declaration is missing.** A seller whose `get_adcp_capabilities` response omits `adcp.idempotency.replay_ttl_seconds` is non-compliant. After a successful capability fetch, client SDKs MUST fail closed before any state-mutating task — including `request_proposals`, `refine_proposals`, and `decline_proposals` — so the buyer learns about the non-compliance before a silent duplicate. A guaranteed pure-read task whose schema leaves the key optional MAY proceed without replay protection, but the client MUST NOT silently treat a retry as deduplicated. + +**Decoding seller-emitted error codes.** Sellers MAY return error codes (`IDEMPOTENCY_CONFLICT`, `IDEMPOTENCY_EXPIRED`, `IDEMPOTENCY_IN_FLIGHT`, `INVALID_REQUEST`, or codes added in later minor versions) that buyers' pinned vocabulary may not recognize. Receivers MUST decode these per [Forward-compatible decoding (normative)](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#forward-compatible-decoding-normative) — read `error.recovery` for the recovery classification, default to `transient` when `recovery` is absent, and never reject the response because the code value is unfamiliar. The retry semantics for `transient`-classified errors are bounded by [§ Retry Logic](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#retry-logic) (`maxRetries` and exponential backoff with jitter) — buyers MUST NOT loop indefinitely on a `transient` default. + +**Replay responses are historical snapshots.** A response carrying `replayed: true` is byte-equivalent to the original first-call response (per seller rule 2) — state-tracking fields in it reflect the resource's state at first-call time, NOT the resource's current state. A buyer that reads `status: pending_creatives` from a replayed `create_media_buy` response and then calls `update_media_buy(canceled: true)` on a resource that has actually been in `canceled` for hours will surface a `NOT_CANCELLABLE` error and a state-machine bug. Buyers requiring current state MUST consult the resource's read endpoint — `get_media_buys` for media buys, `list_accounts` for accounts, `list_creatives` for creatives, `get_signals` for signals, equivalents for other resources. `replayed: true` is the explicit signal that a fresh read is required before any state-dependent decision; SDKs SHOULD surface the flag to caller code rather than transparently unwrap it. Agentic buyers MUST treat `replayed: true` as a stop signal for any planning step whose next action depends on resource state, and MUST re-read before continuing. + +**A keyed re-read MUST carry a fresh `idempotency_key`.** Reusing the key from the mutation whose state you're re-reading either returns `IDEMPOTENCY_CONFLICT` (if the read payload differs from the mutation payload — almost always true) or, worse, returns the cached mutation response itself (if the payloads happen to match). Reusing a *prior read's* key returns that prior read's cached snapshot — the exact stale-state failure mode this rule exists to prevent. State re-reads fall under the Polling / state re-read case above; mint a new key per keyed call. + +**TTL boundary for persisted keys.** Some buyers persist `idempotency_key` alongside their own object (e.g., `campaign.pending_idempotency_key` in the buyer's DB) so that retries after a process restart or overnight reconcile still dedup. This works **only within the seller's declared `replay_ttl_seconds`**. Beyond the TTL, the seller will either reject the retry with `IDEMPOTENCY_EXPIRED` (good) or, if the cache was evicted, treat it as a new request (silent double-booking — the failure mode this field exists to prevent). Buyers retrying past the TTL MUST fall back to a natural-key check (e.g., query `get_media_buys` by `context.internal_campaign_id`) before resending. The `idempotency_key` guarantees at-most-once execution within the replay window, not forever. Queue-based retry systems and workflow engines with retry horizons longer than the seller's TTL MUST be designed around this — don't put a key into a dead-letter queue that replays days later without a natural-key re-check. + +**Keys are security-sensitive.** An `idempotency_key` is a secret capability token within its TTL — anyone who holds one and knows the original payload can replay it and read the cached response. Treat keys the way you treat session tokens: do not log them in full, do not embed them in URLs, do not share them across agents. Log prefix-only (first 8 chars of the UUID) if you need correlation. Buyers persisting `pending_idempotency_key` at rest (e.g., alongside a campaign row in the buyer's DB) MUST encrypt it with the same controls used for bearer tokens, and SHOULD purge the key after success confirmation to minimize the exposure window. + +**Sellers MUST encrypt the cache tier at rest.** When sellers cache keyed read-tool responses (`get_products`, `list_accounts`, `list_creatives`, `get_signals`, etc.), those entries join the write receipts already held by the cache. Read responses carry account-scoped data — brand domains, account names, product allocations, signal references — at the same sensitivity as the seller's underlying resource store. Sellers MUST apply at-rest encryption to the idempotency cache with the same controls used for the resource store the cached data was read from, MUST NOT treat the cache as a transient retry-receipt store exempt from data-at-rest controls, and MUST scope cache reads by `(authenticated_agent, account_id)` at the storage layer (not just at the application layer) so a misconfigured query cannot pull a sibling tenant's cached read response. + +**Keys MUST be unguessable.** Schema enforces `^[A-Za-z0-9_.:-]{16,255}$` and buyers MUST use UUID v4 (~122 bits of entropy) or an equivalent CSPRNG-generated value. Low-entropy keys like `retry-001` or monotonic counters turn the cache into an enumerable surface: an attacker can walk the key space and test each one against a target agent. Sellers SHOULD reject keys that fail a basic entropy check (e.g., all-zeros, repeated characters, short ASCII words) with `INVALID_REQUEST` when the authenticated agent is not individually trusted. + +**The three-state response (`success` / `IDEMPOTENCY_CONFLICT` / `IDEMPOTENCY_EXPIRED`) is an existence oracle for idempotency keys.** An attacker who holds a candidate key can probe it: `success` means never seen, `IDEMPOTENCY_CONFLICT` means live with a different payload, `IDEMPOTENCY_EXPIRED` means previously used. The per-`(agent, account)` scoping above is the primary defense — an attacker authenticated as agent A cannot probe agent B's keys, and a caller scoped to account A cannot probe account B's keys even under a shared agent credential. Unguessable keys are the secondary defense — an attacker who cannot guess a victim's key cannot probe the oracle usefully. Sellers MUST NOT surface `IDEMPOTENCY_EXPIRED` across scope boundaries or to unauthenticated callers. Sellers SHOULD also avoid distinguishable timing between "key exists" and "key does not exist" lookups in the idempotency layer; a constant-time floor on the negative path closes a side channel that persists even without an error-code oracle. + +**SI session scope.** For `si_send_message` the key is scoped `(authenticated_agent, account_id, session_id, idempotency_key)`. `session_id` is therefore part of the oracle surface: if session IDs are guessable, an attacker who steals one key can probe it against many sessions. SI sellers MUST generate `session_id` server-side using a CSPRNG with ≥122 bits of entropy (UUID v4 or equivalent) and MUST NOT derive it from anything observable to another agent (request sequence number, user handle, timestamps). The same idempotency_key sent with a different `session_id` is a different scope tuple — always a new request, never a conflict. + +**`account_id` entropy for cache-scope safety.** `account_id` is part of every idempotency scope tuple, so it is also part of the oracle surface: an attacker authenticated as agent A with a stolen idempotency key could probe it against candidate account IDs to enumerate accounts in A's authorized set or learn which accounts A has ever operated on. When account IDs are short sequential or semantic values (`acct_123`, `nike-us`), this is a real enumeration channel. Sellers that issue server-assigned account IDs MUST use unguessable values (UUID v4 / ULID, ≥122 bits of entropy) for any account ID that participates in an idempotency cache scope. Sellers operating under the buyer-declared account model (natural-key `{brand, operator}`) MUST hash the natural key with a seller-local salt before using it as a cache-scope component — the natural key is public by design and cannot be used directly as an oracle defense. + +```javascript +import { canonicalize } from "@truestamp/canonify"; // RFC 8785 JCS +import { createHash } from "node:crypto"; + +const EXCLUDED_FROM_HASH = new Set([ + "idempotency_key", + "context", + "governance_context", +]); + +function payloadHash(request) { + const filtered = Object.fromEntries( + Object.entries(request).filter(([k]) => !EXCLUDED_FROM_HASH.has(k)), + ); + // If push_notification_config.authentication.credentials rotates, exclude it too + if (filtered.push_notification_config?.authentication) { + const { credentials, ...auth } = filtered.push_notification_config.authentication; + filtered.push_notification_config = { + ...filtered.push_notification_config, + authentication: auth, + }; + } + return createHash("sha256").update(canonicalize(filtered)).digest("hex"); +} + +async function createMediaBuy(request, envelope) { + if (!request.idempotency_key) { + throw new InvalidRequestError("idempotency_key is required"); + } + + const requestHash = payloadHash(request); + + const existing = await db.findByIdempotencyKey({ + agent_id: currentAgent.id, + account_id: request.account.account_id, + idempotency_key: request.idempotency_key, + }); + + if (existing) { + if (existing.expires_at < new Date()) { + throw new IdempotencyExpiredError("idempotency_key is past replay window"); + } + if (existing.request_hash !== requestHash) { + throw new IdempotencyConflictError("idempotency_key reused with a different payload"); + } + // Return the stored INNER payload; replayed: true is injected by the envelope layer + envelope.replayed = true; + return existing.response; + } + + return db.transaction(async (tx) => { + const response = await processMediaBuy(tx, request); + // Cache ONLY on success, and cache only the inner response payload + await tx.idempotencyKeys.insert({ + agent_id: currentAgent.id, + account_id: request.account.account_id, + key: request.idempotency_key, + request_hash: requestHash, + response, + expires_at: new Date(Date.now() + TTL_SECONDS * 1000), + }); + envelope.replayed = false; + return response; + }); +} +``` + +#### Natural-key idempotency is not a substitute + +Upsert-style tasks (`sync_accounts`, `sync_audiences`, `sync_catalogs`, `sync_event_sources`, `sync_governance`, `sync_plans`) already dedup at the resource level — two calls with the same `account_id` or `audience_id` produce one row, not two. That's **resource idempotency**. + +`idempotency_key` guarantees something stricter: **envelope idempotency**. The entire request — including its side effects — executes at most once. Retrying the same sync envelope without a key can still fire onboarding webhooks twice, emit duplicate audit log entries, or double-provision pixel endpoints, even though the resource rows end up identical. The key is what makes a retry truly safe. + +The one exception in the spec is `si_terminate_session`: `session_id` plus the "terminate" verb is fully idempotent — a second call on an already-terminated session returns the same terminal state with no new side effects — so that schema doesn't require `idempotency_key`. + +### Signed Governance Context + +`governance_context` crosses trust boundaries — from governance agent to buyer to seller and back, and ultimately to auditors and regulators who may need to verify an approval long after the original transaction closed. AdCP 3.0 tightens the value format to a compact JWS signed by the governance agent so any party can verify authenticity, binding, and replay without subpoenaing the issuer. + +**Roles:** +- **Governance agents** sign the token. They are the only party that signs. +- **Buyers** attach the token they received from their governance agent to the protocol envelope and forward to the seller. Buyers MUST NOT construct, modify, or re-sign the token. Buyers SHOULD retain the `jti` and `check_id` for their own audit record. +- **Services** persist the token as received and include it verbatim on all subsequent governance calls. A service advertising `adcp.governance_enforcement` for a task MUST verify per the checklist below before acting. Legacy forward-only services may retain and forward tokens for audit continuity, but MUST NOT advertise enforcement for that task. +- **Auditors and regulators** verify independently using the governance agent's published keys — this is the accountability property the signed format exists to deliver. + +The same string is also the primary correlation key for the governance lifecycle. The governance agent decodes its own token to look up internal state. Services parse only the standard claims required by the verification checklist, including task, payload-hash, and commitment bindings; they never interpret `sub`, `plan_hash`, or other embedded governance state as business data. + +#### Scope and dependencies + +- **In scope (3.0)**: buy-side governance. The `governance_context` token authorizes governed commitments made via AdCP tasks whose request schemas carry an `x-governed-commitment` annotation. A service's own compliance or commercial rejection remains separate from the buyer-governance decision. +- **Out of scope (3.0)**: seller-side governance authorities. A future RFC may extend this profile to cover seller-side signed decisions declared via `adagents.json`. +- **Out of scope (ever)**: OpenRTB bid streams. Governance attestation terminates at the AdCP media buy boundary. Threading a signed attestation through per-impression bid requests is operationally infeasible (one token, many recipients, broadcast-fan-out) and unnecessary (spend authorization happens at media buy time, not per-impression). + +**Dependency on Transport Signing (#2307)**: the anti-spoof property of this profile depends on sellers being able to establish the buyer domain independently of the token's `iss` claim — see [Buyer identity resolution](#buyer-identity-resolution) below. In 3.0 without #2307, sellers MUST either use mTLS or a pre-provisioned buyer API key to establish buyer identity; treating the request's bearer token alone as identity input to brand.json resolution is circular and does not prevent spoofing. 3.1 normatively requires #2307-style signed requests. + +#### AdCP JWS profile + +This profile applies to `governance_context` (#2306) and to any future AdCP artifact that is signed as a standalone token. Transport-layer request signing (#2307) uses RFC 9421 HTTP Signatures but shares the JWKS discovery described here. Governance signing keys MUST NOT also be used as #2307 transport-signing keys — the JWKS endpoint is shared, but each key entry MUST declare `"key_ops": ["verify"]` and `"use": "sig"` and occupy a distinct `kid`. Verifiers MUST enforce key-ops separation to prevent cross-purpose key reuse. + +**Header** +- `alg`: `EdDSA` (Ed25519) RECOMMENDED on server-side runtimes. `ES256` (ECDSA P-256) RECOMMENDED on edge runtimes (Cloudflare Workers, Vercel Edge, Deno Deploy) where Ed25519 may require explicit runtime configuration. Verifiers MUST reject `none`, `HS*`, and any `RS*` variant below 2048-bit. Verifiers MUST enforce the allowlist on the token header; they MUST NOT rely solely on library defaults. +- `kid`: REQUIRED. Identifies the signing key in the issuer's JWKS. +- `typ`: REQUIRED. MUST be exactly `adcp-gov+jws` (byte-for-byte match; verifiers MUST NOT normalize or strip the `+jws` structured suffix per RFC 6838 §4.2.8). The typed header prevents a governance signing key from being tricked into validating a generic JWT for another purpose. +- `crit`: REQUIRED for authorization-changing profile extensions. Per RFC 7515 §4.1.11, `crit` lists protected-header parameter names that MUST be understood by the verifier. Claims `authorized_commitment`, `authorized_task`, and `authorized_payload_hash` each require a same-named boolean protected-header marker and `crit` entry. Verifiers MUST recognize and process every listed extension or reject the token. This prevents older verifiers from silently ignoring a ceiling or action constraint. + +**Claims** + +| Claim | Required | Description | +|-------|----------|-------------| +| `iss` | Yes | Governance agent identifier. MUST be an HTTPS URL that byte-for-byte matches the `url` of a governance-typed entry in the buyer's brand.json, including any path component. Path-level matching is required so multi-tenant SaaS governance agents (e.g., `https://gov.vendor.com/tenant/acme`) cannot be spoofed by sibling tenants sharing the same origin. | +| `sub` | Yes | Issuer-generated opaque governance binding for this governed action. It MUST be stable across that action's lifecycle, unique per action and target audience, and MUST NOT contain or be derived reversibly from `plan_id`. The governance agent maps it to the internal plan; services compare it only for lifecycle continuity and never interpret it as a plan or user identifier. | +| `plan_hash` | Yes | Audit-layer binding of the attestation to the evaluated plan state. Not part of the seller verification checklist — sellers treat it as opaque cargo. Semantics, canonicalization, and verification paths are defined in [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit). | +| `aud` | Yes | Target seller identifier. MUST be the exact URL string from the seller's `adagents.json` entry that authorized this seller for the property being purchased, byte-for-byte including scheme, host, port, and path. Case-sensitive; no path-prefix match. For intent tokens where the buyer is evaluating multiple sellers, the buyer MUST request one token per target seller (see [Intent-phase disclosure](#intent-phase-disclosure) for the privacy trade-off). | +| `iat` | Yes | Issued-at timestamp (seconds since epoch). | +| `nbf` | No | Not-before timestamp. When present, verifiers MUST reject if now < nbf (with ±60 s skew). | +| `exp` | Yes | Expiration timestamp. Intent tokens SHOULD expire within 15 minutes. Execution-phase tokens (`purchase`, `modification`, `delivery`) MUST expire within 30 days; governance agents refresh longer lifecycles by issuing a new token on each lifecycle check. | +| `jti` | Yes | Unique token identifier. Used by sellers for replay detection and by auditors for correlation. RECOMMENDED format: UUID v7 or ULID for time-orderability. | +| `phase` | Yes | `intent`, `purchase`, `modification`, or `delivery`. It identifies the authorization stage, not merely the task name. A buyer-supplied token entering any governed service request is `intent`. When the service advertises `online_execution_check`, the service then obtains `purchase` before committing a create, `modification` before committing an update, or `delivery` for a delivery check. | +| `caller` | Yes | URL of the party that requested the governance check that produced this token. In intent phase, this is the orchestrator/buyer; in execution phases, this is typically the seller itself (as callbacks arrive with the seller as caller). | +| `check_id` | Yes | Governance agent's `check_id` for this decision; correlates to `report_plan_outcome` and `get_plan_audit_logs`. | +| `media_buy_id` | Conditional | Seller-assigned media buy ID. MUST be present on `modification` and `delivery` tokens, MAY be present on `purchase` when the service provisionally assigns an ID during prepare, and MUST be absent on `intent`. The opaque `sub` binds a purchase action before a durable media-buy ID exists. | +| `authorized_commitment` | Conditional | Signed `{ amount, currency }` ceiling approved by governance. REQUIRED whenever the check authorizes a numeric monetary commitment, including an explicit `{amount: 0, currency}` ceiling for a verified zero-cost action; omitted only for non-monetary actions. Its matching protected-header marker is critical as defined above. The receiving service compares the price it will commit with this claim, so an indirectly priced payload cannot be authorized with an understated buyer declaration. This reveals only the price already relevant to that service, not plan budget or allocation. | +| `authorized_task` | Conditional | Exact AdCP task name authorized by an intent check. REQUIRED with `authorized_payload_hash` on action-authorizing tokens and listed in `crit`. A service rejects a token minted for another task even when audience and monetary ceiling match. | +| `authorized_payload_hash` | Conditional | `base64url_no_pad(SHA-256(JCS(payload_without_governance_metadata)))`, REQUIRED with `authorized_task` and listed in `crit`. The excluded top-level fields are exactly `governance_context` and `context`; `target_agent` lives on the governance check rather than in the downstream payload. Every business field, including `idempotency_key`, remains bound. The service recomputes this value over the received task request before committing. | +| `policy_decisions` | No | Compact array of `{ policy_id, outcome }` entries (may include `confidence`). Visible to the seller. Governance agents SHOULD omit this in privacy-sensitive deployments (see [Privacy considerations](#privacy-considerations)) and use `policy_decision_hash` instead. | +| `policy_decision_hash` | No | SHA-256 hash of the canonicalized decision log, hex-encoded. When present, sellers treat it as an opaque integrity anchor; full log is retrievable by auditors via `audit_log_pointer`. Governance agents MUST include either `policy_decisions` or `policy_decision_hash` (both is permitted). | +| `runtime_attestation_binding_digest` | Conditional | Required when the check evaluated `runtime_attestations[]`. MUST byte-equal the check response field of the same name: `sha256:` plus lowercase-hex SHA-256 of `JCS({ evaluations, findings })`, where `evaluations` is the ordered `runtime_attestation_evaluations[]` array and `findings` is the ordered response subset carrying `attestation_reference_digest`. This binds the exact credential/reference digests, normalized outcomes, confidence-bearing findings, and governance-check action binding without putting credential bodies in the token. Audit-layer claim; sellers persist it as opaque cargo and do not recompute it. | +| `audit_log_pointer` | No | HTTPS URL consumable by `get_plan_audit_logs` for the full decision evidence. When present, auditors can fetch the full log using the pointer; access control is governed by the governance agent. | +| `status` | No | Optional forward-compatibility hook. When present, MUST be a JSON object conforming to a future IETF JWT Status List mechanism (draft-ietf-oauth-status-list). Verifiers that do not understand `status` MUST NOT reject solely on its presence unless it appears in `crit`. | + +Cross-language implementations SHOULD validate payload canonicalization and the task, payload, amount, currency, and critical-marker acceptance rules against the published [`governance-authorization.json` vectors](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/governance-authorization.json). The vectors pin `idempotency_key` into the business hash while excluding only top-level `governance_context` and `context`. The same file publishes 27 byte-exact Ed25519 compact-JWS cases covering positive verification, critical-extension failures, binding mismatches, malformed or widened commitments, time bounds, replay identifiers, signature tampering, and explicit zero-cost authorization. Its private key component is deliberately public test material and MUST NOT be installed as a production trust anchor. + +**Unknown-extension handling**: verifiers ignore unknown non-critical claims. When a claim changes authorization semantics, the issuer also emits the same-named protected-header marker and lists it in `crit`; verifiers that do not recognize that header extension MUST reject. Verifiers MUST also reject when the critical marker and its corresponding claim do not appear together. + +**Size**: a typical token with `policy_decision_hash` fits comfortably under the 4096-character envelope limit. Implementations MUST NOT put large evidence payloads in the token; use `audit_log_pointer` instead. + +When `runtime_attestation_binding_digest` is present, governance agents MUST retain the full ordered evaluations and attestation-bound findings in the corresponding `get_plan_audit_logs` check entry. The entry-level digest, response-level digest, and signed claim MUST be identical. Auditors recompute the digest from the retained arrays; any mismatch means the signed decision and audit readback disagree. This claim MUST NOT appear in `crit`: like `plan_hash`, it is audit-layer evidence that ordinary sellers cannot independently recompute from the spend-commit request. + +**`plan_hash` is audit-layer, not wire-layer**: the `plan_hash` claim is cryptographic cargo the token carries for off-wire verification by the governance agent, auditors, and buyer-side compliance. It is not part of this profile's seller verification contract and is never listed in `crit`. Canonicalization, excluded fields, retention rules, and test vectors are specified in [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit) (governance spec). Sellers persist and forward `governance_context` verbatim and perform the 15-step verification checklist below — authenticity, authorization scope, freshness — without inspecting `plan_hash`. + +#### Buyer identity resolution + +The brand.json cross-check (step 13 of the verification checklist) is the anti-spoofing control. It requires sellers to know *which buyer's brand.json to consult* — the authenticated agent proves who is calling, and the resolution chain maps that agent to the buyer domain whose brand.json the seller should fetch. In 3.0 sellers MUST establish the buyer domain via one of: + +1. **mTLS**: buyer presents a client certificate; the certificate Subject/SAN resolves to the buyer's registered domain; the seller fetches `https://{domain}/.well-known/brand.json`. +2. **Pre-provisioned buyer identity**: an API key or OAuth client identifier issued by the seller at onboarding, mapped to the buyer's domain in the seller's records. +3. **Signed requests per #2307** (3.1 normative): RFC 9421 HTTP Signatures with `keyid` resolving to a buyer-declared public key in the buyer's adagents-style agent registry. + +Sellers MUST NOT derive the buyer identity from an unauthenticated field in the request (including the token's `iss`, `caller`, or any client-supplied header). Doing so creates a circular trust chain: the attacker proves "I am the buyer" by presenting a token signed by an attacker-controlled governance agent declared in an attacker-controlled brand.json. In particular, **the token's `iss` is untrusted input until step 13 of the verification checklist confirms it appears as a governance-typed entry in the *authenticated* buyer's brand.json** — the authentication mechanism (mTLS, API key, or signed request) establishes the buyer domain first, and only the brand.json fetched from *that* domain is trusted to attest which governance agent (`iss`) may sign for this buyer. + +brand.json resolution follows one redirect (`authoritative_location` or `house` redirect variant) and stops. Sellers MUST NOT follow redirect chains. + +#### Key discovery (JWKS) + +Sellers and auditors resolve the governance agent's public keys via JWKS (RFC 7517): + +1. Establish the buyer domain via the rules in [Buyer identity resolution](#buyer-identity-resolution). +2. Fetch the buyer's brand.json. Locate the `agents[]` entry whose `type` is `governance` and whose `url` byte-for-byte equals the token's `iss`. Reject if no matching entry exists. +3. Use the entry's `jwks_uri` if declared. If absent, default to `{origin of iss}/.well-known/jwks.json` where origin = scheme+host+port per RFC 6454. Multi-tenant governance agents serving multiple buyers from a shared origin MUST declare explicit per-tenant `jwks_uri` so tenant key material is not pooled across the origin. Sharding is also a size requirement, not only an isolation one: each `jwks_uri` is fetched under the `MAX_JWKS_BYTES` budget (64 KiB — see the verifier pseudocode below), which is the JWKS-specific cap and is deliberately tighter than the generic 5 MB SSRF body ceiling. A single JWKS that pools hundreds of per-tenant keys exceeds 64 KiB and is rejected, so per-tenant `jwks_uri` (each serving a small key set) — not one aggregated document — is the conformant path at scale. +4. Fetch the JWKS over HTTPS. +5. Locate the key in the JWKS whose `kid` matches the token header. On cache miss for a `kid`, refetch the JWKS once (respecting a minimum 30-second cooldown to prevent unbounded refetches) before rejecting. + +**JWKS cache TTL** MUST be bounded above by the revocation-list polling interval (see [Revocation](#revocation)). Longer cache TTLs defeat revocation: if a compromised `kid` is added to `revoked_kids` but the seller's JWKS cache still serves the revoked key for validation, only the revocation check (performed independently per step 14) catches the fraud. + +**SSRF protection**: `jwks_uri` and the revocation-list URL are counterparty-supplied. All outbound fetches to these URLs MUST follow the SSRF controls defined in [Webhook URL validation](#webhook-url-validation-ssrf): reject non-HTTPS, reject resolved IPs in reserved ranges (including cloud metadata addresses), pin the connection to the validated IP, refuse redirects, cap response size and timeouts, suppress detailed error messages to the counterparty. A JWS profile without SSRF discipline on key discovery is a metadata-exfiltration vector. + +#### Seller verification checklist + +Services apply this checklist to two distinct authorization gates. On an inbound governed request they verify the buyer-supplied `intent` token. When the advertised task mode includes `online_execution_check`, that token permits preparation and the execution check but not the side effect; the service applies the checklist again to the execution token returned by its governance call before commit. Checks run in order and short-circuit on the first failure: + +1. Parse the compact JWS. Reject if malformed. +2. Reject if header `alg` is `none` or not in the allowed list (EdDSA, ES256). Library defaults MUST NOT be relied upon. +3. Reject if header `typ` is not exactly `adcp-gov+jws` (no normalization). +4. Reject if the header contains a `crit` array and any listed protected-header extension is not recognized by the verifier. For `authorized_commitment`, `authorized_task`, and `authorized_payload_hash`, require each boolean protected-header marker, its `crit` entry, and its payload claim to appear together. Require `authorized_task` and `authorized_payload_hash` as a pair. +5. Resolve `iss` to a JWKS via the discovery rules above. Reject if the JWKS cannot be fetched (after SSRF validation) or the `kid` is not present after one refetch. +6. Verify the JWKS entry's `use` is `"sig"` and `key_ops` includes `"verify"`. Reject keys marked for other uses. +7. Cryptographically verify the signature. +8. Reject if `aud` does not byte-for-byte equal the seller's own canonical URL as declared in the relevant `adagents.json` entry. +9. Reject if `exp` is in the past or `iat` is more than 60 seconds in the future (±60 s clock-skew tolerance, symmetric on both bounds). If `nbf` is present, reject if `now < nbf − 60 s`. +10. Reject if `sub` is absent or empty. On a continuation for an already-bound action, reject if it differs from the opaque `sub` retained from the prior accepted token. The seller never compares it to `plan_id`; the issuing governance agent prevents plan swap by validating and resolving its own signed context. +11. Reject if `phase` does not match the authorization gate. The buyer-supplied token on an inbound governed request MUST be `intent`. For a task advertising `online_execution_check`, the token returned to the service by its own pre-commit governance call MUST be `purchase` for a create, `modification` for an update, or `delivery` for a delivery check. A service MUST NOT substitute the inbound intent token for that required execution token. +12. Validate action binding. For an inbound intent token, reject unless `authorized_task` equals the invoked task and `authorized_payload_hash` equals the JCS/SHA-256 hash recomputed over the received request after removing exactly `governance_context` and `context`. For `modification` and `delivery`, reject if `media_buy_id` is absent or does not equal the request's media buy ID. For `purchase`, compare it when present; absence is valid because prepare may precede durable ID assignment. For `intent`, reject if it is present. When the action has a monetary commitment, reject if `authorized_commitment` is absent, its currency differs, or the service's computed commitment exceeds its amount. A service that cannot bind the task and payload or compute the price before commit MUST NOT advertise governance enforcement for that task. +13. Cross-check: the token's `iss` MUST appear as a governance-typed agent in the buyer's current brand.json (established via [Buyer identity resolution](#buyer-identity-resolution)). Sellers SHOULD cache brand.json with reasonable TTLs (recommend 1 hour) and refresh on verification failure. +14. Check the revocation list (see [Revocation](#revocation)). Reject if `jti` ∈ `revoked_jtis` or if the token header's `kid` ∈ `revoked_kids`. This check runs on every verification, not only on cache miss. +15. Reject if `jti` has been seen before for this `(iss, aud)` tuple. See [Replay dedup](#replay-dedup) for storage guidance. + +Only after all 15 checks pass may the service proceed through the gate represented by that token. For `signed_context`, a valid inbound intent token is the task authorization. For `online_execution_check`, it authorizes prepare/check only; commit additionally requires the valid execution token. Services do not verify `plan_hash` — that claim is bound at the governance-agent / auditor layer (see [Plan-state binding](#plan-state-binding)). + +#### Replay dedup + +Step 15 requires tracking `jti` values to prevent replay. The naive implementation — an unbounded set — is both a memory risk and a DoS vector (attacker floods the seller with unique tokens to exhaust storage). + +**Scaling recommendations**: +- Cap execution-token `exp` at 30 days (enforced by governance agents; sellers reject anything longer). This bounds the dedup window. +- Use a bloom filter keyed on `(iss, aud, jti)` with a small false-positive rate (~1 in 10⁶) as the fast-path check, with authoritative lookup in a bounded store (Redis `SET jti NX EX `, Postgres unique index with TTL cleanup) only on bloom-filter hits. +- Governance agents SHOULD issue `jti` values in a time-orderable format (UUID v7 or ULID) so sellers can partition the dedup store by time window and drop expired partitions cheaply. + +#### Revocation + +Exp-based expiry alone does not cover execution-phase tokens that live for a media buy's lifecycle. Governance agents MUST publish a revocation list at `{origin of iss}/.well-known/governance-revocations.json` and MUST sign the list itself using a key in the same JWKS: + +```json +{ + "payload": "", + "signatures": [ + { "protected": "", + "signature": "" } + ] +} +``` + +The payload (JWS-flattened JSON serialization; compact form is also acceptable): + +```json +{ + "version": 1, + "issuer": "https://gov.example.com", + "updated": "2026-04-18T14:00:00Z", + "next_update": "2026-04-18T14:15:00Z", + "revoked_jtis": ["01HWZX..."], + "revoked_kids": ["gov-2026-03"] +} +``` + +- `revoked_jtis` invalidates individual decisions (e.g., a plan was rescinded). Revocation applies to any token with that `jti`, regardless of signing key. +- `revoked_kids` invalidates every token ever signed under that `kid` (before or after the revocation timestamp), not just tokens issued after. +- `issuer` MUST match the `iss` origin of tokens this list governs. Prevents cache substitution across issuers by a shared CDN. +- The list is signed so a compromised CDN or DNS origin cannot serve a stale or tampered list to un-revoke a compromised key. + +**Polling cadence**: +- Sellers MUST poll the list on the cadence declared in `next_update`. +- Floor: 1 minute. Ceiling: 30 minutes for any seller accepting execution-phase tokens. Governance agents MUST NOT declare `next_update` more than 30 minutes in the future for issuers covered by execution-phase traffic. The `next_update` value is a JSON timestamp, not an HTTP cache header — standard HTTP caches will not respect it; sellers MUST parse and honor it themselves. Sellers that prioritize fast key-compromise propagation over DoS tolerance SHOULD poll at or near the floor; the ceiling exists for sellers that accept slower `revoked_kids` propagation in exchange for tolerating longer revocation-endpoint outages. +- Polling is optional for intent-phase tokens with ≤15 min `exp` (the intent-token `exp` cap from the JWT claims table above — distinct from the polling ceiling, even though the numbers were previously coincident). +- Use HTTP conditional requests (`If-Modified-Since` / `ETag`) to avoid unnecessary body transfers. + +**Fetch failure safe-default**: if a seller has not successfully refreshed the revocation list within `next_update + grace` (recommend grace = 4× the previous polling interval), the seller MUST reject any new `purchase`, `modification`, or `delivery` phase token until the list is refreshed. This prevents an attacker who DoSes the revocation endpoint from extending the fraud window of a compromised key. Sellers operating at the polling ceiling get ~2.5 h of endpoint-outage tolerance; sellers at the floor get ~5 min. Tune the polling cadence — not the grace constant — to your risk appetite. + +- Governance agents MUST retain revoked public keys as discoverable for the audit retention period (recommend 7 years) so auditors can verify historical tokens after the current rotation. Revoked keys SHOULD be served at `{origin}/.well-known/jwks-archive.json` (separate from the active JWKS). + +#### Key rotation + +- Governance agents rotate by adding a new key to JWKS with a new `kid`, signing fresh tokens with the new `kid`, and leaving the old key published until the longest-lived outstanding token expires. +- Seller JWKS caches MUST invalidate and refetch on a missing-`kid` failure before rejecting (with a 30-second cooldown to prevent unbounded refetches). +- Emergency rotation (key compromise) proceeds by adding the old `kid` to the signed `revoked_kids` list and rotating to a new key immediately. Short exp on intent tokens, capped exp on execution tokens, and revocation-list polling together bound the fraud window. + +#### Verification error taxonomy + +Sellers and client libraries SHOULD surface verification failures with these codes so that retry vs reject semantics are consistent across the ecosystem. AdCP client libraries (`@adcp/sdk` and equivalents) SHOULD expose typed errors that map to this taxonomy. + +| Failure | Retry? | Code | Notes | +|---|---|---|---| +| JWKS fetch timeout or 5xx | Yes, with backoff | `governance_jwks_unavailable` | Transient. Retry with exponential backoff; abort after N attempts. | +| JWKS fetch fails SSRF validation | No | `governance_jwks_untrusted` | Permanent. Indicates misconfigured `jwks_uri` or an attack. | +| `kid` not in JWKS after refetch | No | `governance_key_unknown` | Reject. Possibly indicates rotation lag or key revocation. | +| Signature invalid, `typ` mismatch, `alg` not allowed, `crit` unknown | No | `governance_token_invalid` | Reject. Indicates tampering or implementation bug. | +| `exp` in past, `jti` replayed, or `iat` / `nbf` in future beyond allowed skew | No | `governance_token_expired` / `_replayed` / `_not_yet_valid` | Reject. Tokens cannot be healed by retry. | +| `jti` ∈ `revoked_jtis` or `kid` ∈ `revoked_kids` | No | `governance_token_revoked` | Reject. | +| `iss` not in buyer brand.json | No | `governance_issuer_not_authorized` | Reject. Possibly indicates a spoofing attempt. | +| Revocation list not refreshed within grace | No (block new) | `governance_revocation_stale` | Reject new tokens until revocation list refreshes. Existing fully-verified tokens may continue to be trusted within their existing grace. | +| `aud`, authenticated `caller`, opaque action-binding (`sub`), `phase`, `media_buy_id`, `authorized_task`, `authorized_payload_hash`, or `authorized_commitment` currency/ceiling mismatch | No | `governance_token_not_applicable` | Reject. Token valid but not for this operation. Missing or malformed required claims use `governance_token_invalid`; a well-formed token whose bindings do not match the attempted operation uses this code. | + +Servers MUST NOT echo internal verification details (e.g., which specific claim mismatched) to the counterparty. Return the stable code above; log the detail server-side. + +#### Privacy considerations + +**`policy_decisions` visibility**: the token is a JWS (readable by anyone with the public key), not a JWE (encrypted). If `policy_decisions` contains the full list of policy IDs the governance agent evaluated, every seller who receives the token learns which policies the buyer's governance posture considers — competitive intelligence, and in some cases signaling about sensitive audience characteristics (e.g., a `minors_compliance` policy ID implies targeting of under-18 audiences). Governance agents SHOULD use `policy_decision_hash` in place of `policy_decisions` when the buyer's compliance posture is sensitive; the full log remains available to auditors via `audit_log_pointer` with governance-agent-controlled access. + +**Intent-phase seller disclosure to GA**: the `aud` binding means a buyer evaluating N sellers in a competitive auction must request N distinct intent tokens, each `aud`-bound to one seller. The governance agent therefore sees the full list of sellers the buyer considered — a privacy regression relative to the opaque-string model where sellers were unknown to the GA at intent time. This is an explicit trade-off: cross-seller replay resistance requires per-seller binding. A future `aud_hash` mechanism (where the token binds a hash of the seller URL with a token-scoped salt, and each seller computes the hash on its own URL to verify) can recover intent-time seller privacy against the GA without sacrificing replay resistance. Not defined in 3.0; tracked as a follow-up. + +**`caller` URL**: contains the orchestrator's identifier. Sellers and auditors who retain tokens long-term should be aware of the retention policy implied by this. + +#### Reference implementation + +**Decoded example token (intent phase)**: + +Header: +```json +{ + "alg": "EdDSA", + "kid": "gov-2026-04", + "typ": "adcp-gov+jws", + "crit": ["authorized_commitment", "authorized_task", "authorized_payload_hash"], + "authorized_commitment": true, + "authorized_task": true, + "authorized_payload_hash": true +} +``` + +Payload: +```json +{ + "iss": "https://governance.example.com", + "sub": "gb_01HWZXABCDEFG1234567890", + "plan_hash": "EiCW8FkxgZ2wKqGv3Z9XuT4n2LwcJm1fK7vRaTpQ0sU", + "aud": "https://seller.example.com/adcp", + "iat": 1744934400, + "exp": 1744935300, + "jti": "01HWZXABCDEFG1234567890", + "phase": "intent", + "caller": "https://orchestrator.example.com", + "check_id": "chk_001", + "authorized_commitment": { "amount": 25000, "currency": "USD" }, + "authorized_task": "create_media_buy", + "authorized_payload_hash": "grD8ZKqJa7KJuLX_EJ4iZ5tCVGfOnJrL-o9Q_qXl7xU", + "policy_decision_hash": "9b2a...f41c", + "audit_log_pointer": "https://governance.example.com/audit/01HWZXABCDEFG1234567890" +} +``` + +**Seller verifier (TypeScript, ~30 lines with `jose`)**: + +```ts +import { createRemoteJWKSet, decodeProtectedHeader, decodeJwt, jwtVerify } from "jose"; + +class GovTokenError extends Error { + constructor(public code: string) { super(code); } +} + +const jwksCache = new Map>(); +function jwksFor(jwksUri: string) { + let jwks = jwksCache.get(jwksUri); + if (!jwks) { + // ssrfValidatedFetch enforces the Webhook URL validation rules on the JWKS URL + jwks = createRemoteJWKSet(new URL(jwksUri), { cacheMaxAge: 15 * 60 * 1000, cooldownDuration: 30 * 1000, [Symbol.for("fetch")]: ssrfValidatedFetch }); + jwksCache.set(jwksUri, jwks); + } + return jwks; +} + +export async function verifyGovernanceContext(token: string, ctx: { + sellerId: string; priorBindingId?: string; mediaBuyId?: string; phase: "intent" | "purchase" | "modification" | "delivery"; + task: string; governedPayloadHash: string; commitment?: { amount: number; currency: string }; + resolveBrandJsonGovernanceAgent: (iss: string) => Promise<{ jwks_uri: string } | null>; + seenJti: (iss: string, aud: string, jti: string) => Promise; + isRevoked: (iss: string, jti: string, kid: string) => Promise; + revocationFresh: (iss: string) => Promise; +}) { + const header = decodeProtectedHeader(token); + if (header.typ !== "adcp-gov+jws") throw new GovTokenError("governance_token_invalid"); + if (!["EdDSA", "ES256"].includes(header.alg ?? "")) throw new GovTokenError("governance_token_invalid"); + const { iss } = decodeJwt(token); + const agent = await ctx.resolveBrandJsonGovernanceAgent(iss as string); + if (!agent) throw new GovTokenError("governance_issuer_not_authorized"); + + const { payload } = await jwtVerify(token, jwksFor(agent.jwks_uri), { + issuer: iss as string, audience: ctx.sellerId, typ: "adcp-gov+jws", + algorithms: ["EdDSA", "ES256"], clockTolerance: 60, + crit: { authorized_commitment: true, authorized_task: true, authorized_payload_hash: true }, + }).catch(() => { throw new GovTokenError("governance_token_invalid"); }); + + if (typeof payload.sub !== "string" || payload.sub.length === 0) + throw new GovTokenError("governance_token_not_applicable"); + if (ctx.priorBindingId && payload.sub !== ctx.priorBindingId) + throw new GovTokenError("governance_token_not_applicable"); + if (payload.phase !== ctx.phase) throw new GovTokenError("governance_token_not_applicable"); + if (payload.authorized_task !== ctx.task || payload.authorized_payload_hash !== ctx.governedPayloadHash) + throw new GovTokenError("governance_token_not_applicable"); + if (ctx.commitment) { + const ceiling = payload.authorized_commitment as { amount?: number; currency?: string } | undefined; + if (!ceiling || ceiling.currency !== ctx.commitment.currency || typeof ceiling.amount !== "number" || ctx.commitment.amount > ceiling.amount) + throw new GovTokenError("governance_token_not_applicable"); + } + if (ctx.phase !== "intent" && payload.media_buy_id !== ctx.mediaBuyId) + throw new GovTokenError("governance_token_not_applicable"); + if (!(await ctx.revocationFresh(iss as string))) throw new GovTokenError("governance_revocation_stale"); + if (await ctx.isRevoked(iss as string, payload.jti as string, header.kid as string)) + throw new GovTokenError("governance_token_revoked"); + if (await ctx.seenJti(iss as string, ctx.sellerId, payload.jti as string)) + throw new GovTokenError("governance_token_replayed"); + return payload; +} +``` + +**Migration dual-path (sellers during 3.0)**: + +```ts +const JWS_COMPACT = /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/; + +function handleGovernanceContext(value: string, ctx) { + persistOpaque(value); // always persist and forward for auditor use + if (!JWS_COMPACT.test(value)) return; // pre-3.0 opaque value, nothing to verify + return verifyGovernanceContext(value, ctx); // throws on any failure +} +``` + +#### Migration (3.0 → 3.1) + +- **3.0**: governance agents MUST emit compact JWS per this profile, including the required `plan_hash` audit-layer claim (see [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit) for semantics). Sellers MAY verify the 15-step checklist; sellers that do not verify MUST persist and forward the token unchanged. Values that are not JWS are deprecated and SHOULD only appear from pre-3.0 governance agents during the transition; governance agents that emit non-JWS values in 3.0 MUST declare this in their capabilities so sellers can detect unverifiable deployments. +- **3.1**: all sellers MUST verify per the 15-step checklist. Governance agents MUST emit JWS. Non-JWS values will be rejected end-to-end. `plan_hash` remains audit-layer (governance-agent / auditor / buyer-compliance verification only — not seller verification). + +The field name and schema shape (single string, ≤4096 chars) do not change between versions. Only the string's internal format is tightened. This preserves the correlation-key semantics from earlier protocol versions — sellers that already treat the value as opaque need no changes to continue forwarding; sellers that want the accountability properties opt in by implementing the verification checklist. + + + +### Signed Requests (Transport Layer) + +[Signed Governance Context](#signed-governance-context) signs an authorization artifact. Request signing signs the request itself — method, target URI, headers, and (by default) body bytes — establishing cryptographically that a specific agent issued the request, with replay and tampering protection. A valid signature proves only one thing: **the request came from the agent whose key signed it.** Whether that agent is *authorized* to act for the brand named in the request body is a separate concern, governed by the target house's `authorized_operator[]` in brand.json. This section defines authentication only; authorization lookup is specified by the brand.json schema and happens whether requests are signed or not. + +AdCP 3.0 defines this profile as **optional and capability-advertised** via `request_signing` on `get_adcp_capabilities`. AdCP 3.2 keeps signing optional but makes body integrity mandatory whenever signing is used: every accepted signature on a request with a body covers `content-digest`. AdCP 4.0 — the next breaking-changes accumulation window — additionally requires signing for spend-committing operations. See [Transport migration timeline](#transport-migration-timeline). + +**Roles:** +- **Agents** sign requests with a key published at their own `jwks_uri` in their operator's brand.json `agents[]` entry. The operator (the domain hosting brand.json) may be a house buying direct or an authorized third party — this profile does not distinguish. The signer is always an agent. +- **Sellers** verify the signature against the signing agent's published key, establishing agent identity. Sellers then perform the separate brand-operator authorization check (outside this profile's scope). +- **Sellers calling agent-side AdCP endpoints** (e.g., buyer-hosted mutation callbacks that are themselves AdCP protocol calls) sign their outgoing requests symmetrically; the receiving agent verifies against the seller's keys published under the seller operator's brand.json `agents[]` entry. Push-notification webhook callbacks (`push_notification_config.url` and similar asynchronous one-way notifications) are covered by the symmetric [Webhook callbacks](#webhook-callbacks) variant of this profile — the seller signs outbound with its `adcp_use: "request-signing"` key (the deprecated `"webhook-signing"` value is still accepted) and the buyer verifies. + +**Dependencies:** +- Shares JWKS discovery, SSRF rules, alg allowlist, revocation semantics, and key rotation with the [AdCP JWS profile](#adcp-jws-profile) above. Request verification never accepts another key purpose: a request-signing JWK MUST declare `"adcp_use": "request-signing"`, `"use": "sig"`, `"key_ops": ["verify"]`, and a `kid` that does not appear on any other JWKS entry with a different `adcp_use`. Verifiers enforce all four; see [Agent key publication](#agent-key-publication). The webhook path has its own explicit relaxation because the webhook `tag` provides domain separation. +- Resolves the identity-bootstrapping dependency in [Buyer identity resolution](#buyer-identity-resolution) for governance: a seller that verifies a request signature has a cryptographically established signing agent identity and MAY use the signing agent's operator domain as the brand.json resolution input for the governance verification step. + +**Conformance.** Verifier behavior is graded by the universal capability-gated storyboard at [`/compliance/latest/universal/signed-requests`](https://adcontextprotocol.org/compliance/latest/universal/signed-requests), which runs for any agent advertising `request_signing.supported: true`. The storyboard exercises every step in the [verifier checklist](#verifier-checklist-requests) below and every canonicalization-edge rule in this profile, against the test vectors at [`/compliance/latest/test-vectors/request-signing/`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/). To run the CLI grader against your own agent, see [Auth Graders](/dist/docs/3.2.0-beta.4/building/verification/grading). + +**No general-purpose RFC 9421 response-signing profile.** This profile signs the *request*; AdCP 3.x defines no general-purpose paired profile for signing the synchronous response *transport*. Sellers MUST NOT apply RFC 9421 §2.2.9 response signing to synchronous AdCP responses (whether MCP `tools/call` or A2A non-streaming responses including streaming `artifactUpdate` frames), and buyers MUST NOT rely on an RFC 9421 response signature on the synchronous reply. Integrity of the immediate response transport rests on TLS within the authenticated session that carried the request, modulo the standard edge-termination caveats that govern request-side body integrity at body-modifying CDNs. Durable at-rest attestation for artifacts that need to survive past the session — including specialism-scoped payloads (brand-rights, AAO Verified compliance, sales-intelligence relay, governance receipts, bilateral non-repudiation receipts such as `plan_receipt`) — is the job of [signed webhooks](#webhook-callbacks) (signed with the `adcp_use: "request-signing"` key). The split is deliberate — see [Security Model: What gets signed](/dist/docs/3.2.0-beta.4/building/concepts/security-model#what-gets-signed--and-what-doesnt) for the full rationale and the request-the-webhook pattern for tools whose canonical artifact needs to be attestable. + + + +**Designated-task payload-envelope response signing.** A closed list of tasks designates their response *payload* as cryptographically signed under `adcp_use: "response-signing"`. The primitive is distinct from RFC 9421 §2.2.9 transport response signing on two load-bearing axes: + +- **Signature location:** inside the response body, not in HTTP response headers. +- **Verification path:** parse the response body, then verify the JWS against the responding agent's `response-signing` JWK published at the agent's `jwks_uri` — not RFC 9421 base reconstruction over transport headers. + +A task is admitted to the designated list only when its response payload is the canonical attestable artifact AND no webhook-emit restructuring is feasible (see the [request-the-webhook pattern](/dist/docs/3.2.0-beta.4/building/concepts/security-model#the-request-the-webhook-pattern) for the default path). The list in 3.x is closed at: + +- **`verify_brand_claim`** and its bulk variant **`verify_brand_claims`** (Brand Protocol). The responding brand-agent signs its response payload as a JWS envelope under the brand's `adcp_use: "response-signing"` key. The signature is load-bearing for the direction-asymmetric trust model — see [`verify_brand_claim` trust model](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim#trust-model) and [Building a brand agent — Signing setup](/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent#signing-setup). + +Any task not on this list MUST NOT sign its response under any signing primitive. General-purpose response-signing helpers applying RFC 9421 §2.2.9 to arbitrary tools (regardless of which `tag` or `adcp_use` string they coin) are operating outside this profile and are not 3.x-conformant; the only response-signing primitive the spec authorizes in 3.x is payload-envelope JWS on the designated-tasks list. + +The `adcp_use: "response-signing"` value is therefore reserved at the JWK layer for the payload-envelope primitive. **Keys published with `adcp_use: "response-signing"` MUST sign only payload-envelope JWS as defined in this section; using such a key to produce RFC 9421 §2.2.9 transport signatures is a profile violation regardless of the task being signed.** If a future major version scopes RFC 9421 transport response signing for any task, it MUST use a distinct `adcp_use` value (e.g., `"response-transport-signing"`) so verifiers can disambiguate the primitive from the JWK alone — the brand-protocol value cannot be retconned to cover both. List growth and additional primitives are normative decisions deferred to future spec versions. + +Designated-task success responses MUST carry a `signed_response` member matching [`response-payload-jws-envelope.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/response-payload-jws-envelope.json). The envelope payload is the canonical signed task-body object and MUST include `typ: "adcp-response-payload+jws"`, `task`, `brand_domain`, `agent_url`, `request_hash`, `iat`, `exp`, and `response`. The outer task-body fields are convenience fields for ordinary task consumers; verifiers that rely on the signature MUST reject the envelope if any unsigned task-body field disagrees with `signed_response.payload.response`. Protocol/version envelope fields are excluded from this comparison, including `status`, `context_id`, `task_id`, `message`, `timestamp`, `replayed`, `adcp_version`, and `adcp_major_version`. + +This profile uses ordinary JWS signing, not RFC 7797 unencoded payloads. The JWS Signing Input is `BASE64URL(UTF8(protected)) || "." || BASE64URL(UTF8(JCS(payload)))`, where `payload` is `signed_response.payload` and `protected` decodes to `{ "alg": "EdDSA" | "ES256", "kid": "...", "typ": "adcp-response-payload+jws" }`. The protected header MUST NOT contain `b64`. Response verifiers MUST enforce the shared JWS discovery and hardening rules from the [AdCP JWS profile](#adcp-jws-profile): allowed algorithms, `use: "sig"`, `key_ops` containing `"verify"`, exact `adcp_use: "response-signing"`, missing-`kid` refetch, revocation checks, SSRF-safe JWKS fetches, and duplicate-key rejection before canonicalization. + +`request_hash` is `sha256:` plus unpadded base64url SHA-256 of the JCS canonical request-binding object `{ task, brand_domain, agent_url, caller_identity, request }`. `caller_identity` MUST be a typed canonical string derived from the authenticated transport or credential mapping, such as `signed-agent-url:`, `api-client-id:`, or `mtls-san:`. If no authenticated caller identity exists, `caller_identity` is `null` and the verifier MUST treat the response as weaker evidence that is not bound to a caller. + +`brand_domain` is a tenant-binding field, not an echo. A multi-brand agent MUST populate it from its server-side tenant resolution and the brand.json entry whose policy store produced the answer; it MUST NOT copy it from the request body. `agent_url` is the canonical URL of the responding `agents[]` entry whose `response-signing` JWK verifies the envelope. Online verifiers MUST reject envelopes at or after `exp` after applying only small clock-skew tolerance; audit verifiers MAY verify after `exp`, but only as historical evidence that the brand-agent signed that payload during the stated `iat`/`exp` window. + +**Brand-authorization cross-check (3.2 advisory).** A valid signature proves only that *some* agent holding a `response-signing` key signed the payload — not that the key is authorized to answer for `brand_domain`. `brand_domain` and `agent_url` are fields *inside* the payload the same key signs, so resolving the envelope's `kid` from an attacker-selected agent origin confirms authorship, not brand authority. Before treating a cryptographically valid `verify_brand_claim` / `verify_brand_claims` envelope as evidence about the asserted `brand_domain`, an online 3.2 verifier SHOULD: + +1. Resolve `https://{brand_domain}/.well-known/brand.json` following the SSRF-safe [brand.json resolution](#buyer-identity-resolution) rules (one redirect, no chains). Apply the trust-root fetch budgets: strict JSON parsing with duplicate keys rejected, a 256 KiB body cap, 5 s connect and 10 s total deadlines, successful-cache lifetime no longer than the JWKS revocation polling interval, and negative caching of at most 60 s. +2. Resolve the agent collection for the asserted domain, then locate exactly one entry whose `type` is `brand` and whose `url` matches the envelope's `agent_url` after applying the shared [URL canonicalization](/dist/docs/3.2.0-beta.4/reference/url-canonicalization) algorithm. For a Brand Agent or Brand Canonical Document, use the top-level `agents[]`. For a House Portfolio whose `house.domain` equals `brand_domain`, use `house.agents[]`. Otherwise, locate exactly one inline `brands[]` entry whose `url` hostname equals `brand_domain`; use that brand's `agents[]` when present, or `house.agents[]` only when the brand does not override `agents[]`. Never aggregate sibling brands' agents, and do not search `brand_refs[]`, because those entries require resolving the child's canonical document. No domain or agent match is `agent_not_authorized`; multiple inline-domain or canonical agent matches are `agent_authorization_ambiguous`. +3. Resolve the JWKS source **only** from that matched entry's `jwks_uri`, defaulting when absent to `/.well-known/jwks.json` at the origin of the matched entry's `url`. Never accept a JWKS URI supplied by the envelope or discovered independently from the envelope's `agent_url` host. Deduplicate fetches by canonical resolved JWKS URI. +4. Require exactly one JWK whose `kid` matches the protected header, enforce `use: "sig"`, `key_ops` containing `"verify"`, and exact `adcp_use: "response-signing"`, then bind it to the key that verified the envelope. Either re-verify the JWS with this authorized JWK or compare RFC 7638 thumbprints of the authorized and already-verified public keys. Equal `kid` strings are insufficient; zero matches, duplicate matches, or different key material are `untrusted`. + +The cross-check produces a verifier-local [`BrandResponseAuthorizationResult`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/brand-response-authorization-result.json); it is never a field asserted by the responding agent. A successful lookup and key-material binding returns `trust: "trusted"`. Any fetch failure, missing or ambiguous agent entry, missing or duplicate `kid`, key-material mismatch, or key-purpose failure returns `trust: "untrusted"` with the corresponding reason. If a verifier skips the cross-check, it MUST treat the envelope as `untrusted` for relationship decisions. “Advisory” means a failed or skipped cross-check does not transport-reject an otherwise cryptographically valid response; it does not make authorization verification optional when extending or revoking relationship trust. A 3.2 verifier MUST NOT let an untrusted result extend or revoke relationship trust on its own, but MAY retain the cryptographically valid envelope as unauthenticated historical evidence or combine it with independent mutual-assertion evidence. It MUST NOT hard-reject solely because this additive advisory check failed. Mandatory cryptographic authorization binding and incompatible hard-fail behavior are deferred to 4.0. + +For `verify_brand_claims`, implementations SHOULD deduplicate brand.json fetches by `brand_domain` and JWKS fetches by canonical resolved `jwks_uri` within the batch verification operation to avoid request amplification against brand origins. The advisory applies symmetrically to assertions (`owned`, `licensed_*`, and similar) and rejections (`disputed`, `not_ours`). Conformance vectors and the paired executable reference evaluator live at [`brand-response-signing/brand-authorization-cross-check`](https://adcontextprotocol.org/compliance/latest/test-vectors/brand-response-signing/brand-authorization-cross-check.json). + +Response-signing keys are scoped by brand tenant as well as by purpose. A shared multi-brand fleet MUST publish distinct response-signing key material and distinct `kid` values for each `brand_domain` it serves, even when the same software and `agent_url` serve multiple brands. Cross-brand reuse of a response-signing JWK is a profile violation because it defeats tenant-bound replay analysis; this rule is stricter than ordinary cross-purpose separation and applies only to `adcp_use: "response-signing"` keys. + + + +#### Verifier checklist (designated-task response signing) + +Verifiers consuming a `signed_response` on `verify_brand_claim` or `verify_brand_claims` MUST apply these checks in order, short-circuiting on the first failure. Steps 1–6 establish cryptographic validity; steps 7–10 enforce the envelope's binding claims. The [brand-authorization cross-check](#designated-task-response-signing) (advisory in 3.2) is a separate, subsequent check — it does not replace the binding checks below. + +1. Parse the `signed_response` member. Reject if `protected`, `payload`, or `signature` is absent or structurally malformed. +2. Decode the base64url-encoded JWS protected header. Reject if `alg` is not in the allowlist (`EdDSA`, `ES256`), `kid` is absent, or `typ` is not exactly `adcp-response-payload+jws`. +3. Resolve `kid` to a JWK at the responding agent's `jwks_uri` (defaulting to `/.well-known/jwks.json` at the agent URL's origin when `jwks_uri` is absent). Enforce `use: "sig"`, `key_ops` containing `"verify"`, and exact `adcp_use: "response-signing"`. Reject on any mismatch, including absent `adcp_use`. +4. Canonicalize `signed_response.payload` with RFC 8785/JCS, base64url-encode the result, construct the JWS Signing Input as `BASE64URL(UTF8(protected)) || "." || BASE64URL(UTF8(JCS(payload)))`, and verify the signature against the resolved JWK. Reject if verification fails. +5. Reject if `signed_response.payload.typ` is not exactly `adcp-response-payload+jws`. This prevents cross-profile replay — a governance JWS (`adcp-gov+jws`) or any other typed token MUST NOT validate under this profile. +6. Reject if `signed_response.payload.task` does not match the invoked task (`verify_brand_claim` or `verify_brand_claims`). This prevents cross-task replay — a valid `verify_brand_claim` envelope MUST NOT validate on a `verify_brand_claims` response and vice versa. +7. **Expiry.** Reject if `signed_response.payload.exp ≤ now − skew`, where `skew` is an implementation-defined clock-skew tolerance (SHOULD be ≤ 60 s). Online verifiers MUST reject expired envelopes with `SIGNED_RESPONSE_ENVELOPE_EXPIRED`. Audit verifiers MAY verify after `exp` as historical evidence, but MUST NOT treat the result as current truth. Also reject if `iat > now + skew` (issued in the future). +8. **Request-hash binding.** Recompute the SHA-256 hash of the JCS-canonical request-binding object `{ task, brand_domain, agent_url, caller_identity, request }` using the same derivation rules documented in [the payload field definitions above](#designated-task-response-signing). Reject with `SIGNED_RESPONSE_REQUEST_HASH_MISMATCH` if the recomputed hash does not byte-match `signed_response.payload.request_hash`. This check binds the signed response to the exact request that produced it — without it, a signed response from one request can be replayed as the answer to a different request. +9. **Tenant binding.** Reject with `SIGNED_RESPONSE_TENANT_MISMATCH` if `signed_response.payload.brand_domain` does not match the verifier's resolved or expected brand tenant for this call. The brand agent derives `brand_domain` from server-side tenant resolution, not from caller-supplied request fields; a mismatch indicates cross-tenant replay or a multi-brand agent routing error. +10. **Payload consistency.** Reject if any unsigned task-body field on the outer response disagrees with the corresponding field in `signed_response.payload.response`. Protocol/version envelope fields (`status`, `context_id`, `task_id`, `message`, `timestamp`, `replayed`, `adcp_version`, `adcp_major_version`) and `signed_response` itself are excluded from this comparison. + +Only after all 10 checks pass does the verifier treat the signed response as cryptographically valid and bound. The subsequent [brand-authorization cross-check](#designated-task-response-signing) (3.2 advisory) determines whether the signing key is authorized to answer for `brand_domain` — that check is independent of the binding checks above. + +#### Transport scope + +| Class | 3.0–3.1 | 3.2 | 4.0 | +|---|---|---|---| +| Spend-committing (`create_media_buy`, `update_media_buy`, `acquire_*`, `activate_signal`) | Signing optional; legacy body-binding modes available | Signing optional; every signed body is digest-bound | Signing required and every signed body is digest-bound | +| Reversible state changes (`sync_creatives`, `update_creative_status`) | Signing optional; legacy body-binding modes available | Signing optional; every signed body is digest-bound | Signing recommended; every signed body is digest-bound | +| Read / discovery (`get_products`, `get_media_buy_delivery`, `list_*`) | Not in scope | Not in scope | Not in scope | +| TMP `provider_endpoint_url` requests | Out of scope (TMP has its own envelope) | Out of scope | Out of scope | + +Read calls remain bearer-authenticated. Signing read traffic adds verification cost without proportionate benefit; signing's purpose is integrity of state-changing operations. + +#### Quickstart: opt into request signing + +For implementers adopting request signing in 3.2 ahead of the 4.0 enforcement flip: + +**As an agent that signs requests:** + +0. Call `get_adcp_capabilities` on the target seller. Read `request_signing.supported_for` and `required_for` to see which AdCP operations the seller expects you to sign, and read `request_signing.protocol_methods_supported_for` / `protocol_methods_required_for` to see which JSON-RPC protocol methods (e.g., `tasks/cancel`) the seller's verifier covers. A 3.2 signing peer MUST advertise `covers_content_digest: "required"`; `"either"` and `"forbidden"` identify a legacy 3.0/3.1 signing posture only. +1. Generate an Ed25519 keypair: `openssl genpkey -algorithm ed25519 -out signing-key.pem`. +2. Export the public key as a JWK. Add `"kid"`, `"use": "sig"`, `"key_ops": ["verify"]`, `"adcp_use": "request-signing"`, and `"alg": "EdDSA"`. +3. Publish the JWK at your agent's `jwks_uri` (the URL declared on your `agents[]` entry in brand.json; defaults to `/.well-known/jwks.json` at your agent URL's origin). +4. Configure your AdCP client with the private key and agent URL. Your SDK signs requests automatically for any operation listed in the seller's `supported_for` or `required_for` capability and any JSON-RPC method listed in `protocol_methods_supported_for` or `protocol_methods_required_for`, honoring the seller's `covers_content_digest` policy. SDKs SHOULD support pluggable signers so the private key can live in a managed key store (KMS / HSM / Vault) rather than in process memory — see [Production key storage](#production-key-storage) below. +5. Validate end-to-end with the conformance vectors at [`/compliance/latest/test-vectors/request-signing/`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/) (published per AdCP version; source lives at `static/compliance/source/test-vectors/request-signing/`) — if your client produces signatures that match the positive vectors' `expected_signature_base`, you're done. + +**As a verifier (seller):** + +1. Advertise `request_signing.supported: true` and `covers_content_digest: "required"` in `get_adcp_capabilities`. Leave `required_for: []` during the pilot; add operations incrementally per counterparty. Signing remains optional in 3.2, but a signature that is presented on a request with a body is never body-optional. +2. Enable signature verification middleware on mutating routes. Implement the [verifier checklist](#verifier-checklist-requests) — all 14 checks (13 numbered steps plus sub-step 9a), short-circuit on first failure. +3. Start in shadow mode for a pilot counterparty before populating `required_for`. Record well-formed verification and body-binding failures, establish no signer identity from them, and continue only under independent authentication. Partial or malformed signature-header pairs still hard-reject. Surface verification failures in monitoring for the first few weeks. +4. Run the conformance negative vectors against your verifier — each rejection MUST produce the vector's stated `error_code`. The vector's `failed_step` is informational; an implementation that rejects with the correct error code is conformant even if its internal step numbering differs. + +**Minimum viable 3.2 verifier:** implement the complete checklist, including digest recomputation, before advertising `request_signing.supported: true`. The older 3.0/3.1 shadow-mode allowance that deferred digest enforcement does not satisfy the 3.2 body-integrity contract. Do not skip ahead of step 1 — malformed signatures always reject, never fall back. + +#### Production key storage + +Where the signer's private key lives is implementation-defined — the spec is concerned only with the bytes on the wire — but operators SHOULD avoid holding private signing keys in process memory in production. A process compromise leaks the signing key, and the only remedy is rotation across every counterparty that's cached the public key (within their cache TTL). + +The recommended pattern: an SDK exposes a pluggable signer interface (e.g., `sign(payload: Uint8Array): Promise`), and the operator's adapter delegates the operation to a managed key store — AWS KMS, GCP KMS, Azure Key Vault, HashiCorp Vault Transit, or an HSM. The key never leaves the managed store; the SDK builds the canonical signature base, the store signs it, the SDK assembles `Signature` and `Signature-Input` headers from the returned bytes. Wire format is identical to in-process signing. + +Two implementation notes for adapter authors: + +- ECDSA-P256 signatures returned by most KMS APIs are DER-encoded; this profile and RFC 9421 §3.3.1 require IEEE P1363 (`r‖s`, 64 bytes for P-256). Convert at the adapter boundary. +- Treat the KMS key as single-purpose. The `tag` parameter in this profile protects verifiers, not signers — an operator who reuses the same KMS key for AdCP request-signing and any other signing protocol creates a cross-protocol oracle. Bind the KMS access policy (GCP `roles/cloudkms.signer` scoped to the specific cryptoKey, AWS `kms:Sign` conditioned on the key ARN) so only the AdCP signing path can invoke the key. + +Reference implementations: `@adcp/sdk` (TypeScript) ships a `SigningProvider` interface with sync/async parity, an in-memory provider for tests, and a GCP KMS reference adapter at [`examples/gcp-kms-signing-provider.ts`](https://github.com/adcontextprotocol/adcp-client/blob/main/examples/gcp-kms-signing-provider.ts). See the [SDK signing guide](https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/SIGNING-GUIDE.md#step-35-production-key-storage--kms--hsm--vault) for the full walkthrough. + +**Tripwire pattern — assert public key at init.** Managed key stores can silently rotate (IAM policy swap, version disable, hostile substitution). If rotation happens without updating the published JWKS, verifiers fetching the unchanged `kid` will reject every signature with no clear error signal — the operator sees counterparty failures, not a KMS mismatch. The defense: commit the expected public key (SPKI bytes, base64-encoded) alongside the code, and at signer init byte-compare it against the key the store returns (`getPublicKey()` or equivalent). A mismatch fails loudly at startup rather than silently on every signed call. Rotation then becomes a deliberate two-step: update the pinned constant, set the new key version path, deploy. + +**Lifecycle: lazy init, not eager.** Calling `getPublicKey` (or any KMS warm-up call) before the process binds its listener looks clean in review but has a dangerous failure mode: if KMS auth is misconfigured, gRPC / TLS retries inside the KMS client can block indefinitely, the process never opens its port, and the infrastructure health-check times out — surfacing a "service unreachable" alarm rather than the underlying KMS error. The correct lifecycle is lazy init on first sign: call the store the first time a request needs signing, cache the result only on success (never cache errors), and deduplicate concurrent first-call requests with an in-flight promise. Fail-fast misconfig detection belongs in a CI/CD pre-deploy probe that exercises the KMS path with the deployment target's credentials before cutover — not at process startup. + +**One JWK per `adcp_use` — publication shape.** The single-purpose rule applies to key material **and** to JWKS publication. Note that webhooks do not need their own purpose: they are signed with a `"request-signing"` key (see [Webhook callbacks](#webhook-callbacks), step 8), so an operator that signs both requests and webhooks with the same key publishes a single `"request-signing"` entry. An operator that wants separate key material for webhooks (blast-radius isolation) publishes a **second `"request-signing"` key with a distinct `kid`** — isolation comes from the `kid`, not a distinct `adcp_use`. The `adcp_use` value is always a **string**, not an array — publishing `"adcp_use": ["request-signing","webhook-signing"]` on a single entry is a schema error that receivers will reject: + +```json +{ + "keys": [ + { + "kty": "OKP", "crv": "Ed25519", + "x": "SRYr8eSvjkZF6dAUquI1sKuU4YGZkoGH-2jwkz4dRJg", + "kid": "acme-signing-2026-04", + "alg": "EdDSA", "use": "sig", + "adcp_use": "request-signing", + "key_ops": ["verify"] + }, + { + "kty": "OKP", "crv": "Ed25519", + "x": "lHJI-IvBwCE36heDNOyBmCk5UMKRIs4b4BAWJRgao-M", + "kid": "acme-webhook-2026-04", + "alg": "EdDSA", "use": "sig", + "adcp_use": "request-signing", + "key_ops": ["verify"] + } + ] +} +``` + +This second entry is the optional webhook-isolation key from the [Key publication](#webhook-callbacks) section: same `adcp_use: "request-signing"`, distinct `kid`, used to sign webhooks so a webhook-key compromise doesn't extend to request signing. Distinct `kid` values also mean counterparties can cache and rotate the two keys independently. + +#### AdCP RFC 9421 profile + +This profile constrains RFC 9421 to a single canonical shape so cross-implementation interop is tractable. + +**Covered components (REQUIRED on every signed request):** + +| Component | Notes | +|---|---| +| `@method` | Uppercase. | +| `@target-uri` | Canonicalized per the algorithm below. Signer MUST apply canonicalization before computing the signature base; verifier MUST apply the same canonicalization to the received request before verifying. | +| `@authority` | Lowercased `host[:port]`, default ports (`443` for https, `80` for http) stripped. | +| `content-type` | Required on requests with bodies. | +| `content-digest` | Governed by the verifier's `request_signing.covers_content_digest` capability — see [Content-digest and proxy compatibility](#content-digest-and-proxy-compatibility). | + +**`@target-uri` canonicalization** follows the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization) — eight steps applying RFC 3986 §6.2.2 (syntax-based normalization) and §6.2.3 (scheme-based normalization), plus UTS-46 Nontransitional IDN processing and IPv6 zone-identifier rejection. Signers and verifiers apply the same algorithm; malformed authorities rejected there map to `request_target_uri_malformed` on the signing path. The authoritative algorithm, conformance vectors, and pitfalls list live on that page — keeping this profile's treatment thin prevents divergence between the signing-specific copy and the general-purpose copy. + +**`@authority` canonicalization** produces `host[:port]` from the URL's authority after the canonicalization algorithm's host and port steps (lowercase host / IDN → ACE / one trailing DNS root dot removed / IPv6 bracketing preserved; userinfo stripped; default port stripped). IPv6 hosts retain their brackets in `@authority` (`[::1]:8443`). A signer and verifier MUST remove exactly one trailing DNS root-label dot before deriving both `@target-uri` and `@authority`; `https://example.com./p` therefore yields `https://example.com/p` and `example.com`. The same rule applies to equivalent IDN U-label and A-label inputs, so `bücher.example.` and `xn--bcher-kva.example.` both yield authority `xn--bcher-kva.example`. An authority with multiple trailing dots is malformed and MUST be rejected with `request_target_uri_malformed`. Verifiers MUST apply these rules to the HTTP authority source before comparison. Verifiers MUST derive `@authority` from the HTTP/2+ `:authority` pseudo-header when present, otherwise from the as-received HTTP/1.1 `Host` header — not from reverse-proxy routing state, load-balancer metadata, or any `Host` value a forward proxy may have rewritten in transit. **When both `:authority` and `Host` are present on the as-received request** (HTTP/2→HTTP/1.1 translating intermediaries are permitted to leave both by RFC 7540 §8.1.2.3, which requires equivalence but does not require stripping the source), verifiers MUST reject with `request_target_uri_malformed` if they are not byte-equal after canonicalization; pick-one behavior is a silent downgrade surface. Regardless of the source header, the canonicalized value MUST byte-for-byte match the authority component of the canonical `@target-uri` — the byte-match against the signed `@target-uri` is the load-bearing safety gate, because `Host` can itself be rewritten in transit. Mismatch rejects with `request_target_uri_malformed`. This closes a cross-vhost replay vector: an attacker who intercepts a TLS-terminated request and replays it to a second vhost on the same verifier pool (same cert SAN, different `Host`) will fail the authority-match check even though the signature covers `@authority`. + +Signers that canonicalize and verifiers that canonicalize MUST produce identical bytes for the same logical request. If your 9421 library applies different rules, either configure it to match this profile or normalize before handing the URL to the library. + +The [`canonicalization.json`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/canonicalization.json) conformance set exercises every rule from the algorithm with fixed inputs and expected outputs, plus malformed-authority rejection cases. SDKs SHOULD run this set on every commit — canonicalization divergence between signers is silent until it isn't, and then it's a production interop bug that's painful to diagnose. + +Verifiers MUST reject signatures whose covered-component list omits any required component for the request type. Signers MUST NOT cover additional headers without coordination — extra components silently invalidate signatures across implementations that don't include them. + +**Signature parameters (`Signature-Input` parameters, all REQUIRED):** + +| Parameter | Notes | +|---|---| +| `created` | Unix seconds. Reject if more than 60 s in the future. | +| `expires` | Unix seconds. MUST satisfy `expires > created` and `expires − created ≤ 300` (5-minute max validity). Reject if past, with ±60 s skew tolerance. | +| `nonce` | Base64url-encoded, unpadded (no trailing `=`). Verifiers MUST reject if the decoded byte length is less than 16 bytes, or if the value includes padding. This is how the "≥ 128 bits of entropy" requirement is enforced in practice. | +| `keyid` | Matches a `kid` in the signer's published JWKS. | +| `alg` | MUST be `ed25519` or `ecdsa-p256-sha256`. Verifiers MUST enforce the allowlist independently of library defaults. | +| `tag` | MUST be exactly `adcp/request-signing/v1` — byte-for-byte match, no prefix matching, no case-folding. The `tag` sig-param MUST appear exactly once in `Signature-Input`; verifiers MUST reject duplicates. The tag namespace is how the profile versions; future versions bump the tag rather than mutating parameter semantics, and `adcp/request-signing/v2` verifiers will reject `v1` signatures and vice versa. | + +All six parameters are REQUIRED. Verifiers MUST reject (`request_signature_params_incomplete`) if any is absent. + +**Algorithm naming — JWK vs RFC 9421.** The two names for each algorithm differ by source spec. Implementations mix these up often enough to warrant a table: + +| Algorithm | JWK `alg` (in JWKS) | RFC 9421 `alg` (in `Signature-Input`) | +|---|---|---| +| Ed25519 | `EdDSA` | `ed25519` | +| ECDSA P-256 with SHA-256 | `ES256` | `ecdsa-p256-sha256` | + +When the verifier resolves a `keyid` and finds `"alg": "EdDSA"` on the JWK, the matching sig-param value is `ed25519`. Implementations should validate that the two match (JWK alg matches the sig-param alg by mapping table) in addition to verifying the allowlist on each independently. Edge-runtime rationale from the governance profile applies — `ES256` is the edge-friendly alternative where `EdDSA` requires runtime configuration. + +**One signature per request.** Verifiers MUST process exactly one `Signature-Input` label (conventionally `sig1`) and MUST ignore any additional labels present in the request. Intermediaries that need to re-sign a relayed request MUST replace the upstream labels rather than append to them. Full relay-chaining semantics (when a relay wants to preserve the originator's signature) are tracked in [#2324](https://github.com/adcontextprotocol/adcp/issues/2324) and out of scope for 3.0. + +**Request-profile binary value encoding (`Signature`, `Content-Digest`).** RFC 9421 and RFC 9530 encode these values as RFC 8941 Structured Field `sf-binary` tokens (`::`). AdCP 3.2 request signing (`tag="adcp/request-signing/v1"`) aligns with those RFCs: signers MUST use the standard RFC 4648 §4 Base64 alphabet with `+` and `/` and the padding required by RFC 8941; request verifiers MUST parse the field as `sf-binary` before using its decoded bytes. Base64URL characters (`-` and `_`) are not valid inside 3.2 request `sf-binary` and MUST be rejected as `request_signature_header_malformed`. This differs intentionally from the `nonce` signature parameter, whose quoted string value uses unpadded Base64URL. + +AdCP 3.0/3.1 request signing used a legacy profile override that encoded these binary values as unpadded Base64URL. A request signer selects the wire encoding from the trusted negotiated signing profile: use legacy Base64URL only on an explicitly negotiated 3.0/3.1 request-signing endpoint, and use RFC 8941 Base64 for 3.2 and later. A 3.2 request verifier MUST NOT reinterpret a Base64URL token as `sf-binary` or retry it through a legacy decoder. The versioned conformance fixtures preserve both profiles so SDKs can test an intentional migration rather than accepting both alphabets ambiguously. The separately routed `adcp/webhook-signing/v1` profile retains its legacy Base64URL encoding throughout 3.x; webhook parser selection is endpoint/profile configuration and MUST NOT enable a fallback in the 3.2 request parser. + +The `expected_signature_base` field in the conformance vectors is independent of binary-value encoding: it contains the canonical signature-base bytes, while the emitted `Signature` token contains the resulting signature bytes encoded as `sf-binary`. + +**Operation names in `required_for` / `supported_for` are AdCP protocol operation names** (`create_media_buy`, `update_media_buy`, `acquire_rights`, etc.) — not MCP tool names, A2A skill names, or any transport-specific rename. Verifiers MUST NOT accept operation names that are not defined by the AdCP protocol spec. This is how cross-transport verifiers agree on what "signed for `create_media_buy`" means. + +**Protocol-method coverage (`protocol_methods_*`).** AdCP operations are not the only mutating surface a counterparty calls: A2A 0.3.0 §7.x defines task-lifecycle methods (`tasks/cancel`, `tasks/get`, `tasks/resubscribe`) that traverse the same authenticated channel, and the MCP transport auto-registers the same `tasks/*` JSON-RPC methods when an SDK task store is wired. Sellers declare verifier coverage of these methods in a separate namespace from the AdCP operation list: + +| Field | Contents | Match semantics | +|---|---|---| +| `request_signing.protocol_methods_supported_for` | JSON-RPC method strings (e.g., `"tasks/cancel"`) | Verifier accepts and validates a signature when the JSON-RPC `method` field of the inbound request matches. | +| `request_signing.protocol_methods_warn_for` | Same | Shadow-mode mirror of `warn_for`: record well-formed verification failures, establish no signer identity, and continue only under independent authentication. Malformed signature-header pairs still hard-reject. | +| `request_signing.protocol_methods_required_for` | Same | Reject unsigned matches with `request_signature_required`. | + +The matched value is the JSON-RPC envelope's `method` field (`tasks/cancel`, `tasks/get`, …), **not** the MCP `tools/call` `params.name`. AdCP tool names (no `/`) MUST NOT appear in any `protocol_methods_*` array, and JSON-RPC method names (containing `/`) MUST NOT appear in `supported_for` / `warn_for` / `required_for`. Verifiers MUST reject capability blocks that violate the namespace split with a configuration-time error rather than silently coercing strings between the two. **Verifiers MUST NOT cross-namespace match: a `protocol_methods_required_for` membership MUST NOT be satisfied by a body whose JSON-RPC `method` is `tools/call` (even if `params.name` happens to equal a listed method string), and a `required_for` membership MUST NOT be satisfied by a body whose JSON-RPC `method` is anything other than `tools/call`.** The two buckets are matched against disjoint envelope fields. + +The signature-base construction is identical for both namespaces: the same RFC 9421 covered components apply (`@target-uri`, `@method`, `content-digest` per the seller's `covers_content_digest` policy, `authorization` when present), with `@target-uri` and `@method` reflecting the actual HTTP request — not the JSON-RPC method string. Buyers signing a `tasks/cancel` POST sign exactly as they would for any other mutating call; the only thing the new fields change is the seller's declaration of which JSON-RPC methods are in scope for verification. + +**Body substitution on shared transport.** When a single `@target-uri` accepts `tools/call` envelopes and JSON-RPC protocol methods (the canonical MCP layout — both POST to `/mcp`), `@target-uri` and `@method` alone do not bind the body. Without `content-digest` coverage, an on-path attacker can substitute another tool, switch `tools/call` to `tasks/cancel`, or change parameters within the same method during the signature window. Distinct URIs do not solve same-method parameter substitution, so they are not an integrity alternative. In 3.2 every accepted signature on a request with a body MUST cover `content-digest`, regardless of which operation or protocol-method list caused the verifier to process it. + +Buyers reading capability blocks in 3.x MUST NOT assume protocol-method coverage from `supported_for` / `required_for`: a seller that lists `create_media_buy` in `required_for` and is silent on `protocol_methods_*` is not declaring `tasks/cancel` coverage. Buyer SDKs that sign `tasks/cancel` opportunistically (the only defensible default when the seller is silent) MAY do so without violating the spec, but interoperable enforcement only emerges once the seller populates `protocol_methods_supported_for` or `protocol_methods_required_for`. + +#### Agent key publication + +Request-signing keys live at the signing agent's own `jwks_uri` in its operator's brand.json `agents[]` entry, and outbound webhooks are signed with `"request-signing"` keys (optionally with distinct webhook-only key material under a separate `kid`). Every agent that signs — of any `type` — uses the same publication pattern. Publisher `adagents.json` may additionally pin allowed seller keys through `authorized_agents[].signing_keys[]`; when present, that pin is authoritative for the scoped sell-side authorization. + +**Publisher pin precedence.** When a publisher's `adagents.json` entry for an authorized agent carries a `signing_keys` pin (see [`adagents.json` §`signing_keys`](/dist/docs/3.2.0-beta.4/governance/property/adagents#signing_keys)), that pin is authoritative: verifiers MUST reject any signature whose `keyid` is not in the pinned set, regardless of `jwks_uri` contents. The agent-hosted JWKS is advisory whenever a publisher pin exists. This closes the agent-domain-compromise window — an attacker who takes over the agent's domain cannot silently swap both the endpoint and its advertised keys because the publisher's pin still governs acceptance. Publishers are required to pin for any agent whose delegated scopes include mutating operations; see the adagents.json rule for rotation and cache semantics. + +Each request-signing JWK entry MUST declare: + +| Member | Value | Notes | +|---|---|---| +| `use` | `"sig"` | Standard JWK signing use. | +| `key_ops` | `["verify"]` | Verifier-visible JWKS declares verify-only. The signing operator holds the corresponding private key locally with `["sign"]` per JWK spec. | +| `adcp_use` | `"request-signing"` | AdCP-specific purpose discriminator. Distinguishes from `"governance-signing"` (JWS profile) and any future AdCP signing purpose. Verifiers MUST reject any JWK with absent or different `adcp_use` when verifying a request signature. The same `"request-signing"` key (or a second one under a distinct `kid`) also signs outbound webhooks — see [Webhook callbacks](#webhook-callbacks). (`"webhook-signing"` is a deprecated purpose pending removal — see [#5555](https://github.com/adcontextprotocol/adcp/issues/5555); still accepted on the webhook path for backward compatibility.) | +| `kid` | distinct | Unique within the JWKS. MUST NOT collide with any other entry's `kid` regardless of `adcp_use`. | +| `alg` | `"EdDSA"` or `"ES256"` | Must match the signature's `alg` parameter (JWK `alg` uses JWS names; `alg` in `Signature-Input` uses RFC 9421 names). | + +Cross-purpose key reuse is forbidden and **locally enforceable** via `adcp_use`, except for the explicit webhook relaxation above: a `"request-signing"` key may sign either requests or webhooks because the RFC 9421 `tag` separates those profiles. A single JWK entry can only declare one `adcp_use` value, so a publisher cannot accidentally (or deliberately) present a governance-signing key as a valid request-signing key. Verifiers check `adcp_use` on the JWK they fetched, not across other JWKS endpoints — no cross-endpoint lookup is required or permitted. + +**Origin separation (MUST for governance, SHOULD for others).** `adcp_use` is an in-band discriminator — it prevents cross-purpose verification, but it does not defend the publishing origin. An origin compromise on a shared JWKS endpoint simultaneously compromises every signing purpose it publishes. Because a governance-signing key is the highest blast-radius key in the system (its compromise is a multi-tenant breach), governance signing keys MUST be served from a separate origin than transport/webhook RFC 9421 keys. The canonical pattern is: + +- `governance-keys.{org}.example/.well-known/jwks.json` — governance-signing JWKs only +- `keys.{org}.example/.well-known/jwks.json` — request-signing keys (including webhook-only `kid`s), deprecated webhook-signing keys during the backward-compatibility window, and TMP keys + +Operators SHOULD go further and serve each signing surface from a distinct subdomain. Defense-in-depth: governance keys SHOULD be on offline-rotation (HSM/KMS with manual rotation and human approval), while transport and webhook keys MAY use automated rotation. Operators advertise their separation scheme by publishing an `identity.key_origins` map in `get_adcp_capabilities`; the schema defines `governance_signing`, `request_signing`, `webhook_signing`, and `tmp_signing` origin URIs. `webhook_signing` names the webhook delivery surface, not a required live `adcp_use: "webhook-signing"` purpose; it may point at the same origin as `request_signing` when webhooks use request-signing keys. Implementers SHOULD populate the field so counterparties can verify origin separation at onboarding. **When the field is present, verifiers MUST check that the declared governance-signing origin differs from the declared request/webhook signing origins at onboarding and reject onboarding with a user-actionable error on co-tenancy.** The MUST on origin separation is otherwise unverifiable on the wire — the whole point of publishing the advertisement is to let counterparties enforce it programmatically; accepting a declaration that violates the normative rule would defeat the control. Verifiers MAY additionally fetch each declared JWKS and confirm its `jwks_uri` origin matches the advertised value. + +**Implementer note:** `adcp_use` is a custom JWK member. Major JOSE libraries (`jose`, `node-jose`, `python-jose`, `go-jose`) preserve unknown members on parse. Strict JWK validators (some modes of `PyJWT`, and Web Crypto API's `SubtleCrypto.importKey`) may reject unknown members. When handing a JWK to `SubtleCrypto.importKey` or equivalent strict consumers, strip `adcp_use` from the JWK object but retain it for the step-8 policy check. The field is for AdCP verifier policy, not for cryptographic libraries. + +**JWKS discovery for a signed request** — given a `keyid` on an incoming signature: + +1. The verifier resolves the signing agent's URL to its brand.json `agents[]` entry. Discovery MAY come from prior onboarding, MAY come from a registry cache, but the canonical on-wire bootstrap is the `identity.brand_json_url` field on the agent's `get_adcp_capabilities` response — see [Discovering an agent's signing keys via `brand_json_url`](#discovering-an-agents-signing-keys-via-brand_json_url). +2. Fetch the agent's `jwks_uri` (or default to `/.well-known/jwks.json` at the origin of the agent's `url`) with SSRF validation per [Webhook URL validation](#webhook-url-validation-ssrf). JWKS cache TTL bounded above by the revocation-list polling interval. +3. If the `kid` is absent from the cached JWKS, refetch the JWKS **immediately** (step 2's first fetch may have been cached). If a refetch was already performed in the last 30 seconds for the same `jwks_uri`, the cooldown applies: the verifier MUST NOT refetch again and MUST reject with `request_signature_key_unknown`. The cooldown is between refetches, not before the first. + +Verifiers MUST NOT accept signatures from a `keyid` they cannot resolve to a specific `agents[]` entry — anonymous signatures provide no accountability. + +#### Discovering an agent's signing keys via `brand_json_url` + +The `identity.brand_json_url` field on `get_adcp_capabilities` (added in 3.x, see schema `static/schemas/source/protocol/get-adcp-capabilities-response.json`) is the on-wire bootstrap for the agent → operator → keys chain. The field name reflects the artifact it points at (the operator's `brand.json` file), independent of whether the operator structure is a single brand, a house with sub-brands, an agency, or a pure operator record. Given only an agent URL `A`, a verifier resolves the agent's signing keys via: + +1. Fetch `A`'s `get_adcp_capabilities` response with SSRF validation per [Webhook URL validation](#webhook-url-validation-ssrf) (HTTPS only — the URL `A` is supplied by the caller and MUST go through the same address-family + private-IP filtering used for webhook callbacks). On unreachable/timeout, reject with `request_signature_capabilities_unreachable`. +2. Read `identity.brand_json_url`. If absent and the request is signed, reject with `request_signature_brand_json_url_missing`. Reject with the same code if the value is non-HTTPS (the schema enforces `^https://` but verifiers MUST restate the check; a 3.x parser tolerating a malformed value MUST NOT proceed). The required-when rule is: `identity.brand_json_url` MUST be present when the agent declares `request_signing.supported_for`/`required_for` non-empty, `webhook_signing.supported === true`, or any field under `identity.key_origins`. This is storyboard-enforced in 3.x. In 4.0 the rule becomes schema-required when the response declares `supported_versions` containing any 4.x release; cross-version verifiers (4.0 talking to a 3.x agent that does not advertise 4.x support) MUST continue to accept absent `identity.brand_json_url`. +3. **Origin binding.** The agent URL `A`'s host eTLD+1 MUST equal the `brand_json_url`'s host eTLD+1. eTLD+1 computation MUST use a pinned, dated [Public Suffix List](https://publicsuffix.org/list/public_suffix_list.dat) snapshot (ICANN+PRIVATE sections both in scope so platforms like `vercel.app`, `pages.dev`, `github.io` are treated as suffixes); two verifiers running different PSL versions are non-conformant against each other. If eTLD+1 mismatches, fetch brand.json and check that `authorized_operators[]` lists `A`'s eTLD+1. If neither holds, reject with `request_signature_brand_origin_mismatch`. This closes the shared-tenancy spoofing vector where an attacker stands up an agent on `attacker.example/mcp` and points its `brand_json_url` at an unrelated operator's brand.json that happens to legitimately list `attacker.example/mcp` (e.g., a SaaS multi-tenant deployment). +4. Fetch brand.json at `brand_json_url` with SSRF validation per [Webhook URL validation](#webhook-url-validation-ssrf). Verifiers MUST NOT follow redirects on this fetch (the single-redirect carve-out for `authoritative_location` documented elsewhere in this profile is scoped to that field and MUST NOT be inherited by the brand.json bootstrap). Recommended budgets: connect 5 s, total deadline 10 s, body cap 256 KiB. Cache TTL on a successful fetch MUST be bounded above by the JWKS revocation polling interval (so a key rotation cannot be masked by a stale brand.json). Negative responses (404, network failure) MUST NOT be cached for more than 60 s — operators fixing a misconfiguration must not be locked out for a full revocation cycle. +5. Find the entry in `agents[]` whose `url` **byte-equals** `A` (no canonicalization at this step — same rule as the `iss`-to-brand.json match for governance JWS, see [Buyer identity resolution](#buyer-identity-resolution); the most common failure mode is a trailing-slash or scheme mismatch, e.g. `https://x.com/mcp` ≠ `https://x.com/mcp/`). If none matches, reject with `request_signature_agent_not_in_brand_json`. If multiple match (operator misconfig — the brand.json schema does not currently constrain `agents[]` to be unique-by-URL), reject with `request_signature_brand_json_ambiguous`. +6. Resolve the JWKS source by **signing surface AND role** (sender-vs-receiver position, not just `adcp_use`): + - **Sell-side webhook delivery only** — i.e., the seller signing an outbound webhook to the buyer about media-buy delivery: the publisher's `adagents.json signing_keys` pin (when present) is authoritative per the publisher-pin precedence rule above and overrides everything below. The pin is scoped to (agent, webhook delivery surface, sell-side role) — it does NOT override operator-side webhook deliveries (e.g., a buyer-hosted webhook receiving operator status callbacks), and it does not imply a separate `adcp_use: "webhook-signing"` key purpose. + - **All other (surface, role) tuples** — request signing (any direction), operator-side webhook delivery, governance signing, TMP signing: use the matched `agents[]` entry's `jwks_uri`, defaulting to `/.well-known/jwks.json` at the origin of `A` when absent. +7. **`identity.key_origins` consistency check (mandatory when signing).** For every surface/purpose declared under `identity.key_origins` on the capabilities response **whose JWKS source in step 6 was the operator brand.json** (i.e., not a publisher `adagents.json signing_keys` pin), the host of the resolved `jwks_uri` MUST equal the declared origin for that surface/purpose. Mismatch on any surface/purpose → reject with `request_signature_key_origin_mismatch` carrying `{ purpose, expected_origin, actual_origin }`. Skip the check **only** for the specific (agent, surface/role) tuple whose source was a publisher pin — operator-side use of the same surface is still checked. If the agent declares signing without a corresponding `identity.key_origins.{purpose}` entry, reject with `request_signature_key_origin_missing` carrying `{ purpose, posture }`. +8. Fetch JWKS, find the `kid`, verify per the existing RFC 9421 profile (steps 7+ of the [verifier checklist](#verifier-checklist-requests)). + +**Trust roots.** brand.json is operator-attested ("this agent is mine, here are its keys"). `adagents.json` is publisher-attested ("this agent may sell my inventory; optionally, here is its pinned `signing_keys`"). For sell-side webhook signatures, the publisher pin is authoritative (publisher > operator). For request signatures and operator-side webhook signatures, the operator brand.json `jwks_uri` is authoritative. The agent never self-attests its own keys — a `jwks_uri` field is deliberately NOT carried on the capabilities response; the operator publishes the keys out-of-band via brand.json. + +**`sponsored_intelligence.brand_url` is distinct.** SI agents may carry a `brand_url` field under `sponsored_intelligence` for rendering purposes (colors, fonts, logos, tone) — the field is named `brand_url` because, in the SI context, it really is "the brand being advertised." That field is a rendering pointer, not a trust-root pointer; an SI agent MAY set its `sponsored_intelligence.brand_url` to a different URL than its `identity.brand_json_url` (e.g., a sub-brand brand.json for rendering while still trusting the operator's brand.json for keys). **Verifiers MUST use `identity.brand_json_url` for key discovery; `sponsored_intelligence.brand_url` MUST NOT be used as a trust-root pointer even when `identity.brand_json_url` is absent.** A verifier consuming SI rendering metadata MAY read `sponsored_intelligence.brand_url`; the same verifier MUST switch to `identity.brand_json_url` for any signature-verification flow. The naming distinction is deliberate: `brand_url` for "the brand being advertised" contexts; `brand_json_url` for "the operator master record" contexts. + +**Rejection codes for this discovery chain (3.x).** Detail fields sourced from a counterparty document (`brand_json_url`, `matched_entries[]`) MUST be HTML-escaped before rendering in admin UIs that display verifier errors — they are attacker-influenceable strings, even though the structured shape is verifier-controlled. + +| Code | When | Detail fields | Remediation | +|------|------|---------------|-------------| +| `request_signature_brand_json_url_missing` | Capabilities did not carry `identity.brand_json_url` and a signed request was received, or carried a non-HTTPS value | `agent_url` | Operator: set `identity.brand_json_url` to the HTTPS URL of your operator brand.json (typically `https://{your-domain}/.well-known/brand.json`). Verifier: surface to operations; do not retry. | +| `request_signature_capabilities_unreachable` | Capabilities fetch failed (DNS, TCP, TLS, timeout, non-2xx) | `agent_url`, `http_status`, `dns_error`, `last_attempt_at` | Verifier MAY retry once after a 1–5 s jittered backoff, then give up; do not negative-cache for more than 60 s. Surface as transient. | +| `request_signature_brand_json_unreachable` | brand.json fetch failed (same conditions) | `brand_json_url`, `http_status`, `dns_error`, `last_attempt_at` | Same retry/cache discipline as `_capabilities_unreachable`. | +| `request_signature_brand_json_malformed` | brand.json failed strict-parse (duplicate keys, body cap exceeded, or non-JSON content) | `brand_json_url`, `parse_error` | Operator: serve a strict-JSON brand.json with no duplicate object keys and within the 256 KiB body cap. Verifier: do not retry; surface to operations. | +| `request_signature_brand_origin_mismatch` | Agent eTLD+1 ≠ `brand_json_url` eTLD+1 and `authorized_operators[]` does not delegate | `agent_url`, `agent_etld1`, `brand_json_url_etld1` | Operator: either move agent to brand eTLD+1, or add agent eTLD+1 to brand.json `authorized_operators[]`. Not retryable. | +| `request_signature_agent_not_in_brand_json` | Agent URL not byte-equal to any `agents[].url` of resolved brand.json | `agent_url`, `brand_json_url` | Operator: add agent URL byte-equal to `agents[].url`. Common cause: trailing slash, scheme mismatch, IDN/punycode normalization. Not retryable. | +| `request_signature_brand_json_ambiguous` | Multiple `agents[]` entries match the agent URL | `agent_url`, `brand_json_url`, `matched_count`, `matched_entries[]` | Operator: dedupe `agents[]` entries by URL. Not retryable. | +| `request_signature_key_origin_mismatch` | Resolved `jwks_uri` host ≠ declared `identity.key_origins.{purpose}` | `purpose`, `expected_origin`, `actual_origin` | Operator: align `identity.key_origins.{purpose}` with the host of the resolved `jwks_uri`. Not retryable. | +| `request_signature_key_origin_missing` | Signing posture declared but `identity.key_origins.{purpose}` absent | `purpose`, `posture` | Operator: add `identity.key_origins.{purpose}` declaration to capabilities. Not retryable. | + + +**Adopting `brand_json_url` while pinned to AdCP 3.0.** The field lands in 3.x's next minor as a strictly-additive schema change; AdCP doesn't ship new fields in patch releases (3.0.x), so a formal backport isn't on the table. But you don't have to wait for the version bump to start using it. The wire shape is forward-compatible: + +- A 3.0-conformant **seller** MAY populate `identity.brand_json_url` on its `get_adcp_capabilities` response today. A 3.0 verifier ignoring the field continues to work; a 3.x verifier picks it up automatically. No coordination, no version bump. +- A 3.0-conformant **verifier** MAY read the field opportunistically (via `caps.identity?.brand_json_url`) and run the 8-step chain when present, falling back to your existing out-of-band agent → operator mapping when absent. The chain itself is just HTTPS fetches and JSON parsing — nothing in it requires a 3.x SDK. + +This is the recommended path for sellers like [Scope3](https://github.com/scope3) building signature verification today: ship the field on your capabilities response, document the chain for your counterparties, and let the 3.x rollout happen passively. + + +##### Quickstart: implement a `brand_json_url`-based verifier + +Mirrors the [request-signing quickstart](#quickstart-opt-into-request-signing-in-30) above. Run-once-per-agent — the resulting `agents[]` entry, `jwks_uri`, and JWKS are cached per the TTL rules in step 4. + +1. **Fetch capabilities** for the signing agent's URL `A`. This is a **protocol-level** call — invoke `get_adcp_capabilities` via the agent's declared transport (MCP `tools/call` or A2A skill invocation), not a raw HTTP `GET` against `A`. The agent URL is the protocol endpoint, not a JSON capabilities document. Use SSRF-safe transport per [Webhook URL validation](#webhook-url-validation-ssrf): HTTPS only, address-family + private-IP filtering, no redirects, with budgets `{ connect: 5000, total: 10000, body: MAX_CAPABILITIES_BYTES, maxRedirects: 0 }`. +2. **Read `identity.brand_json_url`.** Reject `request_signature_brand_json_url_missing` if absent (and the request is signed) or non-HTTPS. +3. **eTLD+1 origin binding.** Compute `eTLD+1(A)` and `eTLD+1(brand_json_url)` using a pinned PSL snapshot. Use [`tldts`](https://www.npmjs.com/package/tldts) (TS), [`publicsuffixlist`](https://pypi.org/project/publicsuffixlist/) (Python), or [`golang.org/x/net/publicsuffix`](https://pkg.go.dev/golang.org/x/net/publicsuffix) (Go) with a vendored, dated snapshot. Do NOT fetch the PSL at runtime — a runtime fetch creates a denial-of-service oracle and a non-deterministic eTLD+1 across deployments. If they match, proceed. Otherwise fetch `brand.json` and check `authorized_operators[]` — if `eTLD+1(A)` is delegated, proceed. Else reject `request_signature_brand_origin_mismatch`. Origin comparisons throughout this algorithm MUST canonicalize both sides: ASCII-lowercase the host, then convert to IDNA-2008 A-label form (Punycode) before byte-equality. A non-canonical comparison (e.g., raw `Example.COM` vs `example.com`, or U-label vs A-label) silently rejects legitimate traffic. +4. **Fetch `brand.json`** with the same SSRF rules + no redirects, body cap `MAX_BRAND_JSON_BYTES`, connect 5 s, total 10 s. Parse with a strict JSON parser that rejects duplicate keys (e.g., [`secure-json-parse`](https://www.npmjs.com/package/secure-json-parse) in TS, the stdlib `json.JSONDecoder` in Python with an `object_pairs_hook` that raises on duplicates, [`encoding/json`](https://pkg.go.dev/encoding/json) `Decoder.DisallowUnknownFields` paired with a duplicate-key check in Go) — duplicate keys are the parser-differential vector that step 14 closes on the request surface, and the same trust-root document MUST NOT parse to two different shapes across verifiers. On duplicate-key detection, reject `request_signature_brand_json_malformed`. Cache successful responses up to (but no longer than) the JWKS revocation polling interval; cache failures for at most 60 s. +5. **Find the `agents[]` entry** whose `url` byte-equals `A` (no canonicalization). Reject `request_signature_agent_not_in_brand_json` on miss; `request_signature_brand_json_ambiguous` on multiple matches. +6. **Resolve `jwks_uri`** from the matched entry — for sell-side webhook delivery only, prefer the publisher's `adagents.json signing_keys` pin (when present) over the operator's `jwks_uri`. For all other (surface, role) tuples, use the matched entry's `jwks_uri` (default: `/.well-known/jwks.json` at the origin of `A`). +7. **Consistency check.** For every surface/purpose declared under capabilities `identity.key_origins`, apply `canonicalizeOrigin()` (ASCII-lowercase + IDNA-2008 A-label) to both the resolved `jwks_uri` host and the declared origin, then byte-compare (skip only the specific (agent, surface/role) tuple sourced from a publisher pin). Reject `request_signature_key_origin_mismatch` / `_missing` as appropriate. +8. **Hand off to step 8+ of the [verifier checklist](#verifier-checklist-requests)** — fetch the JWKS (with the same byte budget `MAX_JWKS_BYTES` and 5/10 s connect/total deadlines), find the `kid` (already resolved here in step 7's preamble — the verifier checklist's step 7 is the discovery preamble itself), verify per RFC 9421. + +Pseudocode (TypeScript-flavored; SDK helpers below collapse this to a single call): + +```ts +const MAX_CAPABILITIES_BYTES = 65_536; +const MAX_BRAND_JSON_BYTES = 262_144; +const MAX_JWKS_BYTES = 65_536; +const FETCH_BUDGETS = { connect: 5_000, total: 10_000, maxRedirects: 0 }; + +function canonicalizeOrigin(hostOrUrl: string): string { + const host = hostOrUrl.includes('://') ? new URL(hostOrUrl).hostname : hostOrUrl; + return toAsciiIdna2008(host.toLowerCase()); // A-label form +} + +async function resolveAgent(agentUrl: string): Promise { + const caps = await getAdcpCapabilities(agentUrl, { // step 1: protocol-level call + ...FETCH_BUDGETS, body: MAX_CAPABILITIES_BYTES, ssrf: true, + }); + const brandJsonUrl = caps.identity?.brand_json_url; + if (!brandJsonUrl?.startsWith('https://')) throw new Err('brand_json_url_missing'); // step 2 + const agentEtld1 = etldPlusOne(new URL(agentUrl).hostname, PINNED_PSL_SNAPSHOT); // step 3 + const brandEtld1 = etldPlusOne(new URL(brandJsonUrl).hostname, PINNED_PSL_SNAPSHOT); + const brandJson = await safeFetch(brandJsonUrl, { // step 4 + ...FETCH_BUDGETS, body: MAX_BRAND_JSON_BYTES, ssrf: true, parse: 'strict-json', + }); + if (agentEtld1 !== brandEtld1 + && !brandJson.authorized_operators?.some(o => o.domain === agentEtld1)) { + throw new Err('brand_origin_mismatch'); + } + const entries = brandJson.agents.filter(e => e.url === agentUrl); // step 5 (byte-equal) + if (entries.length === 0) throw new Err('agent_not_in_brand_json'); + if (entries.length > 1) throw new Err('brand_json_ambiguous'); + const entry = entries[0]; + const jwksUri = entry.jwks_uri ?? `${origin(agentUrl)}/.well-known/jwks.json`; // step 6 + for (const [purpose, declared] of Object.entries(caps.identity?.key_origins ?? {})) { // step 7 + if (canonicalizeOrigin(jwksUri) !== canonicalizeOrigin(declared)) { + throw new Err('key_origin_mismatch', { purpose }); + } + } + const jwks = await safeFetch(jwksUri, { // step 8 setup + ...FETCH_BUDGETS, body: MAX_JWKS_BYTES, ssrf: true, parse: 'strict-json', + }); + return { agentUrl, brandJsonUrl, agentEntry: entry, jwksUri, jwks, /* trace, freshness */ }; +} +``` + +Validate end-to-end against the brand-discovery test vectors at [`/compliance/latest/test-vectors/brand-discovery/`](https://adcontextprotocol.org/compliance/latest/test-vectors/brand-discovery/) once published; until then, the storyboard at `/compliance/latest/universal/capabilities-brand-url-discovery/` exercises the verifier algorithm against fixture brand.json + JWKS and asserts the right `request_signature_*` codes for each error path. + +##### Reference implementations + +The 8-step algorithm ships in three SDKs — pick the one matching your runtime. All three return the same logical record: the agent URL, the resolved brand.json URL, the matched `agents[]` entry, the JWKS URI, the JWKS itself, the `identity_posture` block from the capabilities response, an `consistency` flag from the step-7 `key_origins` check, a `freshness` timestamp set, and a per-step `trace`. + +- **TypeScript** ([`@adcp/sdk`](https://github.com/adcontextprotocol/adcp-client)): `resolveAgent(url)` returns `{ agentUrl, brandJsonUrl, agentEntry, jwksUri, jwks, identityPosture, consistency, freshness, trace }`. `getAgentJwks(url)` is the JWKS-only fast path. `createAgentJwksSet(url, opts)` returns a `JWTVerifyGetKey` for handing to `jose`'s `jwtVerify`. +- **Python** ([`adcp`](https://github.com/adcontextprotocol/adcp-client-python)): `resolve_agent(url)` returns an `AgentResolution` dataclass with fields `agent_url`, `brand_json_url`, `agent_entry`, `jwks_uri`, `jwks`, `identity_posture`, `consistency`, `freshness`, `trace`. `verify_request_signature(request, *, agent_url, allowed_algs)` is the one-shot helper that runs the discovery chain and the [verifier checklist](#verifier-checklist-requests) in one call. +- **Go** ([`adcp-go`](https://github.com/adcontextprotocol/adcp-go)): `ResolveAgent(ctx, agentURL) (*AgentResolution, error)` returns a struct with fields `AgentURL`, `BrandJSONURL`, `AgentEntry`, `JWKSUri`, `JWKS`, `IdentityPosture`, `Consistency`, `Freshness`, `Trace`. `VerifyRequestSignature(ctx, req, opts) (*VerifiedIdentity, error)` mirrors the TS/Python one-shot. + +Each SDK ships a CLI for dev-loop debugging — `npx @adcp/sdk@latest resolve `, `adcp resolve ` (also `python -m adcp resolve `), `adcp resolve ` (Go binary, same name as the Python one — disambiguate by `$PATH` or vendor) — printing the trace with per-step `fetched_at`/`age_seconds`/`ok` so an operator triaging a `request_signature_brand_*` failure can see exactly which step rejected and why. Both the Python (`[project.scripts]` console_scripts entry) and Go (binary `adcp`, distinct from the Go module path `github.com/adcontextprotocol/adcp-go`) toolchains install a top-level `adcp` command so a single muscle-memory invocation works across runtimes. + +#### Agent identity + +A valid signature establishes exactly one fact: **the request was issued by the agent whose `jwks_uri` contains the `keyid`.** The verifier learns which specific agent signed, not just which operator. The agent's containing brand.json (discovered via the verifier's existing agent mapping) tells the verifier which operator runs that agent. + +**`agent_url` derivation.** The canonical buyer-agent identifier on the verifier's request context is the `url` field of the `agents[]` entry whose `jwks_uri` resolved the `keyid` at step 7 of the [verifier checklist](#verifier-checklist-requests). `agent_url` is **not** a JWK claim, JWS claim, or signed envelope field — it is the publication coordinate the verifier already used to fetch the JWKS. This makes derivation deterministic from inputs the verifier has fully controlled (the agent mapping established at onboarding, plus the JWKS it just fetched) and removes any wire affordance for the signer to assert a different `agent_url` than the one whose key signed the request. SDKs that surface a resolved-signer object to adopters MUST source `agent_url` from this derivation; they MUST NOT accept a buyer-asserted `agent_url` field on the envelope and treat it as cryptographically established. (Buyer-asserted *verifier* references like `creative.verify_agent.agent_url` and `governance.accepted_verifiers[].agent_url` are a separate construct — they name agents the seller will invoke under a published allowlist, not the signer of the inbound request, and remain permitted.) + +Authorization — whether this operator is permitted to act for the brand named in the request body — is a separate protocol-level check governed by the target house's brand.json `authorized_operator[]` entries. It happens whether the request is signed or not, and is outside the scope of this profile. Verifiers MUST perform both checks; this section specifies only the first. + +Verifiers MUST NOT derive signer identity from request body fields. The signature → JWKS → agent entry chain is the only authoritative identity path on the signed transport. On the bearer / API-key / OAuth transport, agent identity comes from the seller's credential-to-agent mapping in its onboarding record — that mapping is the only legitimate identity source. Sellers MUST NOT introduce an envelope-side `buyer_agent_url` (or equivalent self-asserted caller-identity field) as an alternate input to identity resolution: the wire affordance lets a caller assert an identity the credential map would not, with no offsetting check. + +brand.json discovery follows one redirect (`authoritative_location`) and stops. + +#### Verifier checklist (requests) + +**Before applying the checklist, verifiers MUST determine whether the operation requires a signature:** + +- If the operation is in the verifier's `required_for` capability, AND no `Signature-Input` header is present, AND the caller presents no other credential the verifier accepts for this operation (bearer, API key, or mTLS), THEN reject with `request_signature_required`. Unsigned requests that fall into this branch never enter the checklist. See [Composition with fallback authenticators](#composition-with-fallback-authenticators) for the rule governing unsigned-but-otherwise-authenticated callers. +- If either `Signature` or `Signature-Input` is present without the other, reject with `request_signature_header_malformed`. The two headers are a bound pair; one without the other is malformed, not "signed with a missing piece we can guess at." This rule closes a downgrade vector where a proxy strips `Signature-Input` but leaves `Signature`. +- If a `Signature-Input` header is present but malformed, reject with `request_signature_header_malformed`. Verifiers MUST NOT fall back to bearer-only authentication when a malformed signature is present, **even for operations not in `required_for`** — a present-but-broken signature signals signer intent; silent fallback enables downgrade attacks. + +Otherwise, verifiers MUST apply these 15 checks (14 numbered steps plus sub-step 9a) in order, short-circuiting on the first failure. Step 14 decomposes into 14a (strict-parse requirement) and 14b (logging discipline) — both apply whenever step 14 runs; they are elaborations of one check, not separate checks in the count. This checklist establishes agent identity only — brand-operator authorization is a separate, subsequent check governed by the target house's brand.json. + +1. Parse `Signature-Input` and `Signature` headers per RFC 9421 §4. Reject if malformed. +2. Reject if any of `created`, `expires`, `nonce`, `keyid`, `alg`, or `tag` is absent from the `Signature-Input` parameters (`request_signature_params_incomplete`). +3. Reject if `tag` is not exactly `adcp/request-signing/v1` (`request_signature_tag_invalid`). +4. Reject if `alg` is not in the allowlist (`ed25519`, `ecdsa-p256-sha256`). Library defaults MUST NOT be relied upon (`request_signature_alg_not_allowed`). +5. Reject if `expires ≤ created`, `created > now + 60 s`, `expires < now − 60 s`, or `expires − created > 300 s` (`request_signature_window_invalid`). +6. Reject (`request_signature_components_incomplete`) if covered components do not include all of: `@method`, `@target-uri`, `@authority`. If a body is present, reject if `content-type` is not covered. Under the 3.2 profile, also reject if `content-digest` is not covered. A verifier operating an explicitly configured 3.0/3.1 compatibility endpoint applies its advertised legacy mode instead: `"required"` rejects missing coverage, while `"forbidden"` rejects present coverage with `request_signature_components_unexpected`. +7. Resolve `keyid` to a JWK via [Agent key publication](#agent-key-publication). If the verifier has no cached agent → JWKS mapping for the signing agent, run [Discovering an agent's signing keys via `brand_json_url`](#discovering-an-agents-signing-keys-via-brand_json_url) before this step — its 8-step preamble (capabilities → `identity.brand_json_url` → brand.json → agents[] → jwks_uri) is a precondition for `keyid` resolution and short-circuits with the `request_signature_brand_*` and `request_signature_key_origin_*` codes from that section. On `kid` miss within an established mapping, refetch once (subject to the 30-second cooldown between refetches) before rejecting with `request_signature_key_unknown`. Reject if `keyid` cannot be resolved to a specific `agents[]` entry. +8. Verify the JWK's `use` is `"sig"`, `key_ops` includes `"verify"`, and `adcp_use` equals `"request-signing"`. Reject (`request_signature_key_purpose_invalid`) on any mismatch — including absent `adcp_use`, which MUST be treated as non-conforming. +9. Check the [Transport revocation](#transport-revocation) list. Reject if `keyid` ∈ `revoked_kids` (`request_signature_key_revoked`). Reject with `request_signature_revocation_stale` if the verifier has not refreshed the revocation list within grace. + + **9a. Per-keyid cap check.** Check the [per-keyid replay-cache cap](#transport-replay-dedup). Reject with `request_signature_rate_abuse` if the cap has been reached for this `keyid`. Runs before cryptographic verify (step 10) — same rationale as step 9: a compromised or misconfigured signer exhausting its cap MUST NOT force amplified Ed25519/ECDSA work on the verifier. Runs *after* `keyid` resolution (step 7) so the cap-state oracle only responds for keys the verifier has already committed to recognizing — running 9a earlier would let an attacker probe verifier-internal rate-limit state across the full keyid space, including keyids not published in JWKS. + +10. Compute the canonical signature base per RFC 9421 §2.5 using the covered components, after applying `@target-uri` canonicalization AND `@authority` derivation per [the profile above](#adcp-rfc-9421-profile). **The `@authority` rule is load-bearing:** verifiers MUST derive `@authority` from the HTTP/2+ `:authority` pseudo-header when present, otherwise from the as-received HTTP/1.1 `Host` header — NOT from reverse-proxy routing state, load-balancer metadata, or any `Host` value a forward proxy may have rewritten in transit. If both `:authority` and `Host` are present on the as-received request, they MUST be byte-equal after canonicalization (RFC 7540 §8.1.2.3 equivalence); divergence rejects with `request_target_uri_malformed`. The canonicalized `@authority` MUST byte-for-byte match the authority component of the canonical `@target-uri`; mismatch rejects with `request_target_uri_malformed`. That byte-match against the signed `@target-uri` — not the choice of source header — is the only safe gate, because `Host` itself can be rewritten in transit. Implementers building from this checklist alone — without cross-referencing the profile's canonicalization section — MUST apply this rule; skipping it silently accepts a cross-vhost replay vector (an attacker intercepts a TLS-terminated request and replays it to a second vhost on the same verifier pool: same cert SAN, different `Host`). After canonicalization completes, verify the signature against the JWK (`request_signature_invalid` on failure). +11. If `content-digest` is covered, recompute the digest from the received body bytes and compare (`request_signature_digest_mismatch` on mismatch). +12. Check the nonce against the replay cache (see [Transport replay dedup](#transport-replay-dedup)). Reject if `(keyid, nonce)` has been seen within the replay-cache TTL (`request_signature_replayed`). +13. **Only after steps 1–9, 9a, and 10–12 have all passed**, insert `(keyid, nonce)` into the replay cache with TTL = `(expires − now) + 60 s` (the +60 s matches the skew tolerance applied at step 5). This insert MUST happen before the body-well-formedness check at step 14 so that a captured frame carrying a valid signature over a malformed body cannot be replayed to burn crypto-verify CPU on each retry — the nonce is burned on first sighting of a cryptographically-valid frame, regardless of body shape. +14. **Body well-formedness.** Verifiers MUST reject bodies containing duplicate object keys (`request_body_malformed`). Per RFC 8259 §4, duplicate-key parse behavior is unpredictable — the signature is valid over the bytes on the wire, but two parsers can disagree on the parsed value, which is a parser-differential attack class (cf. CVE-2017-12635). This check closes the gap between the signature verifier's view of the payload and the downstream consumer's view. Request bodies carry state-change and spend-committing payloads (`create_media_buy`, `update_media_buy_delivery`, etc.) whose parser-differential blast radius is larger than webhooks' status-flip blast radius, making this check at least as load-bearing here as on the webhook surface. `request_body_malformed` is distinct from `request_signature_digest_mismatch`: the signature IS valid; the body parses to ambiguous state. A verifier that crashes rather than returning a structured `request_body_malformed` error is conformant-but-suboptimal — senders receive no actionable error code. **Idempotency_key coverage follows from this check**: step 14 runs before schema validation and idempotency-cache lookup (see [idempotency](#idempotency)), so a request body whose `idempotency_key` is itself duplicated (different parsers seeing different keys) is rejected here and never reaches the cache. No separate idempotency-layer audit is required. + + **14a. Strict-parse requirement.** The check MUST use a parser that exposes duplicate keys — a last-wins/first-wins default that silently discards them does not satisfy this requirement. The per-language strict-parse escape-hatch enumeration in [step 14a of the webhook verifier checklist](#webhook-callbacks) applies identically here. + + **14b. Logging discipline.** Verifiers SHOULD NOT log full request body bytes on a `request_body_malformed` rejection; log `keyid`, nonce, byte length, and the specific duplicate key names only. The key-name sanitization rules (truncate at first non-printable to ``, truncate to last UTF-8 codepoint at or below 32 bytes, cap count at 4) from [step 14b of the webhook verifier checklist](#webhook-callbacks) apply identically here — the attacker-controlled-byte channel has the same shape on the request surface. + +Only after all 14 checks pass does the verifier treat the request as cryptographically authenticated. Verifiers SHOULD record `verified_signer: { keyid, agent_url, verified_at }` on the request context so downstream code — including the subsequent brand-operator authorization check — can log and audit by signed agent identity. + +**Cheap rejections before crypto verify (steps 9 and 9a before step 10) are deliberate.** If a verifier checks crypto first, an attacker replaying a revoked-key signature — or a signer hammering a verifier whose per-keyid cap is full — forces an Ed25519 or ECDSA verification on every rejection, cheap amplification. Moving revocation and the per-keyid cap ahead closes that O(verify) → O(1) gap. Step 9's revocation state is already published externally on the signer's origin; step 9a's cap state is verifier-internal but is observable via traffic-pattern analysis by any sustained attacker. The spec intentionally pairs the distinct `request_signature_rate_abuse` error code with the `SHOULD alert operators` requirement (see [Transport replay dedup](#transport-replay-dedup)) so cap observations surface as incident signal rather than silent oracles — a compromised-key event should be loud for the operator even if it is also legible to the attacker who caused it. + +**A load-bearing invariant for the cap.** External traffic without the private key cannot grow the cap: the replay-cache insert happens at step 13, *after* crypto verify (step 10) and *before* body well-formedness (step 14), so any request that fails at step 10 never consumes a cap entry, and any request that fails at step 14 has already burned its nonce — a captured frame carrying a valid signature over a malformed body cannot be replayed to force amplified crypto-verify work. This is why 9a is a *reader* of cap state, not a writer — only the legitimate key holder (or anyone who has compromised the key, the case the cap exists to detect) can grow the set. Future edits to the checklist MUST preserve both orderings: moving the insert earlier (before step 10) would let any external party flood the cap using forged structurally-valid signatures; moving the insert later (after step 14) would reopen the malformed-body replay vector. + +Step 12's `(keyid, nonce)` dedup, by contrast, runs *after* crypto verify so the replay cache is not consumed by invalid signatures. + +#### Composition with fallback authenticators + +`required_for` governs the signature requirement **relative to a caller's credential path**, not absolutely. A verifier typically accepts more than one authenticator (bearer, API key, mTLS, 9421) and `required_for` is one lever within that auth chain, not an override that trumps the others. + +**Terminology for the rule below:** *unauthenticated* means the caller presents neither a valid signature nor any other credential the verifier accepts for this operation. An unrecognized bearer token or API key (one the verifier does not accept) is *not* a valid credential — the caller is unauthenticated and falls into the first rule. + +The normative rule is: + +- An **unauthenticated** request to a `required_for` operation MUST be rejected with `request_signature_required`. +- An **unsigned but otherwise authenticated** request (valid bearer, API key, or mTLS identity; no `Signature-Input`) to a `required_for` operation MUST NOT be rejected for missing signature. The fallback credential is what the verifier advertised as sufficient for that caller, and `required_for` does not retroactively invalidate the verifier's own authenticator configuration. +- A **signed** request enters the [verifier checklist](#verifier-checklist-requests) and is evaluated on its cryptographic merits, whether or not the operation is in `required_for`. +- A **malformed signature** blocks fallback regardless, per the malformed-signature rule in the checklist preamble. Broken signatures signal signer intent and MUST NOT downgrade silently to bearer. + +`warn_for` remains non-rejecting only for unsigned requests and well-formed signatures that fail verification or body binding when an independent authenticator succeeds. Those failures establish no signer identity. A partial or malformed `Signature` / `Signature-Input` pair still hard-rejects regardless of `warn_for` or fallback credentials, because it cannot be safely interpreted as either signed or unsigned traffic. + + +**Seller enforcement — pick the posture that matches your capability declaration.** + +Three enforcement postures are valid; sellers MUST pick one and configure their fallback authenticators accordingly. Advertising `required_for` while letting bearer authentication remain open for the listed operation is security theater — the verifier advertised bearer as valid, and callers are entitled to use it. + +- **Strict (signing is unconditional for this operation).** Sellers MUST either stop accepting bearer/API-key/mTLS for the operation entirely, *or* gate the fallback authenticator on a per-caller flag that rejects non-signed requests from counterparties who have completed 9421 onboarding. This is the posture where `required_for` rejects everything unsigned. +- **Prefer signing, accept fallback (recommended during rollout).** Advertise `required_for` for the operation but leave bearer open. The composition rule applies: unsigned-unauthenticated callers are rejected, unsigned-bearer-authed callers pass. Good for quarters-long migrations where buyers onboard to 9421 at their own pace. +- **Advisory only.** Move the operation to `warn_for` rather than `required_for`. The verifier records missing signatures and well-formed verification or body-binding failures, establishes no signer identity from them, and continues only under independent authentication. Partial or malformed signature-header pairs still hard-reject. + +*Example of the per-caller flag (strict posture):* a seller whose `agents[]` entries carry a `signing_onboarded: true` flag on 9421-ready counterparties configures its bearer authenticator to reject bearer credentials whose resolved agent has `signing_onboarded: true` for operations in `required_for`. Other agents continue to authenticate via bearer until their flag flips. Promotion to `required_for` stays operationally safe — existing bearer traffic continues while onboarded counterparties are held to the stricter bar. + + +Buyers reading `required_for` on a counterparty's capability surface learn **"callers presenting no credential at all will be rejected on this operation; callers presenting a bearer, API key, or mTLS credential the verifier accepts will not be rejected for missing signature."** That is not "all unsigned callers will be rejected." A buyer that wants its own unsigned bearer calls to fail closed on a `required_for` operation MUST negotiate with the seller to revoke bearer credentials for that operation rather than infer the behavior from the capability block. + +**Why this composition and not the strict reading.** The strict reading ("`required_for` rejects all unsigned requests regardless of fallback credentials") has two practical problems. First, it collides with the 3.0 rollout pattern: sellers promote operations `supported_for → warn_for → required_for` over quarters, and most have live bearer traffic on the same operations during the transition. A strict reading would force every counterparty to migrate to signing in lockstep with the seller's `required_for` flip, or break. Second, it creates an action-at-a-distance bug: a seller enabling `required_for` for operational monitoring purposes would inadvertently 401 every bearer-authed buyer on that operation with no warning and no remediation path short of removing the capability. The composition rule makes `required_for` safe to enable incrementally — its effect is scoped to the unauthenticated branch the verifier actually owns. + +#### Content-digest and proxy compatibility + +Covering `content-digest` binds the request body bytes to the signature. For spend-committing operations, this is the whole point: the body specifies the money, and a signature that doesn't commit to the body is not protecting the attack surface that matters. In server-to-server AdCP deployments — which is most of them — body-modifying intermediaries are rare and usually the result of a specific deliberate configuration. Default position: **cover `content-digest` for spend-committing operations; treat transports that prevent body preservation as bugs to fix rather than constraints to accommodate.** + + +**Known body-modifying transport patterns.** These configurations break body-binding signatures and are the single biggest source of 9421 interop bugs in production: + +- CDN configurations that recompress or buffer-modify POST bodies (uncommon, but specific Cloudflare Workers, Fastly VCL, and CloudFront Lambda@Edge setups can introduce byte changes). +- WAFs that "sanitize" JSON request bodies (whitespace normalization, key reordering, unknown field stripping). Most WAFs inspect without modifying; some do modify. +- Reverse proxies or API gateways that re-serialize JSON between client and origin for logging, validation, or transformation. +- HTTP/2 → HTTP/1.1 bridges where chunked-encoding framing assumptions differ. +- **Signer-side serialization mismatch.** A signer that computes `content-digest` over one JSON serialization (e.g., `json.dumps(payload)` with default spaced separators) while its HTTP client writes a different serialization on the wire (e.g., compact separators) produces a digest over bytes the receiver never sees. Every verifier then rejects with `webhook_signature_digest_mismatch` or `request_signature_digest_mismatch`. **Serialize the body once, then use those exact bytes for both the digest input and the HTTP body** — do not compute the digest from the pre-serialized object and trust the client to reproduce the same bytes. This is the same trap the [legacy HMAC scheme pins via compact separators](#legacy-hmac-sha256-fallback-deprecated-removed-in-40); 9421 fails loud rather than silent (digest mismatch is a hard reject) but the signer-side fix is identical. + +**If you control the transport**, preserve bodies byte-for-byte end-to-end and cover `content-digest`. **If you don't control the transport**, fix it rather than degrade the security guarantee. Validate end-to-end with a `POST` echo test against a test endpoint before sending real traffic. + + +AdCP 3.2 verifiers that advertise request-signing support MUST advertise `covers_content_digest: "required"`. Every accepted signature on a request with a body MUST include and cover `content-digest`; this applies uniformly before the verifier trusts the body enough to classify an operation. The `"either"` and `"forbidden"` values are deprecated compatibility postures for 3.0/3.1 endpoints only and are removed in 4.0. Infrastructure that rewrites bodies MUST use a separately configured legacy endpoint/origin or disable request signing under 3.2. + +The endpoint's trusted configuration and negotiated capability select this policy before body parsing or dispatch. An `adcp_version`, operation name, or JSON-RPC method inside an unbound body MUST NOT downgrade a 3.2 verifier to a legacy mode. A shared endpoint that advertises 3.2 applies the 3.2 rule to signed body-bearing traffic; operators needing a legacy posture use a separately configured endpoint or origin. A 3.2 signer SHOULD cover `content-digest` even when a legacy peer advertises `"either"`; an explicit legacy `"forbidden"` posture is incompatible with 3.2 capability negotiation rather than a reason to retry without binding. + +**`"required"` is strict.** A signed request with a body that does not cover `content-digest` is rejected with `request_signature_components_incomplete`. A digest mismatch uses `request_signature_digest_mismatch`; changing both the body and digest invalidates the signature. A client MUST NOT automatically retry unsigned or without digest coverage after either failure. Requests with no body do not require `content-digest`. + +#### Transport replay dedup + +Step 12 of the [verifier checklist](#verifier-checklist-requests) requires per-`(keyid, nonce)` deduplication. Unbounded sets are a memory and DoS risk. + +- TTL on each entry = `(expires − now) + 60 s` to match the symmetric clock-skew tolerance applied at window validation. Typical TTL ≤ 360 s (5 min + 60 s skew). +- In-memory LRU keyed on `(keyid, nonce)` with TTL eviction, sized to expected request rate × max signature validity. +- Above ~10K req/s per signer: Redis `SETNX` with `EX = remaining_validity_seconds + 60`. +- Distributed verifiers (multi-region): per-region replay cache is acceptable. The only attack this enables is a single replay within (expires − now + 60 s) across regions, bounded by ~6 min and only effective if the attacker controls intermediate routing. + +Verifiers MUST NOT use the request bearer token, IP, or any non-`(keyid, nonce)` value as the replay key — those produce false positives that reject legitimate agent traffic. + +**Per-keyid cap.** To prevent an abusive or compromised signer from exhausting verifier memory with unique nonces, verifiers MUST enforce a per-keyid entry cap on the replay cache. Recommended ceiling: 1,000,000 entries per `keyid`. On cap exceeded, verifiers MUST reject new signatures from that `keyid` with `request_signature_rate_abuse` — NOT silently evict — and SHOULD alert operators, because hitting the cap indicates either a compromised key or a grossly misconfigured signer. Silent eviction is the dangerous mode: it creates replay windows exactly when the verifier is under attack. The per-keyid cap is distinct from the total cache ceiling; a verifier may legitimately hit its total ceiling via many well-behaved signers, but per-keyid exhaustion is unambiguously an attack signal. The cap check is step 9a of the [verifier checklist](#verifier-checklist-requests) — evaluated **before** crypto verify so an abusive signer cannot force amplified Ed25519/ECDSA work on the verifier. + +**Single-process vs. distributed enforcement.** In a single-process verifier, step 9a (read) and step 13 (insert) are sequential in one execution and the cap is exact. In a distributed verifier sharing a Redis-backed replay cache, step 9a is a cheap fast-path amplification guard but is not authoritative: two verifiers can both observe `size == cap − 1`, both pass 9a, both pass steps 10–12, and both insert at step 13. To avoid cap drift, the step 13 insert SHOULD be atomic with a cap check (e.g., a Lua script or `SETNX` pattern that returns an over-cap sentinel) — step 9a remains the cheap amplification guard, step 13 is the authoritative enforcement point. A verifier whose atomic insert returns over-cap MUST reject the request with `request_signature_rate_abuse` rather than let it succeed; a cap that is advisory at step 13 is not a cap. + +#### Transport revocation + +Operators SHOULD serve a single combined revocation list at the brand.json origin covering governance, request-signing, and any other agent signing keys published under their `agents[]` entries. Format and signing semantics match the governance revocation list (see [Revocation](#revocation) above). For request-signing keys: + +- `revoked_kids` invalidates every request ever signed under that `kid` (before or after the revocation timestamp). +- `revoked_jtis` is not used (request signatures don't have a `jti`; nonce uniqueness is per-key). + +Verifiers accepting request-signed mutations MUST poll the revocation list on the cadence declared in `next_update` (floor 1 min, ceiling 30 min). The fetch-failure safe-default applies with grace = 4× the previous polling interval: verifiers that have not refreshed within `next_update + grace` MUST reject new request-signed mutations with `request_signature_revocation_stale` until the list is refreshed. + +#### Transport capability advertisement + +Verifiers advertise signing support and per-call requirements via the `request_signing` block on `get_adcp_capabilities`: + +```json +{ + "request_signing": { + "supported": true, + "covers_content_digest": "required", + "required_for": [], + "warn_for": ["create_media_buy"], + "supported_for": [ + "create_media_buy", + "update_media_buy", + "sync_creatives", + "activate_signal" + ] + } +} +``` + +- `supported`: when true, the verifier validates signatures when present. When false or absent, signatures are ignored. +- `covers_content_digest`: `"required"` for every 3.2 signing profile. `"either"` and `"forbidden"` remain decodable only for explicit 3.0/3.1 compatibility and MUST NOT be negotiated as a 3.2 signing posture. +- `required_for`: AdCP protocol operation names (not transport-specific) for which **unsigned requests that present no other valid credential** are rejected with `request_signature_required`. Empty in 3.0 by default. Signers MUST sign any listed operation. Composition with bearer, API key, or mTLS fallbacks is governed by [Composition with fallback authenticators](#composition-with-fallback-authenticators) — in particular, unsigned requests that present a valid fallback credential are accepted, and sellers that intend signing to be unconditional MUST configure their fallback authenticators to reject other credential types for the operation. +- `warn_for`: operations for which the verifier verifies signatures when present and records failures in monitoring. Used as a shadow-mode bridge from `supported_for` to `required_for`. Precedence: `required_for > warn_for > supported_for`. A missing signature or a well-formed signature that fails verification or body binding MUST NOT establish verified-signer identity; processing may continue only when an independent bearer, API-key, or mTLS authenticator succeeds. A partial or malformed `Signature` / `Signature-Input` pair always hard-rejects. Verifiers MUST NOT convert a failed signature into an authenticated signer merely because the operation is in shadow mode. +- `supported_for`: operations for which signatures are verified when present but not required. Signers SHOULD sign these. Typically a superset of `required_for` and `warn_for`. + +**Rollout pattern:** +1. Announce signing readiness: add the operation to `supported_for`. Counterparties can begin signing but nothing changes if they don't. +2. Promote to shadow mode: move the operation to `warn_for`. The verifier logs verification failures and relies on independent authentication for that traffic. Operators monitor the failure rate and debug. +3. Enforce: when the failure rate drops below the operator's threshold, move to `required_for`. Unsigned or invalid-signature requests to that operation are now rejected. + +In 3.0/3.1, verifiers ship with `required_for: []` and populate it selectively. In 3.2, signing remains optional and the operation/protocol-method lists still decide whether signing is supported, shadowed, or required; they no longer alter the cryptographic component set. For `warn_for`, missing or invalid body binding is recorded but MUST NOT establish verified-signer identity, and processing may continue only under independently valid authentication. For `supported_for` and `required_for`, a presented body-bearing signature without digest coverage rejects. In 4.0, `required_for` additionally includes every supported spend-committing operation. + +#### Transport error taxonomy + +Stable codes returned in `WWW-Authenticate: Signature error=""` on 401, and surfaced by SDK verifiers as typed errors. Naming pattern matches the [governance taxonomy](#verification-error-taxonomy) so SDK error handling is symmetric. + +| Failure | Retry? | Code | +|---|---|---| +| Unsigned request where signing is required — either (a) operation is in `required_for`, or (b) request payload carries a field that triggers signing regardless of `required_for` membership (e.g., `push_notification_config.authentication` or `accounts[].notification_configs[].authentication` on a signing-capable seller — see [Webhook callbacks](#webhook-callbacks)) | No | `request_signature_required` | +| Request `@target-uri` is syntactically malformed (e.g., empty authority, bare IPv6, IPv6 zone identifier, raw non-ASCII host), OR canonicalized `@authority` does not byte-match the authority component of the canonical `@target-uri` (cross-vhost replay) | No | `request_target_uri_malformed` | +| `Signature` or `Signature-Input` header present but malformed | No | `request_signature_header_malformed` | +| Required sig-param absent (`created`, `expires`, `nonce`, `keyid`, `alg`, or `tag`) | No | `request_signature_params_incomplete` | +| `tag` not `adcp/request-signing/v1` | No | `request_signature_tag_invalid` | +| `alg` not in allowlist | No | `request_signature_alg_not_allowed` | +| Signature window invalid (`expires ≤ created`, skew, expired, > 5 min validity) | No | `request_signature_window_invalid` | +| Required covered components missing | No | `request_signature_components_incomplete` | +| Covered components include `content-digest` when capability is `"forbidden"` | No | `request_signature_components_unexpected` | +| `keyid` not in signer JWKS after one refetch | No | `request_signature_key_unknown` | +| JWK `key_ops` lacks `verify`, `use` ≠ `sig`, or `adcp_use` ≠ `request-signing` | No | `request_signature_key_purpose_invalid` | +| `keyid` ∈ `revoked_kids` | No | `request_signature_key_revoked` | +| Revocation list not refreshed within grace | No (block new) | `request_signature_revocation_stale` | +| Cryptographic verification failed | No | `request_signature_invalid` | +| `content-digest` mismatch with recomputed digest | No | `request_signature_digest_mismatch` | +| Body contains duplicate object keys (parser-differential vector) | No | `request_body_malformed` | +| Nonce already seen within window | No | `request_signature_replayed` | +| Per-keyid replay cache exceeded its entry cap | No (block new) | `request_signature_rate_abuse` | +| JWKS fetch transient failure | Yes (with backoff) | `request_signature_jwks_unavailable` | +| JWKS fetch fails SSRF validation | No | `request_signature_jwks_untrusted` | + +Servers MUST NOT echo internal verification details beyond the stable code; log the detail server-side. + +**`WWW-Authenticate` format.** AdCP does NOT define a realm value for request-signing challenges. Verifiers MUST emit `WWW-Authenticate: Signature error=""` with no `realm` parameter and no other parameters. Clients parsing the header MUST tolerate other parameters (RFC 7235 permits implementations to include extras) but SHOULD NOT depend on them. + +#### Webhook callbacks + +Push-notification webhooks (POSTs to the `push_notification_config.url` a buyer registers), account-level webhooks (POSTs to `accounts[].notification_configs[].url`), agent-level webhooks (POSTs to `sync_agent_notification_configs.notification_configs[].url`), and similar asynchronous seller-initiated callbacks are signed under a symmetric variant of this profile. Role direction is inverted relative to request signing: the **seller signs outbound**, the **buyer verifies**. 9421 webhook signing is baseline-required for any 3.0 seller that emits webhooks, with a deprecated HMAC fallback described in [Webhook Security](#webhook-security). + +**Baseline with programmatic advertisement.** 9421 webhook signing is baseline-required for any seller that emits webhooks — the default is signed, not a negotiated option. The `webhook_signing` capability block on `get_adcp_capabilities` exists so buyers can detect a non-signing seller *at onboarding* rather than discovering it by traffic inspection (which is how the asymmetry with `request_signing` manifested before this block was restored). A seller whose capability surface advertises mutating-webhook emission elsewhere (e.g., `media_buy.reporting_delivery_methods` includes `webhook`, `media_buy.content_standards.supports_webhook_delivery: true`, or `wholesale_feed_webhooks.supported: true`) MUST include this block with `supported: true`. A seller that emits no webhooks MAY omit the block entirely; `supported: false` is reserved for the unsafe posture of emitting unsigned webhooks and MUST NOT be used to signal absence-of-webhooks. Buyers that integrate with a seller whose surface advertises mutating-webhook emission while the `webhook_signing` block advertises `supported: false` or is omitted MUST fail onboarding with a user-actionable error — a seller that emits but does not sign webhooks is unsafe to integrate with for any mutating-webhook use case. + +```json +{ + "webhook_signing": { + "supported": true, + "profile": "adcp/webhook-signing/v1", + "algorithms": ["ed25519", "ecdsa-p256-sha256"], + "legacy_hmac_fallback": false + } +} +``` + +- `supported`: MUST be `true` when the seller advertises mutating-webhook emission elsewhere in its capability surface. Buyers reject onboarding when `supported: false` or the block is missing and the seller's surface advertises webhook emission. Sellers that emit no webhooks SHOULD omit the entire block. +- `profile`: MUST be exactly `adcp/webhook-signing/v1` for this profile version. Future profile versions bump the string. +- `algorithms`: subset of `["ed25519", "ecdsa-p256-sha256"]` — the algorithm set this seller will sign with. Matches the webhook-signing verifier allowlist (see step 4 of the [verifier checklist](#verifier-checklist-requests), reused for webhooks via the substitutions noted above). Buyers MUST reject onboarding with a user-actionable error if the advertised `algorithms` array contains any value outside this set; an out-of-set algorithm indicates a misconfigured or non-conforming seller and silent acceptance would defeat the allowlist. +- `legacy_hmac_fallback`: `true` iff the seller supports the legacy HMAC-SHA256 scheme when the buyer populates `push_notification_config.authentication.credentials`, `accounts[].notification_configs[].authentication.credentials`, or `sync_agent_notification_configs.notification_configs[].authentication.credentials`. `false` is the recommended posture in 3.x. + +The buyer opts into the legacy HMAC-SHA256 scheme by populating `push_notification_config.authentication.credentials`, `accounts[].notification_configs[].authentication.credentials`, or `sync_agent_notification_configs.notification_configs[].authentication.credentials`; otherwise the seller signs with the 9421 webhook profile. Sellers MAY decline to support the legacy scheme — see the `legacy_hmac_fallback` flag above. + +**Mode selection is a switch, not both.** The presence of `push_notification_config.authentication`, `accounts[].notification_configs[].authentication`, or `sync_agent_notification_configs.notification_configs[].authentication` selects exactly one signing mode for every webhook delivered to that URL: `authentication` present → legacy HMAC-SHA256 (or Bearer); `authentication` absent → 9421. Sellers MUST NOT sign the same webhook both ways. Buyers MUST NOT attempt "try 9421 first, fall back to HMAC" verification — that pattern creates downgrade oracle behavior and accepts signatures the buyer did not ask for. Verifiers key the verification path strictly off whether the receiver has a configured HMAC secret for the webhook registration. + +**Key publication.** Signing keys are published by the seller in its **own brand.json** `agents[]` entry at the signing agent's operator domain, at the `jwks_uri` member of that entry — the same publication pattern as any other AdCP agent key. Webhooks are signed with the agent's **`adcp_use: "request-signing"`** key; there is no separate webhook key purpose. Domain separation between requests and webhooks is carried by the signature `tag` (`adcp/request-signing/v1` vs `adcp/webhook-signing/v1`), not by the key purpose. Each signing JWK MUST declare: + +| Member | Value | +|---|---| +| `use` | `"sig"` | +| `key_ops` | `["verify"]` | +| `adcp_use` | `"request-signing"` | +| `kid` | distinct within the JWKS; MUST NOT collide with any other `kid` regardless of `adcp_use` | +| `alg` | `"EdDSA"` or `"ES256"` | + +**Key isolation is optional, via a distinct `kid` — not a distinct purpose.** An operator that wants its webhook traffic signed by separate key material (so a webhook-key compromise does not extend to request signing, or to rotate the two independently) publishes a **second `adcp_use: "request-signing"` key with a distinct `kid`** and signs webhooks with that one. Both keys carry the same `adcp_use`; the verifier resolves the right one by the `kid` in `Signature-Input`. No dedicated webhook key purpose is required to achieve isolation. + +> **Deprecated:** `adcp_use: "webhook-signing"` is deprecated and scheduled for removal in a future major version (tracked in [#5555](https://github.com/adcontextprotocol/adcp/issues/5555); the exact window is a WG/RFC decision). Verifiers MUST still accept it for backward compatibility (a webhook signed under a `"webhook-signing"` key verifies cleanly), but new signers SHOULD publish and sign with `"request-signing"` keys only. + +A buyer verifying a webhook MUST accept a JWK whose `adcp_use` is `"request-signing"` (or the deprecated `"webhook-signing"`), and MUST reject any other key-purpose failure — any other `adcp_use` value, absent `adcp_use`, or a missing `verify` key_op — with `webhook_signature_key_purpose_invalid`. The reverse is still forbidden: request verification requires `adcp_use == "request-signing"` exactly (a request signature is rejected if the key declares any other purpose), and neither `"response-signing"` nor `"governance-signing"` keys are ever valid for webhook delivery. The webhook path is permissive on key purpose because it already carries domain separation in the `tag` (`adcp/webhook-signing/v1`) and mandatory `content-digest` coverage, so the key-purpose check adds no confusion resistance there. + +**Trust anchor and blast radius.** The trust anchor for webhook authenticity is **the signer's brand.json origin** — the HTTPS origin that hosts the brand.json declaring the signing agent's `agents[]` entry. A compromise of that origin (sub-path takeover, DNS hijack, CDN cache poisoning of `/.well-known/brand.json` or the `jwks_uri`) compromises every webhook that buyer accepts from that signer until the operator publishes a `revoked_kids` entry and buyer verifiers refresh the revocation list. Buyers SHOULD pin the agent's `jwks_uri` URL learned at integration onboarding and alarm on changes to the URL itself (not just on `kid` rotation within a stable URL) — changes to the URL force re-anchoring and SHOULD require operator attention, not silent adoption. `kid` collisions within the same JWKS are forbidden so each `kid` resolves to exactly one key. Webhooks are signed with the agent's `request-signing` key, so by default a request-signing-key compromise extends to webhooks. An operator that needs blast-radius separation publishes a second `request-signing` key with a distinct `kid` dedicated to webhook delivery and signs webhooks with it — isolation comes from separate key material under a separate `kid`, not from a separate `adcp_use`. + +**Covered components** are identical to request signing: `@method`, `@target-uri`, `@authority`, `content-type`, and `content-digest`. `content-digest` is REQUIRED on webhook callbacks — the body carries the event, and webhook receivers are buyer-controlled endpoints where body preservation is the buyer's own infrastructure problem. There is no `covers_content_digest: "forbidden"` opt-out for webhooks; transports that cannot preserve webhook body bytes MUST be fixed. + +**Signature parameters** are identical to request signing with one override: + +| Parameter | Notes | +|---|---| +| `created`, `expires`, `nonce`, `keyid`, `alg` | Same semantics as [request signing parameters](#adcp-rfc-9421-profile). | +| `tag` | MUST be exactly `adcp/webhook-signing/v1`. Verifiers MUST reject `adcp/request-signing/v1` on a webhook route with `webhook_signature_tag_invalid`. The distinct tag prevents a request signature from being replayed as a webhook signature and vice versa. | + +**JWKS discovery.** The buyer knows the seller's agent URL from the AdCP integration it's already using. Buyer resolves: + +1. Seller agent URL `A` → fetch `/.well-known/brand.json` at the operator domain of `A` with SSRF validation per [Webhook URL validation](#webhook-url-validation-ssrf). brand.json resolution follows one redirect (`authoritative_location` or `house` redirect variant) and stops. +2. In the fetched brand.json, find the `agents[]` entry whose `url` byte-for-byte matches `A`. +3. Fetch that entry's `jwks_uri` (or default to `/.well-known/jwks.json` at the origin of `A`) with SSRF validation. JWKS cache TTL bounded above by the revocation-list polling interval (floor 1 min, ceiling 30 min). Long-running task flows cross JWKS rotations; verifiers MUST NOT pin a single JWKS snapshot for the lifetime of a task. +4. Resolve `keyid` on the incoming `Signature-Input` to a JWK in the fetched set. On `kid` miss, refetch once (subject to the 30-second cooldown between refetches) before rejecting with `webhook_signature_key_unknown`. The refetch-on-miss path is the load-bearing mechanism for handling mid-task key rotation — clients that skip it will reject legitimate post-rotation deliveries. + +Buyers MUST NOT derive signer identity from webhook payload fields (`task_id`, `operation_id`, etc.) or from `adagents.json` entries — those are publisher authorization, not signer identity. Identity is established solely via the signature → JWKS → seller `agents[]` entry chain. + +**Downgrade and injection resistance.** The buyer's webhook-signing preference is communicated by the presence or absence of `push_notification_config.authentication`, `accounts[].notification_configs[].authentication`, or `sync_agent_notification_configs.notification_configs[].authentication` on the inbound request that registers the webhook. In 3.0 that inbound request is frequently bearer-authenticated rather than 9421-signed, so an on-path mutator (misconfigured proxy, compromised intermediary) could strip or inject the `authentication` block silently. The following rules contain the blast radius: + +- **Sellers MUST log** every request that arrives with a non-empty `authentication` block. Ops alarms on unexpected HMAC selection protect the buyer side when the buyer thought it was getting 9421. +- **Sellers that support request signing MUST require** the inbound request to be 9421-signed (per the [request verifier checklist](#verifier-checklist-requests)) when `authentication` is present on `push_notification_config.authentication`, any `accounts[].notification_configs[].authentication`, or any `sync_agent_notification_configs.notification_configs[].authentication`, rejecting with `request_signature_required` (the same code used for `required_for` operations — see [Transport error taxonomy](#transport-error-taxonomy)). When a signed request cryptographically commits to the body, the `authentication` block cannot be injected or stripped without also invalidating the signature. Sellers that do not support request signing at all have no way to enforce this rule and fall back to the log-and-alarm posture in the preceding bullet — 3.0 migration note, not an exemption: the [request-signing migration timeline](#transport-migration-timeline) makes request signing required for spend-committing operations in 4.0, at which point no seller is unsigned-only. +- **Buyers MUST reject with `webhook_mode_mismatch` and alarm**, not silently downgrade, when they receive a 9421-signed webhook after registering with `authentication.credentials`, or when they receive HMAC-signed webhooks after registering without `authentication`. Rejection is the safety property; alarming is the telemetry — a buyer that alarms but accepts the payload has already handed authority to the mismatched signing scheme. The rejection surfaces as HTTP `401` with the stable error code so sender-side retry logic can route it to incident response rather than replaying identically. +- **Buyers SHOULD negotiate HMAC-mode out-of-band** at onboarding when interoperating with sellers that have not yet implemented 9421. Durable per-counterparty mode selection in operator records is not MITM-mutable the way a per-request field is. + +**Verifier checklist for webhooks.** Apply these 15 checks (14 numbered steps plus sub-step 9a) in order, short-circuiting on the first failure. Step 14 decomposes into 14a (strict-parse requirement) and 14b (logging discipline) — both apply whenever step 14 runs; they are elaborations of one check, not separate checks in the count. The steps below are the [request verifier checklist](#verifier-checklist-requests) with **three profile substitutions** — the `tag` value (`adcp/webhook-signing/v1` instead of `adcp/request-signing/v1`), the direction-of-trust resolution (seller's brand.json `agents[]` entry instead of the buyer's), and webhook v1's legacy unpadded Base64URL binary-value decoder instead of the 3.2 request profile's RFC 8941 Base64 decoder. Parser mode comes from the trusted webhook route/profile configuration before header parsing; it is not a lenient fallback after request-profile parsing fails. Step 14 (body well-formedness) is identical across the two profiles; only the error-code prefix differs (`webhook_body_malformed` vs `request_body_malformed`). Implementations SHOULD share verifier code between the two profiles, branch on the three profile parameters, and configure the profile-specific error codes — NOT fork the implementation. Error codes are prefixed `webhook_*` — most carry the `webhook_signature_*` infix, plus structural codes without it (currently `webhook_target_uri_malformed`, `webhook_mode_mismatch`, `webhook_body_malformed`) — so caller-side error handling distinguishes the two profiles. + +1. Parse `Signature-Input` structure per RFC 9421 §4 and decode the `Signature` binary token with the webhook-v1 unpadded Base64URL profile. Reject if malformed (`webhook_signature_header_malformed`). If `Signature` or `Signature-Input` is present without the other, reject with the same code — a bound pair, not a guessable one. +2. Reject if any of `created`, `expires`, `nonce`, `keyid`, `alg`, or `tag` is absent from the `Signature-Input` parameters (`webhook_signature_params_incomplete`). +3. Reject if `tag` is not exactly `adcp/webhook-signing/v1` (`webhook_signature_tag_invalid`). Byte-for-byte match; no case-folding. +4. Reject if `alg` is not in the allowlist (`ed25519`, `ecdsa-p256-sha256`). Library defaults MUST NOT be relied upon (`webhook_signature_alg_not_allowed`). +5. Reject if `expires ≤ created`, `created > now + 60 s`, `expires < now − 60 s`, or `expires − created > 300 s` (`webhook_signature_window_invalid`). +6. Reject if covered components do not include ALL of: `@method`, `@target-uri`, `@authority`, `content-type`, `content-digest` (`webhook_signature_components_incomplete`). `content-digest` is REQUIRED; there is no policy branch. +7. Resolve `keyid` to a JWK via the JWKS discovery steps above. On `kid` miss, refetch once (30-second cooldown between refetches) before rejecting (`webhook_signature_key_unknown`). Reject if `keyid` cannot be resolved to a specific `agents[]` entry in the signer's brand.json. +8. Verify the JWK's `use` is `"sig"`, `key_ops` includes `"verify"`, and `adcp_use` is `"request-signing"` — webhooks are signed with the agent's request-signing key (see [Key publication](#webhook-callbacks)); the deprecated `"webhook-signing"` value MUST also be accepted for backward compatibility. Reject on any other outcome with `webhook_signature_key_purpose_invalid`: absent `adcp_use`, a missing `verify` key_op, or any other `adcp_use` value (e.g. `"response-signing"`, `"governance-signing"`). Accepting `"request-signing"` here is safe because cross-protocol confusion is prevented by the `tag` (step 3) and mandatory `content-digest` coverage (step 6), not by the key-purpose discriminator: a captured request signature carries `tag=adcp/request-signing/v1` and is rejected at step 3. (`webhook_mode_mismatch` is reserved for the HMAC-vs-9421 auth-mode selector mismatch — see [Downgrade and injection resistance](#webhook-callbacks) — and is NOT used for key-purpose failures.) +9. Check the [Transport revocation](#transport-revocation) list (reused across signing purposes). Reject if `keyid ∈ revoked_kids` (`webhook_signature_key_revoked`). Reject with `webhook_signature_revocation_stale` if the verifier has not refreshed within grace. + + **9a. Per-keyid cap check.** Check the [webhook replay-cache cap](#webhook-replay-dedup-sizing). Reject with `webhook_signature_rate_abuse` if exceeded. Runs before cryptographic verify (step 10) for the same cheap-rejection rationale as request signing. + +10. Compute the canonical signature base per RFC 9421 §2.5 using the covered components, after applying `@target-uri` canonicalization AND `@authority` derivation per [the request-signing profile](#adcp-rfc-9421-profile). **The `@authority` rule is load-bearing for webhook security:** verifiers MUST derive `@authority` from the HTTP/2+ `:authority` pseudo-header when present, otherwise from the as-received HTTP/1.1 `Host` header — NOT from reverse-proxy routing state, load-balancer metadata, or any `Host` value a forward proxy may have rewritten in transit. If both `:authority` and `Host` are present on the as-received request, they MUST be byte-equal after canonicalization (RFC 7540 §8.1.2.3 equivalence); divergence rejects with `webhook_target_uri_malformed`. The canonicalized `@authority` MUST byte-for-byte match the authority component of the canonical `@target-uri`; mismatch rejects with `webhook_target_uri_malformed`. That byte-match against the signed `@target-uri` — not the choice of source header — is the only safe gate, because `Host` itself can be rewritten in transit. Implementers building from this checklist alone — without cross-referencing the profile — MUST apply this rule; skipping it silently accepts a cross-vhost replay vector (an attacker intercepts a TLS-terminated webhook and replays it to a second vhost on the same verifier pool: same cert SAN, different `Host`). After canonicalization completes, verify the signature against the JWK (`webhook_signature_invalid` on failure). +11. Recompute `content-digest` from the received body bytes and compare (`webhook_signature_digest_mismatch` on mismatch). REQUIRED — no policy branch. +12. Check the nonce against the replay cache. Reject if `(keyid, nonce)` has been seen within the replay-cache TTL (`webhook_signature_replayed`). +13. **Only after steps 1–12 have all passed**, insert `(keyid, nonce)` into the replay cache with TTL = `(expires − now) + 60 s`. This insert MUST happen before the body-well-formedness check at step 14 so that a captured frame carrying a valid signature over a malformed body cannot be replayed to burn crypto-verify CPU on each retry — the nonce is burned on first sighting of a cryptographically-valid frame, regardless of body shape. The load-bearing cap invariant this ordering preserves is documented after step 14b. +14. **Body well-formedness.** Verifiers MUST reject bodies containing duplicate object keys (`webhook_body_malformed`). Per RFC 8259 §4, duplicate-key parse behavior is unpredictable — the signature is valid over the bytes on the wire, but two parsers can disagree on the parsed value, which is a parser-differential attack class (cf. CVE-2017-12635). This check closes the gap between the signature verifier's view of the payload and the downstream consumer's view. A verifier that crashes rather than returning a structured `webhook_body_malformed` error is conformant-but-suboptimal — senders receive no actionable error code. The conformance fixture for this check is the `duplicate-keys-conflicting-values` vector in `static/test-vectors/webhook-hmac-sha256.json` — the 9421 profile MUST apply the same body-well-formedness rule after signature verification succeeds. `webhook_body_malformed` is distinct from `webhook_signature_digest_mismatch`: the signature IS valid; the body parses to ambiguous state. + + **14a. Strict-parse requirement.** The check MUST use a parser that exposes duplicate keys — a last-wins/first-wins default that silently discards them does not satisfy this requirement. Query libraries that happily return a value on duplicate-key input without surfacing the collision also do not satisfy this requirement, regardless of marketing as "safe" or "strict" (cf. `tidwall/gjson` in Go — a query library, not a validator). Per-language strict-parse escape hatches, canonical non-exhaustive list: + - **Python**: stdlib `json.loads(..., object_pairs_hook=...)` — detect duplicates inside the hook and raise. Satisfies the check. + - **Node**: no strict mode in `JSON.parse`. Use a streaming parser (`stream-json`, `jsonparse`) with a duplicate-key event handler. `secure-json-parse` is NOT sufficient by default: its protections target prototype-pollution keys (`__proto__`, `constructor`), not data-key duplicates, which it still collapses last-wins. Configure it to reject data-key duplicates explicitly or layer a streaming parser underneath. + - **Go**: `encoding/json` has no strict mode and does not detect duplicates. Use `json.Decoder` token-walk with an explicit `map[string]struct{}` unique-key guard per object scope, OR `goccy/go-json` with `decoder.DisallowDuplicateKey()` explicitly enabled (NOT the default). Do NOT use `tidwall/gjson` for this check — it is a query library that returns the last value on duplicate-key input without signaling the collision. + - **Java**: Jackson `DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY` (disabled by default, enable explicitly). + - **Ruby**: stdlib `JSON.parse` has no detection hook. Use `Oj.load(..., mode: :strict)` with the `allow_nan: false` / duplicate-rejection options explicitly configured. + + **14b. Logging discipline.** Verifiers SHOULD NOT log full request body bytes on a `webhook_body_malformed` rejection; log `keyid`, nonce, byte length, and the specific duplicate key names only. An attacker holding a compromised signer key can otherwise force attacker-chosen bytes into defender logs at scale, burning a replay-cache slot per frame but leaving an attacker-controlled log trail for SIEM poisoning or credential exfiltration follow-on attacks. When logging duplicate key names, verifiers MUST sanitize each name with the following rules applied in order: + + - **(a) Truncate at the first non-printable codepoint** and emit `` where N is the byte length of the truncation prefix. This elides position information (the placement of a non-printable within the key name would otherwise itself be an attacker channel, encodable as bit positions) while preserving the "something was wrong here" diagnostic signal. The non-printable set MUST include at minimum: **C0 controls** (U+0000–U+001F), **DEL** (U+007F), **C1 controls** (U+0080–U+009F, terminal control semantics in multi-byte form), **bidi controls and isolates** (U+200E, U+200F, U+202A–U+202E, U+2066–U+2069 — reverse rendering in terminals and SIEM UIs), **line and paragraph separators** (U+2028, U+2029 — render as line breaks in many log viewers, enabling row-injection), **zero-width characters** (U+200B–U+200D — invisible obfuscation), and the **byte-order mark** (U+FEFF — parser corruption). Implementations MAY extend the set to a broader Unicode non-printable classification but MUST NOT narrow it — an ASCII-only check misses bidi-override and line-separator attacks that reopen exactly the log-injection channel this rule exists to close. + - **(b) Truncate to at most 32 bytes** at the last complete UTF-8 codepoint boundary. Realistic AdCP field names top at roughly 24 characters (`signed_authorized_agents`), so 32 is a generous cap while still bounding the attacker-controlled-byte surface. Truncation MUST occur at the last complete UTF-8 codepoint boundary at or below 32 bytes so multi-byte sequences are not split mid-codepoint and invalid-UTF-8 does not land in logs (different verifiers truncating the same input to different invalid-UTF-8 tails would also break log aggregation). + - **(c) Cap the number of duplicate key names logged per rejection at 4**, emitting `<...N more>` if exceeded. Diagnostic value of knowing 4 vs 8 vs 16 colliding keys is near zero. + + Without these constraints, the key-name channel remains an attacker-controlled-byte side channel — smaller than full-body logging but non-zero, and well-precedented as a log-injection vector. Signers that log upstream-input rejections (see [the duplicate-object-keys signer-side rule](#legacy-hmac-sha256-fallback-deprecated-removed-in-40)) MUST apply the same (a)/(b)/(c) sanitization rules to any key names surfaced in signer-side error output; the channel shape is identical even though the wire direction is inverted. + +**A load-bearing invariant for the webhook cache.** External traffic without the signer's private key cannot grow this cache: every entry admitted at step 13 has already passed step 10's cryptographic verification, so any party driving cache growth is either the legitimate key holder or someone who has compromised the key — the case the per-keyid cap (step 9a) and the new-keyid admission-pressure alarm (see [Webhook replay dedup sizing](#webhook-replay-dedup-sizing)) are designed to detect. The invariant mirrors the [analogous request-signing rule](#verifier-checklist-requests) (see the "load-bearing invariant for the cap" paragraph immediately after step 13 there). Future edits to the webhook checklist MUST preserve this ordering: moving the step 13 insert before step 10's signature verification would let any external party flood the cache using forged structurally-valid signatures. + +There is no subsequent brand-operator authorization step on the webhook path — the signature establishes the seller's identity, and that identity is sufficient to accept the webhook. Application-layer dedup on `idempotency_key` runs after signature verification (step 13) to protect against duplicate side effects. + +**One signature per webhook.** Verifiers MUST process exactly one `Signature-Input` label and ignore additional labels. + +##### Webhook replay dedup sizing + +Replay dedup for webhooks reuses the `(keyid, nonce)` key shape and TTL semantics from [Transport replay dedup](#transport-replay-dedup), but the buyer-side cache sees signatures from every seller the buyer integrates with — fundamentally different fan-in from the request-side case. + +- **Per-keyid entry cap**: recommended 100,000 entries (10× lower than the request-side 1,000,000 ceiling). A seller emitting 100K unique webhooks in a 6-minute window is 275/sec sustained from a single signer — plenty of headroom for normal operations and still a strong signal of misconfiguration or key compromise. +- **Aggregate cache cap**: recommended `min(aggregate_memory_budget, 10,000,000)` entries across all signers. On aggregate-cap exceeded, verifiers MUST reject new signatures with `webhook_signature_rate_abuse` and SHOULD alert operators — silent eviction creates replay windows precisely when the verifier is under attack. +- **Per-seller budget**: operators SHOULD budget per-seller by integration criticality rather than equal-weighting all sellers at 100K each. A spend-committing seller's webhook fan-in differs from a discovery-only seller's. +- **New-keyid admission pressure** (MUST track, SHOULD alert). Verifiers MUST track the rate of cache entries admitted from previously-unseen `keyid`s per unit time (e.g., a 5-minute rolling count of distinct `keyid`s inserting their first entry). A sudden spike in new-keyid admission rate is the signature of a **distributed-compromise attack**: an attacker holding N compromised signer keys can drive N entries per TTL window each, every key staying well within its per-keyid cap (step 9a), while collectively saturating the aggregate cache. Each key's traffic individually looks like a low-volume legitimate signer; the aggregate shape is the signal. + + Verifiers SHOULD alert when new-keyid admission exceeds **any** of four thresholds (whichever triggers first), each closing a distinct attacker pattern: + + - **(a)** a **short-window ratio threshold** comparing the current admission rate against a short-horizon moving-average baseline — catches sudden spikes against a stable baseline. + - **(b)** a **medium-window ratio threshold** against a medium-horizon percentile baseline — catches multi-week ramp-up attacks, whose traffic is dominated by the baseline tail at that horizon. + - **(c)** a **long-window ratio threshold** against a long-horizon percentile baseline — catches multi-month ramp-up attacks that drift the medium-horizon anchor with them. + - **(d)** a **proportional ceiling** combining an absolute floor with a fraction of the unique-keyid count over a documented window — catches sparse-traffic verifiers whose ratio baselines are near zero, AND auto-scales to operators of any size (small verifiers get a low proportional floor; enterprise verifiers get a proportionally larger one). + + **The four categories are normative; the concrete threshold values are NOT.** Operators MUST treat any published example values as starting points, baseline their own traffic, and tune accordingly — published normative threshold numbers would hand attackers an oracle into the detection posture. Concrete starting values, baselining methodology, and attack-scenario walkthroughs are published in the non-normative [Webhook Verifier Tuning Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning). Implementations MAY ship the guide's starting values as first-deployment defaults but MUST expose each threshold as a tunable configuration parameter (e.g., environment variable, config file) — hardcoded starting values become de facto operator-visible defaults and re-introduce the attacker oracle. Implementations SHOULD log or alarm a `threshold_tuning_overdue` event when any threshold remains at its shipped starting value more than 30 days past the verifier's first admission; this gives the operator-tuning obligation a testable, auditable hook rather than relying on operator diligence alone. + + The alarm payload MUST name which clause (a, b, c, or d) tripped so operator triage can respond to the right threat shape. Alarming here catches the slow-burn distributed-compromise pattern *before* the aggregate cap triggers — once `webhook_signature_rate_abuse` fires on the aggregate cap, the cache is already full and every legitimate signer is being rejected. Alarms SHOULD route to incident response, not to automatic revocation: the distinguishing signal between "attack" and "onboarding a batch of new sellers" is operator context, not machine-derivable, and automatic revocation on alarm creates a denial-of-service vector (any party driving legitimate new-signer onboarding can trip the alarm and cause mass revocation). + +**Cross-endpoint scoping (MUST).** A buyer that exposes more than one webhook endpoint (per-integration, per-environment, per-tenant, or per-pod in a horizontally-scaled fleet) MUST either: + +1. **Share a single logical replay cache across every endpoint** a given signer can reach (Redis / shared dedup service — not per-process in-memory), so that a `(keyid, nonce)` inserted by endpoint A is visible to endpoint B before step 12 runs; or +2. **Include the canonical destination URL in the replay key**, scoping dedup to `(keyid, canonical destination URL, nonce)`. The canonical form is the `@target-uri` after normalisation per [the request-signing profile](#adcp-rfc-9421-profile) (scheme lowercased, host IDNA-normalised, default port elided, fragment stripped). + +Option 1 is stronger — it rejects cross-endpoint replay outright within the ±360 s window. Option 2 is weaker — the same `(keyid, nonce)` is replayable at each distinct endpoint URL, but because the signed `@target-uri` is covered by the signature, the verifier at endpoint B will reject any payload whose `@target-uri` was signed for endpoint A with `webhook_signature_digest_mismatch` (the canonical signature base fails) or `webhook_signature_invalid`. Option 2 is acceptable only when the signer's canonical `@target-uri` is per-endpoint; a signer that signs the same payload for multiple endpoints defeats option 2 and MUST use option 1. + +Per-pod or per-region *in-memory* replay caches without a shared tier are non-conformant for buyers that run more than one endpoint: they leave a cross-endpoint replay window bounded only by ±360 s and the attacker's ability to route to a different pod. Operators MUST either front the webhook fleet with a shared dedup tier or document and enforce the per-endpoint URL scoping above. + +All other rules from [Transport replay dedup](#transport-replay-dedup) apply verbatim: in-memory LRU for single-process verifiers, Redis `SETNX` at high volume, atomic insert-with-cap-check at step 13 in distributed deployments. + +##### Webhook revocation and rotation + +Signers MUST publish revocations via the same combined revocation list used for request signing — see [Transport revocation](#transport-revocation). A single list per operator origin covers governance-signing, request-signing, and webhook-signing keys. + +**HMAC→9421 migration.** A buyer transitioning from HMAC to 9421 MUST disable its HMAC verifier once the seller has acknowledged the cutover. Running both verifiers concurrently leaves the HMAC path exploitable for the original 5-minute replay window plus however long the buyer forgets to turn it off; "just in case" operational posture keeps the deprecated path live past the intended deprecation. Sellers SHOULD reject `authentication` blocks from a counterparty that has previously been migrated to 9421, logging the rejection. During the cutover window, buyers MAY run both verifiers but SHOULD maintain a single dedup keyspace so that the same logical event under either scheme maps to the same `(sender identity, idempotency_key)` tuple — see the [Reliability](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#reliability) section for dedup scope under mixed-mode delivery. + +##### Webhook error taxonomy + +Codes parallel the [request-signing error taxonomy](#transport-error-taxonomy), prefixed `webhook_` so SDK error handling distinguishes the two profiles. Buyers MAY return `401` to the seller on any of these; a seller's retry loop will replay with the same signature bytes, so every code in this table is non-retryable to the sender — signature failures, authority-mismatch, and mode-mismatch all produce identical outputs on retry — even though HTTP semantics permit retry. + +| Failure | Code | +|---|---| +| `Signature` or `Signature-Input` header malformed or one without the other | `webhook_signature_header_malformed` | +| Required sig-param absent | `webhook_signature_params_incomplete` | +| `tag` not `adcp/webhook-signing/v1` | `webhook_signature_tag_invalid` | +| `alg` not in allowlist | `webhook_signature_alg_not_allowed` | +| Signature window invalid | `webhook_signature_window_invalid` | +| Required covered components missing (including `content-digest`) | `webhook_signature_components_incomplete` | +| `keyid` not in seller JWKS after one refetch | `webhook_signature_key_unknown` | +| JWK `adcp_use` ∉ {`webhook-signing`, `request-signing`}, absent, or `key_ops` lacks `verify` | `webhook_signature_key_purpose_invalid` | +| `keyid` ∈ `revoked_kids` | `webhook_signature_key_revoked` | +| Revocation list not refreshed within grace | `webhook_signature_revocation_stale` | +| Cryptographic verification failed | `webhook_signature_invalid` | +| `content-digest` mismatch | `webhook_signature_digest_mismatch` | +| Body contains duplicate object keys (parser-differential attack class) | `webhook_body_malformed` | +| `@authority` does not match signed `@target-uri` authority component (cross-vhost replay) | `webhook_target_uri_malformed` | +| Nonce already seen within window | `webhook_signature_replayed` | +| Per-keyid replay cache exceeded cap | `webhook_signature_rate_abuse` | +| Registered auth mode does not match signature mode on received webhook | `webhook_mode_mismatch` | + +**Retry semantics for verification failures.** At-least-once delivery tells senders to retry on any non-2xx response, but a verification failure is not a transient error — the signature bytes and request context arrive identically on every retry, so every retry fails identically. Senders MUST treat a `401` response carrying `WWW-Authenticate: Signature error="webhook_*"` (any code defined in the taxonomy above, including `webhook_signature_*`, `webhook_target_uri_malformed`, and `webhook_mode_mismatch`) as a terminal failure for that specific delivery attempt: stop retrying the current event, log the failure with the error code for operator attention, and continue the normal retry queue for subsequent events. Senders SHOULD route sustained `webhook_*` error rates above an operator-defined threshold to incident response rather than continuing to emit them — persistent signature, authority, or mode failures indicate a key-rotation coordination problem, a misconfigured verifier, or a compromise, all of which need human action. Receivers MUST NOT silently discard these failures; surfacing them in operator logs is part of the security posture. + +**Editor note on future additions.** The wildcard `webhook_*` terminal-failure classification above is an eager sweep: any new code added to the taxonomy inherits terminal-per-delivery semantics without individual review. Editors adding a new `webhook_*` code that SHOULD be retryable (e.g., a future transient-infrastructure signal) MUST update this paragraph to carve out the exception at the point of addition — do not rely on the pattern match to remain safe for codes not yet defined. + +##### Webhook migration timeline + +| Phase | Behavior | +|---|---| +| 3.0 GA | 9421 webhook signing is baseline for any seller that emits webhooks. Legacy HMAC-SHA256 fallback available when buyer populates `push_notification_config.authentication.credentials` or `accounts[].notification_configs[].authentication.credentials`; sellers MAY decline to support it. | +| 3.x | HMAC fallback is deprecated. Sellers SHOULD log warnings when selected. SDKs SHOULD surface a deprecation notice to buyers that still configure `authentication`. | +| 4.0 | `authentication` on `push_notification_config` and `accounts[].notification_configs[]` is removed from the schema. 9421 webhook signing is the only supported path. | + +#### TMP cross-reference + +**TMP keys MUST declare a distinct `adcp_use` value** (or omit it entirely) so verifiers reject them for request signing via step 8. Publishing TMP keys at the same `jwks_uri` as request-signing and webhook-signing keys is permitted and encouraged — one publication pattern, six signing systems in 3.2, each `kid`-scoped: + +- governance JWS — `adcp_use: "governance-signing"` +- request signing (RFC 9421) — `adcp_use: "request-signing"` (also signs webhooks; see [Webhook callbacks](#webhook-callbacks)) +- webhook signing (RFC 9421) — uses the `request-signing` key; the legacy `adcp_use: "webhook-signing"` value is **deprecated** (still accepted, pending removal — see follow-up issue in the deprecation note) +- designated-task response-payload JWS — `adcp_use: "response-signing"` (see [Designated-task payload-envelope response signing](#designated-task-response-signing) above) +- portable credentials issued by an AdCP agent — `adcp_use: "attestation-signing"` (the credential proof format still defines the signature input and algorithm) +- TMP envelope — TMP's own future `adcp_use` value + +Cross-purpose reuse is prevented automatically because every verifier enforces an exact `adcp_use` match on its own profile. + +Trusted Match Protocol signs match-time requests with its own Ed25519 envelope. TMP's per-request budget (sample-verify at ~5%) is too tight for full RFC 9421 verification on every call. **TMP signing is out of scope for this section**; this profile only constrains how TMP keys are published alongside request-signing keys on the same JWKS. + +#### Transport migration timeline + +AdCP 4.0 is the next breaking-changes accumulation window. Mandatory request signing for spend-committing operations is one of its floor requirements — the minimum security bar for AdCP 4.0 spend traffic — not the sole headline feature. Other v4.0 changes will accumulate on the [roadmap](/dist/docs/3.2.0-beta.4/reference/roadmap#v40-planned). + +| Phase | Status | Behavior | +|---|---|---| +| 3.0 GA | Optional, capability-advertised | Verifiers MAY validate; `required_for: []` by default. Signers MAY sign. Reference vectors ship; reference SDK pilots begin. | +| 3.0–3.1 | Reference SDKs ship; pilots surface bugs | `covers_content_digest` defaults to `"either"`; explicit `"forbidden"` remains available for legacy body-rewriting infrastructure. Early adopters turn on `required_for` incrementally. | +| 3.2 | Signing remains optional; body integrity becomes mandatory when used | An agent advertising request signing MUST explicitly emit `covers_content_digest: "required"`. Every accepted signature on a request with a body covers `content-digest`; legacy modes require a separately configured 3.0/3.1 endpoint. | +| 4.0 | Required for spend-committing operations | `required_for` MUST include `create_media_buy`, `acquire_*`, and every spend-committing operation the verifier supports. Signers MUST sign; legacy digest modes are removed. | + +Implementations that ship signing in 3.x SHOULD enable verifier-side `required_for` selectively (per-counterparty pilot, then broader rollout) before 4.0 to validate end-to-end paths against real traffic — this is what makes the 4.0 transition feasible without ecosystem-wide breakage. + +#### Request verifier reference (TypeScript) + +Illustrative only. The `verify9421` and `parseSignatureInput` callbacks encapsulate protocol-specific canonicalization and signature verification; implementations should pin a specific RFC 9421 library that has been validated against the AdCP conformance test vectors at [`/compliance/latest/test-vectors/request-signing/`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/). + +```ts +import { createRemoteJWKSet } from "jose"; + +class RequestSignatureError extends Error { + constructor(public code: string) { super(code); } +} + +const ALLOWED_ALGS = new Set(["ed25519", "ecdsa-p256-sha256"]); +const REQUIRED_TAG = "adcp/request-signing/v1"; +const REQUIRED_COMPONENTS = new Set(["@method", "@target-uri", "@authority"]); +const REQUIRED_PARAMS = ["created", "expires", "nonce", "keyid", "alg", "tag"] as const; + +export async function verifyAdcpRequestSignature(req: Request, ctx: { + operationName: string; + requiredFor: Set; + contentDigestPolicy: "required" | "forbidden" | "either"; + resolveJwk: (keyid: string) => Promise<{ jwk: unknown; agentUrl: string }>; // throws _key_unknown after refetch + isKeyRevoked: (keyid: string) => Promise; + isRevocationStale: () => Promise; + isKeyidAtCapacity: (keyid: string) => Promise; + isReplayed: (keyid: string, nonce: string) => Promise; + recordNonce: (keyid: string, nonce: string, ttlSeconds: number) => Promise; + verify9421: (req: Request, jwk: unknown, covered: string[]) => Promise; // throws on signature or digest failure + parseSignatureInput: (header: string) => { + keyid?: string; alg?: string; created?: number; expires?: number; + nonce?: string; tag?: string; components: string[]; + }; +}) { + const sigInput = req.headers.get("signature-input"); + + // Pre-check: required_for / downgrade protection. + if (!sigInput) { + if (ctx.requiredFor.has(ctx.operationName)) throw new RequestSignatureError("request_signature_required"); + return; // operation doesn't require a signature; verify nothing. + } + + let parsed; + try { parsed = ctx.parseSignatureInput(sigInput); } + catch { throw new RequestSignatureError("request_signature_header_malformed"); } + + // 2: presence + for (const p of REQUIRED_PARAMS) { + if ((parsed as any)[p] == null) throw new RequestSignatureError("request_signature_params_incomplete"); + } + // 3: tag + if (parsed.tag !== REQUIRED_TAG) throw new RequestSignatureError("request_signature_tag_invalid"); + // 4: alg + if (!ALLOWED_ALGS.has(parsed.alg!)) throw new RequestSignatureError("request_signature_alg_not_allowed"); + // 5: window (including expires > created) + const now = Math.floor(Date.now() / 1000); + if (parsed.expires! <= parsed.created! || + parsed.created! > now + 60 || + parsed.expires! < now - 60 || + parsed.expires! - parsed.created! > 300) { + throw new RequestSignatureError("request_signature_window_invalid"); + } + // 6: components + for (const c of REQUIRED_COMPONENTS) { + if (!parsed.components.includes(c)) throw new RequestSignatureError("request_signature_components_incomplete"); + } + const coversCd = parsed.components.includes("content-digest"); + if (ctx.contentDigestPolicy === "required" && !coversCd) { + throw new RequestSignatureError("request_signature_components_incomplete"); + } + if (ctx.contentDigestPolicy === "forbidden" && coversCd) { + throw new RequestSignatureError("request_signature_components_unexpected"); + } + // 7: JWK resolution + const { jwk } = await ctx.resolveJwk(parsed.keyid!); // throws _key_unknown + // 8: key purpose + const j = jwk as any; + if (j.use !== "sig" || !Array.isArray(j.key_ops) || !j.key_ops.includes("verify") || j.adcp_use !== "request-signing") { + throw new RequestSignatureError("request_signature_key_purpose_invalid"); + } + // 9: revocation (BEFORE crypto verify) + if (await ctx.isRevocationStale()) throw new RequestSignatureError("request_signature_revocation_stale"); + if (await ctx.isKeyRevoked(parsed.keyid!)) throw new RequestSignatureError("request_signature_key_revoked"); + // 9a: per-keyid cap (BEFORE crypto verify) — prevents amplified crypto work by abusive/misconfigured signer. + if (await ctx.isKeyidAtCapacity(parsed.keyid!)) { + throw new RequestSignatureError("request_signature_rate_abuse"); + } + // 10 + 11: crypto verify, content-digest recompute — both inside verify9421. + try { await ctx.verify9421(req, jwk, parsed.components); } + catch (e: any) { + if (e?.code === "digest_mismatch") throw new RequestSignatureError("request_signature_digest_mismatch"); + throw new RequestSignatureError("request_signature_invalid"); + } + // 12: replay check + if (await ctx.isReplayed(parsed.keyid!, parsed.nonce!)) { + throw new RequestSignatureError("request_signature_replayed"); + } + // 13: replay insert (only after all checks pass) + await ctx.recordNonce(parsed.keyid!, parsed.nonce!, (parsed.expires! - now) + 60); +} +``` + +### Budget Validation + +Validate budgets before committing: + +```javascript +async function validateBudget(request, account) { + const { budget } = request; + + // Check positive amount + if (budget.amount <= 0) { + throw new ValidationError('Budget must be positive'); + } + + // Check against account limits + const limits = await getAccountLimits(account.account_id); + if (budget.amount > limits.daily_spend_limit) { + throw new BudgetError('Exceeds daily spend limit'); + } + + // Check available balance + const balance = await getAvailableBalance(account.account_id); + if (budget.amount > balance) { + throw new BudgetError('Insufficient balance'); + } +} +``` + +## Transport Security + +AdCP's application-layer security primitives (9421 signing, JWS governance, idempotency) assume the transport does not help the attacker. A misconfigured TLS stack breaks that assumption — it downgrades a protocol designed to withstand active on-path adversaries into one that trusts every intermediary. + +This section is normative for every AdCP endpoint — inbound (seller and buyer API surfaces) and outbound (JWKS fetch, brand.json fetch, revocation list fetch, webhook delivery). It is deliberately prescriptive so operators do not have to reason from first principles about cipher suites at 3 a.m. + +### TLS version policy + +- **TLS 1.3 is RECOMMENDED** for every AdCP endpoint. +- **TLS 1.2 is the minimum.** Endpoints MUST reject TLS 1.1 and below at the handshake. +- **Client-side verifiers** (e.g., an AdCP server fetching a counterparty's JWKS, brand.json, or revocation list) MUST refuse to negotiate below TLS 1.2. Libraries that still default to TLS 1.0 for "compatibility" MUST be configured explicitly. +- SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1 MUST NOT be enabled — not for any endpoint, not for any legacy partner, not even on a separate port. + +### Cipher suites and algorithms + +- TLS 1.3: use the IETF-defined suites (`TLS_AES_128_GCM_SHA256`, `TLS_AES_256_GCM_SHA384`, `TLS_CHACHA20_POLY1305_SHA256`). All three are AEAD; no other TLS 1.3 suites exist. Do not disable any of them arbitrarily — operators who disable ChaCha20 on "speed" grounds are one client quirk away from broken mobile clients. +- TLS 1.2: restrict to **AEAD-only** ECDHE suites. The permitted set is `ECDHE-ECDSA-AES128-GCM-SHA256`, `ECDHE-ECDSA-AES256-GCM-SHA384`, `ECDHE-ECDSA-CHACHA20-POLY1305`, `ECDHE-RSA-AES128-GCM-SHA256`, `ECDHE-RSA-AES256-GCM-SHA384`, `ECDHE-RSA-CHACHA20-POLY1305`. +- CBC-MAC, RC4, 3DES, DES, NULL, EXPORT, anonymous DH, and static RSA key-exchange suites MUST be disabled on TLS 1.2 — their presence silently downgrades the security properties of everything built above the handshake. +- Server certificates MUST use ECDSA (P-256 or P-384) or RSA ≥ 2048 bits. RSA < 2048 MUST NOT be used. +- Endpoints MUST prefer server-side cipher ordering (OpenSSL `SSL_OP_CIPHER_SERVER_PREFERENCE`, nginx `ssl_prefer_server_ciphers on`) so a weak client cannot force a weak suite when a strong one is mutually available. + +### Certificate validation (outbound fetches) + +Every outbound HTTPS request AdCP makes — JWKS, brand.json, revocation list, webhook callback, aggregator proxy — MUST perform full PKIX validation. The specific checks: + +- **Trust chain** MUST terminate at a public root the operator has intentionally included. No `--insecure`, no `verify=False`, no `rejectUnauthorized: false` anywhere in production code paths. This is the single most common production compromise — an engineer turns off verification to work around a cert issue in staging, the flag ships. +- **SAN match** is the authoritative identity check. The certificate MUST have a Subject Alternative Name entry matching the URL host. CN-only fallback MUST NOT be accepted; major HTTP clients still support it for legacy reasons, but AdCP verifiers MUST require SAN. +- **Expiry** MUST be checked against the current clock. Fetching a JWKS from a domain whose TLS cert expired last week is a governance red flag, not a compatibility problem. +- **Hostname verification** MUST be enabled in the library config. Several popular HTTP client libraries ship with hostname verification on by default; a surprising number have a flag that disables it. AdCP implementations MUST assert hostname verification is on, not assume it. +- **OCSP stapling** SHOULD be accepted when offered; OCSP must-staple on operator-controlled certificates is RECOMMENDED. Must-staple turns a missing staple into a hard failure, which closes the soft-fail-on-OCSP loophole. +- **Certificate Transparency (CT)** SCTs SHOULD be checked on endpoints serving regulated spend. Browsers already enforce CT; AdCP SDKs fetching governance JWKS on a regulated-category workflow SHOULD too, so a hidden mis-issued cert is detectable. +- **Pinning** is NOT required at the protocol layer and SHOULD be avoided for counterparty-supplied URLs (brand.json, JWKS) because it collides with legitimate operator cert rotation. Pinning to a public-CA chain (intermediate-pin) is acceptable; pinning to a specific leaf cert is discouraged. + +### Inbound server-side headers + +```javascript +app.use((req, res, next) => { + // HSTS: 1 year, include subdomains, preload-eligible. MUST be on every HTTPS response. + res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload'); + + // No framing of AdCP API responses — even though they're JSON, frame isolation + // protects any error or debug HTML that could leak through. + res.setHeader('X-Frame-Options', 'DENY'); + + // MIME sniffing off: responses declare their type, clients MUST respect it. + res.setHeader('X-Content-Type-Options', 'nosniff'); + + // Prevent referrers leaking to external URLs supplied by counterparties. + res.setHeader('Referrer-Policy', 'no-referrer'); + + // AdCP endpoints serve no browser-facing HTML — block script-source loading outright. + // If your operator reuses the same origin for a dashboard, adjust this per-path. + res.setHeader('Content-Security-Policy', "default-src 'none'; frame-ancestors 'none'"); + + next(); +}); +``` + +**HSTS max-age MUST be ≥ 31536000 (1 year)** for any domain serving an AdCP endpoint. `includeSubDomains` MUST be set unless the operator has a documented reason not to. Domains serving spend-committing AdCP endpoints SHOULD be submitted to the HSTS preload list. + +### Client / outbound TLS hardening + +Outbound-fetch code paths (governance JWKS, brand.json, revocation list, webhook delivery, aggregator proxy) MUST: + +- Use a connection pool with a fixed per-host cap and a fixed overall cap. Unbounded pools are a resource-exhaustion surface. +- Cap TLS handshake time at 10 s and total request time at 30 s by default — counterparty-supplied URLs are a tarpit DoS vector otherwise. +- Pin the connection to the IP address that passed the [SSRF controls](#webhook-url-validation-ssrf) — DNS re-resolution between the SSRF check and the actual connect is how TOCTOU bypasses land. +- Refuse redirects on security-sensitive fetches. JWKS, brand.json, revocation list, and webhook-callback fetches MUST NOT follow redirects; the [brand.json resolution rule](#buyer-identity-resolution) already says "one redirect (`authoritative_location` or `house` variant), no chains," and the initial `/.well-known/adagents.json` fetch follows same-registrable-domain redirects only (apex↔www, HTTPS-preserving, ≤ 3 hops, anchored on the originally-requested domain) — everywhere else, zero. The `adagents.json` `authoritative_location` dereference is "everywhere else": zero redirects. +- Disable session resumption across trust boundaries. Resuming a TLS session with an attacker-controlled counterparty onto a later verified counterparty (same IP via DNS rebind) is a well-known class of confusion; library defaults are usually fine, but the operator MUST audit. + +### TLS renegotiation and downgrade + +- TLS 1.2 **secure renegotiation** (RFC 5746) MUST be enabled if renegotiation is supported at all. Insecure-renegotiation-tolerant stacks are a MUST-disable. +- **TLS compression** (CRIME) MUST be off. +- **Heartbeat extension** MUST be off on TLS 1.2 endpoints (Heartbleed lineage). +- **0-RTT / early-data** on TLS 1.3 MUST NOT be enabled for any endpoint that accepts mutating AdCP operations. 0-RTT is replayable by design; idempotency and signature-nonce dedup are not free rescues once the request has hit application logic. Read-only `get_adcp_capabilities` MAY use 0-RTT; everything else MUST NOT. + +### mTLS transport + +When [mTLS](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#mtls) is the authentication mechanism: + +- The client certificate SAN / Subject MUST match the buyer's registered domain as declared in `adagents.json` or `brand.json`. Relying on any header field (`X-Forwarded-Client-Cert`, `X-Client-DN`, etc.) is [explicitly forbidden](#buyer-identity-resolution) — header fields can be injected across misconfigured proxies. +- The terminating edge (load balancer, mesh sidecar) MUST forward the verified certificate identity to the AdCP server over an in-cluster channel the server can authenticate. Unauthenticated sidecar headers are a bypass — deploy mTLS end-to-end, or pin the in-cluster channel. +- Client certificates MUST be checked against a CRL or OCSP responder operated by the operator. "Issued by us" is not the same as "still valid." + +### Private-network and metadata protection + +This section's transport controls do not substitute for the [SSRF controls](#webhook-url-validation-ssrf) on counterparty-supplied URLs. Every outbound fetch to a counterparty URL MUST apply the SSRF rules — reject non-HTTPS, reject IPs in reserved ranges (including cloud-metadata addresses), refuse redirects, cap size and time. TLS is useless if the URL points at `169.254.169.254`. + +### What this section does NOT replace + +Transport security is the floor, not the ceiling. Even a flawless TLS stack does not replace: + +- **Application-layer body integrity** ([request signing](#request-signing) and [webhook callbacks](#webhook-callbacks)) — TLS protects the wire, not the payload after a compromised intermediary. +- **Governance attestation** ([signed governance context](#signed-governance-context)) — TLS does not tell the seller whether the buyer's governance agent authorized this spend. +- **Idempotency** ([request safety](#request-safety)) — TLS does not prevent the sender from retrying after a network timeout. + +Operators that confuse "we have a modern TLS configuration" with "our AdCP deployment is secure" are exactly the operators the body-bound signature profile exists to defend against. + +## Input Validation + +### Request Validation + +Validate all user-provided input: + +```javascript +const INPUT_LIMITS = { + targeting_brief_max_length: 5000, + creative_upload_max_size: 100 * 1024 * 1024, // 100MB + max_formats_per_request: 50, + max_products_per_query: 100 +}; + +function validateRequest(request) { + // Check string lengths + if (request.brief?.length > INPUT_LIMITS.targeting_brief_max_length) { + throw new ValidationError('Brief exceeds maximum length'); + } + + // Validate IDs are proper UUIDs + if (request.product_id && !isValidUUID(request.product_id)) { + throw new ValidationError('Invalid product_id format'); + } + + // Reject unexpected fields + const allowedFields = ['brief', 'product_id', 'budget', 'context_id']; + for (const field of Object.keys(request)) { + if (!allowedFields.includes(field)) { + throw new ValidationError(`Unexpected field: ${field}`); + } + } +} +``` + +### SQL Injection Prevention + +Always use parameterized queries: + +```javascript +// GOOD: Parameterized query (request-supplied account_id after auth precheck) +const result = await db.query( + 'SELECT * FROM media_buys WHERE id = $1 AND account_id = $2', + [mediaBuyId, request.account.account_id] +); + +// BAD: String concatenation (NEVER do this) +// const result = await db.query( +// `SELECT * FROM media_buys WHERE id = '${mediaBuyId}'` +// ); +``` + +## Audit Logging + +### Required Log Events + +Log all security-relevant events: + +```javascript +const LOG_EVENTS = { + AUTH_SUCCESS: 'auth_success', + AUTH_FAILURE: 'auth_failure', + BUDGET_COMMIT: 'budget_commit', + BUDGET_MODIFY: 'budget_modify', + ACCESS_DENIED: 'access_denied', + WEBHOOK_VERIFIED: 'webhook_verified', + WEBHOOK_REJECTED: 'webhook_rejected' +}; + +function logSecurityEvent(eventType, details) { + console.log(JSON.stringify({ + event: eventType, + timestamp: new Date().toISOString(), + agent_id: details.agentId, + account_id: details.accountId, + ip_address: details.ipAddress, + resource: details.resource, + outcome: details.outcome, + // NEVER log: credentials, PII, targeting briefs + })); +} +``` + +### Log Retention + +- Security logs: 90 days minimum (365 days recommended) +- Financial logs: 7 years (compliance requirement) +- Access logs: 30 days minimum + +## Security Checklist + +### For Publishers (AdCP Servers) + +- [ ] Implement strong authentication (OAuth 2.0, API keys, or mTLS) +- [ ] Enforce agent and account isolation in all database queries +- [ ] Implement idempotency for financial operations +- [ ] Validate all input with strict schema validation +- [ ] Use TLS 1.3+ for all communications +- [ ] Verify webhook signatures cryptographically +- [ ] Log all security events immutably + +### For Buyer Agents (AdCP Clients) + +- [ ] Store credentials in secure key management system +- [ ] Rotate credentials every 90 days +- [ ] Use HTTPS for all AdCP communications +- [ ] Validate responses from publishers +- [ ] Implement alerts for unusual spending patterns + +### For Orchestrators (Multi-Agent, Multi-Account) + +- [ ] Store each agent's credentials separately (encrypted) +- [ ] Enforce agent and account filtering in ALL queries +- [ ] Use row-level security in databases +- [ ] Log all operations with agent and account identity +- [ ] Implement per-agent rate limiting + +## Next Steps + +- **Security Model**: See [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) for the threat model and the five-layer defense narrative this reference implements +- **Webhooks**: See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for webhook security patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) for authentication errors +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design) for multi-tenant security diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning.mdx new file mode 100644 index 0000000000..2bddd4edc9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning.mdx @@ -0,0 +1,149 @@ +--- +title: Webhook Verifier Tuning Guide +sidebarTitle: Webhook Verifier Tuning +description: "Non-normative tuning recipes for webhook verifier thresholds — starting values, baselining methodology, and attack-scenario walkthroughs." +"og:title": "AdCP — Webhook Verifier Tuning Guide" +--- + + +This document is non-normative. It provides **starting values** and a tuning methodology for the webhook verifier thresholds whose **structural shape** is specified in [Webhook Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-security). The normative spec specifies only the category (short-window ratio, medium-window ratio, long-window ratio, proportional ceiling) and the requirement that thresholds be operator-configurable. This guide tells you where to start and how to tune. + + + +**First-30-days oracle risk.** The starting values below are published, therefore attacker-known. A verifier running the shipped defaults is running against an oracle until operators tune the thresholds to their own traffic. **Operators MUST tune each threshold within 30 days of first deployment**; verifiers running published starting values past 30 days are running against a known attacker tuning target. Implementations SHOULD randomize each starting threshold on first deployment, drawing from a log-uniform distribution over [0.5×, 2×] the starting value (equivalently: ratio-uniform jitter with a 4× spread between the narrowest and widest defaults across a fleet). Narrower distributions (e.g., ±30%, giving only a 1.86× spread) let a disciplined attacker tune to 0.7× the published value and stay under every jittered deployment in the fleet; log-uniform over [0.5×, 2×] forces the attacker to cover a 4× range, which starts to cost meaningfully in attack volume. **Implementations SHOULD log or alarm a `threshold_tuning_overdue` event** when any threshold remains at its shipped starting value more than 30 days past the verifier's first admission — this gives the 30-day tuning rule a testable, auditable hook (without it, the rule is operator-diligence-only and silently fails when diligence lapses). + + +**Why this guide is separate from the spec.** Publishing concrete threshold values as normative defaults hands attackers an oracle — a disciplined attacker reads the spec and tunes their attack to stay just under the published values. The normative spec deliberately says *what shape the rule has*; this guide says *what numbers to start with*. Operators MUST treat these as starting values, observe their own traffic, and adjust. + +## The rule you're tuning + +Verifiers MUST track new-keyid admission pressure and SHOULD alert when the rate exceeds **any** of four thresholds (whichever triggers first). The normative spec names these four thresholds by category; this guide gives starting values for each category. + +## Starting values + +| # | Category | Starting formula | What it catches | +|---|---|---|---| +| **a** | Short-window ratio | `3× the 24-hour moving average` of new-keyid admission rate | Sudden spikes against a stable baseline — the classic "abnormal traffic volume" signal. | +| **b** | Medium-window ratio | `2× the 30-day P95` | Multi-week ramp-up attacks. The 30-day P95 is dominated by the baseline-traffic tail, so a 2–3 week ramp cannot drift the reference into the attack. | +| **c** | Long-window ratio | `1.5× the 90-day P99` | Multi-month ramp-up attacks. A 60–90 day staged compromise that drifts the 30-day P95 still trips the 90-day P99 because the P99 tail moves much more slowly. | +| **d** | Proportional ceiling | `max(20 distinct new keyids, 10% × 30-day unique-keyid count) per 5-minute window` | Sparse-traffic verifiers whose moving averages and P95/P99 values are near zero (small operators), AND auto-scaling for operators of any size. | + +**These are starting values, not normative defaults.** A fresh deployment can use them day one. As traffic baselines stabilize, tighten or loosen based on the observed false-positive and false-negative rates. + +## Baselining methodology + +Before tuning the thresholds, establish the baseline shape of your verifier's traffic: + +1. **Collect 30 days of new-keyid admissions** without alarming. Instrument the rate but do not page operators. +2. **Compute your deployment's P50, P95, P99** of new-keyid admissions per 5-minute window. +3. **Track the unique-keyid count per 30-day sliding window.** This is the denominator for clause (d). +4. **Document your median and peak legitimate onboarding batches.** If you routinely onboard 50 new signers per day (batched into a 10-minute window twice a week), clause (d)'s fixed floor of 20/5-min is too tight; raise it to match your largest legitimate batch. + +Once the baseline is known, each clause (a)/(b)/(c)/(d) becomes a concrete threshold in your deployment. The spec's OR-of-four shape means any one clause tripping is enough for an alert — so the thresholds do not need to agree on shape, they need to each close a different attacker pattern. + +## Attack-scenario walkthroughs + +### Scenario 1: Sudden mass-compromise + +An attacker compromises 100 signer keys over a weekend and begins sending webhooks from all 100 simultaneously starting Monday morning. + +- **What trips**: clause (a). The 24-hour moving average of new-keyid admissions is ~0 (on a stable verifier); 100 new keyids in one 5-min window is orders of magnitude above `3×` that. +- **Alarm detail the operator needs**: which clause (a), so the triage team knows to look for a mass-compromise pattern rather than a single-key spike. + +### Scenario 2: Patient multi-week ramp + +An attacker compromises 5 keys in week 1, 10 in week 2, 20 in week 3, 40 in week 4 — doubling weekly, staying under any "3× yesterday" rule because today's rate is never more than 2× yesterday. + +- **What trips**: clause (b). The 30-day P95 is dominated by the first three weeks of baseline traffic, so `2×` that is roughly the normal peak; by week 4, 40 keyids/day is 8× the weekly baseline, well over the P95 anchor. +- **Miss if you only had clause (a)**: yes. 2× daily ramping stays under 3× short-window MA permanently. + +### Scenario 3: Multi-quarter staged compromise + +An attacker compromises 1 key per day for 90 days — never triggering any daily-or-weekly ratio because today's rate is roughly equal to yesterday's. + +- **What trips**: clause (c). The 90-day P99 is anchored by baseline traffic much older than the attack; even the last 2 weeks of the ramp (days 76–90) register as above `1.5× baseline` P99. +- **Miss if you only had clauses (a) and (b)**: yes. Monotonic slow ramps drift both the 24-hour MA and the 30-day P95 with them. + +### Scenario 4: Sparse-traffic verifier, burst attack + +A verifier with 20 total active signers and near-zero new-keyid traffic suddenly sees 15 new keyids in a 5-minute window. + +- **What trips**: nothing. The ratio rules (a)/(b)/(c) compare against near-zero baselines (`3× 0.01 = 0.03`) and would trip on any positive admission including legitimate single-seller onboarding — so they produce too much noise to alarm on at sparse-traffic verifiers. Clause (d)'s `max(20, 10%×20) = max(20, 2) = 20` fixed floor requires more than 20 new keyids per 5-min window before firing. 15 is under the floor. +- **What the operator sees**: nothing. 15 new keyids at a sparse-traffic verifier is within normal bounds; operators running sparse-traffic verifiers SHOULD raise the fixed floor if routine onboarding regularly exceeds it, OR leave the floor at 20 if routine onboarding stays under (the attacker's ceiling becomes ≤20/window, which sharply limits aggregate pressure over reasonable windows). + +### Scenario 5: Large-verifier ceiling scaling + +A verifier with 10,000 active signers sees 500 new keyids in a 5-minute window. + +- **What trips**: nothing from clause (d). 10% × 10,000 = 1,000; 500 does not exceed the proportional floor. Depending on the verifier's baseline, clauses (a) or (b) might trip if 500/5-min is materially above the 24-hour moving average or the 30-day P95. +- **What changes with scale**: at a small verifier (100 signers), 500 new keyids is 5× the entire signer base — obviously attack. Clause (d)'s `max(20, 10%×100) = 20` floor means 500 is 25× over, firing immediately. The proportional shape auto-scales. + +### Scenario 6: Onboarding-burst false positive + +A verifier onboarding 200 new sellers in a planned Tuesday batch trips clause (a) or (d) during the batch. + +- **What the operator does**: raises the fixed floor in clause (d) temporarily (documented in change-control), OR silences the alert for the known onboarding window. After the batch, floor returns to baseline. Document the raise so it can be audited and floored-back. Raised-floor windows SHOULD be kept as short and internally-scoped as possible — publicly-announced onboarding windows are an attacker planning signal (see Scenario 10). +- **Why automatic revocation is wrong here**: the spec's `Alarms SHOULD route to incident response, not automatic revocation` rule exists specifically for this case. Machine-derivable "attack vs onboarding" is unreliable; operator context is the distinguishing signal. + +### Scenario 7: Legitimate key-rotation storm + +A peer seller's root CA is revoked and all 500 of their signing agents rotate to fresh `keyid`s within a 10-minute window. Your verifier sees 500 new keyids in one 5-min window and 0 in the next. + +- **What trips**: clauses (a) and likely (d). Shape is indistinguishable from Scenario 1 (sudden mass-compromise) at the rate-only level. +- **What the operator does**: triage the alarm, recognize the event shape from the peer seller's notification (CA-compromise incidents are typically pre-announced to peers), mark as legitimate in the incident record, do NOT auto-revoke. If the peer did NOT pre-announce, treat exactly as Scenario 1 until peer contact confirms. **Do not silence the alarm preemptively based on peer announcements alone** — a compromised peer pre-announcement channel is itself an attacker tactic; the alarm firing and being triaged is the detection-in-depth layer. + +### Scenario 8: Thin-history window attack (days 1–90 post-deployment) + +A verifier deployed yesterday has no 30-day P95 data and no 90-day P99 data. Clauses (b) and (c) degrade gracefully to the clause (d) floor until the percentile windows mature. An attacker who knows the verifier is new stages a ramp that stays under clause (d)'s `max(20, 10%×count)` floor for the first 90 days, during which only clause (a) provides meaningful coverage. + +- **What trips**: clause (a) only — and only on sufficiently large short-window spikes. Clauses (b), (c), (d) all degrade to the floor-dominated case. +- **What the operator does**: for new verifiers, SHOULD tighten clause (d)'s absolute floor below the published starting value (e.g., 10 instead of 20) for the first 90 days while P95/P99 mature. Treat this as a documented first-deployment posture, not permanent tuning — relax back to the mature-verifier floor once the percentile windows have real data. +- **Why clauses (b)/(c)/(d) are not independent during warmup**: clause (c) explicitly degrades to `1.5× max(observed_P99, clause_d_floor)`, so during days 1–90 clauses (c) and (d) are redundant. This is a known limitation of the rule shape; the tightened-floor posture is the mitigation. + +### Scenario 9: Intermittent low-volume attack (rule-shape limitation) + +An attacker compromises 500 keys and emits 1 new keyid every 30 minutes across the fleet — roughly 48/day. Against a clause (d) floor of `max(20, 10% × 200-signer-count) = 20`/5-min, each 5-min window sees 0 or at most 1–2 new keyids. Over 30 days the attack admits 1,440 new keyids — which BECOMES part of the 30-day unique-keyid count clause (b) compares against. The attack is pre-baked into the baseline. + +- **What trips**: nothing. +- **What the operator sees**: elevated unique-keyid count over 30 days, but no single-window alarm fires. +- **Why this is a known limitation**: the admission-pressure rule closes volume-spike attacks, not low-rate long-duration attacks smoothed across long windows. **The per-keyid cap (step 9a) and the aggregate cache cap do NOT close this gap** — they bound cache size, not key-population growth, and 1,440 new keyids/month is ~0.014% of a 10M aggregate cap. At the rate-window level, every clause (a/b/c/d) trips at zero and the aggregate-cap alarm never fires. Operators with slow-drip key-population growth in their threat model **MUST layer application-level detection** (signer-reputation scoring, per-seller traffic-anomaly detection over business-meaningful windows like "signals delivered per billing period", new-keyid admission tracked against a declared-fleet-size expectation). Relying only on the admission-pressure rule plus the caps ships a verifier that has the attack class acknowledged in its spec but no actual detection for it. + +### Scenario 10: Onboarding-window-timed attack + +An attacker monitors the verifier operator's public announcements (product launches, fiscal-year boundaries, platform partnerships). The operator raises clause (d)'s floor to `200` for a scheduled Tuesday onboarding window per Scenario 6. The attacker times their mass-compromise to that Tuesday, riding the temporarily-raised floor. + +- **What trips**: nothing during the raised-floor window. +- **What the operator does**: during raised-floor windows, alarms on clauses (a)/(b)/(c) SHOULD escalate to **mandatory human review, not auto-suppress**, even though clause (d) is intentionally loose. Keep raised-floor windows as short as possible and internally-scoped — avoid publicly announcing that "new-seller onboarding will happen on date X" in a form that attackers can schedule against. Where public announcements are unavoidable (regulatory disclosures, customer-facing launches), SHOULD increase out-of-band detection during the window (traffic-pattern analysis, seller-claim cross-validation, request-body sampling). + +### Scenario 11: Baseline reset at a mature verifier (failover, cache rebuild, config change) + +A mature verifier with 90 days of stable P95/P99 data fails over to a standby pool whose baseline-computation cache is empty. Clauses (b)/(c) degrade to the clause (d) floor-dominated case for the duration of the rebuild — mirroring Scenario 8 (thin-history window) but at a verifier that was supposed to be mature. An attacker who knows failover events happen (public status-page incidents, scheduled maintenance windows, observable response-time changes) can time an attack to land during the rebuild window. + +- **What trips**: clause (a) only (same as Scenario 8). Clauses (b)/(c) have no baseline data. +- **What the operator does**: treat as a *temporary* thin-history posture. Persist baseline-statistic state across failover (Redis / shared dedup service) rather than rebuilding from the empty cache — the same infrastructure choice the spec already requires for the replay cache under cross-endpoint scoping also fixes this. If persistence is not possible, tighten clause (d)'s absolute floor during the rebuild window and escalate (a)/(b)/(c) alarms to human review per Scenario 10. +- **Why this is spec-distinct from Scenario 8**: Scenario 8 is a first-deployment posture expected to stabilize in 90 days. Scenario 11 is a mature-verifier operational-event posture that can recur indefinitely if operators don't persist baselines across failover. Spec cannot mandate the persistence choice (deployment-internal); the tuning guide can call it out as a known attack-timing opportunity that operators are responsible for mitigating. + +## Tuning adjustments to consider + +| Observation | Adjustment | +|---|---| +| Too many false positives from clause (a) during legitimate bursts | Raise the clause (a) ratio from `3×` to `4×` or `5×`. Do NOT lower the threshold on clauses (b)/(c)/(d) to compensate — they catch different attacker shapes. | +| Clause (d) fires on routine onboarding | Raise the fixed floor component of clause (d) to match the largest legitimate batch size. Keep the `10%×30d-unique-count` proportional part unchanged. | +| Clause (c) never fires during red-team exercises that run for < 60 days | Expected — clause (c) is the multi-month anchor. Red-team exercises SHOULD include a 60-day slow-ramp scenario to validate clause (c) is correctly wired to the 90-day P99. | +| Alarm shows clauses (a) and (d) both fired for the same event | Report the first clause that tripped in the alarm payload (per spec). Both clauses surfacing is informational, not a bug. | +| Verifier is too small to have meaningful P99 data | Clause (c) degrades gracefully to `1.5× max(observed_P99, clause_d_floor)` — never lower than the proportional ceiling. Track for 90 days, then the P99 becomes meaningful. | + +## What NOT to do + +- **Do NOT publish your tuned threshold values externally.** Thresholds are deployment-internal operational parameters. This rule distinguishes three audiences: + - **Public disclosure** (blog posts, marketing copy, public config repositories, open-source defaults, conference talks): **prohibited**. This is the attacker oracle this guide exists to close. + - **Attested disclosure under NDA** to qualified security auditors, regulators, or contracted red teams: **permitted**. Detection-posture assessment is itself a defense-in-depth practice and SOC 2 / ISO 27001 audits may require it. The NDA scope SHOULD limit redistribution and mandate deletion at engagement close. + - **Internal operator runbooks, incident-response runbooks, version-controlled operator config**: **required**. The detecting team needs the values to triage effectively, and post-incident forensics require knowing what the thresholds were at the time of the event. +- **Do NOT tune all four thresholds to the same value.** Each clause catches a different attacker pattern. Collapsing them loses detection coverage. +- **Do NOT auto-revoke on alarm.** The alarm is a signal for incident response, not a remediation action. Automatic revocation of signer keys on admission-pressure alarm creates a denial-of-service vector: any party driving legitimate new-signer onboarding can trip the alarm and cause mass revocation. +- **Do NOT hardcode the starting values in your deployment config.** Make each threshold a tunable parameter (e.g., environment variable, config file) so operators can adjust without code changes. Hardcoded starting values become de facto operator-visible defaults, which re-introduces the attacker oracle. + +## Related + +- [Webhook Security → Webhook replay dedup sizing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-replay-dedup-sizing) — normative spec for the rule this guide tunes. Scroll to the §Webhook replay dedup sizing heading directly beneath the 15-check verifier flow; the "New-keyid admission pressure" bullet is the rule whose four categories the tuning guide populates with starting values. +- [Webhook verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks) — the full 15-check flow. Step 14b (logging discipline) is a sub-step under step 14 (body well-formedness); its sanitization rules (non-printable classification, 32-byte UTF-8 codepoint-safe truncation, count cap at 4) apply to the diagnostic information this guide assumes alarms carry. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state.mdx new file mode 100644 index 0000000000..5db17826d4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state.mdx @@ -0,0 +1,247 @@ +--- +title: Account state +description: "AdCP account state model: how accounts hold catalogs, creatives, audiences, event sources, and campaigns. Sync tasks, upsert semantics, and async approval workflows." +"og:title": "AdCP — Account state" +--- + +# Account state + +AdCP accounts are stateful containers. Before a buyer can run a campaign on a seller's platform, they build up state on the account: product catalogs, creative assets, audience lists, conversion tracking. Each piece of state has its own sync task, its own approval workflow, and its own lifecycle. + +This is different from earlier versions of AdCP where accounts were billing references and most operations were stateless. In AdCP 3.0, the account is the central object that ties everything together. + +## State domains + +An account holds six categories of state, each managed by a dedicated task: + +| Domain | Sync task | What it manages | Lifecycle | +|--------|-----------|-----------------|-----------| +| **Identity** | `sync_accounts` | Who the buyer is, which brand, billing terms | Setup once, update rarely | +| **Catalogs** | `sync_catalogs` | Product feeds, inventory, stores, promotions, offerings | Continuous — feeds update hourly/daily | +| **Creatives** | `sync_creatives` | Creative assets with format-specific manifests | Per-campaign, updated as needed | +| **Audiences** | `sync_audiences` | First-party CRM audience lists | Incremental — add/remove members over time | +| **Event sources** | `sync_event_sources` | Conversion tracking configuration (pixels, S2S, app events) | Setup once per source, rarely changes | +| **Governance** | `sync_governance` | Governance agent configuration for this account | Setup once per account, update when governance agents change | +| **Campaigns** | `create_media_buy` | Active campaigns with packages and targeting | Created when ready, updated throughout flight | + +Each sync task follows the same pattern: +- **Upsert semantics** — items are matched by ID, created if new, updated if existing +- **Discovery mode** — omit the items array to see what's already on the account +- **Async approval** — platforms may review items before activating them +- **Per-item status** — individual items can succeed or fail independently + +## Setup sequence + +A typical buying workflow builds account state in dependency order. Each step requires the previous steps to be complete: + +```mermaid +flowchart LR + A[sync_accounts] --> B[sync_catalogs] + A --> C[sync_event_sources] + B --> D[sync_creatives] + C --> D + A --> E[sync_audiences] + A --> G[sync_governance] + D --> F[create_media_buy] + E --> F + G --> F +``` + +### 1. Establish the account + +`sync_accounts` declares who the buyer is and how they pay. The seller acknowledges the relationship and returns status and billing terms. + +```json +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "pinnacle-media.com", + "billing": "operator" + }] +} +``` + +### 2. Sync catalogs + +`sync_catalogs` makes product data available on the account. Formats declare what catalog types they need via `catalog` asset types in their `assets` array, so the buyer syncs the right feeds before submitting creatives. + +```json +{ + "account": { "account_id": "acct_001" }, + "catalogs": [ + { + "catalog_id": "product-feed", + "type": "product", + "url": "https://feeds.acme.com/products.xml", + "feed_format": "google_merchant_center", + "update_frequency": "daily" + }, + { + "catalog_id": "store-locations", + "type": "store", + "url": "https://feeds.acme.com/stores.json", + "feed_format": "custom", + "update_frequency": "weekly" + } + ] +} +``` + +The platform fetches and validates each feed. Items may be approved, rejected, or flagged — similar to Google Merchant Center reviewing product listings. + +### 3. Configure event sources + +`sync_event_sources` sets up conversion tracking so the platform can attribute outcomes to ad exposure. + +```json +{ + "account": { "account_id": "acct_001" }, + "event_sources": [{ + "event_source_id": "web-pixel", + "name": "Website Conversions", + "type": "pixel", + "events": ["purchase", "add_to_cart", "lead"] + }] +} +``` + +### 4. Configure governance + +[`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) registers governance agents on the account. Once configured, sellers with governance support will call [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before confirming media buys. + +```json +{ + "account": { "account_id": "acct_001" }, + "governance_agents": [{ + "agent_url": "https://governance.acme-corp.com/adcp", + "domains": ["campaign", "creative", "content_standards"] + }] +} +``` + + +Changing governance agents on a live account affects all active campaigns. If a governance agent is removed, sellers will stop calling `check_governance` for that domain. If a new agent is added, existing campaigns are not retroactively validated — only new transactions go through the updated governance configuration. + + +### 5. Sync creatives + +`sync_creatives` submits creative assets that reference the catalogs synced in step 2. For catalog-driven formats, the creative's `catalogs` field references synced catalogs by `catalog_id` instead of embedding items inline. + +```json +{ + "account": { "account_id": "acct_001" }, + "creatives": [{ + "creative_id": "product-carousel", + "format_kind": "image_carousel", + "format_option_ref": { "scope": "product", "format_option_id": "product_carousel_with_inventory" }, + "catalogs": [{ + "catalog_id": "product-feed", + "type": "product", + "tags": ["summer"] + }], + "assets": { + "banner_image": { + "url": "https://cdn.acmecorp.com/carousel-hero.jpg", + "width": 1200, + "height": 628 + } + } + }] +} +``` + +### 6. Upload audiences + +`sync_audiences` uploads first-party audience lists for targeting. Members are hashed before sending. + +```json +{ + "account": { "account_id": "acct_001" }, + "audiences": [{ + "audience_id": "high-value-customers", + "name": "High Value Customers", + "add": [ + { "hashed_email": "a1b2c3..." }, + { "hashed_email": "d4e5f6..." } + ] + }] +} +``` + +### 7. Create the campaign + +With all state in place, `create_media_buy` activates a campaign that references the synced state: + +```json +{ + "account": { "account_id": "acct_001" }, + "name": "Summer Product Launch", + "packages": [{ + "product_id": "sponsored-products", + "creative_ids": ["product-carousel"], + "targeting_overlay": { + "audiences": { "include": ["high-value-customers"] } + } + }] +} +``` + +## Discovery + +Every sync task supports **discovery mode**: call the task without an items array to see what state already exists on the account. This is how a buying agent learns what a seller already knows about the brand. + +```json +// What catalogs does this account have? +{ "account": { "account_id": "acct_001" } } + +// Response: catalogs already on the account +{ + "catalogs": [ + { "catalog_id": "product-feed", "action": "unchanged", "item_count": 1250 }, + { "catalog_id": "store-locations", "action": "unchanged", "item_count": 45 } + ] +} +``` + +This matters because sellers may already have brand data from other sources — a retailer might have the brand's product catalog from their commerce platform, or a publisher might have creatives from a previous campaign. Discovery lets the buyer build on existing state rather than re-uploading everything. + +## Approval workflows + +Sync tasks are often asynchronous. The platform may need to review items before they're active: + +- **Catalogs**: Product listings go through content policy checks. Items can be approved, rejected, or flagged with warnings. +- **Creatives**: Generative creatives require human approval. Traditional creatives may need policy review. +- **Audiences**: Platforms need time to match hashed identifiers against their user base. +- **Event sources**: Conversion tracking may require pixel verification. + +All sync tasks support `push_notification_config` for webhook callbacks when processing completes. For long-running operations, the platform returns async status updates (working, input-required, submitted) that the buyer polls or receives via webhook. + +## State dependencies + +Some state depends on other state. The platform enforces these dependencies: + +- **Creatives reference catalogs** — a creative that uses `catalog_id: "product-feed"` requires that catalog to be synced first +- **Campaigns reference creatives and audiences** — `create_media_buy` requires the referenced `creative_ids` and audience IDs to exist on the account +- **Event sources enable optimization** — optimization goals on packages reference event sources for attribution + +If a dependency is missing, the platform returns an error explaining what needs to be synced first. + +## Stateless vs stateful operations + +Not everything requires account state. Some tasks are stateless queries: + +| Stateless (no account needed) | Stateful (account required) | +|---|---| +| `get_products` — discover inventory | `create_media_buy` — buy inventory | +| `get_adcp_capabilities` — discover creative operations | `sync_creatives` — upload creatives | +| `get_signals` — discover signals | `activate_signal` — activate signals | +| `get_adcp_capabilities` — discover features | `sync_catalogs` — upload catalogs | + +The pattern: **discovery is stateless, execution is stateful**. You can browse a seller's inventory without an account. You need an account to buy. + +## Related documentation + +- **[Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents)** — Account identity, billing models, and `sync_accounts` details +- **[Async operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations)** — How async approval workflows work +- **[Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)** — Receiving notifications when async operations complete +- **[Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs)** — Typed data feeds that provide the items publishers render in ads diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents.mdx new file mode 100644 index 0000000000..417ed0686a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents.mdx @@ -0,0 +1,553 @@ +--- +title: Accounts and agents +description: "AdCP accounts and agents: the four entities in every transaction (brand, account, operator, agent), account-id namespaces, buyer-declared accounts, and billing configuration." +"og:title": "AdCP — Accounts and agents" +--- + +AdCP distinguishes four entities in every billable operation: + +| Entity | Question | How identified | +|--------|----------|----------------| +| **Brand** | Whose products are advertised? | Brand reference: `domain` + optional `brand_id` and commercial-identity `countries[]` ([brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json)) | +| **Account** | Who gets billed? What rates apply? | [Account reference](#account-references) | +| **Operator** | Who operates on the brand's behalf? | Domain (e.g., `pinnacle-media.com`) | +| **Agent** | What software is placing the buy? | Authenticated session | + +**Brand** — The advertiser whose products or services are promoted. Identified by a `brand` reference (`domain` + optional `brand_id` and ISO country `countries[]`), resolved via `/.well-known/brand.json`. Countries distinguish commercial advertiser identities without becoming delivery targeting. + +**Account** — A billing relationship between a buyer and seller. Determines rate card, payment terms, credit limit, operational timezone, and who receives invoices. Every billable operation requires an account reference — a seller/storefront-assigned `account_id` when the seller or upstream platform owns the canonical account namespace, or an advertiser natural key (`brand`, `operator`, optional `operator_unit`, fixed `currency`, buyer-selected `timezone`, `sandbox`) for buyer-declared accounts. + +**Operator** — The entity driving buys — an agency trading desk, the brand's internal team, or another entity acting on behalf of the advertiser. Identified by domain and verifiable via [authorized operators](#authorized-operators) in `brand.json`. + +**Agent** — The software placing buys and managing campaigns. Authenticates with the seller and may operate on behalf of multiple operators and brands. + +See [Accounts Protocol overview](/dist/docs/3.2.0-beta.4/accounts/overview) for the full commercial model and [sync_accounts](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) for the task reference. + +## What sellers declare + +Sellers configure the `account` section of [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#account): + +**1. Which billing models do you support?** (`supported_billing`) + +The buyer must pass one of these values as `billing` in every `sync_accounts` entry. The seller either accepts or rejects. + +| Billing | Who is invoiced | Use case | +|---------|----------------|----------| +| `operator` | Operator (agency or brand buying direct) | Operator buying on their own terms | +| `agent` | Agent | Agent consolidates billing across brands | +| `advertiser` | Advertiser directly | Operator places orders but advertiser pays (common on social platforms and in DACH B2B workflows) | + +This is an account-level invoiced-party choice. It does not select a payment rail, clearing intermediary, or settlement route for an individual media buy; AdCP payment and settlement remain out of protocol. + +**2. Which account currency models do you support?** (`supported_account_currency_modes`) + +Sellers implementing AdCP 3.2 advertiser-account provisioning advertise one or both values. The field remains optional in the shared 3.x wire schema so existing 3.0 and 3.1 responses continue to validate; absence means the older seller's currency model is not discoverable and does not imply support for either mode. + +| Mode | Provisioning behavior | +|------|------------------------| +| `fixed` | Include one immutable ISO 4217 `currency`; it participates in the advertiser account natural key. | +| `per_media_buy` | Omit account `currency`; select currency on each proposal or media buy. | + +When both are present, the buyer selects the model by including or omitting `currency`. + +**3. Do you require operator-level auth?** (`require_operator_auth`) + +This field determines the authentication model and the account reference shape: + +When `false` (default) — **buyer-declared accounts**: the seller trusts the agent. The agent authenticates once and declares accounts via `sync_accounts`. On subsequent requests, the buyer passes the natural key (`brand` + `operator`) and the seller resolves internally. + +When `true` — **account-id namespaces**: each operator must authenticate with the seller directly. The agent obtains a credential per operator — via OAuth using the seller's `authorization_endpoint`, or via API key out-of-band. Subsequent requests pass a seller-assigned `account_id`. If a credential may access more than one account, the seller MUST expose `list_accounts` and the buyer MUST resolve an explicit account before the first account-scoped request. If a credential is bound to exactly one account, the seller SHOULD expose `list_accounts` returning that singleton; a seller MAY omit `list_accounts` only when it supplies the same explicit account ID through another declared path or out-of-band onboarding. + +For sandbox, the path follows the account namespace: account-id namespaces use pre-existing test accounts from `list_accounts` or out-of-band setup; buyer-declared accounts use `sync_accounts` with `sandbox: true` and reference by natural key. + +Sellers can also declare `account_financials: true` to expose account-level financial data (spend, credit, invoices) via [`get_account_financials`](/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials). This only applies to operator-billed accounts. + +**Example capabilities:** + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + } +} +``` + +Sellers that support `advertiser` billing declare it explicitly: + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent", "advertiser"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + } +} +``` + +These fields combine into common patterns. + +## Seller patterns + +Which kind of platform are you buying from? That determines the account setup pattern. + +| Platform type | Account pattern | `require_operator_auth` | `supported_billing` | +|---------------|-----------------|-------------------------|---------------------| +| [Social / walled garden](#social-platform) | Upstream-managed account-id namespace | `true` | `["operator"]` | +| [Direct publisher](#direct-publisher) | Buyer-declared accounts | `false` | `["operator"]` or `["operator", "agent"]` | +| [DSP / programmatic](#dsp--programmatic) | Buyer-declared accounts | `false` | `["agent"]` | + +### Social platform + +The operator already has an account on the platform — an ad account, a business manager, a self-serve dashboard. The upstream platform owns the canonical account namespace accessible to that credential. The agent obtains the operator's credentials (via OAuth or API key), opens a per-operator session, resolves an explicit account through `list_accounts`, and uses the returned `account_id` values. The platform bills the operator directly. + +**Capabilities:** + +```json +{ + "account": { + "require_operator_auth": true, + "supported_billing": ["operator"], + "supported_account_currency_modes": ["fixed"], + "authorization_endpoint": "https://seller.example.com/oauth/authorize" + } +} +``` + +**Buyer workflow:** + +1. Call `get_adcp_capabilities` — see `require_operator_auth: true` and `authorization_endpoint` +2. For each operator: + a. Obtain operator's credential (OAuth via `authorization_endpoint`, or API key out-of-band) + b. Open a new session with the operator's credential + c. Call `list_accounts` to discover accounts visible to that credential +3. Human or policy selects the correct account from the list +4. Call `get_products` / `create_media_buy` with the operator's session and `{ "account_id": "..." }` + +**list_accounts response:** + +```json +{ + "accounts": [{ + "account_id": "acc_spark_social_001", + "name": "Spark paid social", + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "status": "active", + "billing": "operator", + "account_scope": "operator_brand" + }] +} +``` + +Subsequent calls use the discovered ID: + +```json +{ + "account": { "account_id": "acc_spark_social_001" } +} +``` + +**Key point:** The operator's credential — not the agent's — authorizes all calls in that session. The buyer does not declare or create accounts through AdCP in the 3.0.x account-id model; `list_accounts` mirrors the upstream namespace. If the seller exposes `sync_accounts`, it is only for settings updates against an existing `account_id`, not natural-key provisioning, unless a future explicit capability declares account-id provisioning. + +### Direct publisher + +The publisher trusts the agent but bills the operator directly. The agent sets up accounts via `sync_accounts` — no per-operator login needed. Accounts may require human approval (credit checks, legal agreements) before becoming active. + +Many publishers also accept agent billing (`supported_billing: ["operator", "agent"]`). The buyer chooses per account — operators with a direct relationship use `billing: "operator"`, everything else uses `billing: "agent"`. If the seller doesn't support the requested billing for a particular account, it rejects the request and the agent re-submits with a different model. + +**Capabilities:** + +```json +{ + "account": { + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + } +} +``` + +**Buyer workflow:** + +1. Call `get_adcp_capabilities` — see `require_operator_auth` absent (defaults to `false`) +2. Call `sync_accounts` for each brand/operator pair +3. Wait for account status `active` — may require human to complete credit/legal at `setup.url` +4. Call `get_products` with `account` reference +5. Call `create_media_buy` with `account` reference + +**sync_accounts request — brand buying direct:** + +```json +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "billing": "operator" + }] +} +``` + +Seller acknowledges the request but requires setup before provisioning: + +```json +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "action": "created", + "status": "pending_approval", + "billing": "operator", + "account_scope": "brand", + "setup": { + "url": "https://seller.example.com/advertiser-onboard", + "message": "Complete advertiser registration and credit application" + } + }] +} +``` + +The seller has acknowledged the relationship `(brand: "acme-corp.com", operator: "acme-corp.com", billing: "operator")`, but the account is pending review before it becomes active. A human at Acme Corp completes the setup at the URL. To check progress, the agent either: +- Re-calls `sync_accounts` with the same natural key — the seller returns the updated status +- Receives a webhook notification if `push_notification_config` was provided in the request + +**Key point:** `pending_approval` is the normal path. Every buyer needs a direct relationship with the seller. + +**Billing rejection — operator billing not available:** + +The seller supports operator billing in general, but may not support it for every operator. Here, the agent requests operator billing for an operator without a direct relationship: + +```json +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "billing": "operator" + }] +} +``` + +Seller rejects the request because this operator has no direct billing relationship: + +```json +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "action": "failed", + "status": "rejected", + "errors": [{ + "code": "BILLING_NOT_SUPPORTED", + "message": "Operator billing is not available for this account. Re-submit with billing: \"agent\"." + }] + }] +} +``` + +The agent re-submits with `billing: "agent"` or informs the buyer that operator billing is not available with this seller. Billing is never silently remapped. + +### DSP / programmatic + +All billing flows through the agent. The agent has a standing relationship with the platform and consolidates billing across all brands and operators. Accounts are created instantly — no human approval needed. + +**Capabilities:** + +```json +{ + "account": { + "supported_billing": ["agent"], + "supported_account_currency_modes": ["per_media_buy"] + } +} +``` + +**Buyer workflow:** + +1. Call `get_adcp_capabilities` — see `supported_billing: ["agent"]` +2. Call `sync_accounts` for each brand/operator pair with `billing: "agent"` +3. Accounts are active immediately — no human approval needed +4. Call `get_products` / `create_media_buy` with `account` reference + +**sync_accounts request:** + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "billing": "agent" + }] +} +``` + +Account active immediately: + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "action": "created", + "status": "active", + "billing": "agent", + "account_scope": "operator_brand" + }] +} +``` + +**Key point:** The agent receives a single consolidated invoice. Per-brand accounts give reporting granularity but billing is centralized. + +## Authorized operators + +Brands declare who can represent them in `/.well-known/brand.json` via the `authorized_operators` field. Sellers SHOULD verify operators against this when processing `sync_accounts`. + +```json +{ + "house": { + "domain": "nova-brands.com", + "name": "Nova Brands" + }, + "brands": [ + { "id": "spark", "names": [{"en": "Spark"}] }, + { "id": "glow", "names": [{"en": "Glow"}] } + ], + "authorized_operators": [ + { + "domain": "pinnacle-media.com", + "brands": ["spark", "glow"], + "countries": ["US", "GB", "DE"] + }, + { + "domain": "summit-agency.jp", + "brands": ["spark"], + "countries": ["JP"] + }, + { + "domain": "nova-brands.com", + "brands": ["*"] + } + ] +} +``` + +| Field | Required | Description | +|-------|----------|-------------| +| `domain` | Yes | Operator's domain | +| `brands` | Yes | Brand IDs this operator can represent. `["*"]` means all brands. | +| `countries` | No | ISO 3166-1 alpha-2 country codes. Omit for global authorization. | + +### Verification flow + +1. Resolve `{brand.domain}/.well-known/brand.json` +2. Check `authorized_operators` for matching `domain` with the brand in `brands` +3. If found → proceed (account may still need credit/legal approval) +4. If not found → reject the account (`action: "failed"`) or return `pending_approval` for manual review + +Verification is a trust signal, not a gate. Finding the operator in `brand.json` lets the seller fast-track provisioning. If the operator isn't listed, the seller can still approve through its own review process. + +**Self-authorization is implicit.** When the `operator` domain matches the brand's domain, the brand is operating directly — no listing in `authorized_operators` is needed. + +`authorized_operators` models the interface between the brand and whoever operates on its behalf. It does not model internal agency hierarchies. + +## Buyer-agent identity + +`authorized_operators` tells the seller whether an operator is allowed to represent a brand. It doesn't tell the seller who the *agent* placing the call is, or what commercial relationship is on file with that agent. Those are different questions, and the seller checks both before provisioning. + +Two layers run on every `sync_accounts` request: + +| Layer | Question | Where it lives | +|-------|----------|----------------| +| **Agent identity** | Which buyer agent issued this request? | The seller's onboarding record, looked up by signed-request `agent_url` (when [request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) is in use) or by the bearer / API-key / OAuth credential the agent presented. Signature or credential establishes identity; authorization is a separate check. | +| **Brand-operator authorization** | Is the operator named in the request authorized to act for the brand? | `brand.json` `authorized_operators` (above). Verified whether the request is signed or not. | + +Both layers MUST pass. A signed request from an onboarded agent for an unauthorized operator gets rejected on the brand-operator check; a request from an unrecognized agent for an authorized operator gets rejected on the identity check. Sellers that advertise [`request_signing.required_for`](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#transport-scope) on `sync_accounts` reject unsigned traffic at the identity layer; sellers that don't advertise it MAY still require an established credential mapping before agent-billable values are accepted. + +The brand-operator check runs against the seller's cached `brand.json` per [Operator revocation and caching](#operator-revocation-and-caching) — revocation is eventual. Sellers performing high-value or first-time-on-this-brand provisioning SHOULD bypass the cache to close the TOCTOU window. + +**SDK naming for the brand-operator authorization Protocol.** SDKs that surface a typed Protocol for the brand-operator check (for adopters to plug their own resolver into) SHOULD name it after the file consulted: `BrandAuthorizationResolver` (or equivalent in idiomatic casing). The file is `brand.json/authorized_operators` — the brand-side declaration of who may represent the brand. SDKs SHOULD NOT name this Protocol after `adagents.json`, which is publisher-side / data-provider-side and models a different relationship (which sales agents may sell that publisher's inventory). Naming the buyer-side resolver `AdagentsResolver` confuses the two surfaces and locks adopters into the wrong mental model. This is a spec-side recommendation; SDK conventions track upstream. + +**The agent's commercial state is offline.** Whether a buyer agent is *passthrough-only* (no payments relationship — only the operator can be invoiced) or *agent-billable* (the agent can be invoiced directly) is recorded in the seller's onboarding system, the same way operator account creation is. Provisioning that record — contract, KYC, payment terms, billing entity capture — is out of scope for AdCP. What's in scope is two on-wire consequences: + +1. **Runtime billing gate.** A passthrough-only agent that submits `billing: "agent"` or `billing: "advertiser"` is rejected with `BILLING_NOT_PERMITTED_FOR_AGENT` and an `error.details.suggested_billing` of `operator`. See [Billing and Account Setup](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#billing-and-account-setup) for the recovery contract. +2. **Per-agent defaults.** Sellers MAY pre-fill `payment_terms`, `billing_entity`, rate-card linkage, and credit limit from the buyer agent's onboarding record when provisioning new accounts under that agent. Per-account values on the `sync_accounts` request always take precedence over per-agent defaults — the buyer can override per row. The per-agent layer is a recommended implementation pattern (it mirrors how SSPs maintain `buyer_id` / `seat_id` rows for OpenRTB DSPs); smaller publishers MAY collapse to seller-wide defaults until they have receivables ops that distinguish per-agent terms. + +## Account references + +Every account-scoped operation accepts an `account` object instead of a flat `account_id` string. The seller's `require_operator_auth` capability determines the auth model and reference shape; tool exposure distinguishes upstream-managed `account_id` namespaces from seller-defined IDs supplied out-of-band. + + +Sellers that support caller-scope introspection attach an optional `authorization` object to each per-account entry in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses — listing the tasks and request fields this caller is allowed to use on the account, plus any standard named scope (e.g., `attestation_verifier`). See [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) for the full shape and semantics. + + +### Account-id namespaces (`require_operator_auth: true`) + +Accounts are managed outside of AdCP. The advertiser creates an account on the seller's platform, grants the operator permission to manage it, and the buyer passes a seller-assigned `account_id`. The agent is not involved in account creation or billing setup — those are handled between the advertiser, operator, and seller directly. + +**Typical sellers:** Social platforms, self-serve ad platforms — anywhere the advertiser already has an account. + +**Upstream-managed workflow:** + +1. Advertiser creates an account on the seller's platform (out-of-band) +2. Advertiser grants the operator permission to manage the account (out-of-band) +3. Agent calls `list_accounts` to discover available accounts +4. Human selects the correct account from the list +5. Agent passes `{ "account_id": "acc_acme_001" }` on every request (`get_products`, `create_media_buy`, etc.) + +`list_accounts` is mandatory when the authenticated credential may access more than one account because the upstream owns the namespace. When the credential is bound to exactly one account, sellers SHOULD still expose `list_accounts` returning that singleton so SDKs can auto-select it and send explicit `{ "account_id": "..." }` on required-account calls. `sync_accounts` provisioning is out of scope for account-id namespaces in 3.0.x unless a future explicit capability declares it; if `sync_accounts` is exposed today, it is settings-update mode for an existing `account_id`. + +**Seller-defined workflow:** + +Some sellers use `account_id` without exposing an account discovery surface. In that pattern, the seller gives the buyer an account ID during onboarding or configuration, and the buyer passes that ID on account-scoped calls. Absence of `list_accounts` means there is no protocol namespace to discover; it does not mean the buyer should try to provision by natural key. + +### Buyer-declared accounts (`require_operator_auth: false`) + +The agent manages the buying relationship. It calls `sync_accounts` to tell the seller who's advertising, who's operating on the brand's behalf, and who's paying. The seller provisions accounts and responds with status — the account IDs are a byproduct of the declaration, not something the buyer needs to know upfront. + +Buyer-declared-account sellers SHOULD also expose `list_accounts` as the recovery read for stateless buyers. Replaying `sync_accounts` is not a cold-start recovery mechanism when the buyer has lost the advertiser natural keys required to compose that replay. `list_accounts` returns those acknowledged natural-key fields so they round-trip into later calls; it does not make the seller-issued `account_id` mandatory. + +**Typical sellers:** Traditional publishers, retail media networks, DSPs — anywhere the buying relationship is established programmatically. + +`sync_accounts` is the declaration tool. Each entry is a set of flags that tells the seller what the buyer needs: + +| Flag | What it tells the seller | +|------|-------------------------| +| `brand` (`domain` + optional `brand_id`/`countries[]`) | Which commercial advertiser entity is advertising; countries do not target delivery | +| `operator` | Who operates on the brand's behalf (agency, trading desk, or the brand itself) | +| `operator_unit` | Optional operator-owned business unit, seat, or platform account; stable `id` plus mutable display `name` | +| `currency` | Optional immutable account currency when the seller's advertiser object is currency-bound | +| `billing` | Who gets the invoice — `operator`, `agent`, or `advertiser` | +| `billing_entity` | Structured business entity details for the party responsible for payment — legal name, VAT ID, tax ID, address, contacts, and bank details. Used for formal B2B invoicing. Bank details are write-only (never echoed in responses). | +| `payment_terms` | Payment terms for this account (`net_15`, `net_30`, `net_45`, `net_60`, `net_90`, `prepay`). The seller must accept these terms or reject the account — terms are never silently remapped. | +| `sandbox` | Whether this is a sandbox (test) account — no real spend. Only used with buyer-declared accounts; account-id namespace sandboxes are pre-existing and discovered through `list_accounts` or supplied out-of-band. | + +Every combination of flags that might require the seller to do something different — bill a different entity, set up a different rate card, create a sandbox — is a distinct declaration. + +### Billing entity and invoice recipient + +For markets that require structured invoicing data (e.g., EU B2B transactions requiring VAT IDs), the `billing_entity` on an account provides the default business entity details for whoever `billing` points to. This includes legal name, tax identifiers, postal address, billing contact, and bank details. + +On individual media buys, an `invoice_recipient` can override the account default — useful when a specific campaign should be billed to a different party. When `invoice_recipient` differs from the account default and the account has `governance_agents`, the seller MUST include it in the `check_governance` request so the governance agent can approve or reject the billing redirect. + +**Workflow:** + +1. Agent calls `sync_accounts` with one or more declarations +2. Seller provisions or links accounts for each, responds with status: + - `active` — ready to use + - `pending_approval` — seller reviewing (human may need to visit `setup.url`) + - `rejected` — seller declined the request +3. For subsequent requests, pass the account reference: + - **Buyer-declared accounts** (`require_operator_auth: false`): pass the natural key `{ "brand": { "domain": "acme-corp.com" }, "operator": "pinnacle-media.com" }` + - **Account-id namespaces** (`require_operator_auth: true`): pass `{ "account_id": "acc_acme_001" }` (discover via `list_accounts` for upstream-managed namespaces, or receive out-of-band for seller-defined namespaces) + - **Sandbox (buyer-declared)**: pass the natural key with `sandbox: true` (declared via `sync_accounts`) + - **Sandbox (account-id namespace)**: pass `{ "account_id": "test_acc_001" }` (pre-existing test account, discovered via `list_accounts` or supplied out-of-band) +4. When anything changes (billing model, new brand, new operator), call `sync_accounts` again +5. After a cold start, call `list_accounts` to recover previously acknowledged relationships when the seller exposes the recommended read surface + +The agent may be directly responsible for billing when `billing` is `"agent"`. When `billing` is `"operator"` or `"advertiser"`, the agent facilitates but is not the invoiced party. The seller may require human approval before activating accounts. + +### Natural key semantics + +The tuple `(brand, operator, operator_unit.id, currency, timezone, sandbox)` identifies the advertiser object in the seller system. The nested `brand` carries `domain`, optional `brand_id`, and optional ISO country `countries[]`; these countries qualify commercial identity and never target delivery. `operator_unit` identifies the operator's own business unit, agency seat, or buying-platform account. Its stable `id` participates in identity, while its optional `name` is display metadata and may change without creating a new account. `currency` participates only when the seller's advertiser object is locked to one currency. `timezone` participates only when the seller requires the buyer to select an immutable account timezone during provisioning. Omit either qualifier when its capability mode does not apply. + +This separates two account namespaces that must not be conflated: `operator_unit.id` is assigned by the buyer-side operator, while `account_id` is assigned by the AdCP seller/storefront. Both may be opaque values, but they identify different objects and are not interchangeable. + +See [sync_accounts task reference](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) for the full request/response schema. + +### Account status + +| Status | Meaning | Next step | +|--------|---------|-----------| +| `active` | Ready to use | Place buys on this account | +| `pending_approval` | Seller reviewing | Human may need to visit `setup.url`. Poll `list_accounts` for updates. | +| `rejected` | Seller declined the request | Review rejection reason, adjust and re-sync, or contact seller | +| `payment_required` | Credit limit reached | Add funds or route spend to other accounts | +| `suspended` | Was active, now paused | Contact seller | +| `closed` | Was active, now terminated | — | + +### Account scope + +The agent requests accounts by natural key — `(brand, operator)`. The seller decides what granularity to assign. The `account_scope` field in the response tells the agent how the seller resolved the request: + +| Scope | Meaning | Example | +|-------|---------|---------| +| `operator` | One account for all brands under this operator | Agent sends (Pinnacle Media, Acme) and (Pinnacle Media, Nova) — seller maps both to the Pinnacle Media account | +| `brand` | One account for this brand regardless of operator | Agent sends (Acme, Pinnacle Media) and (Acme, Summit Agency) — seller maps both to the Acme account | +| `operator_brand` | Dedicated account for this operator+brand pair | Agent sends (Pinnacle Media, Acme) — seller creates a specific Acme-via-Pinnacle account | +| `agent` | Agent-scoped account with no brand- or operator-specific split | Agent sends any brand — seller maps the request to the standing agent-scoped account | + +The agent does not choose the scope — the seller assigns it based on its own account policy. An agent requesting `(brand: {domain: "acme-corp.com"}, operator: "pinnacle-media.com")` might receive an operator-scoped account, a brand-scoped account, or a dedicated operator_brand account depending on the seller. + +When multiple natural keys resolve to the same scope, the `account_scope` explains why. + +For buyer-declared accounts (`require_operator_auth: false`), use the complete natural key (`brand` + `operator` + optional `operator_unit`, fixed `currency`, buyer-selected `timezone`, and `sandbox`) on subsequent requests. A seller may also return an `account_id` from `sync_accounts` as its internal handle, but the seller MUST continue accepting the natural-key `AccountRef` for every account provisioned this way and MUST return its natural-key fields from `list_accounts`. For account-id namespaces (`require_operator_auth: true`), discover seller/storefront account IDs via `list_accounts` for upstream-managed namespaces, or receive them out-of-band for seller-defined namespaces — including sandbox test accounts. + +## Error codes + +| Code | When returned | Resolution | +|------|-------------|------------| +| `ACCOUNT_REQUIRED` | Multiple accounts; seller can't determine which | Pass `account_id` in the account reference | +| `ACCOUNT_NOT_FOUND` | `account_id` doesn't exist or agent lacks access | Check account reference, re-run `sync_accounts` | +| `ACCOUNT_SETUP_REQUIRED` | Natural key resolved but account needs setup | Check `details.setup` for URL/message | +| `ACCOUNT_AMBIGUOUS` | Natural key resolves to multiple accounts | Pass `account_id` or more specific natural key | +| `PAYMENT_REQUIRED` | Credit limit reached or funds depleted | Add funds, route to another account | +| `ACCOUNT_SUSPENDED` | Account not in good standing | Contact seller | +| `BRAND_REQUIRED` | Billable operation without brand reference | Include `brand` in request | + +When the seller returns `ACCOUNT_REQUIRED`, it includes the available accounts: + +```json +{ + "errors": [{ + "code": "ACCOUNT_REQUIRED", + "message": "Multiple accounts available. Please specify account_id in the account reference.", + "details": { + "available_accounts": [ + { "account_id": "acc_acme_001", "name": "Acme Corp" }, + { "account_id": "acc_pinnacle", "name": "Pinnacle Media" } + ] + } + }] +} +``` + +## Design notes + +### sync_accounts and seller record systems + +When an agent declares `(brand: {domain: "acme-corp.com"}, operator: "pinnacle-media.com")`, the seller looks up or creates records in its own system — CRM, OMS, ad server, or billing platform. + +`sync_accounts` is the buyer-side interface to the seller's record system. The seller may: + +- Map the natural key to an existing account and return `status: "active"` +- Create a new record and return it immediately (`status: "active"`) +- Create a placeholder pending human review (`status: "pending_approval"`) +- Decline the request entirely (`status: "rejected"`) + +`list_accounts` returns all records the seller has mapped for this agent — including pending and rejected entries. The agent uses `list_accounts` to see the full state of its portfolio with this seller, not just active accounts. + +### Accounts and insertion orders + +An account represents a standing relationship — who gets billed, what rates apply, what credit is available. It is not a campaign or an insertion order. + +Insertion orders and campaign flights are modeled as media buys via `create_media_buy`. The account determines *billing terms*; the media buy determines *what runs and when*. A single account can have many media buys over its lifetime. + +### Operator revocation and caching + +If a brand removes an operator from `authorized_operators`, existing active accounts are not automatically deactivated. Revocation is eventual, not immediate — similar to how `ads.txt` changes propagate on the supply side. + +Sellers SHOULD respect standard HTTP caching headers on `brand.json` and re-validate periodically. A reasonable cache TTL is 24 hours. + +### Brand identity for SMBs + +Domain-based identity via `/.well-known/brand.json` works for organizations of any size — it's a static JSON file that can be hosted on any web server. + +For organizations that cannot host files on their domain, the `authoritative_location` field in `brand.json` allows the house domain to redirect to a hosted location: + +```json +{ + "house": { + "domain": "local-bakery.com" + }, + "authoritative_location": "https://registry.agenticadvertising.org/brands/local-bakery.com" +} +``` diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication.mdx new file mode 100644 index 0000000000..c81bc91ede --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication.mdx @@ -0,0 +1,367 @@ +--- +title: Authentication +description: "AdCP authentication guide: public vs authenticated operations, static credential implementation, and credential management for buyer and seller agents." +"og:title": "AdCP — Authentication" +--- + + +AdCP uses a tiered authentication model where some operations are publicly accessible while others require authentication. + +## When Authentication is Required + +### Public Operations (No Authentication Required) + +These operations work without credentials to enable discovery and evaluation: + +- **`get_adcp_capabilities`** - Discover agent capabilities, portfolio, and supported features +- **`get_adcp_capabilities`** - Browse public creative capabilities +- **`get_products`** - Discover inventory (returns limited results without auth) + +**Rationale**: Publishers want potential buyers to discover their capabilities before establishing a business relationship. + +**Important**: Unauthenticated `get_products` may return: +- Partial catalog (standard products only) +- No pricing information or CPM details +- No custom product offerings +- Generic format support only + +### Authenticated Operations (Credentials Required) + +These operations require valid credentials: + +- **`get_products`** (full access) - Complete catalog with pricing and custom products +- **`create_media_buy`** - Create advertising campaigns +- **`update_media_buy`** - Modify existing campaigns +- **`sync_creatives`** - Upload creative assets +- **`list_creatives`** - View your creative library +- **`get_media_buy_delivery`** - Monitor campaign performance and metrics +- **`provide_performance_feedback`** - Submit optimization signals + +**Rationale**: These operations involve financial commitments, access to proprietary data, or modifications to active campaigns. + +## Authentication Method + +AdCP supports three authentication mechanisms for authenticated operations. The choice depends on the operation's risk class and the AdCP version in use: + +| Mechanism | 3.0 (current) | 3.1+ | Notes | +|---|---|---|---| +| **RFC 9421 request signing** | RECOMMENDED for all authenticated operations | **REQUIRED** for mutating / financial operations | Asymmetric, body-bound, replay-resistant. See [RFC 9421 request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing). | +| **Mutual TLS (mTLS)** | Permitted for any operation | Permitted as an alternative to 9421 | Transport-layer identity; recommended when the deployment already terminates mTLS at the edge. | +| **Static Authorization credentials (Bearer or Basic)** | Permitted; effective baseline for 3.0 | **PROHIBITED for mutating / financial operations**; permitted for read / discovery only | Shared-secret transport. Bearer is the canonical example; HTTP Basic is also acceptable when sent over TLS and validated on every protected request. Documented sunset for mutating ops — see the [known limitation](/dist/docs/3.2.0-beta.4/reference/known-limitations). | + + + **3.0 mutating-operation floor.** Until 3.1 lands, static Authorization-header credentials over TLS are the effective floor for mutating operations. Operators handling spend commitments SHOULD ship RFC 9421 request signing before the 3.1 deprecation date to avoid a forced cutover. + + +### Why bearer tokens are prohibited for financial operations + +A bearer token authenticates whoever presents it. Any party that obtains the token (a leaked log line, a compromised proxy, a captured request, a misconfigured relay) can originate spend commitments indistinguishable from the legitimate agent's, and the seller cannot tell the difference after the fact. For read and discovery operations that risk is bounded; for operations that move money it is not. + +Signed requests replace possession of a string with proof of possession of a private key: + +- **Proof of possession.** The signature proves the caller holds the signing key. The key never travels on the wire, so the theft surface shrinks from every system a token passes through to the signer's key storage. +- **Payload integrity.** The signature binds `@method`, `@target-uri`, `@authority`, `content-type`, and `content-digest`, so tampering with a budget figure, account reference, or target endpoint invalidates the request. TLS protects bytes in transit but not through intermediaries, relays, or logs; the signature protects the transaction end to end. +- **Replay resistance.** The ±60 s timestamp window and nonce prevent a captured request from being resubmitted as a new transaction. +- **Accountability.** Both parties can prove after the fact who originated a transaction and exactly what was requested. That audit anchor is what lowers fraud and dispute cost in financial workflows; with a shared secret, origination is unprovable once the token may have leaked. + +This is why the 3.1+ conformance floor prohibits static credentials for mutating and financial operations while continuing to permit them for read and discovery. Key discovery, covered components, and the full verifier checklist are defined in the [implementation security reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing); build on those (or a reference SDK) rather than hand-rolling the cryptography. + +### Static Authorization credentials (3.0 baseline) + +``` +Authorization: Bearer +Authorization: Basic +``` + +Bearer tokens may be: +- **Opaque tokens**: Server-validated strings mapped to agents +- **JWT tokens**: Self-contained tokens with embedded claims + +HTTP Basic credentials are also a static shared-secret mechanism. They MUST be sent in the `Authorization` header over TLS, and servers MUST validate the credential on every protected request. Basic credentials are not stronger than Bearer tokens; they are accepted as the same conformance class because both carry a pre-provisioned shared secret on the transport. + +Implementations MUST enforce TLS 1.2+ on all static-credential-authenticated endpoints. See the [implementation security reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for transport requirements. + +The credential MUST be carried in the `Authorization` request header. Sellers MUST NOT require non-canonical aliases (e.g. `x-adcp-auth`, which appeared in some early MCP-only deployments) and MUST NOT advertise them as the supported header in agent cards, capability responses, or documentation. A seller MAY accept such an alias as a transitional input while it phases out an existing adopter's integration, but `Authorization: Bearer` or `Authorization: Basic` MUST also be accepted on the same endpoint. Buyer agents and SDKs SHOULD emit `Authorization: Bearer` unless a seller explicitly provisions Basic credentials; SDK examples and docstrings MUST NOT show alias headers as the canonical form. + +### RFC 9421 request signing (recommended; required for mutating ops in 3.1+) + +Signed requests bind `@method`, `@target-uri`, `@authority`, `content-type`, and `content-digest` under an `Ed25519`, `ecdsa-p256-sha256`, or `rsa-pss-sha512` signature with a ±60 s timestamp window and ≥128-bit nonce. The full verifier checklist, key-discovery rules (`brand.json` → `agents[]` → `jwks_uri`), and rotation semantics are defined in the [implementation security reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing). Capability discovery via `get_adcp_capabilities.request_signing.supported` lets clients detect whether a seller enforces signing before sending a mutating call. + +### mTLS + +Operators terminating mTLS at the edge MAY use the peer certificate as the primary identity mechanism for AdCP operations. When mTLS is used, operators MUST pin identity to the certificate subject / SAN rather than any header field. + +### JWT Token Claims + +When using JWT tokens, include these standard claims: + +```json +{ + "sub": "agent_123", + "exp": 1706745600, + "iat": 1706742000 +} +``` + +Sales agents may require additional claims for authorization. + +## Agents and Accounts + +AdCP distinguishes between the **agent** (who is making requests) and the **account** (who gets billed): + +- **Agent**: The authenticated entity making API calls (identified by the token) +- **Account**: The billing relationship determining rates and invoicing + +An agent may have access to multiple accounts (e.g., an agency managing several clients). See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) for details on account selection and billing attribution. + +For schema definitions, see [`account.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/account.json). + +## Tenant resolution + +AdCP resolves tenant from the authenticated principal, not from request payloads. Seller agents map the authenticated identity (bearer token, Basic credential, mTLS client cert, or RFC 9421 key) to the originating buyer's account via their own authorization context. Task payloads never carry tenant identity as a substitute for authentication — when a schema requires a globally-unique resource ID (`plan_id`, `rights_id`, `standards_id`, `event_source_id`, `list_id`) rather than an `account` envelope, the seller resolves ID → tenant via the same authorization context. The authenticated principal must hold access to the referenced resource, and the resource itself carries the brand it was provisioned for; envelope identity on those calls would be redundant and, if it disagreed with the authenticated principal, a spoofing vector. + +Compliance storyboards in the training agent inject envelope identity on these calls as a sandbox routing convention, because the training agent has no authenticated-principal layer of its own — see [Storyboard authoring](/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring). Production sellers do not require it. + +## Credential placement + +Credentials authenticating the **buyer principal** MUST arrive on the transport's authentication channel and MUST NOT be placed in the task payload — top-level, inside `context`, inside `ext`, or in any other nested location. The transport channel is: + +- **Static credentials over HTTP** — `Authorization: Bearer ` per [RFC 6750 §2](https://www.rfc-editor.org/rfc/rfc6750#section-2), or `Authorization: Basic ` when the seller provisions HTTP Basic credentials. +- **RFC 9421 signed requests** — the `Signature` and `Signature-Input` headers per [RFC 9421 §2](https://www.rfc-editor.org/rfc/rfc9421#section-2). The signature itself is the credential; nothing in the payload authenticates the signer. +- **MCP and A2A authentication framing** — the transport's authentication descriptor (e.g., MCP's `authInfo`, A2A's `authentication.schemes`). Discovery of the authentication requirement follows [RFC 9728 §3](https://www.rfc-editor.org/rfc/rfc9728#section-3) protected-resource metadata where applicable. +- **Mutual TLS** — the peer certificate, per the mTLS row in the table above. + +The rule is transport-agnostic: it applies regardless of which mechanism the seller accepts. There is no AdCP version, capability, or seller policy under which a buyer principal authenticates via a payload field. The same placement rule applies to credentials or caller-supplied trust material a request tries to pass for a downstream evaluator call: those belong on the agent-to-evaluator transport or in account provisioning, not task payloads. A seller that detects a credential- or trust-material key in the payload (e.g., `_access_token`, `api_key`, `client_secret`, `bearer`, `authorization`, `jwk`, `jwks`, or `jwks_uri` at any nesting depth) SHOULD reject the request with [`CREDENTIAL_IN_ARGS`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#authentication-and-access) under AdCP 3.1; the requirement upgrades to MUST 90 days after the 3.1 publication date. The code's recovery classification is `terminal` — agents MUST NOT auto-retry, since auto-retry re-logs the credential on each attempt and is itself the prompt-injection exfiltration surface this rule closes (see [Threats specific to agentic advertising](/dist/docs/3.2.0-beta.4/building/concepts/security-model#threats-specific-to-agentic-advertising)). + +### Carve-outs + +The following credential surfaces are **not** buyer-principal credentials and the rule above does not apply to them: + +- **`push_notification_config.authentication.credentials`** ([schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/push-notification-config.json)). This is the legacy Bearer / HMAC-SHA256 credential that the **seller** uses when calling **back** to the buyer's webhook endpoint. It authenticates the seller-as-caller against the buyer-as-receiver — orthogonal to the buyer-principal credential that authenticates the inbound AdCP request. The default 9421 webhook profile uses keys discovered via `brand.json` and crosses no shared secrets; the legacy block is a deprecated compatibility scheme removed in AdCP 4.0. +- **Onboarding-time secrets exchanged out-of-band** — initial token issuance, OAuth dynamic registration responses, dashboard-issued API keys. These travel through the AAO authorization server or the seller's onboarding flow, not as AdCP task payloads. + +### Relay agents + +The agency / A2A relay topology (brand → relay → seller) authenticates **under the relay's own principal**. The relay either preserves the brand agent's RFC 9421 signature verbatim (pass-through model) or re-signs under its own key (re-signing model) — both options are described in [#2324](https://github.com/adcontextprotocol/adcp/issues/2324). Neither model permits forwarding the brand's transport credential as a relay-side payload field. Brand-agent identity, when the relay is the principal of record, MUST be carried in the request body as identity context (e.g., a buyer-side identity assertion verifiable by the seller against `adagents.json` / `authorized_operator[]`) — never as a forwarded transport credential. Relays MUST NOT echo or reattach buyer credentials in any args field on outbound seller-bound requests. + +## Protocol Configuration + +Most MCP and A2A integrations use `Authorization: Bearer ` ([RFC 6750 §2](https://www.rfc-editor.org/rfc/rfc6750#section-2)) as the authentication header. Configure your client with: + +```json +{ + "auth": { + "type": "bearer", + "token": "" + } +} +``` + +The client library handles adding the `Authorization: Bearer ` header to requests. + +If a seller explicitly provisions HTTP Basic credentials, the same transport rule applies: send `Authorization: Basic ` on every authenticated request over HTTPS. + +**Header alias policy by leg.** The two protocol legs differ in what aliases they accept beyond the standard `Authorization` header: + +- **A2A** — `Authorization` only. For Bearer credentials, send `Authorization: Bearer ` and declare a `bearerAuth` `HTTPAuthSecurityScheme` in the seller's agent card (see the [A2A guide — Agent Cards](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide#agent-cards)). For Basic credentials, send `Authorization: Basic ` and declare HTTP Basic. The `x-adcp-auth` custom header is not recognized on the A2A surface. +- **MCP** — `Authorization` is primary for Bearer and Basic credentials. `x-adcp-auth` is accepted as a back-compat Bearer alias for integrations predating adcp 4.5.0. New implementations should use the standard header on both legs. + + +**Sellers migrating to adcp 4.5.0.** If you previously configured `x-adcp-auth` as the A2A leg header via the `a2a_header_name` knob, verify that knob is set to the RFC 6750 default before updating your agent card to declare `bearerAuth` — buyers that have not yet migrated off the legacy header will otherwise receive HTTP 401. + + +## MCP Client Configuration + +When using the MCP protocol, authentication is handled by the transport layer, not by adding HTTP headers manually. + +### Using MCP Client Libraries + +The recommended approach is to use an MCP client library: + + + +```typescript TypeScript +import { Client } from '@modelcontextprotocol/sdk/client/index.js'; +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; + +const transport = new StreamableHTTPClientTransport( + new URL('https://test-agent.adcontextprotocol.org/sales/mcp'), + { + requestInit: { + headers: { + 'Authorization': 'Bearer YOUR_TOKEN_HERE' + } + } + } +); + +const client = new Client({ name: 'my-client', version: '1.0.0' }); +await client.connect(transport); +``` + +```python Python +from mcp import ClientSession +from mcp.client.streamable_http import streamablehttp_client + +async with streamablehttp_client( + "https://test-agent.adcontextprotocol.org/sales/mcp", + headers={"Authorization": "Bearer YOUR_TOKEN_HERE"} +) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() +``` + + + +### Common Mistake: Raw HTTP Headers + +A common mistake is trying to add authentication headers to raw HTTP requests: + +```http +# This won't work for MCP endpoints +GET /mcp HTTP/1.1 +Authorization: Bearer YOUR_TOKEN +``` + +MCP uses a streaming protocol over HTTP. The authentication must be configured in the MCP client transport layer, which handles the protocol negotiation and message framing. + +### Troubleshooting Authentication + +If you're getting "authentication required" errors: + +1. **Verify you're using an MCP client library** - not making raw HTTP calls +2. **Check the token format** - should be passed to the transport configuration +3. **Test with the public test agent** - verify your setup works before testing custom agents +4. **Check protocol version** - ensure client and server protocol versions are compatible + + +For OAuth handshake failures and RFC 9421 signing issues, use the [CLI auth graders](/dist/docs/3.2.0-beta.4/building/verification/grading) — `diagnose-auth` probes RFC 9728 + RFC 8414 discovery and ranks hypotheses; `grade request-signing` runs every signing vector with per-vector diagnostics. + + +## Obtaining Credentials + +### Account Setup Process + +To access authenticated operations, you must establish an account with each sales agent: + +1. **Identify Sales Agents**: Discover sales agents via publisher `adagents.json` files +2. **Contact Sales Team**: Reach out to the agent's sales or partnerships team +3. **Complete Onboarding**: Provide business information, sign agreements, configure billing +4. **Receive Credentials**: Get API keys or OAuth client credentials + +**Note**: Each sales agent manages their own accounts independently. You need separate credentials for each agent you work with. + +### Dynamic Registration (Optional) + +Some sales agents support OAuth 2.0 dynamic client registration: + +```http +POST /oauth/register +Content-Type: application/json + +{ + "client_name": "Your Company Name", + "redirect_uris": ["https://yourapp.com/callback"], + "grant_types": ["authorization_code", "refresh_token"], + "scope": "adcp:products adcp:media_buys adcp:creatives" +} +``` + +Check the sales agent's documentation or `adagents.json` for dynamic registration support. + +### Aggregation Platforms + +Consider using aggregation platforms (like Scope3) that manage credentials and relationships with multiple sales agents on your behalf. This simplifies: +- Credential management +- Financial relationships +- Legal agreements +- Compliance monitoring + +## Authenticating to AAO Platform Services + +The mechanisms above govern **agent-to-agent** auth (buyer ↔ sales agent). Authenticating to **AAO-hosted services** — the registry write API, the AAO MCP endpoint, the member dashboard — is a separate surface. + +AAO runs an OAuth 2.1 + OIDC authorization server. Clients discover it via standard well-knowns: + +- **Authorization server metadata (RFC 8414):** `https://agenticadvertising.org/.well-known/oauth-authorization-server` +- **Protected-resource metadata (RFC 9728):** `/.well-known/oauth-protected-resource/api` (REST API) and `/.well-known/oauth-protected-resource/mcp` (MCP). Both list `https://agenticadvertising.org` as the authorization server. +- **Flow:** authorization code with PKCE (S256). User identity is via WorkOS AuthKit; tokens are signed JWTs. +- **Dynamic client registration (RFC 7591):** `POST /register`. +- **Server-to-server:** there is no `client_credentials` grant. Backend services should use a WorkOS organization API key from the [AAO dashboard](https://agenticadvertising.org/dashboard/api-keys), not the OAuth `/token` endpoint. + +All AAO endpoints are HTTPS-only; reject any discovery document served over plain HTTP. + +A user JWT obtained from AAO is **not** an AdCP credential. Calls to a sales agent still use that agent's bearer / 9421 / mTLS credentials per the table above. Full reference: [AAO registry — Authentication](/dist/docs/3.2.0-beta.4/registry#authentication). + + + **If you discover an `authorization_endpoint` on a sales agent's RFC 9728 protected-resource metadata** (e.g., for an operator-account OAuth flow), pin the discovered `authorization_servers` issuer against what `adagents.json` — or out-of-band onboarding — authorized for that seller. Do not blindly trust an AS URL the resource itself returned, otherwise a malicious or compromised seller can route operator credentials to an attacker-controlled endpoint. + + +## Error Responses + +### Unauthenticated Request to Protected Operation + +```json +{ + "error": { + "code": "AUTH_REQUIRED", + "message": "Authentication required for this operation" + } +} +``` + +### Invalid or Expired Credentials + +```json +{ + "error": { + "code": "AUTH_INVALID", + "message": "Invalid or expired credentials" + } +} +``` + +### Insufficient Permissions + +```json +{ + "error": { + "code": "INSUFFICIENT_PERMISSIONS", + "message": "Agent does not have required permissions for this operation" + } +} +``` + +## Best Practices + +1. **Secure Storage**: Store credentials securely (environment variables, secret managers) +2. **Rotation**: Implement credential rotation policies +3. **Scope Limitation**: Request minimum required permissions +4. **Token Refresh**: Implement automatic token refresh for JWT tokens +5. **Error Handling**: Handle authentication errors gracefully with retry logic + +## Testing Authentication + +The public test agent accepts a shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/sales/mcp" +``` + +Configure your client with this token: + +```json +{ + "agent_uri": "https://test-agent.adcontextprotocol.org/sales/mcp", + "protocol": "mcp", + "auth": { + "type": "bearer", + "token": "1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" + } +} +``` + +For org-scoped usage tracking, replace the public token with your own API key from the [AAO dashboard](https://agenticadvertising.org/dashboard/api-keys). + +See [Sandbox Mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox) for testing capabilities including sandbox mode for risk-free development. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions.mdx new file mode 100644 index 0000000000..4f4cc9b9bc --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions.mdx @@ -0,0 +1,303 @@ +--- +title: Context & Sessions +description: "AdCP context_id vs task_id explained. How to manage conversation state, session continuity, and extension fields across MCP and A2A protocol requests." +"og:title": "AdCP — Context & Sessions" +--- + +AdCP uses identifiers and data fields to maintain state across requests. Understanding these is essential for building effective integrations. + +## Key Identifiers + +AdCP uses two distinct identifiers for different purposes: + +### context_id vs task_id + +| Identifier | Purpose | Lifespan | Scope | +|------------|---------|----------|-------| +| **context_id** | Conversation/session continuity | ~1 hour | Across multiple task calls | +| **task_id** | Tracking specific operations | Until completion (hours to days) | Single operation | + +**context_id**: +- Comes from the protocol layer (built into A2A, manual in MCP) +- Provides conversation history and session continuity +- Used for maintaining state across multiple task calls +- Expires after conversation timeout (typically 1 hour) + +**task_id**: +- Specific to individual requests that could be asynchronous +- Lives beyond the conversation +- Used for tracking operation progress over time +- Persists until the task completes (may be days for complex media buys) +- Can be referenced across different conversations or sessions + +### Usage Example + +```javascript +// First call - establishes context and creates task +const result = await call('create_media_buy', { + brief: "Launch summer campaign" +}); + +const contextId = result.context_id; // For conversation continuity +const taskId = result.task_id; // For tracking this specific media buy + +// Later in same conversation - uses context_id +const update1 = await call('update_media_buy', { + context_id: contextId, // Maintains conversation state + task_id: taskId, // References the specific media buy + updates: {...} +}); + +// Days later in new conversation - only task_id needed +const delivery = await call('get_media_buy_delivery', { + task_id: taskId // No context_id - this is a new conversation +}); +``` + +## Protocol Differences + +- **A2A**: Context is handled automatically by the protocol +- **MCP**: Requires manual context_id management + +### A2A Context (Automatic) + +A2A handles sessions natively - you don't need to manage context: + +```javascript +// A2A maintains context automatically +const task = await a2a.send({ message: {...} }); +// contextId is managed by A2A protocol + +// Follow-ups automatically use the same context +const followUp = await a2a.send({ + contextId: task.contextId, // Optional - A2A tracks this + message: {...} +}); +``` + +### MCP Context (Manual) + +MCP requires explicit context management to maintain state: + +```javascript +// First call - no context +const result1 = await mcp.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442076", + buying_mode: "brief", + brief: "Video ads" +}); +const contextId = result1.context_id; // Save this! + +// Follow-up - must include context_id +const result2 = await mcp.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442077", + buying_mode: "brief", + context_id: contextId, // Required for continuity + brief: "Focus on premium inventory" +}); +``` + +### MCP Context Management Pattern + +```javascript +class MCPSession { + constructor(mcp) { + this.mcp = mcp; + this.contextId = null; + } + + async call(method, params) { + const result = await this.mcp.call(method, { + ...params, + context_id: this.contextId + }); + this.contextId = result.context_id; // Update for next call + return result; + } +} +``` + +### MCP Agent-Side: Session ID Fallback + +Many MCP clients (ChatGPT, Claude) don't pass `context_id`. Agents should use the transport's session ID as a fallback to enable automatic session persistence: + +```typescript +server.tool('get_products', schema, async (args, extra) => { + // Use explicit context_id if provided, fall back to MCP sessionId + const contextId = args.context_id ?? extra?.sessionId; + + const products = await generateProducts(args.brief, contextId); + await productStore.save(contextId, products); + + return products; +}); +``` + +This allows simple clients to get automatic session persistence while preserving explicit control for advanced buyers who need resumable sessions. For a working implementation, see the [Snap AdCP Agent](https://github.com/scope3data/snap-adcp). + +## What Context Maintains + +The `context_id` maintains conversation state, regardless of protocol: +- Current media buy and products being discussed +- Search results and applied filters +- Conversation history and user intent +- User preferences expressed in the session +- Workflow state and temporary decisions + +Note: Long-term task state (like media buy status, creative assets, performance data) is tracked via `task_id`, not `context_id`. + +## Extension Fields (`ext`) + +Extension fields enable platform-specific functionality while maintaining protocol compatibility. + +### Schema Pattern + +Extensions appear consistently across requests, responses, and domain objects: + +```json +{ + "product_id": "ctv_premium", + "name": "Connected TV Premium Inventory", + "ext": { + "gam": { + "order_id": "1234567890", + "dashboard_url": "https://..." + }, + "roku": { + "content_genres": ["comedy", "drama"] + } + } +} +``` + +The `ext` object: +- Is always **optional** (never required) +- Accepts any valid JSON structure +- Must be preserved by implementations (even unknown fields) +- Is not validated by AdCP schemas (implementation-specific validation allowed) + +### Namespacing (Critical) + +Extensions MUST use vendor/platform namespacing: + +```json +// ✅ Correct - Namespaced +{ + "ext": { + "gam": { "test_mode": true }, + "roku": { "app_ids": ["123"] } + } +} + +// ❌ Incorrect - Not namespaced +{ + "ext": { + "test_mode": true, // Missing namespace! + "app_ids": ["123"] // Which platform? + } +} +``` + +## Application Context (`context`) + +Context provides opaque correlation data that is echoed unchanged in responses and webhooks. + +### Key Properties + +- Agents NEVER parse or use context to affect behavior +- Exists solely for the initiator's internal tracking needs +- Echoed unchanged in responses and webhook payloads + +### Normative echo contract + +Agents MUST obey the following rules. The compliance runner asserts on these literally, and buyers rely on them for correlation. + +1. **Echo on success.** When the caller includes a top-level `context` object on a request, the agent MUST include the same object, byte-for-byte equivalent, in the response. This applies whether the response status is `completed`, `submitted`, `working`, `input-required`, or any other terminal or intermediate state. +2. **Echo on error.** Failure responses MUST also echo `context` verbatim. Dropping context on the error path breaks correlation exactly when the buyer needs it most. Agents that return `adcp_error`, `errors[]`, or any other error envelope MUST still carry through the caller's `context`. +3. **Echo on async updates.** Push notifications, webhook payloads, and any subsequent messages the agent emits for the same operation MUST carry the original `context`. The agent MUST NOT drop context between the initial response and a later status update — a buyer that correlated by `context.trace_id` expects every message for that operation to surface the same trace. +4. **No synthesis.** When the caller does NOT provide a `context` object, the agent MUST NOT fabricate one. Responses to context-less requests MUST omit the `context` field (or emit it as null / absent per the transport's normal serialization). Synthetic context from the agent side is a conformance failure — the whole point of context is that it is owned by the caller. +5. **No mutation.** Agents MUST NOT add, remove, rename, reorder, or retype fields in the echoed context. JSON equivalence applies: `{"a":1,"b":2}` and `{"b":2,"a":1}` may serialize differently but are considered equivalent for the echo rule provided key set and values match. Verifiers that rely on byte-literal equality (e.g., MCP clients that hash the raw JSON) SHOULD serialize with stable key ordering on the agent side. +6. **No action.** Agents MUST NOT parse, validate, log fields from, or branch on any value inside `context`. Context is opaque to the agent — a value that looks like a structured identifier is not an invitation to interpret it. + +### Schema Pattern + +```json +{ + "tool": "create_media_buy", + "arguments": { + "packages": [...], + "context": { + "ui_session_id": "sess_abc123", + "trace_id": "trace_xyz789", + "internal_campaign_id": "camp_456" + } + } +} +``` + +Response echoes the context: + +```json +{ + "status": "input-required", + "message": "Media buy requires manual approval before activation.", + "context_id": "ctx_ghi789", + "context": { + "ui_session_id": "sess_abc123", + "trace_id": "trace_xyz789", + "internal_campaign_id": "camp_456" + } +} +``` + +### Common Context Uses + +1. **UI/Session tracking** - Maintaining state across async operations +2. **Request correlation** - Tracing requests through distributed systems +3. **Internal identifiers** - Mapping to your internal data structures +4. **Organization context** - Multi-tenant tracking + +## When to Use What + +| Field | Purpose | Agent Reads? | Agent Modifies? | +|-------|---------|--------------|-----------------| +| `context_id` | Session continuity | Yes | Yes (creates/updates) | +| `task_id` | Operation tracking | Yes | Yes (creates) | +| `ext` | Platform-specific config | MAY | MAY add response data | +| `context` | Opaque correlation | NEVER | NEVER | + +### Use `ext` when: +- Platform needs to parse the data +- Data MAY affect operational behavior +- Data represents platform-specific configuration +- Data should persist across operations + +### Use `context` when: +- Data is only for caller's internal use +- Data should never affect agent behavior +- Data is for correlation/tracking only +- Data needs to be echoed unchanged + +## Best Practices + +### For A2A +- Let the protocol handle context +- Use contextId for explicit conversation threading +- Trust the session management + +### For MCP +- Always preserve context_id between calls +- Implement a session wrapper (see pattern above) +- Handle context expiration (1 hour timeout) +- Start fresh context for new workflows +- **Agents**: Use transport session ID as fallback when `context_id` is not provided (see [Session ID Fallback](#mcp-agent-side-session-id-fallback)) + +### For Extensions +- Always namespace under vendor keys +- Document your extensions extensively +- Consider proposing standardization for common patterns + +### For Application Context +- Keep it opaque - don't structure for agents to parse +- Avoid large payloads - context is echoed in every response +- Use for correlation only - never for operational data diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L2/index.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L2/index.mdx new file mode 100644 index 0000000000..54677aea30 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L2/index.mdx @@ -0,0 +1,26 @@ +--- +title: L2 — Auth & registry +sidebarTitle: L2 — Auth & registry +description: "Auth-and-registry layer of the AdCP stack. Turns a verified identity into a scoped principal — which buyer, which brand, which advertiser account, which sandbox-vs-live tier." +"og:title": "AdCP — L2 (Auth & registry)" +--- + +L2 turns a verified identity into a scoped principal. On the agent side: multi-tenant principal resolution, sandbox/live boundary, brand resolution, permission scoping. On the caller side: publish own identity, look up the agent it's calling — much smaller surface. + +## What an SDK at L2 must provide + +If you're picking an SDK or porting one to a new language, this is the L2 build target: + +- **An account-store abstraction** that resolves an authenticated principal to a scoped account, with hooks for multi-tenant routing. +- **Authentication primitives** for at least API-key and bearer-token shapes, plus a way to compose them. +- **Brand-resolution / agent-registry lookup** — or a documented extension point if the SDK doesn't ship it natively. +- **The sandbox-vs-live account flag**, enforced at the SDK boundary so the conformance-test surface refuses to dispatch on production accounts. + +For the cumulative cross-layer story (what L0+L1+L2 buys you), see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#l2--auth--registry). + +## Pages in this layer + +- **[Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication)** — credentials and permissions. +- **[Account state](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state)** — multi-tenant account resolution. +- **[Accounts and agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents)** — relationship between account scoping and agent identity. +- **[Context & sessions](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions)** — managing principal state across requests. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations.mdx new file mode 100644 index 0000000000..3967c3978a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations.mdx @@ -0,0 +1,349 @@ +--- +title: Async Operations +description: "AdCP async operations guide: handling synchronous, asynchronous, and interactive (input-required) task types with polling, SSE streaming, and timeout strategies." +"og:title": "AdCP — Async Operations" +--- + +AdCP operations can take seconds, hours, or days. The server decides how to respond based on how long the operation will take and what's blocking it. + +## The 30-second rule + +Any AdCP task can return one of these statuses. The server chooses based on what it knows about the work involved: + +| Expected duration | Status | What the caller does | +|---|---|---| +| Under 30 seconds | `completed` / `failed` | Result is inline — done | +| Over 30 seconds, server actively processing | `working` | Out-of-band progress signal. Connection stays open, result arrives when ready. Caller just waits | +| Blocked on external dependency | `submitted` | Truly async — poll by `task_id`; `push_notification_config` can also deliver notifications when configured. Result may take hours or days | +| Blocked on human input | `input-required` | Caller provides the requested input to continue | + +**`working` is not async.** It's a progress signal the server sends out-of-band (via MCP status notifications or SSE) while it continues processing. The caller holds the connection and receives the result when it's ready — no polling, no webhooks. Think of it as "this is taking a moment, but I'm on it." + +**`submitted` is async.** The operation is blocked on something outside the server's control — publisher approval, human review, third-party processing. The caller can always poll the AdCP task status surface with `task_id`. A configured webhook is an additional notification channel for background workflows, not a replacement for polling. + +:::tip Webhooks for `submitted` operations +**AdCP webhooks** are recommended for background `submitted` operations — they work with MCP, A2A, and REST and can outlive a transport session. The registration is always `push_notification_config` in the typed AdCP task request, including inside an A2A profile invocation's `data.input`. A2A's separate `configuration.taskPushNotificationConfig` follows only the A2A transport Task and does not replace the durable AdCP webhook. When a request includes an AdCP webhook channel and the server accepts the task by returning `submitted`, the server MUST deliver at least the terminal completion or failure notification to that channel. Intermediate progress notifications are optional unless another operation-specific contract requires them. If the server cannot honor the requested webhook channel, it MUST reject the request with a structured error instead of silently downgrading delivery. See [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). + +**Polling** via the AdCP task polling surface is always valid for `submitted` tasks. The AdCP v3 A2A profile requires `get_task_status`; MCP sellers may expose that name or the legacy AdCP `tasks/get` alias. Both accept the same payload shape; multi-account callers SHOULD include `account` so sellers can scope task visibility to the authenticated account + principal pair. See the [polling pattern](#polling-for-submitted-operations) below. + +**Transport-native tasks are not the AdCP lifecycle.** MCP Tasks or A2A task updates may carry or stream an AdCP response, but the durable task state is the AdCP payload: `task_id`, `status`, webhook payloads, and AdCP polling/reconciliation. See [MCP Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide#mcp-tasks-as-a-transport-wrapper). +::: + +## Operation examples + +### Synchronous (instant) + +| Operation | Description | +|-----------|-------------| +| `get_adcp_capabilities` | Agent capability discovery | +| `get_adcp_capabilities` | Capability catalog | +| `build_creative` (library retrieval) | Resolving an existing `creative_id` | + +### May need human input + +| Operation | Description | +|-----------|-------------| +| `get_products` | When brief is vague or needs clarification | +| `create_media_buy` | When approval is required | +| `build_creative` (generation) | When creative direction or asset selection is needed | + +### May go async (`submitted`) + +| Operation | Description | +|-----------|-------------| +| `create_media_buy` | Publisher approval workflows | +| `update_media_buy` | Manual seller review for budget, targeting, or creative changes | +| `get_products` (`brief` / `refine`) | Bespoke curation that depends on upstream inventory queries or HITL review | +| `get_signals` (`brief`) | Semantic signal discovery that depends on slow provider queries or review | +| `sync_creatives` | Asset review and transcoding pipelines | +| `build_creative` (with review) | Human creative review before finalizing | +| `sync_catalogs` | Large feeds or feeds requiring content policy review | +| `activate_signal` | Platform deployment pipelines | + +These operations integrate with external systems or require human approval. Wholesale feed reads are the exception: `get_products buying_mode: "wholesale"` and `get_signals discovery_mode: "wholesale"` stay synchronous repair/reconciliation reads and report partial completion with `incomplete[]`, not `submitted`. + +## Timeout Configuration + +Set reasonable timeouts based on status: + +```javascript +const TIMEOUTS = { + sync: 30_000, // 30 seconds — most operations complete here + working: 300_000, // 5 minutes — server is actively processing + interactive: 300_000, // 5 minutes for human input + submitted: 86_400_000 // 24 hours for external dependencies +}; + +function getTimeout(status) { + if (status === 'submitted') return TIMEOUTS.submitted; + if (status === 'working') return TIMEOUTS.working; + if (status === 'input-required') return TIMEOUTS.interactive; + return TIMEOUTS.sync; +} +``` + +`working` uses a connection timeout (how long to hold open), not a poll interval. The server sends progress out-of-band and delivers the result on the same connection. `submitted` uses a polling or webhook delivery window; a 30-second poll interval is a reasonable default even when webhooks are configured as the primary notification path. + +## Human-in-the-Loop Workflows + +### Design Principles + +1. **Optional by default** - Approvals are configured per implementation +2. **Clear messaging** - Users understand what they're approving +3. **Timeout gracefully** - Don't block forever on human input +4. **Audit trail** - Track who approved what when + +The human-in-the-loop patterns in async operations embody the [Embedded Human Judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) framework — human judgment is embedded in system design, not bolted on afterward. + +### Approval Patterns + +```javascript +async function handleApprovalWorkflow(response) { + if (response.status === 'input-required' && needsApproval(response)) { + // Show approval UI with context + const approval = await showApprovalUI({ + title: "Campaign Approval Required", + message: response.message, + details: response, // Task fields are at top level + approver: getCurrentUser() + }); + + // Send approval decision + const decision = { + approved: approval.approved, + notes: approval.notes, + approver_id: approval.approver_id, + timestamp: new Date().toISOString() + }; + + return sendFollowUp(response.context_id, decision); + } +} +``` + +### Common Approval Triggers + +- **Budget thresholds**: Campaigns over $100K +- **New advertisers**: First-time buyers +- **Policy-sensitive content**: Certain industries or topics +- **Manual inventory**: Premium placements requiring publisher approval + +## Progress Tracking + +### Progress Updates + +Long-running operations may provide progress information: + +```json +{ + "status": "working", + "message": "Processing creative assets...", + "task_id": "task-456", + "progress": 45, + "step": "transcoding_video", + "steps_completed": ["upload", "validation"], + "steps_remaining": ["transcoding_video", "thumbnail_generation", "cdn_distribution"] +} +``` + +### Displaying Progress + +```javascript +function displayProgress(response) { + if (response.progress !== undefined) { + updateProgressBar(response.progress); + } + + if (response.step) { + updateStatusText(`Step: ${response.step}`); + } + + if (response.steps_completed) { + updateStepsList(response.steps_completed, response.steps_remaining); + } + + // Always show the message + updateMessage(response.message); +} +``` + +## Protocol-Agnostic Patterns + +These patterns work with both MCP and A2A. + +### Product Discovery with Clarification + +```javascript +async function discoverProducts(brief) { + let response = await adcp.send({ + task: 'get_products', + brief: brief + }); + + // Handle clarification loop + while (response.status === 'input-required') { + const moreInfo = await promptUser(response.message); + response = await adcp.send({ + context_id: response.context_id, + additional_info: moreInfo + }); + } + + if (response.status === 'completed') { + return response.products; // Task fields are at top level + } else if (response.status === 'failed') { + throw new Error(response.message); + } +} +``` + +### Campaign Creation with Approval + +```javascript +async function createCampaign(packages, budget) { + let response = await adcp.send({ + task: 'create_media_buy', + packages: packages, + total_budget: budget + }); + + // Handle approval if needed + if (response.status === 'input-required') { + const approved = await getApproval(response.message); + if (!approved) { + throw new Error('Campaign creation not approved'); + } + + response = await adcp.send({ + context_id: response.context_id, + approved: true + }); + } + + // 'working' means the server is actively processing — result will arrive + // 'submitted' means blocked on external dependency — poll by task_id; + // a webhook may also deliver completion if configured. + if (response.status === 'submitted') { + response = await pollForResult(response.task_id); + } + + if (response.status === 'completed') { + return response.media_buy_id; // Task fields are at top level + } else { + throw new Error(response.message); + } +} +``` + +### Polling for `submitted` Operations + +Polling is always valid for `submitted` operations. A webhook may also deliver completion when configured, but callers can still reconcile through the task polling surface. Don't poll for `working` — the server delivers the result on the open connection. + +```javascript +async function pollForResult(taskId, options = {}) { + const { maxWait = 86_400_000, pollInterval = 30_000 } = options; + const startTime = Date.now(); + + while (true) { + if (Date.now() - startTime > maxWait) { + throw new Error('Operation timed out'); + } + + await sleep(pollInterval); + + const response = await adcp.call('get_task_status', { + task_id: taskId, + include_result: true + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + return response; + } + } +} +``` + +## Asynchronous-First Design + +### Store State Persistently + +Don't rely on in-memory state for async operations: + +```javascript +class AsyncOperationTracker { + constructor(db) { + this.db = db; + } + + async startOperation(taskId, operationType, request) { + await this.db.operations.insert({ + task_id: taskId, + type: operationType, + status: 'submitted', + request: request, + created_at: new Date(), + updated_at: new Date() + }); + } + + async updateStatus(taskId, status, result = null) { + await this.db.operations.update( + { task_id: taskId }, + { + status: status, + result: result, + updated_at: new Date() + } + ); + } + + async getPendingOperations() { + return this.db.operations.find({ + status: { $in: ['submitted', 'working', 'input-required'] } + }); + } +} +``` + +### Handle Restarts Gracefully + +Resume tracking after orchestrator restarts: + +```javascript +async function onStartup() { + const tracker = new AsyncOperationTracker(db); + const pending = await tracker.getPendingOperations(); + + for (const operation of pending) { + // Check current status on server + const response = await adcp.call('get_task_status', { + task_id: operation.task_id, + include_result: true + }); + + // Update local state + await tracker.updateStatus(operation.task_id, response.status, response); + + // Resume polling if still pending + if (['submitted', 'working'].includes(response.status)) { + startPolling(operation.task_id); + } + } +} +``` + +## Best Practices + +1. **Design async first** - Assume any operation could take time +2. **Persist state** - Don't rely on in-memory tracking +3. **Handle restarts** - Resume tracking on startup +4. **Implement timeouts** - Don't wait forever +5. **Show progress** - Keep users informed +6. **Support cancellation** - Let users cancel long operations +7. **Audit trail** - Log all status transitions + +## Next Steps + +- **Webhooks**: See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for push notifications instead of polling +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for status handling details +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design) for production patterns diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller.mdx new file mode 100644 index 0000000000..1bb648a43f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller.mdx @@ -0,0 +1,1175 @@ +--- +title: Compliance test controller +description: "Optional sandbox tool that lets the storyboard runner walk full lifecycle state machines by triggering seller-side transitions deterministically." +"og:title": "AdCP — Compliance test controller" +--- + +# Compliance test controller + + +**The compliance test controller is a dev/staging-only affordance, not a production-time concept.** AgenticAdvertising.org Verified (Sandbox) grading does not require or use it. The compliance heartbeat drives storyboards against the seller's registered production URL with `account.sandbox: true` on every request, and the seller's production stack is responsible for honoring the flag — no controller endpoint needed. + +Specialism certification under Verified (Spec) is different: any selected storyboard with `controller_seeding: true` requires a registered dev or staging endpoint that exposes the seed scenarios used by that storyboard. Sellers need only implement the scenarios required by the specialisms they certify; they do not need the full controller surface. + +Sellers MAY implement the controller in their dev or staging environment to support their own integration testing — walking lifecycle state machines deterministically, seeding fixtures, forcing transitions that would otherwise require waiting for real time. That's its purpose. It MUST NOT be exposed on production deployments (see [Sandbox gating](#sandbox-gating) below). + +Confused about how the controller relates to AgenticAdvertising.org Verified (Sandbox)? See [#4379](https://github.com/adcontextprotocol/adcp/issues/4379) for the framing decision: (Sandbox) attests "real production endpoint correctly handles sandbox-flagged traffic across the full storyboard suite." The controller is the developer-side affordance for deterministic testing and Verified (Spec) specialism fixtures, not the production grading mechanism. + + +AdCP defines lifecycle state machines for accounts, creatives, media buys, SI sessions, and delivery reporting. Many transitions in these state machines are seller-initiated — creative approval, account suspension, budget depletion, delivery accrual. A storyboard runner can only exercise buyer-initiated flows, leaving seller-initiated transitions untested. + +The **compliance test controller** is an optional tool sellers expose in their dev/staging environment to support deterministic local testing. It allows a runner to trigger seller-side state transitions on demand, enabling end-to-end lifecycle verification during development. + +## Motivation + +Without a test controller, compliance testing is observational: fire an action, read back whatever state exists, move on. This catches schema violations but not behavioral ones. + +| Track | Observational (today) | Deterministic (with controller) | +|-------|-----------------------|---------------------------------| +| **Creative** | Sync → observe initial status | Walk `processing` → `approved` → `archived`; force `rejected` with reason | +| **Account** | Read existing statuses | Force `suspended` → verify operation gates → reactivate | +| **SI sessions** | Initiate → message → terminate | Force `terminated` with timeout reason → verify [`SESSION_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-session-not-found) on next call | +| **Reporting** | Call [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) → hope data exists | Simulate delivery → verify rollups | +| **Budgeting** | Create buy with budget → read back | Simulate spend to threshold → verify alerts and `payment_required` | +| **Media buy** | Create → pause → resume | Force seller-initiated `rejected` → verify terminal state | + +## Sandbox gating + +Sellers MUST NOT expose `comply_test_controller` on production deployments — to anyone, on any surface. The tool MUST be absent from `tools/list` (MCP) and from the agent card's `skills[]` (A2A); the `compliance_testing` block MUST be absent from [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities); dispatch MUST return the transport's standard unknown-tool error (e.g., JSON-RPC `-32601 Method not found` for MCP, the unknown-skill rejection for A2A) — indistinguishable from the same-transport response of a seller that does not implement the tool. A production deployment that exposes the tool on any of these surfaces is non-conformant regardless of whether dispatch is gated. + +The canonical pattern is two deployments: one production (no controller wired), one sandbox/staging (controller wired for all comers). Sellers expose `comply_test_controller` only on sandbox/staging deployments; any principal that can authenticate to such a deployment can call it. + +Sellers MAY instead run a single deployment with mixed sandbox/live principals and project the tool per-principal, gating on the resolved account's mode. This is an implementation pattern, not the canonical model. Sellers picking this pattern MUST gate all three surfaces consistently: `tools/list` (or `skills[]`), the `compliance_testing` capability block, and dispatch. Partial projection — e.g., gating `tools/list` but leaving the `compliance_testing` block visible to live principals, or returning [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) (rather than unknown-tool) to a live principal who probes by name — is non-conformant; it reopens the discovery side channel that deployment-scoping closes. + +`FORBIDDEN` is reserved for the in-sandbox case where the caller is authorized to call the controller but `params` reference a non-sandbox account. Sandbox gating is enforced per-request on the account reference, not just at tool registration time. + +The mechanism for provisioning sandbox credentials and for separating production from sandbox/staging deployments is seller-specific and out of scope for this spec. Sellers MUST document their sandbox access mechanism so storyboard runners can connect appropriately. + +The storyboard runner MUST treat the presence of `comply_test_controller` in `tools/list` (or `skills[]`) or the presence of the `compliance_testing` block in `get_adcp_capabilities` on a connection it believes is production as a hard conformance failure. + +## Tool definition + +**Schemas**: [`comply-test-controller-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/compliance/comply-test-controller-request.json) | [`comply-test-controller-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/compliance/comply-test-controller-response.json) + +Sellers that implement compliance test controller MUST: +- Only expose the tool in sandbox mode (see sandbox gating above) +- Enforce the same state transition rules as production — invalid transitions MUST return errors +- Reflect forced state changes in subsequent reads ([`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives), [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), etc.) + +```json +{ + "name": "comply_test_controller", + "description": "Triggers seller-side state transitions for compliance testing. Sandbox only.", + "inputSchema": { + "type": "object", + "properties": { + "scenario": { + "type": "string", + "enum": [ + "list_scenarios", + "force_creative_status", + "force_creative_purge", + "force_account_status", + "force_media_buy_status", + "compact_product_lifecycle_probe", + "compact_direct_buy_lifecycle_probe", + "force_create_media_buy_arm", + "force_get_products_arm", + "force_get_signals_arm", + "force_task_completion", + "force_session_status", + "simulate_delivery", + "simulate_budget_spend", + "seed_account", + "seed_rights_grant", + "seed_product", + "seed_pricing_option", + "seed_creative", + "seed_plan", + "seed_media_buy", + "seed_creative_format", + "seed_measurement_catalog", + "query_upstream_traffic", + "query_provenance_audit_observations", + "force_upstream_unavailable" + ], + "description": "The seller-side transition or fixture-seed to trigger." + }, + "params": { + "type": "object", + "description": "Scenario-specific parameters. Omit for list_scenarios. force_creative_status: {creative_id, status, rejection_reason?}. force_creative_purge: {creative_id, purge_kind?, reason_code?, reason_detail?}. force_account_status: {account_id, status}. force_media_buy_status: {media_buy_id, status, rejection_reason?}. compact_product_lifecycle_probe: {operation: prepare, product_id} or {operation: expire_proposal, proposal_id}. compact_direct_buy_lifecycle_probe: {operation: prepare, product_id}. force_create_media_buy_arm: {arm, task_id?, message?} - task_id required when arm = submitted. force_get_products_arm: {arm, task_id?, message?, reason?, suggestions?} - task_id required when arm = submitted; reason required when arm = rejected. force_get_signals_arm: {arm, task_id?, message?} - task_id required when arm = submitted. force_task_completion: {task_id, result}. force_session_status: {session_id, status, termination_reason?}. simulate_delivery: {media_buy_id, delivery_date?, impressions?, clicks?, reported_spend?, conversions?, reach?, frequency?, reach_window?, viewability?}. simulate_budget_spend: {account_id|media_buy_id, spend_percentage}. seed_account: {account_id, fixture?}. seed_rights_grant: {rights_id, fixture?}. seed_product: {product_id, fixture?}. seed_pricing_option: {product_id, pricing_option_id, fixture?}. seed_creative: {creative_id, fixture?}. seed_plan: {plan_id, fixture?}. seed_media_buy: {media_buy_id, fixture?}. seed_creative_format: {format_id, fixture?} (deprecated named-format compatibility tests only). seed_measurement_catalog: {vendor, metrics[]}. query_upstream_traffic: {since_timestamp?, endpoint_pattern?, limit?, attestation_mode?, identifier_value_digests?}. query_provenance_audit_observations: {creative_id}. force_upstream_unavailable: {tool, upstream_name?}." + } + }, + "required": ["scenario"] + } +} +``` + + +The `params` description inlines param shapes for each scenario because MCP clients (including LLMs) read descriptions, not conditional schema branches. For formal validation schemas suitable for SDK code generation, see the per-scenario definitions below. + + +## Scenarios + +### `force_creative_status` + +Transitions a creative to the specified status. The seller MUST enforce valid transitions per the [creative lifecycle state machine](/dist/docs/3.2.0-beta.4/creative/specification#creative-status-lifecycle). + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Creative to transition | +| `status` | `processing` \| `pending_review` \| `approved` \| `suspended` \| `rejected` \| `archived` | Yes | Target status | +| `rejection_reason` | string | When `status` = `rejected` | Reason for rejection | +| `reason_code` | CreativeEventReasonCode | No | Reason code for the lifecycle transition | +| `reason_detail` | string | No | Human-readable detail for the lifecycle transition | + +**Example:** + +```json +{ + "scenario": "force_creative_status", + "params": { + "creative_id": "cr-123", + "status": "rejected", + "reason_code": "policy_revocation", + "rejection_reason": "Brand safety policy violation" + } +} +``` + +### `force_account_status` + +Transitions an account to the specified status. The seller MUST enforce the [account lifecycle rules](/dist/docs/3.2.0-beta.4/accounts/overview#account-status-lifecycle) — terminal states (`rejected`, `closed`) cannot be exited. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `account_id` | string | Yes | Account to transition | +| `status` | `active` \| `pending_approval` \| `rejected` \| `payment_required` \| `suspended` \| `closed` | Yes | Target status | + +**Example:** + +```json +{ + "scenario": "force_account_status", + "params": { + "account_id": "acct-456", + "status": "payment_required" + } +} +``` + +### `force_media_buy_status` + +Transitions a media buy to the specified status. The seller MUST enforce the media buy lifecycle — `rejected` is only valid from `pending_creatives` or `pending_start`. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `media_buy_id` | string | Yes | Media buy to transition | +| `status` | `pending_creatives` \| `pending_start` \| `active` \| `paused` \| `completed` \| `rejected` \| `canceled` | Yes | Target status | +| `rejection_reason` | string | When `status` = `rejected` | Reason for rejection | + +**Example:** + +```json +{ + "scenario": "force_media_buy_status", + "params": { + "media_buy_id": "mb-789", + "status": "rejected", + "rejection_reason": "Policy violation" + } +} +``` + +### `compact_product_lifecycle_probe` + +Prepares deterministic sandbox behavior for the compact AdCP 3.2 product, +proposal, and resulting MediaBuy lifecycle, or advances one committed proposal +strictly beyond its hold deadline. Sellers advertise this scenario only when +they expose +[`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products), [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals), +[`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy), and [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys); the 3.x [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) compatibility facades remain optional. + +`operation: "prepare"` binds the seeded `product_id` to the caller's +authenticated sandbox account and principal for the current compliance run. +For requests that select exactly that product, the seller MUST make each +ordinary lifecycle call deterministic: + +- `list_products` returns `outcome: "listed"` with the prepared product; +- `request_proposals` returns a synchronous `outcome: "proposed"` draft rather + than `submitted` or `rejected`; +- `refine_proposals(action: "finalize")` returns a synchronous `finalized` + committed hold rather than `submitted`, `hold_unavailable`, or `batch_aborted`; +- `decline_proposals` returns `declined`; +- `accept_proposal` returns synchronous `status: "completed"` unless the exact + proposal has since been declined or expired. A successful acceptance returns + the initial MediaBuy `revision` and lifecycle state, preserves the committed + proposal ID and terms digest, and exposes a self-serve decrease-only budget + action through `control_media_buy`; +- a valid `control_media_buy` request with the current revision and a lower + `daily_budget_cap` returns synchronous `status: "completed"`, increments the + MediaBuy revision, and preserves its lifecycle state; and +- `get_media_buys` immediately reads back the applied cap, post-control + revision, lifecycle state, acceptance/control revision history, and exact + accepted-proposal linkage. + +The seller still derives proposal terms from the request. When the brief states +an explicit budget or flight, the deterministic proposal carries those resolved +values in `commercial_terms` so compatibility-facade probes can repeat the +exact committed terms. Exact retries continue to use each business tool's +normal idempotency cache; preparing the product does not override replay +semantics or make an out-of-envelope increase valid. + +`operation: "expire_proposal"` targets a committed proposal issued under the +same sandbox account and principal. The controller advances its effective clock +to the smallest supported instant strictly greater than the proposal's stored +`expires_at`, processes the hold lapse before returning, and reports +`simulated.expiry_processed: true`, `simulated.proposal_id`, and the applied +`simulated.target_time`. It MUST NOT accept a caller-supplied expiry timestamp. +Replaying an identical successful controller-induced expiry returns the same +successful result and `target_time`, including after a lost response. Unknown +or cross-principal IDs return [`NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes). A proposal that was never an eligible +committed hold, or whose hold ended through another transition, returns +[`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes). + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `operation` | `prepare` \| `expire_proposal` | Yes | Probe operation | +| `product_id` | string | When `operation` = `prepare` | Seeded product whose compact lifecycle becomes deterministic | +| `proposal_id` | string | When `operation` = `expire_proposal` | Committed proposal whose effective clock advances strictly beyond its stored hold deadline | + +The two identity parameters are mutually exclusive. Supplying the identity for +the other operation is invalid. + +**Prepare request:** + +```json +{ + "account": { + "sandbox": true + }, + "scenario": "compact_product_lifecycle_probe", + "params": { + "operation": "prepare", + "product_id": "compact_lifecycle_video" + } +} +``` + +**Prepare response:** + +```json +{ + "success": true, + "simulated": { + "prepared": true, + "product_id": "compact_lifecycle_video" + } +} +``` + +**Expiry request:** + +```json +{ + "account": { + "sandbox": true + }, + "scenario": "compact_product_lifecycle_probe", + "params": { + "operation": "expire_proposal", + "proposal_id": "proposal_committed_123" + } +} +``` + +**Expiry response:** + +```json +{ + "success": true, + "simulated": { + "expiry_processed": true, + "proposal_id": "proposal_committed_123", + "target_time": "2026-10-01T12:00:00.001Z" + } +} +``` + +### `compact_direct_buy_lifecycle_probe` + +Prepares deterministic sandbox behavior for the compact AdCP 3.2 direct-buy +lifecycle. Sellers advertise this scenario only when they expose +[`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products), +[`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products), +[`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy), and +[`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). Deprecated +[`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products), `create_media_buy`, and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) facades are not part +of this scenario. + +`operation: "prepare"` binds the seeded `product_id` to the caller's +authenticated sandbox account and principal for the current compliance run. +For requests that select exactly that product, the seller MUST make the direct +lifecycle deterministic: + +- `list_products` returns synchronous `outcome: "listed"` with the prepared + product, one stable pricing option, `feed_version`, and a separate + `pricing_version`; +- the product and resulting MediaBuy expose a self-serve decrease-only budget + control through `control_media_buy`; +- `buy_products` returns synchronous `status: "completed"` with a non-terminal + MediaBuy, its current `revision`, and an accepted proposal that preserves the + selected product and pricing option, binds `source_feed_version` and + `source_pricing_version`, and carries stable `proposal_id` and `terms_digest` + values; +- a valid `control_media_buy` request that applies a lower `daily_budget_cap` + returns synchronous `status: "completed"`, increments the MediaBuy revision, + and preserves the MediaBuy's lifecycle status; and +- `get_media_buys` immediately reads back the applied cap, lifecycle status, + revision returned by `control_media_buy`, and the creation/control revision + history needed to prove that the mutation incremented the token. Its + `accepted_proposal_id`, `accepted_proposal_terms_digest`, and embedded + accepted proposal preserve the exact proposal identity and digest returned by + `buy_products`. + +Exact retries continue to use each business tool's normal idempotency cache. +Preparing the product does not override replay semantics or make an +out-of-envelope increase valid. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `operation` | `prepare` | Yes | Prepare the seeded direct-buy lifecycle | +| `product_id` | string | Yes | Seeded product whose direct-buy lifecycle becomes deterministic | + +**Prepare request:** + +```json +{ + "account": { + "sandbox": true + }, + "scenario": "compact_direct_buy_lifecycle_probe", + "params": { + "operation": "prepare", + "product_id": "compact_direct_buy_video" + } +} +``` + +**Prepare response:** + +```json +{ + "success": true, + "simulated": { + "prepared": true, + "product_id": "compact_direct_buy_video" + } +} +``` + +### `force_create_media_buy_arm` + +Shapes the next [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) call from the caller's authenticated sandbox account into a specific response arm. v1 supports two arms: `submitted` (the async task envelope, no `media_buy_id` yet) and `input-required` (the errors-branch). Unlike `force_media_buy_status`, no entity transitions — there is no media buy yet — so the response carries `forced.arm` rather than `previous_state`/`current_state`. + +The submitted-arm wire shape is otherwise implementation-dependent: most sellers route most buys synchronously and no buyer-side request shape reliably triggers async. This scenario lets storyboards pin the arm so a regressed seller (e.g., emitting `media_buy_id` under `status: submitted`) cannot pass conformance silently. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `arm` | `submitted` \| `input-required` | Yes | Target response arm for the next `create_media_buy` call | +| `task_id` | string | When `arm` = `submitted` | Deterministic task handle (max 128 chars) the seller MUST emit verbatim on the submitted envelope and MUST accept on subsequent `tasks/get` polls. Sandbox task_ids are caller-opaque strings; production task-id format rules do not apply. | +| `message` | string | No | Human-readable explanation surfaced verbatim on the seller's `create_media_buy` response. Plain text, max 2000 characters. Buyers consuming the resulting response MUST apply the prompt-injection sanitization documented for [`message` on the submitted envelope](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-response.json) — this scenario is the natural place for a runner to inject adversarial strings to test that buyer-side sanitization. | + +**Example:** + +```json +{ + "scenario": "force_create_media_buy_arm", + "params": { + "arm": "submitted", + "task_id": "task_async_signed_io_q2", + "message": "Awaiting IO signature from sales team; typical turnaround 2–4 hours" + } +} +``` + +**Response.** A `ForcedDirectiveSuccess` shape carrying the registered directive: + +```json +{ + "success": true, + "forced": { + "arm": "submitted", + "task_id": "task_async_signed_io_q2" + }, + "message": "Next create_media_buy call will return the submitted arm with task_id task_async_signed_io_q2" +} +``` + +`forced.task_id` is present only when `arm: submitted`. + +**Consumption and idempotency.** The directive is keyed to the caller's authenticated sandbox account (account + principal pair) and is consumed by the next `create_media_buy` call from that account. Subsequent calls without a fresh directive return the seller's default arm. Buyer-side `idempotency_key` semantics are unchanged: if the caller replays a `create_media_buy` request that already consumed a directive, the seller MUST replay the cached response (the request idempotency cache wins) and MUST NOT re-evaluate against the now-empty directive slot. Sellers MUST NOT match a directive against a `create_media_buy` call from a different account or principal, even within the same transport connection. A second `force_create_media_buy_arm` call before the directive is consumed overwrites the prior one. + +### `force_get_products_arm` / `force_get_signals_arm` + +Shape the next curated discovery call from the caller's authenticated sandbox +account (account + principal pair) into a status-specific response arm. +`force_get_products_arm` applies only to [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with +`buying_mode: "brief"` or `"refine"`. +The `rejected` arm is introduced in AdCP 3.2. During the beta, callers using release- +precision negotiation can pin `adcp_version: "3.2-beta.0"`, while callers using the +legacy major-only envelope can send `adcp_major_version: 3` when the seller +resolves that request to 3.2. The controller call and matching `get_products` +call MUST negotiate the same served release. +`force_get_signals_arm` applies only to [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) with +`discovery_mode: "brief"` (or omitted, where brief is the default). Wholesale +feed reads are synchronous feed access and MUST NOT consume these directives or +return the Submitted arm solely because a directive exists. + +The directive exists for the same reason as `force_create_media_buy_arm`: +buyers cannot reliably trigger async discovery or a seller-controlled business +decline from request shape alone, but conformance needs deterministic coverage. +The submitted envelope carries only `status` and `task_id` (plus optional +advisory fields such as `message`); terminal `products[]`, `proposals[]`, or +`signals[]` land on task completion through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) (legacy +`tasks/get`) and any registered push notification. The rejected get_products +arm carries `status: "rejected"`, `reason`, and optional `suggestions[]`, with no +products, proposals, errors, or envelope-level adcp_error. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `arm` | `submitted` \| `rejected` | Yes | Target response arm for the next matching discovery call. `rejected` is valid only for `force_get_products_arm`; signals discovery supports only `submitted`. | +| `task_id` | string | When `arm` = `submitted` | Deterministic task handle (max 128 chars) the seller MUST emit verbatim on the submitted envelope and MUST accept on subsequent polling. | +| `message` | string | No | Human-readable explanation surfaced verbatim on the submitted discovery response. Plain text, max 2000 characters. | +| `reason` | string | When `arm` = `rejected` | Sanitized buyer-facing decline reason emitted verbatim on the next get_products response. Plain text, max 2000 characters. | +| `suggestions` | string[] | No | Actionable alternatives emitted on the next get_products rejection. | + +**Examples:** + +```json +{ + "scenario": "force_get_products_arm", + "account": { + "brand": { + "domain": "acmeoutdoor.example" + }, + "operator": "pinnacle-agency.example", + "sandbox": true + }, + "params": { + "arm": "submitted", + "task_id": "task_async_products_acme_q3", + "message": "Custom product curation queued; typical turnaround 10 minutes" + } +} +``` + +```json +{ + "adcp_version": "3.2-beta.0", + "adcp_major_version": 3, + "scenario": "force_get_products_arm", + "account": { + "brand": { + "domain": "acmeoutdoor.example" + }, + "operator": "pinnacle-agency.example", + "sandbox": true + }, + "params": { + "arm": "rejected", + "reason": "The requested budget is below the minimum for this inventory.", + "suggestions": ["Increase the campaign budget."] + } +} +``` + +```json +{ + "scenario": "force_get_signals_arm", + "account": { + "brand": { + "domain": "novamotors.example" + }, + "operator": "pinnacle-agency.example", + "sandbox": true + }, + "params": { + "arm": "submitted", + "task_id": "task_async_signals_nova_ev", + "message": "Signal discovery queued; typical turnaround 10 minutes" + } +} +``` + +**Response.** Both scenarios return the same `ForcedDirectiveSuccess` shape as +`force_create_media_buy_arm`. A `submitted` directive carries `forced.arm` and +`forced.task_id`; a `rejected` get-products directive carries `forced.arm`, +`forced.reason`, and optional `forced.suggestions`. + +**Consumption and idempotency.** The directive is keyed to the caller's +authenticated sandbox account (account + principal pair) and consumed by the +next matching discovery call from that same account. The seller MUST NOT match a +product directive against `get_signals`, a signal directive against +`get_products`, a brief/refine directive against wholesale mode, or any +directive against a different account or principal. A second directive for the +same operation and principal before consumption overwrites the prior directive. +The directive is consumed exactly once. Because discovery tools are read +operations rather than idempotency-cached mutations, repeating the same request +after consumption is a new read and is not guaranteed to replay the forced +response. + +### `force_task_completion` + +Resolves a previously-submitted async task to `completed` with a buyer-supplied result payload. The companion to the `force_*_arm` scenarios: those scenarios drive the seller into a submitted envelope; this one closes the loop by transitioning the task store entry to `completed` and stamping the registered result. The buyer observes completion via the seller's push notification to `push_notification_config.url` and via subsequent `get_task_status` calls reporting `status: "completed"`. When the caller requests `include_result: true`, `get_task_status` returns the typed terminal result payload that matches the original async operation. + +The submitted → completed lifecycle is otherwise non-deterministic — real task completions ride on out-of-band signals (IO countersignature, batch processor cron, governance human review). Storyboards cannot wait. This scenario lets a runner pin the completion deterministically immediately after registering the directive, so the buyer-side polling assertion fires on the same wire shape buyers will observe in production. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `task_id` | string | Yes | Task to resolve. MUST resolve within the caller's authenticated sandbox account; sellers MUST return [`NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) (not [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes), per the multi-tenant convention above) for `task_id`s belonging to other accounts. Typically captured from the prior `create_media_buy` submitted-envelope response (or registered via `force_create_media_buy_arm`). | +| `result` | [`async-response-data`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/async-response-data.json) | Yes | Completion payload to record. Validates against the same `anyOf` union the push-notification webhook and `tasks/get` polling responses use. For `create_media_buy`, this is a `CreateMediaBuyResponse` with `media_buy_id` and `packages`. Sellers MUST emit [`INVALID_PARAMS`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) if `result` does not validate against the response branch for the task's original method. Sellers MAY reject `result` payloads exceeding 256 KB with `INVALID_PARAMS`; storyboards MUST stay below this. | + +**Example:** + +```json +{ + "scenario": "force_task_completion", + "params": { + "task_id": "task_async_signed_io_q2", + "result": { + "media_buy_id": "mb_async_signed_io_q2", + "status": "active", + "packages": [ + { "package_id": "pkg-0", "product_id": "async_signed_io_q2", "budget": 30000 } + ] + } + } +} +``` + +**Response.** Returns a state-transition success shape: + +```json +{ + "success": true, + "previous_state": "submitted", + "current_state": "completed", + "message": "Task task_async_signed_io_q2 transitioned from submitted to completed" +} +``` + +Source state MUST be `submitted`, `working`, or `input-required`; any other source returns [`INVALID_TRANSITION`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes). Sellers MUST emit `NOT_FOUND` if `task_id` is unknown to the caller's account, and `INVALID_TRANSITION` if the task is already terminal (`completed` / `failed` / `canceled`). Forcing a task to `failed` is out of scope for this scenario; the input-required arm of `force_create_media_buy_arm` covers the buyer-input-needed failure path. + +**Replay semantics.** An identical replay after successful completion is an idempotent no-op and reports `previous_state: "completed"` and `current_state: "completed"`. A replay with a different result after the task is terminal returns `INVALID_TRANSITION`; terminal results cannot be overwritten. + +**Cross-protocol obligations.** +- **Push notifications.** If the buyer registered `push_notification_config.url` on the original `create_media_buy`, forcing completion MUST fire the webhook with the registered `result` payload (the canonical 3.0 delivery path for completion data). Otherwise the storyboard can only test polling for terminal status, not push delivery of the result. +- **`simulate_delivery` / `simulate_budget_spend`.** Once forced to completed with a valid `CreateMediaBuyResponse` carrying `media_buy_id`, the resulting media buy MUST be addressable by those scenarios. Round-tripping through `force_task_completion` is the supported path for storyboards that need a media buy without going through the synchronous flow. + +**Buyer-side observation.** After this scenario runs, the registered `result` is delivered to the buyer's `push_notification_config.url` (3.0 canonical path) with all caller-supplied fields preserved. Sellers MAY augment with seller-controlled fields (e.g., `created_at`, `dsp_*` IDs, normalized currency casing) but MUST NOT overwrite caller-supplied values. A subsequent `tasks/get(task_id)` MUST return `status: "completed"`. The `result` payload is buyer-controlled in sandbox and round-trips through the seller's store — buyers receiving it via webhook MUST treat the payload as untrusted seller output (per AdCP convention) regardless of the fact that they originated the bytes. This makes `force_task_completion` the natural place for a runner to inject adversarial payloads when testing buyer-side sanitization on the webhook delivery path. + +### `force_session_status` + +Transitions an SI session to a terminal status. Enables testing timeout and termination scenarios that would otherwise require waiting for real timeouts. The `termination_reason` param simulates the cause so the storyboard runner can verify sellers report the correct reason in subsequent responses. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `session_id` | string | Yes | Session to transition | +| `status` | `complete` \| `terminated` | Yes | Target terminal status | +| `termination_reason` | string | When `status` = `terminated` | Reason for termination (e.g., `session_timeout`, `host_terminated`, `policy_violation`) | + +**Example:** + +```json +{ + "scenario": "force_session_status", + "params": { + "session_id": "sess-abc", + "status": "terminated", + "termination_reason": "session_timeout" + } +} +``` + +### `simulate_delivery` + +Injects synthetic delivery data for a media buy. Subsequent calls to [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) MUST reflect this data. Delivery simulation is additive — each call adds to existing delivery totals. + +**Delivery and budget are independent systems.** `simulate_delivery` records what the ad server would report. `simulate_budget_spend` records what the billing system would track. A seller's production system may or may not couple these — the test controller does not assume coupling. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `media_buy_id` | string | Yes | Media buy to add delivery to | +| `delivery_date` | string (`YYYY-MM-DD`) | No | UTC calendar date assigned to this simulated batch for reporting-period tests | +| `impressions` | integer | No | Impressions to simulate | +| `clicks` | integer | No | Clicks to simulate | +| `reported_spend` | object | No | `{ amount: number, currency: string }` — spend as reported in delivery data, does not affect budget | +| `conversions` | integer | No | Conversions to simulate | +| `reach` | number | No | Unique reach count to surface at `totals.reach` | +| `frequency` | number | No | Average frequency per reach unit to surface at `totals.frequency` | +| `reach_window` | object | No | Measurement window for simulated reach/frequency. Shape: `{ kind: "cumulative" }`, `{ kind: "period", period: Duration }`, or `{ kind: "rolling", period: Duration }` | +| `viewability` | object | No | Viewability block to surface at `totals.viewability`, including `measurable_impressions`, `viewable_impressions`, `viewable_rate`, `viewed_seconds`, and `standard`. `standard` SHOULD be supplied whenever measured viewability values are present | + +When `delivery_date` is present, the controller records the batch as a dated +snapshot. A later `get_media_buy_delivery` request with date bounds includes +snapshots whose dates fall in the exact half-open interval +`[start_date, end_date)`: `start_date` is inclusive and `end_date` is exclusive. +Omitting date bounds preserves cumulative reporting. Implementations that only +store legacy undated simulations continue to expose their cumulative totals +when a caller supplies date bounds. + +**Example:** + +```json +{ + "scenario": "simulate_delivery", + "params": { + "media_buy_id": "mb-789", + "delivery_date": "2026-04-15", + "impressions": 10000, + "clicks": 150, + "reach": 4000, + "frequency": 2.5, + "reach_window": { "kind": "rolling", "period": { "interval": 7, "unit": "days" } }, + "viewability": { + "measurable_impressions": 9000, + "viewable_impressions": 7200, + "viewable_rate": 0.8, + "viewed_seconds": 4.3, + "standard": "mrc" + }, + "reported_spend": { "amount": 150.00, "currency": "USD" } + } +} +``` + +### `simulate_budget_spend` + +Simulates budget consumption to a specified percentage. Enables testing budget threshold alerts and `payment_required` transitions without waiting for real spend. This is the only scenario that affects account-level financial state. + +After calling `simulate_budget_spend`, the seller MUST reflect the simulated consumption in [`get_account_financials`](/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials). Specifically: +- `total_spend` (or equivalent) MUST reflect the simulated amount +- `remaining_budget` (or equivalent) MUST be reduced accordingly +- Budget utilization percentages MUST match `spend_percentage` + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `account_id` | string | No | Account (for account-level budget) | +| `media_buy_id` | string | No | Media buy (for buy-level budget) | +| `spend_percentage` | number | Yes | Spend to this % of budget (0–100) | + +At least one of `account_id` or `media_buy_id` is required. The target entity MUST have a non-zero budget configured — the controller SHOULD return `INVALID_PARAMS` if it does not. + +**Example:** + +```json +{ + "scenario": "simulate_budget_spend", + "params": { + "media_buy_id": "mb-789", + "spend_percentage": 95 + } +} +``` + +### `seed_product` + +Creates (or upserts) a product fixture with a caller-supplied `product_id` so subsequent storyboard steps can reference the product by stable ID. The controller MUST make the seeded product discoverable via `get_products` under the authenticated account unless the fixture explicitly marks it hidden. + +**Why this scenario exists.** Storyboards hardcode fixture IDs like `"test-product"` and expect the seller to have a matching product. Without a seed scenario, every implementer rediscovers which IDs the conformance suite expects and has to alias them by hand. `seed_product` replaces that discovery with an explicit, storyboard-authored contract. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `product_id` | string | Yes | Stable identifier the storyboard will reference | +| `fixture` | object | No | Product shape. Minimum useful fields: `delivery_type`, `channels`, `pricing_options[]`, `format_options[]`. Sellers MAY fill in defaults for omitted fields. | + +For vendor-metric precondition tests, prefer `seed_measurement_catalog` for the external vendor catalog. A product fixture may also carry `measurement_catalogs[]` entries shaped as `{ vendor, metrics[] }` as a compatibility fallback for local harnesses that need the product contract and referenced measurement snapshot in one fixture. If both are supplied for the same vendor, the explicit `seed_measurement_catalog` snapshot takes precedence for that compliance session. + +**Example:** + +```json +{ + "scenario": "seed_product", + "params": { + "product_id": "test-product", + "fixture": { + "delivery_type": "non_guaranteed", + "channels": ["display"], + "pricing_options": [ + { "pricing_option_id": "test-pricing", "pricing_model": "cpm", "currency": "USD", "floor_price": 1.0 } + ], + "format_options": [{ "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }] + } + } +} +``` + +### `seed_pricing_option` + +Adds (or upserts) a pricing option on an existing seeded product. Use this when a storyboard needs a specific pricing option that wasn't included in the initial `seed_product` call, or when the option's attributes need to diverge from the seller's default. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `product_id` | string | Yes | Parent product (must already exist — seed it first) | +| `pricing_option_id` | string | Yes | Stable identifier for the pricing option | +| `fixture` | object | No | Pricing option shape per the [`PricingOption`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/pricing-option.json) schema (`pricing_model`, `currency`, `floor_price` for auction-based, `fixed_price` for fixed, etc.) | + +**Example:** + +```json +{ + "scenario": "seed_pricing_option", + "params": { + "product_id": "test-product", + "pricing_option_id": "default", + "fixture": { + "pricing_model": "cpm", + "floor_price": 5.0, + "currency": "USD" + } + } +} +``` + +### `seed_creative` + +Creates a creative fixture at a specific lifecycle status. Lets governance and delivery storyboards reference a pre-approved creative without round-tripping [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) first. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Stable identifier | +| `fixture` | object | No | Creative shape. Typical fields: `status`, `format_kind`, `assets`, `click_through_url`. | + +**Example:** + +```json +{ + "scenario": "seed_creative", + "params": { + "creative_id": "campaign_hero_video", + "fixture": { + "status": "approved", + "format_kind": "video_hosted", + "assets": [{ "type": "video", "url": "https://example.com/hero.mp4" }] + } + } +} +``` + +### `seed_plan` + +Creates a media plan fixture. Used by governance storyboards that assert against a specific plan without running the full briefing + proposal flow first. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plan_id` | string | Yes | Stable identifier | +| `fixture` | object | No | Plan shape. Typical fields: `budget`, `brand`, `flight`, `line_items[]`. | + +**Example:** + +```json +{ + "scenario": "seed_plan", + "params": { + "plan_id": "gov_acme_q2_2027", + "fixture": { + "budget": { "total": 30000, "currency": "USD" }, + "brand": { "domain": "acmeoutdoor.example" }, + "flight": { "start": "2027-04-01", "end": "2027-06-30" } + } + } +} +``` + +### `seed_media_buy` + +Creates a media buy fixture at a specified lifecycle state, bypassing the `create_media_buy` flow. Used by storyboards that need to assert governance or delivery behavior against a pre-existing buy. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `media_buy_id` | string | Yes | Stable identifier | +| `fixture` | object | No | Media buy shape. Typical fields: `status`, `packages[]`, `budget`, `flight`. | + +**Example:** + +```json +{ + "scenario": "seed_media_buy", + "params": { + "media_buy_id": "mb_acme_q2_2026_auction", + "fixture": { + "status": "active", + "packages": [{ "package_id": "pkg_001", "product_id": "test-product" }] + } + } +} +``` + +### `seed_measurement_catalog` + +Seeds a measurement vendor's `get_adcp_capabilities.measurement.metrics[]` snapshot for the compliance session, when the seller's controller advertises this scenario. Media-buy storyboards use an explicit `comply_test_controller` step with this scenario to distinguish a product-level vendor metric capability from the external vendor-catalog discovery precondition. Storyboards may also carry this snapshot in `seed_product.fixture.measurement_catalogs[]` as a compatibility fallback for controllers whose SDK adapter set has not adopted the scenario yet. When both sources are present for the same vendor, the explicit `seed_measurement_catalog` seed is authoritative. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `vendor` | BrandRef | Yes | Measurement vendor whose catalog is being seeded | +| `metrics` | object[] | Yes | Catalog entries; each entry must include `metric_id` and may include the optional fields from `measurement.metrics[]` | + +**Example:** + +```json +{ + "scenario": "seed_measurement_catalog", + "params": { + "vendor": { "domain": "attentionvendor.example" }, + "metrics": [ + { + "metric_id": "attention_catalog_baseline", + "unit": "score", + "description": "Baseline attention metric present in this vendor catalog." + } + ] + } +} +``` + +### Seeding semantics and ordering + + +In AdCP 3.2, IDs in a storyboard `fixtures:` block are run-scoped handles. +Literal injection remains the compatibility default, and all rules in this +section apply whenever the runner selects the `seed` strategy. A storyboard may +separately opt a handle into `discover` or `construct` through explicit +`fixture_resolution` rules. The seller never has to persist the authored +literal when one of those strategies binds a seller-issued ID. See +[Fixture handles and catalog resolution](/dist/docs/3.2.0-beta.4/building/verification/conformance#fixture-handles-and-catalog-resolution). + + +- **Fixture shape.** `fixture` is kept permissive (`additionalProperties: true`) so storyboard authors can declare the minimum shape each test needs. Fixtures SHOULD conform to the corresponding domain schema (`core/product.json` for `seed_product`, `core/pricing-option.json` for `seed_pricing_option`, `media-buy/sync-creatives-request.json` creative-item shape for `seed_creative`, `core/media-buy.json` for `seed_media_buy`, the plan schema for `seed_plan`). `seed_measurement_catalog.metrics[]` mirrors `get_adcp_capabilities.measurement.metrics[]`. Sellers MAY reject clearly malformed fixtures with `INVALID_PARAMS`. +- **Idempotency on re-seed.** A second call with the same primary ID and a `fixture` equivalent to the first SHOULD succeed and return `success: true` with `previous_state: "existing"`. A second call with a **diverging** fixture MUST return `INVALID_PARAMS` with `error_detail` explaining which fields diverged — sellers MUST NOT merge or update silently. Storyboards that need to change fixture state mid-run MUST use `force_*` scenarios, not a re-seed. This keeps the same storyboard deterministic across sellers. +- **Foreign-key ordering.** The runner seeds fixtures in dependency order so sellers receive referenced parents before their children. The dependency DAG: + + ``` + product ──┬─→ pricing_option + ├─→ plan + └─→ media_buy + creative ────→ media_buy + plan ────────→ media_buy + ``` + + Concretely: `seed_product` before `seed_pricing_option`; `seed_product`, `seed_creative`, and `seed_plan` all before `seed_media_buy` when the fixture references them. Storyboards that declare a `fixtures:` block MUST list entries in an order the runner can topologically sort — sellers that receive a `seed_pricing_option` for a product that does not exist, or a `seed_media_buy` referencing a creative/product/plan that was not seeded first, MUST return `INVALID_PARAMS` rather than auto-create the parent. +- **Sandbox scope.** Seeded fixtures exist only for the authenticated sandbox account. `NOT_FOUND` applies the same way as for `force_*` — a seller that cannot see the parent product for the caller's account MUST return `NOT_FOUND`, not silently fall back to another tenant. +- **Capability advertisement.** Sellers that do not implement a given seed scenario MUST return [`UNKNOWN_SCENARIO`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) for that scenario name. The runner treats `UNKNOWN_SCENARIO` on a `seed_*` as a coverage gap for storyboards whose `prerequisites.controller_seeding` requires the scenario — those storyboards are graded `not_applicable`, not failed. This applies to **unfamiliar** `seed_*` names as well: a runner may emit a scenario the seller has never seen because the enum is open-for-extension (see below). Sellers and runners MUST respond with `UNKNOWN_SCENARIO` rather than schema-reject an unrecognized scenario value. +- **Open-for-extension enum.** The `scenario` enum adds new values over time (new seed scenarios land as specialisms demand them). Runners and sellers MUST accept scenario strings they do not recognize and respond with `UNKNOWN_SCENARIO` rather than hard-fail schema validation — otherwise every new enum value becomes a breaking change for stale implementations. + +## Response shape + +### State transition responses (`force_*`) + +**Success:** + +```json +{ + "success": true, + "previous_state": "processing", + "current_state": "approved", + "message": "Creative cr-123 transitioned from processing to approved" +} +``` + +**Failure (invalid transition):** + +```json +{ + "success": false, + "error": "INVALID_TRANSITION", + "error_detail": "Cannot transition from archived to processing — archived is terminal", + "current_state": "archived" +} +``` + +**Failure (unknown entity):** + +```json +{ + "success": false, + "error": "NOT_FOUND", + "error_detail": "Creative cr-unknown not found", + "current_state": null +} +``` + +### Simulation responses (`simulate_*`) + +**`simulate_delivery` response:** + +```json +{ + "success": true, + "simulated": { + "delivery_date": "2026-04-15", + "impressions": 10000, + "clicks": 150, + "reach": 4000, + "frequency": 2.5, + "reach_window": { "kind": "rolling", "period": { "interval": 7, "unit": "days" } }, + "viewability": { + "measurable_impressions": 9000, + "viewable_impressions": 7200, + "viewable_rate": 0.8, + "viewed_seconds": 4.3, + "standard": "mrc" + }, + "reported_spend": { "amount": 150.00, "currency": "USD" } + }, + "cumulative": { + "impressions": 25000, + "clicks": 380, + "reach": 4000, + "frequency": 2.5, + "reach_window": { "kind": "rolling", "period": { "interval": 7, "unit": "days" } }, + "viewability": { + "measurable_impressions": 9000, + "viewable_impressions": 7200, + "viewable_rate": 0.8, + "viewed_seconds": 4.3, + "standard": "mrc" + }, + "reported_spend": { "amount": 375.00, "currency": "USD" } + }, + "message": "Delivery simulated for mb-789: 10000 impressions, 150 clicks, $150.00 spend" +} +``` + +The `simulated` field echoes back the values injected by this call. The `cumulative` field returns running totals across additive counters and spend for this media buy, plus the latest non-additive reach-window and viewability state, so callers can verify expected state before checking [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery). + +**`simulate_budget_spend` response:** + +```json +{ + "success": true, + "simulated": { + "spend_percentage": 95, + "computed_spend": { "amount": 950.00, "currency": "USD" }, + "budget": { "amount": 1000.00, "currency": "USD" } + }, + "message": "Budget for mb-789 set to 95% consumed ($950.00 of $1000.00)" +} +``` + +### Error codes + +Controllers MUST use structured error codes so the storyboard runner can assert on specific failure modes: + +| Error code | When | +|---|---| +| [`INVALID_TRANSITION`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Requested state-machine transition is not valid (e.g., `archived → processing`, `canceled → paused`) | +| [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Operation is not permitted for the resource's current status (e.g., re-seeding a fixture that already exists with a diverging shape) | +| [`NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Entity does not exist or caller does not have access (multi-tenant sandboxes SHOULD treat "not yours" as "not found") | +| [`UNKNOWN_SCENARIO`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Scenario not implemented by this seller | +| [`INVALID_PARAMS`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Missing or malformed params, or precondition not met (e.g., `simulate_budget_spend` on an entity with no budget configured) | +| [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Production account referenced from a sandbox connection | +| [`JCS_NON_FINITE_NUMBER`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Digest-mode `query_upstream_traffic` cannot canonicalize a parsed JSON-like value tree containing `NaN`, `+Infinity`, or `-Infinity`; controllers must not coerce these values, and runners grade the affected validation `not_applicable` | +| [`INTERNAL_ERROR`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) | Transient seller-side failure (e.g., sandbox database unavailable). The runner SHOULD retry once before treating as a failure. | + + +**Controller-specific enum.** The `error` field on controller responses uses a controller-specific vocabulary defined in [`comply-test-controller-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/compliance/comply-test-controller-response.json), distinct from the canonical seller-response [`error-code.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-code.json) enum that governs task-level errors. `INVALID_TRANSITION` is controller-specific (state-machine primitives expose the transition-vs-state distinction that seller-level error codes collapse into `INVALID_STATE`). Storyboard assertions on controller responses use `path: "error"` or direct `field_value` checks, not `check: error_code` — the shape-agnostic `error_code` check is for task-response errors (`adcp_error` / payload `errors[]`), not the controller's own response schema. + + + +### Idempotency + +State transition scenarios (`force_*`) are idempotent: forcing a status that matches the current state returns success with `previous_state` equal to `current_state`. This avoids flaky tests when the runner retries after transient failures. + +Simulation scenarios (`simulate_*`) are NOT idempotent — `simulate_delivery` adds to existing totals, while `simulate_budget_spend` replaces the current spend level. + +## Test surfaces + +Where a seller's state-of-record lives determines how the storyboard test loop closes. State-local sellers (typically SSPs, creative agents) write to the seller's DB via the `seed_*` scenarios above; the seller's read handlers consume the same store, and the seed→read loop closes naturally. Upstream-proxy sellers (DSPs proxying to platforms, retail-media networks reading retailer catalogs, signals brokers) cannot close the loop that way because their read handlers reach a system the seller does not control; the TypeScript SDK ships a `TestControllerBridge` that runs the real adapter call first, then merges seeded fixtures into the response. Either path earns the wire-format pass that `AAO Verified (Spec)` attests. Neither path is what `(Sandbox)` attests — that's a separate axis covering whether the seller's production stack honors `account.sandbox: true` without real-world side effects. + +The cross-page framing for both implementations of this pattern, the SDK's `_bridge` advisory marker, and the runtime-signals disambiguation table all live in the Conformance Specification → [Test surfaces and the storyboard loop](/dist/docs/3.2.0-beta.4/building/verification/conformance#test-surfaces-and-the-storyboard-loop). + +## Compliance testing modes + +The presence of `comply_test_controller` in a seller's tool list determines which mode a compliance tester uses: + +### Capability discovery + +A seller may implement the test controller without supporting every scenario. The storyboard runner SHOULD call `comply_test_controller` with `scenario: "list_scenarios"` as the first interaction. Sellers that support this return the list of implemented scenarios: + +```json +{ + "success": true, + "scenarios": [ + "force_creative_status", + "force_account_status", + "force_media_buy_status" + ] +} +``` + +Sellers that implement `list_scenarios` MUST respond with scenario names that appear verbatim in the `scenario` enum of [`comply-test-controller-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/compliance/comply-test-controller-request.json). Custom seller-specific scenario names are not part of the compliance contract; storyboard runners will not dispatch to scenarios outside the canonical enum, so listing them serves no purpose. A seller that supports `seed_product` MUST respond with the string `"seed_product"` — not `"create_test_product"` or any other variant. + +Sellers that do not implement `list_scenarios` SHOULD return an error with [`UNKNOWN_SCENARIO`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes). When this happens, the runner tries each scenario individually and treats `UNKNOWN_SCENARIO` responses as coverage gaps (not failures). This means early implementers who skip `list_scenarios` are not penalized — the runner discovers supported scenarios through trial. + +### Observational mode (default) + +When `comply_test_controller` is not available: +- The runner executes buyer-initiated flows and validates response schemas +- State machine transitions that require seller action are skipped +- Advisory observations note what could not be tested + +### Deterministic mode + +When `comply_test_controller` is available: +- The runner walks every reachable state in each lifecycle +- Forces edge cases: terminal states, invalid transitions, error codes +- Validates that forced state changes are reflected in subsequent reads +- Tests operation gates (e.g., [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) blocked when account is `suspended`) + +The runner distinguishes three outcome categories in deterministic mode: +- **Scenario not supported** — returned by `list_scenarios` or `UNKNOWN_SCENARIO` error. Reported as a coverage gap, not a failure. +- **Transition correctly rejected** — controller returned [`INVALID_TRANSITION`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) for an invalid state change. This is a pass. +- **Unexpected failure** — controller returned an error for a transition that should be valid, or succeeded on a transition that should fail. This is a compliance failure. + +### Example: creative lifecycle in deterministic mode + +``` +1. sync_creatives(creative) +2. list_creatives() → verify status = "processing" +3. force_creative_status(creative_id, "pending_review") +4. force_creative_status(creative_id, "approved") +5. list_creatives() → verify status = "approved" +6. force_creative_status(creative_id, "archived") +7. list_creatives() → verify status = "archived" +8. sync_creatives(same creative) → verify unarchive (→ approved or pending_review) +9. force_creative_status(creative_id, "rejected", reason) +10. list_creatives() → verify rejection_reason persisted +11. sync_creatives(same creative) → verify resubmission (rejected → processing) +12. force_creative_status(creative_id, "approved") → expect INVALID_TRANSITION (must go through pending_review) +``` + +### Example: account operation gates in deterministic mode + +``` +1. sync_accounts(account) → active +2. force_account_status(account_id, "suspended") +3. create_media_buy() → expect ACCOUNT_SUSPENDED +4. get_media_buys() → expect existing buys still readable +5. force_account_status(account_id, "active") +6. create_media_buy() → expect success +7. force_account_status(account_id, "payment_required") +8. update_media_buy(add packages) → expect ACCOUNT_PAYMENT_REQUIRED +9. get_media_buys() → existing buys still readable +``` + +### Example: media buy lifecycle in deterministic mode + +``` +1. create_media_buy() → status = "pending_creatives" +2. force_media_buy_status(media_buy_id, "rejected", reason) → expect success +3. get_media_buys() → verify status = "rejected", rejection_reason persisted +4. force_media_buy_status(media_buy_id, "active") → expect INVALID_TRANSITION (rejected is terminal) +5. create_media_buy() → new buy, status = "pending_creatives" +6. force_media_buy_status(media_buy_id, "pending_start") +7. force_media_buy_status(media_buy_id, "active") +8. force_media_buy_status(media_buy_id, "rejected") → expect INVALID_TRANSITION (rejected only valid from pending_creatives or pending_start) +``` + +### Example: delivery and budget verification + +``` +1. create_media_buy(budget: $1000) +2. simulate_delivery(impressions: 10000, reported_spend: $500) +3. get_media_buy_delivery() → verify delivery reflects simulated data + (reported_spend is delivery-only; does not affect account budget) +4. simulate_budget_spend(spend_percentage: 95) +5. get_account_financials() → verify total_spend reflects 95% ($950, not $500 from delivery) +6. simulate_budget_spend(spend_percentage: 100) +7. force_account_status("payment_required") +8. create_media_buy() → expect ACCOUNT_PAYMENT_REQUIRED +``` + +## Certification tiers + +| Tier | Requirement | What it proves | +|------|-------------|----------------| +| **Functional compliance** | Pass all storyboards in observational mode | Tools exist, respond correctly, and complete buyer-initiated flows | +| **Stateful compliance** | Pass all storyboards in deterministic mode | State machines enforce correct transitions, error codes match spec, operation gates block correctly | + +**Specialism-scoped fixture requirements.** Stateful compliance requires every +fixture used by the specialism's selected storyboards to resolve. A seller may +satisfy a fixture through any strategy that the storyboard explicitly enables: +`seed`, `discover`, or `construct`. Storyboards without `fixture_resolution` +remain seed-only, so their corresponding `seed_*` scenarios are still required +for full coverage. Missing every available strategy produces a visible +`fixture_unsatisfied` coverage gap; it is not a passing result and cannot be +used as a blanket opt-out from conformance. + +This relaxation applies only to fixture setup. Sellers must still implement the +`force_*` and `simulate_*` scenarios required by the lifecycle assertions in +their claimed specialisms. If a seller advertises a setup scenario or begins a +normal buyer-flow construction call and that operation fails, the runner grades +the failure rather than falling back to another strategy. + +## Implementation guidance + +### For sellers + +1. Gate `comply_test_controller` at the deployment level — it MUST NOT appear in `tools/list` (or A2A `skills[]`), MUST NOT be advertised via the `compliance_testing` capability block, and MUST dispatch to unknown-tool on production deployments. See [Sandbox gating](#sandbox-gating) for the full rule. +2. Reuse your production state machine logic — the controller should call the same internal transition functions, not bypass them +3. Enforce transition rules — if `rejected` is terminal in production, `force_media_buy_status(rejected → active)` must fail via the controller too +4. Reflect changes immediately — after a forced transition, the next `list_*` or `get_*` call must return the updated state + +### For compliance testers + +1. Detect the tool during profile discovery via `tools/list` +2. Call `list_scenarios` to discover which scenarios are supported +3. Run observational mode as the baseline — it works everywhere +4. Layer deterministic scenarios on top when the controller is available +5. Report which mode was used and distinguish coverage gaps from failures +6. Test the controller's transition validation itself — invalid transitions should return [`INVALID_TRANSITION`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes), not silently succeed + +## Design decisions + +1. **Sellers validate transition ordering.** The controller enforces the same state machine rules as production. Calling `force_creative_status(approved)` on a creative that was never `processing` is an error — the controller rejects it just as production would. The lifecycle state machines referenced here are defined in the respective protocol specifications (see [creative lifecycle](/dist/docs/3.2.0-beta.4/creative/specification#creative-status-lifecycle), [account lifecycle](/dist/docs/3.2.0-beta.4/accounts/overview#account-status-lifecycle), [media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/specification), [SI session lifecycle](/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification#session-states)). + +2. **Tests are self-contained.** Each test SHOULD create dedicated entities (media buys, creatives, accounts) rather than reusing existing ones. This ensures additive simulation calls (`simulate_delivery`) start from known-zero state without needing a reset mechanism. No `reset` scenario is needed. Compliance testers SHOULD use unique identifiers (e.g., UUIDs) for test entities to avoid collisions when multiple storyboard runner instances run against the same sandbox concurrently. Sandbox entity cleanup (e.g., TTL-based expiration) is the seller's responsibility. + +3. **Delivery simulation uses a synthetic marker.** `simulate_delivery` records MAY include a `synthetic: true` field that sellers can use internally for bookkeeping. The runner ignores this marker — it validates [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) responses against the same schema regardless. This lowers the implementation bar for sellers without affecting test correctness. + +4. **One tool, many scenarios.** The single-tool design keeps context window cost to ~500 tokens vs ~1,400 for seven separate tools. Sellers implement one sandbox gate. The runner detects one tool. The `list_scenarios` introspection handles partial implementations without requiring per-tool presence detection. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling.mdx new file mode 100644 index 0000000000..876ec9496f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling.mdx @@ -0,0 +1,904 @@ +--- +title: Error Handling +description: "AdCP error handling: protocol errors, task failures, and validation errors with standard error codes, recovery strategies, and exponential backoff retry logic." +"og:title": "AdCP — Error Handling" +--- + +AdCP uses a consistent error handling approach across all operations. Understanding error categories and implementing proper recovery strategies is essential for building robust integrations. + +## Compliance Levels + +Sellers can adopt error handling incrementally. Each level builds on the previous: + +| Level | What to implement | What agents can do | +|-------|-------------------|-------------------| +| **Level 1** | Return `code` + `message` on every error | Agents match on error code to classify failures | +| **Level 2** | Add `recovery`, `retry_after`, `field`, and `suggestion` | Agents auto-retry transient errors and self-correct correctable ones | +| **Level 3** | Use [transport bindings](/dist/docs/3.2.0-beta.4/building/operating/transport-errors) to put errors in `structuredContent` (MCP) or artifact `DataPart` (A2A) | Programmatic clients get typed errors without parsing text | + +**Level 1** is the minimum for a conformant implementation. **Level 2** is where agent-driven recovery becomes possible — without `recovery`, agents must guess from the error code. **Level 3** is where client libraries like `@adcp/sdk` can provide fully typed error objects. + +## Error Categories + +### 1. Protocol Errors + +Transport/connection issues not related to AdCP business logic: + +- Network timeouts +- Connection refused +- TLS/SSL errors +- JSON parsing errors + +**Handling:** Retry with exponential backoff. + +### 2. Task Errors + +Business logic failures returned as `status: "failed"`: + +- Insufficient inventory +- Invalid targeting +- Budget validation failures +- Resource not found + +**Handling:** Check the `recovery` field to determine whether to retry, fix the request, or escalate. + +### 3. Validation Errors + +Malformed requests that fail schema validation: + +- Missing required fields +- Invalid field types +- Out-of-range values + +**Handling:** Fix request format and retry. Usually development-time issues. + +## Error Response Format + +Failed operations return status `failed` with error details. The error object follows the [`error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) schema: + +```json +{ + "status": "failed", + "message": "Budget is below the seller's minimum for this product", + "errors": [ + { + "code": "BUDGET_TOO_LOW", + "message": "Budget is below the seller's minimum for this product", + "recovery": "correctable", + "field": "budget.total", + "suggestion": "Increase budget to at least 500 USD", + "details": { + "minimum_budget": 500, + "currency": "USD" + } + } + ] +} +``` + +### Envelope vs. payload errors — the two-layer model + +AdCP exposes errors in two distinct places, and implementers need to populate the right layer for the right situation. This is the single most common source of error-shape drift between agents and storyboards. + +| Layer | Key | When to populate | Shape | +|---|---|---|---| +| **Task payload** | `payload.errors[]` (or top-level `errors[]`, depending on transport) | The task ran; the payload reports one or more issues (fatal or non-fatal) | Array of error objects per [`error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) | +| **Transport envelope** | `adcp_error` | The task failed and the transport needs a typed, extractable signal | Single error object per [`error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) | + +**A fatal task failure SHOULD populate both layers.** The payload carries the structured `errors[]` array that any protocol can read verbatim, and the transport envelope carries `adcp_error` so MCP/A2A clients can extract a typed error without re-parsing the payload. Populating only one of the two is the source-of-truth for most interop bugs — a runner that reads the transport envelope sees no error, and a runner that reads the payload sees no error signal on the transport: + +```json +// MCP — structuredContent AND payload both carry the error +{ + "content": [{"type": "text", "text": "{\"adcp_error\":{\"code\":\"BUDGET_TOO_LOW\", ...}}"}], + "isError": true, + "structuredContent": { + "adcp_error": { "code": "BUDGET_TOO_LOW", "message": "...", "recovery": "correctable" }, + "payload": { + "errors": [ + { "code": "BUDGET_TOO_LOW", "message": "...", "recovery": "correctable", "field": "budget.total" } + ] + } + } +} +``` + +```json +// A2A — artifact DataPart carries adcp_error; if the agent also surfaces payload via a sibling DataPart, errors[] lives there +{ + "status": { "state": "failed" }, + "artifacts": [{ + "artifactId": "error-result", + "parts": [ + { "kind": "data", "data": { "adcp_error": { "code": "BUDGET_TOO_LOW", ... } } }, + { "kind": "data", "data": { "errors": [{ "code": "BUDGET_TOO_LOW", "field": "budget.total", ... }] } } + ] + }] +} +``` + +**Non-fatal errors populate only the payload.** A `status: "submitted"` or `status: "input-required"` task reporting a warning (e.g., "this media buy requires manual approval — [warning details]") populates `errors[]` in the payload with `severity: "warning"` but MUST NOT populate `adcp_error`. The transport envelope signals "the task failed" — it is not a warning channel. + +**Storyboard validators.** Prefer `check: error_code` over `check: field_present, path: "errors"` when asserting on a failed task's error code. `error_code` is shape-agnostic — the runner resolves it from either `adcp_error.code` (transport) or `errors[0].code` (payload). Direct `path: "errors"` checks pin the assertion to the payload shape and fail against agents that surface errors only via the transport envelope, even when the agent is conformant. See [Storyboard authoring — Asserting on errors](/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring#asserting-on-errors). + +**Discriminated rejection arms.** When the task response defines a structured rejection arm (e.g., `AcquireRightsRejected`, `CreativeRejected`, `GetProductsRejected` — see the wire-placement guidance on [`GOVERNANCE_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-governance-denied) for the rule), the spec-correct denial response carries no error code on the wire — the rejection arm enforces mutual exclusion with `errors[]` at the schema layer. `GetProductsRejected` also excludes envelope-level `adcp_error`, `products`, and `proposals`. Asserting `check: error_code` will fail against a conformant agent. Assert on the task-specific discriminator instead: `rights_status: "rejected"` for `AcquireRightsRejected`, `approval_status: "rejected"` for `CreativeRejected`, and top-level `status: "rejected"` for `GetProductsRejected`. Assertions that mix the error and structured-outcome paths bake non-spec opinions into the storyboard. + +### Error Object Fields + +These fields are defined by the [`error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) schema: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `code` | string | Yes | Machine-readable error code from the [standard vocabulary](#standard-error-codes) or a seller-specific code | +| `message` | string | Yes | Human-readable error description | +| `recovery` | string | No | Agent recovery classification: `transient`, `correctable`, or `terminal` | +| `retry_after` | number | No | Seconds to wait before retrying. AdCP 3.2 producers emit whole seconds from 1 through 3600; consumers continue accepting legacy fractional values. | +| `field` | string | No | Field path in JSONPath-lite format (e.g., `packages[0].targeting`). When `issues` is present, sellers MUST set this to `issues[0].pointer` translated from RFC 6901 to JSONPath-lite (e.g., `/packages/0/targeting` → `packages[0].targeting`). Will be deprecated in a future major version. | +| `issues` | array | No | Structured list of validation failures. Each entry carries `pointer` (RFC 6901), `message`, `keyword` (JSON Schema keyword that rejected — `required` / `type` / `format` / etc.), and optionally `schema_id`, `schemaPath`, `discriminator`. See [Validator-internals fields](#validator-internals-fields-on-issues) for the `schema_id` / `schemaPath` / `discriminator` semantics, the production-emit rules, and the resolution path for `schema_id`. | +| `suggestion` | string | No | Suggested fix for the error | +| `details` | object | No | Additional context-specific information. Sellers MAY mirror `issues[]` here as `details.issues` for backward compatibility with pre-3.1 consumers; new consumers SHOULD prefer the top-level `issues` field. | + +### Validator-internals fields on `issues` + +Three optional fields on each `issues[]` entry name the schema element that rejected the payload, so agents can recover from validation errors in one iteration instead of probing variants: + +| Field | Shape | Purpose | +|-------|-------|---------| +| `schema_id` | string — a published `$id` (e.g. `/schemas/3.1.0/core/activation-key.json`) | Canonical name of the rejecting (sub-)schema. 3.1+ consumers' primary handle. | +| `schemaPath` | string — a JSON Schema tree path (e.g. `#/properties/packages/items/oneOf/1`) | Validator-internal traversal. Retained for 3.0.x backward compatibility; 3.1+ consumers SHOULD prefer `schema_id`. (Renamed to `schema_path` in a future major.) | +| `discriminator` | array of `{property_name, value}` | Variant the validator selected for const-discriminated `oneOf` / `anyOf`, sourced from values present in the payload. Aligns with OpenAPI 3.x `discriminator.propertyName`. | + +**Resolving `schema_id`.** The string is the schema's `$id`. To load the schema: + +- **HTTPS canonical:** prepend `https://adcontextprotocol.org` (e.g. `https://adcontextprotocol.org/schemas/3.1.0/core/activation-key.json`). Cacheable; immutable per version. +- **SDK-bundled:** `@adcp/sdk` and `adcp-client-python` ship the schema bundle for offline resolution — look up by `$id` against the bundled tree. +- **Bundled-tree caveat.** Tools served from the pre-resolved bundled tree (`/schemas/{version}/bundled/...`) inline sub-schemas with their `$id` preserved (3.1+, see #3868) — but only on the **first occurrence** of each sub-schema within a bundle. Same source schema referenced from multiple co-locations gets `$id` only on the first inline; subsequent occurrences fall back to the nearest `$id`-bearing ancestor (typically the response root) when SDK error reporting walks up the schema tree. Sub-schemas whose subtrees contain hoisted `$defs` references also have `$id` stripped at bundle time, because preserving `$id` there would break local-fragment resolution. Consumers reading bundles produced before #3868 see only the response-root `$id`. Detect the pre-#3868 case by checking whether the `$id` ends in `/bundled/-response.json` — if so, fall back to walking the bundled schema by `pointer`. + +**Discriminator semantics.** Sellers populate `discriminator` only when (a) the rejecting schema is a const-discriminated `oneOf` / `anyOf`, and (b) the discriminator property is present in the payload. The wire field reports the value the caller sent — not a validator inference on partial-match heuristics — so the field is deterministic across Ajv, Python `jsonschema`, and `gojsonschema`. When zero variants survive validation, sellers MUST omit `discriminator` (omission is the signal to the agent that "the validator could not localize a target variant"). For compound discriminators (e.g. `audience-selector`'s `(type, value_type)`), entries are ordered by declaration in the rejecting schema's `properties` block. + +When the discriminator property is *missing* from the payload (the validator can't even start branch selection), sellers omit `discriminator` — the recovery signal comes from a sibling `issues[]` entry with `keyword: "required"` whose `pointer` names the absent discriminator property. Agents reading "missing required discriminator field" + "no `discriminator` on this issue" recover by populating the named property; agents seeing a `discriminator` array with a value that didn't match any branch recover by switching to a different value. + +**Production-emit rules (the public-spec stance).** All three fields are emit-on-production safe **when the rejecting element is in the published spec at the version the seller advertises via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)**. The rationale is replay-locally: schemas are published at adcontextprotocol.org and bundled with every SDK, so an adversary running the same validator against the same payload derives the same branch selection — the wire field carries no information they can't compute. + +The replay-locally argument has carve-outs sellers MUST honor: + +- **Private extensions.** Sellers running schemas with custom `oneOf` branches, server-only sub-schemas, or enum subsets layered via `additionalProperties: true` MUST NOT emit `schema_id`, `schemaPath`, or `discriminator` when the rejecting element is not present in the published spec. Emission would leak seller-internal validation state the adversary cannot replay. *Implementation:* sellers running a mixed public + private validation tree typically (a) compile public-only and private-only validators separately and emit `schema_id` only from the public run, or (b) instrument compiled schemas with a side-table mapping each `$id` to its source bundle. +- **Version skew.** Sellers validating against a pre-release or post-release schema MUST NOT emit a `schema_id` whose `$id` is not present in the published bundle for the version named in `get_adcp_capabilities`. +- **Server-narrowed public elements.** When the seller server-side filters a public enum, pattern, or numeric range to a tenant-specific subset (e.g. accepts `["a","b","c"]` per the public schema, rejects everything except `["a"]` for this caller), sellers MUST NOT return [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) with `keyword: "enum"` (or `pattern` / `minimum` / `maximum`) against the public `schema_id`. The public-spec replay would accept the value; the seller rejects on private state. Use [`POLICY_VIOLATION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-policy-violation) or [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) instead so the rejection isn't mis-attributed to a public schema element. The structural delta between "public-replay accepts, seller rejects" is itself a fingerprint of the seller's private subset. +- **Custom keywords.** `keyword` MUST be drawn from the JSON Schema Draft 7 / 2020-12 vocabulary — sellers using validator-specific custom keywords (Ajv `addKeyword`, `instanceof`) MUST NOT emit them on the wire. +- **Probe terseness.** Sellers MAY scope these three fields to dev/sandbox responses on rate-limited endpoints to keep production envelopes terse, even when the carve-outs above don't apply. Field omission is always conformant. + +## Standard Error Codes + +Standard error codes are defined in [`error-code.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-code.json). The vocabulary is **open**: `error.code` is wire-typed as `string`, the standard codes are documentary, and senders MAY emit codes outside the standard set. + +### Forward-compatible decoding (normative) + +**The error-code vocabulary is open.** `error.code` is typed as `string` in [`core/error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) — not as a closed enum — so a strict JSON Schema validator MUST accept any string value. The standard vocabulary in `error-code.json` is documentary; it constrains neither sender nor receiver at the wire level. + +**Receivers MUST decode unknown codes.** A receiver pinned to AdCP version X that decodes a response carrying an `error.code` introduced in version X+1 (or a platform-specific code outside the standard vocabulary) MUST: + +1. Treat the response as well-formed — MUST NOT reject the envelope, throw a deserialization exception, or downgrade to a generic protocol error. +2. Recover the recovery classification from `error.recovery` (top-level field on the error envelope) when present. `error.recovery` is the normative carrier; the `enumMetadata.recovery` in `error-code.json` is the documentary mirror. +3. When `error.recovery` is absent (legacy senders), apply a conservative default. `transient` is the safe default for unknown codes — retry-with-backoff cannot do worse than terminal classification, and the manifest's [`error_code_policy.default_unknown_recovery`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/manifest.schema.json) documents this as the canonical fallback. The `transient` default is **bounded** by the retry rules in [§ Retry Logic](#retry-logic) — receivers MUST apply `maxRetries` and the jittered exponential-backoff schedule, and MUST NOT loop indefinitely on a `transient` default. A hostile or buggy sender cannot induce unbounded retries against a conformant client; the open-enum decoding rule does not exempt receivers from the retry budget. + +**Senders MAY emit codes outside the receiver's pinned vocabulary.** A sender emitting a 3.1-era code (e.g., [`PROPOSAL_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-not-found)) to a 3.0-pinned receiver does not violate the spec — the receiver is required by the rule above to handle it. When a sender knows the receiver's pinned version (via `adcp_version` envelope echo or capability discovery), senders SHOULD prefer a code from that version's vocabulary when an equivalent exists; senders MAY emit newer or platform-specific codes when no equivalent is available. + +**Senders MUST populate `error.recovery` on every error.** This is the normative carrier of recovery semantics across version skew — receivers cannot reliably classify a code they don't know, but they can always read `error.recovery`. Omitting it defeats the forward-compat rule. + +**Why this matters.** Forward-compatible decoding is the wire-level invariant that lets future maintenance lines (3.1.x, 4.0.x, …) ship new error codes additively without breaking older receivers. Without it, every new code is a wire change held to the next minor — the current drift-lint policy on 3.0.x. With it in 3.1+, new codes can register during a maintenance line's lifetime, which matters as adopters' real-world rejection paths surface new codes. + +**3.0.x policy unchanged.** 3.0.x receivers predate this normative rule, so 3.0.x stays wire-stable for the remainder of its support window — new codes still land at the next minor. This rule sets the receiver contract from 3.1 onward. + +**Not-found precedence.** When a referenced identifier does not resolve, sellers SHOULD return the resource-specific code when the resolved type is known from the request: [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) for `product_id`, [`PACKAGE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-package-not-found) for `package_id`, [`MEDIA_BUY_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-media-buy-not-found) for `media_buy_id`, [`CREATIVE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-not-found) for `creative_id`, [`SIGNAL_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-signal-not-found) for `signal_id`, [`SESSION_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-session-not-found) for SI `session_id`, [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) for `account_id`, [`PLAN_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-plan-not-found) for governance `plan_id`. Fall back to [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) for resource types without a dedicated code (e.g., property lists, content standards, rights grants, SI offerings, proposals, catalogs, event sources, collection lists, brands, individual properties). Typed parameters that lack a dedicated standard code MUST use `REFERENCE_NOT_FOUND` rather than minting a custom `*_NOT_FOUND` code — the vocabulary grows by upstream spec change, not by per-seller inflation. Clients SHOULD switch on `error.code` first; the resource-specific codes let clients dispatch without parsing `error.field`. + +**Polymorphic parameters.** When the unresolved identifier was supplied via a polymorphic or untyped parameter (a field that accepts multiple resource types), sellers MUST use `REFERENCE_NOT_FOUND` even if a resource-specific code exists for the resolved type. Using the type-specific code on a polymorphic parameter leaks the resolved type to an unauthorized caller. Polymorphism is evaluated against the parameter's declared shape in the tool schema — **before any lookup** — so a generic `reference_id` parameter dispatches to `REFERENCE_NOT_FOUND` regardless of what the id resolves to. Evaluating on the resolved type after dispatch reintroduces the leak. + +A tool's declared parameter shape MUST be identical across all callers for a given tool version; dispatch rules MUST NOT be conditioned on caller identity. A schema that exposes `property_list_id` to tenant B but only `reference_id` to tenant A turns capability discovery itself into an enumeration oracle (read the schema under two identities, diff). + +**Uniform response for inaccessible references.** The uniform-response requirement applies to **every** not-found code in this vocabulary (`REFERENCE_NOT_FOUND`, `SIGNAL_NOT_FOUND`, `CREATIVE_NOT_FOUND`, `MEDIA_BUY_NOT_FOUND`, `PACKAGE_NOT_FOUND`, `SESSION_NOT_FOUND`, `ACCOUNT_NOT_FOUND`, `PLAN_NOT_FOUND`): sellers MUST return the same response for "exists but the caller lacks access" as for "does not exist". Never distinguish the two — this is how cross-tenant enumeration lands. + +The MUST covers every observable channel, not just `error.code`: + +- **Error object.** `error.code`, `error.message`, `error.field`, `error.details` MUST be byte-equivalent between the two cases. On typed parameters that fall back to `REFERENCE_NOT_FOUND`, `error.field` MUST be identical across true-miss and resolve-then-deny — either omitted on both or replaced with a type-neutral name on both. `error.field` MAY name the input parameter when the parameter name is type-neutral (e.g., `reference_id`); when the original parameter name is type-revealing (e.g., `property_list_id`), `error.field` MUST be omitted or replaced with a neutral name. `error.message` MUST be generic (no resource-qualified text like `"Property list not found"`). For `REFERENCE_NOT_FOUND` specifically, sellers MUST NOT leak the resolved resource type via `error.field`, `error.details`, or a resource-qualified `error.message`. When the parameter is an array (e.g., `catalog_ids`, `format_option_refs`), `error.field` MUST name the array parameter itself. Sellers MAY enumerate specific unresolvable elements in `error.details` — but only when the elements were supplied verbatim by the caller. Sellers MUST NOT distinguish "supplied element resolved but caller unauthorized" from "supplied element does not exist" at the element level; that reintroduces the enumeration oracle at the array-entry granularity. +- **Transport status.** HTTP status code, A2A `task.status.state`, and MCP `isError` MUST be identical between the two cases. +- **Response headers.** `ETag`, `Cache-Control`, per-resource-type rate-limit buckets, CDN tags, and any header whose value or presence differs by resource type MUST be identical. +- **Side effects.** Webhook dispatch and audit-log writes MUST be identical — a resolve-then-deny path MUST NOT write tenant audit rows, enqueue background work (search-indexer updates, cache warmers, access-log aggregators), increment per-resource-type quota/rate-limit counters, or fire webhooks to any subscriber (including the resource owner) in ways a true-miss would not. If the resolve-then-deny path touches a per-tenant DB shard or cache, the true-miss path MUST touch the same shape of storage (e.g., route both through a tenant-agnostic resolver) so that co-tenant observers cannot distinguish via storage-layer metrics. +- **Observability.** Downstream logs, APM spans, and third-party error-reporting telemetry (Sentry, Datadog, Rollbar, and equivalents) MUST NOT be tagged with the resolved resource type when the caller lacks access; the trace a true-miss emits MUST be structurally indistinguishable from the trace a resolve-then-deny emits. + +To make latency parity a consequence rather than a separate requirement, sellers MUST perform the same resolution-and-authorization work on both paths — **resolve-then-authorize**, never short-circuit on "unknown id." On a true-miss, sellers MUST still execute an authorization decision of equivalent shape (e.g., against an empty principal set, or against the caller's own tenant as a decoy) so that authorizer latency — which varies with the size and shape of the ACL graph — is not a side channel. Pre-lookup input validation (UUID format, length, regex) is permitted iff it is deterministic in request content only (same input → same verdict, regardless of caller or existence). + +Non-normative implementation note: a single-query pattern like `SELECT ... WHERE id = ? AND tenant = ?` *looks* uniform but differs in execution plan, buffer-pool touches, and authorizer invocation depending on whether the row exists in another tenant. Prefer the two-step pattern — resolve by id, then authorize against the loaded row (or against an empty row on true-miss) — as the only pattern that naturally produces observational uniformity. + +**Cache warmth** is a distinct oracle: a warm cache on tenant B's id indicates someone accessed it recently. Sellers MUST NOT gate cache population on authorization — true-miss ids MUST be cached-as-miss with the same TTL as resolve-then-deny, or cache reads MUST be bypassed for not-found responses. + +**Verifying this yourself.** The paired-probe `adcp fuzz` invariant checks uniform-response compliance by comparing two responses per tool. See [Validate Your Agent — Preparing to test uniform error responses](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent#preparing-to-test-uniform-error-responses) for tenant-setup requirements and CLI invocation. Full-strength testing requires two isolated tenants; single-tenant runs cover only the "does not exist" leg. + +### Authentication and Access + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`AUTH_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-required) | correctable* | Authentication is required, or presented credentials were rejected | Provide credentials when missing; escalate to operator when rejected — see the warning below | +| [`CREDENTIAL_IN_ARGS`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-credential-in-args) | terminal | Authentication material or caller-supplied trust material was placed in request args (top-level, `context`, `ext`, or any nested location) instead of the relevant transport authentication or trust channel. This includes inbound buyer-principal credentials and evaluator-call credentials or JWK/JWKS/JWKS-URI material smuggled into evaluator payload fields. | Do NOT auto-retry — auto-retry re-logs the credential. Move the credential onto the relevant transport authentication/trust channel ([Credential placement](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#credential-placement)), rotate any leaked credential, then resubmit | +| `ACCOUNT_NOT_FOUND` | terminal | Account reference could not be resolved | Verify via [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) or contact seller | +| [`ACCOUNT_MOVED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-moved) | correctable | Authorized caller used a tombstoned former natural key after the account was rekeyed | Replace the reference with `details.current_account`, refresh through [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts), and retry with a fresh idempotency key | +| [`ACCOUNT_IDENTITY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-identity-conflict) | correctable | Requested identity is already the natural key of another account | Choose another operator identity or retain the current identity; do not retry unchanged | +| [`ACCOUNT_SETUP_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-setup-required) | correctable | Account needs setup before use | Check `details.setup` for URL or instructions | +| [`ACCOUNT_AMBIGUOUS`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-ambiguous) | correctable | Natural key resolves to multiple accounts | Pass explicit `account_id` or a more specific natural key | +| [`ACCOUNT_PAYMENT_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-payment-required) | terminal | Outstanding balance requires payment | Buyer must resolve billing | +| [`ACCOUNT_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-suspended) | terminal | Account has been suspended | Contact seller to resolve | + + +**`AUTH_REQUIRED` sub-cases — do not auto-retry rejected credentials.** The wire code carries two operationally distinct cases that agents MUST handle differently: + +- **Credentials missing** → provide credentials and retry once. Correctable inside the agent loop. +- **Credentials presented but rejected** (expired, revoked, or malformed signature) → do **not** auto-retry; escalate to operator for credential rotation. Re-presenting a rejected credential against an SSO endpoint creates retry-storm patterns indistinguishable from brute-force probes — the seller's fraud detection may rate-limit, suspend, or alert on the calling agent. + +`CREDENTIAL_IN_ARGS` is the related — but distinct — case where authentication material or caller-supplied trust material was placed in the **task payload** instead of the relevant transport authentication or trust channel. That code is `terminal` (auto-retry re-logs the credential) and the rule + carve-outs (push-notification webhook auth, relay topology) live in [Credential placement](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#credential-placement). + +A future minor release splits this code into [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) (correctable) and [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) (terminal). Until then, agents branch on whether credentials were attached to the failing request: + +```javascript +case 'AUTH_REQUIRED': { + // The caller's request builder records whether an auth header was attached. + // The error-handling SDK surfaces this on `error.request_had_credentials` (or you + // pass it in from your own request wrapper). + const requestHadCredentials = Boolean(error.request_had_credentials); + if (!requestHadCredentials) { + // Sub-case (a) — provide credentials and retry. + await refreshCredentials(); + return retry(); + } + // Sub-case (b) — credentials were presented and rejected. + // Treat as terminal at the application layer; surface to operator. + console.error('Credential rejected — needs human rotation:', error.message); + throw error; +} +``` + + +### Billing and Account Setup + +Returned by [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) when the request's billing or account-shape values are not acceptable to the seller. The two billing-rejection codes distinguish *which gate* fired so agents can dispatch on the right recovery — autonomous retry vs surface-to-human — without parsing prose. See [Buyer-agent identity](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#buyer-agent-identity) for the two-layer identity model these codes sit on top of. + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`BILLING_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-supported) | correctable | Seller declines the requested `billing` value at the seller-wide capability level (`supported_billing` does not include the value) or at the per-account-relationship level (e.g., the seller accepts `operator` billing in general but has no direct relationship with the operator on this specific account) | Check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for `supported_billing`, resubmit with a supported value, or omit `billing`; when present, dispatch on `error.details.scope` (`"capability"` or `"account"`) per [`billing-not-supported.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/billing-not-supported.json) | +| [`BILLING_NOT_PERMITTED_FOR_AGENT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-permitted-for-agent) | correctable | Seller-wide capability accepts the requested value, but the calling buyer agent's commercial relationship does not (e.g., onboarded as passthrough-only — no payments relationship — so only `operator` billing is permitted) | Retry with `error.details.suggested_billing` (typically `operator`) when present; when absent, the rejection is terminal-pending-onboarding — the agent MUST NOT auto-retry and MUST surface to a human at the buyer to complete payments-relationship onboarding with the seller offline | +| [`PAYMENT_TERMS_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-payment-terms-not-supported) | correctable | Seller does not accept the requested `payment_terms` value | Omit `payment_terms` to accept the default, retry with a different supported value, or negotiate offline | +| [`BRAND_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-brand-required) | correctable | Billable operation attempted without a brand reference | Include `brand` (`domain` plus optional `brand_id`) on the request | + +Normative requirements: + +- **Uniform response without established agent identity.** `BILLING_NOT_PERMITTED_FOR_AGENT` differs from `BILLING_NOT_SUPPORTED` based on the caller's onboarded commercial state with the seller. Returning the per-agent code without established identity lets unauthenticated probes use the code-choice as an oracle for "is this agent onboarded as agent-billable?" — same shape as the [`*_NOT_FOUND` uniform-response rule](#standard-error-codes). The bright line: sellers MUST emit `BILLING_NOT_PERMITTED_FOR_AGENT` only when agent identity has been established via signed-request derivation per [Agent identity](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#agent-identity) or via a credential-to-agent mapping in the seller's onboarding record. In all other cases — including bearer credentials not mapped to a specific agent record — sellers MUST return `BILLING_NOT_SUPPORTED`, and `error.details.scope` MUST be omitted on this path so a `"account"` scope hint cannot itself act as a per-account-relationship oracle. +- **`BILLING_NOT_PERMITTED_FOR_AGENT` details shape is clamped.** `error.details` MUST conform to [`error-details/billing-not-permitted-for-agent.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/billing-not-permitted-for-agent.json): `rejected_billing` (echoed) plus an optional single `suggested_billing` retry value. The schema sets `additionalProperties: false`. The shape MUST NOT carry the agent's full permitted-billing subset, rate cards, payment terms, credit limit, billing entity, or any other per-agent commercial state — full-subset disclosure in a single probe is exactly the oracle the clamp prevents. +- **One-shot retry.** A buyer agent that retries with `error.details.suggested_billing` and receives a second `BILLING_NOT_PERMITTED_FOR_AGENT` MUST surface to a human rather than retrying again. Recovery is bounded to a single seller-suggested fallback; further iteration indicates seller misconfiguration or onboarding state the agent cannot resolve autonomously. + +**Recovery dispatch — example.** The two billing codes recover differently. Implementers SHOULD branch explicitly rather than collapsing to a single retry path. The snippet below uses the response shape returned directly by the seller (the `accounts[].errors[]` array on a `sync_accounts` response — see [task reference](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts)), not the `@adcp/sdk/testing` wrapper used elsewhere in task examples. + +```javascript +async function syncAccountsWithRecovery(client, account) { + const result = await client.syncAccounts({ accounts: [account] }); + const error = result.accounts[0]?.errors?.[0]; + if (!error) return result; + + switch (error.code) { + case 'BILLING_NOT_SUPPORTED': { + // Seller-wide or per-account gate. Check capabilities, dispatch on scope. + const scope = error.details?.scope; // "capability" | "account" + if (scope === 'capability') { + // The seller never accepts this value. Pick from supported_billing. + const supported = error.details?.supported_billing ?? []; + if (supported.length === 0) return surfaceToHuman(error); + return client.syncAccounts({ + accounts: [{ ...account, billing: supported[0] }], + }); + } + // Per-account-relationship reject — the operator-on-this-account isn't + // billable directly. Try the next-most-permissive value the seller's + // capability allows. + return tryNextBillingValue(client, account, error); + } + + case 'BILLING_NOT_PERMITTED_FOR_AGENT': { + // Per-buyer-agent commercial gate. Autonomous retry only when the seller + // suggests a fallback; otherwise surface — the agent cannot extend its + // own commercial relationship. + const suggested = error.details?.suggested_billing; + if (!suggested) return surfaceToHuman(error); + return client.syncAccounts({ + accounts: [{ ...account, billing: suggested }], + }); + } + + default: + throw error; + } +} +``` + +**Example envelope** for `BILLING_NOT_PERMITTED_FOR_AGENT` — passthrough-only buyer agent receives a fallback to `operator`: + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "action": "failed", + "status": "rejected", + "errors": [{ + "code": "BILLING_NOT_PERMITTED_FOR_AGENT", + "message": "This buyer agent is onboarded as passthrough-only; only operator billing is permitted.", + "recovery": "correctable", + "details": { + "rejected_billing": "agent", + "suggested_billing": "operator" + } + }] + }] +} +``` + +### Authorization (RBAC) + +Returned when the caller is authenticated but lacks the specific scope for the request. Enforcement is seller-local; discoverability is via the `authorization` object on per-account entries in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses. See [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) for the full shape. + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`PERMISSION_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-permission-denied) | correctable | Generic authorization failure, or a required signed credential (e.g., `governance_context`) is missing, failed verification, or was issued for a different plan/seller/phase | Call [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) to mint a valid token, or contact the seller to resolve the underlying permission | +| [`SCOPE_INSUFFICIENT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-scope-insufficient) | correctable | The invoked task is not in the caller's `allowed_tasks` for this account | Re-read `authorization` on the account via `sync_accounts` or `list_accounts` to discover the caller's actual `allowed_tasks`; use a permitted task or request a broader scope | +| [`READ_ONLY_SCOPE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-read-only-scope) | correctable | Caller's scope is `read_only: true`; the invoked task would mutate state | Use a non-mutating alternative, or request a scope that permits mutation | +| [`FIELD_NOT_PERMITTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-field-not-permitted) | correctable | A request field is not in the caller's `field_scopes` allowlist for this task | Drop the disallowed field, or request broader field scope | +| [`AGENT_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-agent-suspended) | terminal | Calling buyer agent's commercial relationship with this seller is temporarily paused | Surface to a human at the buyer; re-onboarding with the seller offline may resolve. The agent cannot unilaterally lift a suspension. | +| [`AGENT_BLOCKED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-agent-blocked) | terminal | Calling buyer agent's commercial relationship with this seller is permanently denied | Surface to a human at the buyer; relationships are reinstated only through offline operator action with the seller. | + +Normative requirements: + +- **`FIELD_NOT_PERMITTED` MUST populate `error.field`** with the exact offending field path (e.g., `packages[0].budget`, `end_time`). Without it, agents cannot reliably auto-recover by stripping the field and retrying. When multiple fields are disallowed, sellers SHOULD return one error per offending field so each `error.field` is unambiguous; if returning a single error, `error.details.fields` MAY contain the full list. +- **`SCOPE_INSUFFICIENT` SHOULD include `error.details.introspection_hint`** when the seller supports the `authorization` object on sync/list. Strawman shape: `{ "task": "sync_accounts", "account": { ... } }` pointing the caller at where to rediscover scope. This closes the "I hit an error; what do I do?" loop for coding agents. +- **All four codes MUST populate both the `adcp_error` envelope field and the payload `errors[]` array** per the two-layer model above — scope errors carry through to typed client libraries the same way schema errors do. + +`SCOPE_INSUFFICIENT` vs. `PERMISSION_DENIED`: use `SCOPE_INSUFFICIENT` when the task itself is not granted to this caller on this account. Reserve `PERMISSION_DENIED` for credential-shaped failures (missing signed context, failed signature verification) and for generic seller policy rejections where scope is not the right abstraction. + +`SCOPE_INSUFFICIENT` vs. [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature): when both apply — the seller doesn't implement the task AND the caller wouldn't be scoped for it anyway — sellers SHOULD return `SCOPE_INSUFFICIENT` because it is more actionable (the caller can request broader scope) than `UNSUPPORTED_FEATURE` (the caller must switch sellers). A seller that returns `UNSUPPORTED_FEATURE` for a task it *does* implement but is not exposed to this caller is leaking capability information the caller cannot act on. + +`FIELD_NOT_PERMITTED` vs. [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error): the field is valid per the task schema and would be accepted from a differently-scoped caller; it is rejected specifically because this caller's `field_scopes` does not include it. + +**About `recovery: correctable` on authorization errors.** All four authz codes classify as `correctable`, meaning *the request can be fixed and re-sent*. This does NOT mean the agent can fix the request autonomously — the "correction" for `SCOPE_INSUFFICIENT` and `READ_ONLY_SCOPE` is an out-of-band scope grant from the operator, which the agent cannot perform on its own. Agents SHOULD surface authz errors to the operator rather than auto-retrying against the same credential; a retry loop against a fixed scope is a bug, not defensive posture — with the narrow exception of the bounded disambiguation retries described below. Only `FIELD_NOT_PERMITTED` has an agent-autonomous recovery path (strip the disallowed field and resubmit). + +**Retry disambiguation for `SCOPE_INSUFFICIENT` and `READ_ONLY_SCOPE`.** A single response with either code inside the seller's 300s authorization refresh window is observationally indistinguishable from cross-replica flicker — a transient infrastructure artifact that the spec forbids sellers from producing but buyers will still encounter in practice. Before classifying the error as a definitive `correctable` signal requiring operator intervention, buyers MAY exhaust a bounded retry budget (no more than 3 attempts, each separated by 1–5 seconds of jittered backoff) to establish whether the scope is genuinely insufficient. This is disambiguation logic — not recovery from a correctable error. After bounded retries exhaust without success, buyers MUST surface the error and MUST NOT autonomously continue retrying. This retry exception does NOT apply to `FIELD_NOT_PERMITTED` — the agent-autonomous strip-and-resubmit path supersedes it. See [Buyer response to SCOPE_INSUFFICIENT within the refresh window](/dist/docs/3.2.0-beta.4/accounts/overview#buyer-response-to-scope_insufficient-within-the-refresh-window) for the full guidance including the `READ_ONLY_SCOPE` caveat on revocation scenarios. + +**`FIELD_NOT_PERMITTED` — example envelope and payload populating both layers:** + +```json +{ + "adcp_error": { + "code": "FIELD_NOT_PERMITTED", + "message": "Caller's field_scopes for update_media_buy does not include this field", + "recovery": "correctable", + "field": "packages[0].budget" + }, + "payload": { + "errors": [ + { + "code": "FIELD_NOT_PERMITTED", + "message": "Caller's field_scopes for update_media_buy does not include this field", + "recovery": "correctable", + "field": "packages[0].budget", + "details": { + "task": "update_media_buy", + "permitted_fields": ["reporting_webhook"] + } + } + ] + } +} +``` + +The `field` value identifies exactly what to strip; `details.permitted_fields` (optional, advisory) lists the allowlist for the offending task so an agent can verify before retrying. For `SCOPE_INSUFFICIENT`, populate `details.introspection_hint: { "task": "list_accounts", "account": { ... } }` to point the caller at where to rediscover scope. + +#### Per-Agent Authorization Gate + +The per-buyer-agent gate fires across three distinct rejection paths, each with its own discriminator so callers can dispatch without parsing prose: + +| Code | `details.scope` | `details.reason` | Meaning | +|---|---|---|---| +| `AGENT_SUSPENDED` | — (no `details.scope`; the code is the discriminator) | — | Agent's commercial relationship with the seller is temporarily paused. Re-onboarding may resolve; `recovery: "terminal"`. | +| `AGENT_BLOCKED` | — (no `details.scope`; the code is the discriminator) | — | Agent's commercial relationship is permanently denied. No autonomous recovery; `recovery: "terminal"`. | +| `PERMISSION_DENIED` | `"agent"` | `"sandbox_only"` | Agent is provisioned for sandbox traffic only and the request was against a non-sandbox account. Per [`error-details/agent-permission-denied.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/agent-permission-denied.json), `additionalProperties: false`. | + +Per-agent commercial-status rejections (`AGENT_SUSPENDED`, `AGENT_BLOCKED`) follow the [`BILLING_NOT_PERMITTED_FOR_AGENT`](#billing-and-account-setup) precedent — the code itself is the discriminator and the response carries no explicit `error.details.scope` field. The `PERMISSION_DENIED + scope:"agent"` path is reserved for non-status provisioning gates whose `reason` is registered in the closed enum on `error-details/agent-permission-denied.json`. The `"agent"` value is a registered subset of the shared discriminator vocabulary in [`enums/error-scope.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-scope.json). + +**When to mint a new code vs. extend the `reason` enum.** Lifecycle-terminal per-agent states (suspended, blocked, future deny-list-style states) get dedicated codes — they carry distinct `recovery` classifications and warrant first-class discriminators. Non-status provisioning gates and transient rejections extend the `error-details/agent-permission-denied.json` `reason` enum (e.g., `sandbox_only`) instead; throttling-shaped rejections reuse [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited), not a new per-agent code. The dedicated-code-per-state pattern composes only because the lifecycle vocabulary is finite — not as an open registry for every new gate. + +**Migration note from the 3.0.5 placeholder.** 3.0.5 shipped `agent-permission-denied.json` with a `details.status: ["suspended", "blocked"]` axis as a placeholder for the per-agent lifecycle. 3.1 consolidates that placeholder into the dedicated `AGENT_SUSPENDED` / `AGENT_BLOCKED` codes — the `status` axis is removed from `agent-permission-denied.json` and the schema accepts only `scope:"agent" + reason:"sandbox_only"`. Sellers that integrated against the 3.0.5 placeholder MUST migrate to the dedicated codes; the placeholder shape is not preserved. + +Normative requirements (apply to all three codes uniformly): + +- **Uniform response without established agent identity.** Per-agent rejections are meaningful only when buyer-agent identity has been established via signed-request derivation per [Agent identity](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#agent-identity) or via a credential-to-agent mapping in the seller's onboarding record. Sellers MUST emit `AGENT_SUSPENDED` / `AGENT_BLOCKED` or `PERMISSION_DENIED` with `details.scope: "agent"` ONLY on that path; in all other cases — including bearer credentials not mapped to a specific agent record — sellers MUST return generic `PERMISSION_DENIED` and MUST omit `error.details.scope`. Returning the per-agent code (or per-agent scope) without established identity lets unauthenticated probes use the code-choice as a cross-tenant onboarding oracle, the same shape the [`*_NOT_FOUND` uniform-response rule](#standard-error-codes) and [`BILLING_NOT_PERMITTED_FOR_AGENT`](#billing-and-account-setup) close. +- **Channels covered by the omit-on-unestablished-identity rule.** The MUST applies across every observable channel — `error.code` / `error.message` / `error.field` / `error.details` (message MUST be generic on the unestablished-identity path); HTTP status, A2A `task.status.state`, and MCP `isError`; response headers (ETag, Cache-Control, per-agent rate-limit buckets, CDN tags); side effects (audit-log writes, webhook dispatch, background-job enqueues, per-agent quota counters, DB-shard routing, onboarding-record cache population); observability (logs, APM spans, Sentry/Datadog/Rollbar tags MUST NOT carry agent identity, agent-record references, or per-agent gate classification on the unestablished-identity path). Polymorphism is evaluated against the tool-schema's declared parameter shape *before* any onboarding-record lookup — a tool's declared shape MUST be identical across all callers regardless of whether identity has been established. +- **Latency parity.** Sellers MUST execute the same shape of onboarding-record lookup on both paths (e.g., resolve-then-authorize against an empty agent-record on the unmapped-credential path) so that lookup latency does not distinguish "credential is not mapped to an agent" from "credential maps to a suspended/blocked agent." Resolve-then-authorize, decision-of-equivalent-shape, the same posture the `*_NOT_FOUND` rule requires. Cache population MUST NOT be gated on identity establishment — the cache itself is otherwise an oracle through hit/miss timing. +- **Retry-counter side channel.** The "no autonomous retry" rule (below) MUST NOT itself become a side channel. Sellers MUST NOT increment a per-agent retry/backoff counter, mint a different `retry_after`, or surface different rate-limit headers on the unestablished-identity path than they would on a true-unauthenticated path. Buyer agents that comply with the no-retry rule MUST NOT have that compliance reflected in seller-side per-agent observability that another tenant can read. +- **No per-agent commercial state on any of the three paths.** None of `AGENT_SUSPENDED`, `AGENT_BLOCKED`, or `PERMISSION_DENIED + scope:"agent"` carry the agent's full permitted-billing subset, rate cards, payment terms, credit limit, billing entity, contact channels, custom reason strings, or any other per-agent commercial state — full-subset disclosure in a single probe is exactly the oracle the clamp prevents. `AGENT_SUSPENDED` / `AGENT_BLOCKED` carry no `error.details` payload; `PERMISSION_DENIED + scope:"agent"` MUST conform to `error-details/agent-permission-denied.json` (`scope` + registered `reason`, with `additionalProperties: false`). New `reason` values MUST be added to the schema's enum so cross-language SDKs can dispatch without parsing prose; future per-agent state surfaces (escalation channels, lift-policy URLs) belong on new dedicated codes with their own clamped details shapes, NOT by relaxing this shape. The schema's `additionalProperties: false` is a schema-validation guard; sellers MUST treat unrecognized or extension keys received from a seller-side composer as a defect and drop them before transmission. +- **No autonomous retry on the per-agent gate.** All three codes are terminal in practice: `AGENT_SUSPENDED` and `AGENT_BLOCKED` declare it directly via `recovery: "terminal"` in `enumMetadata`; the `PERMISSION_DENIED + scope:"agent"` path is `correctable` at the wire level (matching the registered `PERMISSION_DENIED` classification) but is terminal-pending-onboarding in practice — the agent cannot unilaterally lift a sandbox-only provisioning. Buyer agents MUST surface to a human at the buyer rather than auto-retrying on any of the three; re-attempts only reinforce the gate. + +**Recovery dispatch — example.** Branch on `error.code` first; only fall through to `details.scope` for the `PERMISSION_DENIED` per-agent gate: + +```javascript +async function dispatchAuthzError(error) { + // Per-agent commercial status — code is the discriminator, no details payload. + if (error.code === 'AGENT_SUSPENDED' || error.code === 'AGENT_BLOCKED') { + return surfaceToHuman({ code: error.code }); + } + + if (error.code !== 'PERMISSION_DENIED') throw error; + + // Generic credential-shaped failure — no scope on details. + if (!error.details?.scope) { + return refreshGovernanceContextAndRetry(error); + } + + // Per-agent provisioning gate — terminal-pending-onboarding. + if (error.details?.scope === 'agent') { + const { reason } = error.details; + // reason: 'sandbox_only' + return surfaceToHuman({ code: error.code, reason }); + } + + throw error; // Unknown scope — surface rather than guess. +} +``` + +**Example envelope** for `AGENT_SUSPENDED`: + +```json +{ + "adcp_error": { + "code": "AGENT_SUSPENDED", + "message": "Buyer agent's commercial relationship with this seller is suspended.", + "recovery": "terminal" + } +} +``` + +**Example envelope** for `PERMISSION_DENIED` with the sandbox-only provisioning gate: + +```json +{ + "adcp_error": { + "code": "PERMISSION_DENIED", + "message": "This buyer agent is provisioned for sandbox traffic only.", + "recovery": "correctable", + "details": { + "scope": "agent", + "reason": "sandbox_only" + } + } +} +``` + +The wire-level `recovery: "correctable"` on the sandbox-only path is the registered classification on `PERMISSION_DENIED` per [`error-code.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-code.json) `enumMetadata` — SDKs MUST NOT switch the registered value based on `details.scope`. Buyer agents MUST treat the rejection as terminal-pending-onboarding regardless of the wire-level `recovery` field, surface to a human, and not auto-retry. (For the suspended/blocked paths, the code itself carries `recovery: "terminal"` directly, so this caveat does not apply.) + +### Request Validation + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | correctable | Request is malformed or violates schema constraints | Check request parameters and fix | +| `UNSUPPORTED_FEATURE` | correctable | Requested feature not supported by this seller | Check `get_adcp_capabilities` and remove unsupported fields | +| [`POLICY_VIOLATION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-policy-violation) | correctable | Request violates content or advertising policies | Review policy requirements in the error details | +| [`COMPLIANCE_UNSATISFIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-compliance-unsatisfied) | correctable | Required disclosure cannot be satisfied by the target format | Choose a format that supports the required disclosure capabilities | +| [`GOVERNANCE_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-governance-denied) | correctable | A registered governance agent denied the transaction | Restructure the buy, escalate to human spending authority, or contact the governance agent | + +### Inventory and Products + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) | correctable | Referenced product IDs are unknown | Remove invalid IDs, or re-discover with [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | +| [`PRODUCT_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-expired) | correctable | Referenced configured products passed `expires_at` and remain recognizable to the seller | Re-discover with [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | +| [`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable) | correctable | Product is sold out or no longer available | Choose a different product | +| [`PROPOSAL_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-expired) | correctable | Referenced proposal has passed its `expires_at` | Call [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), then finalize a fresh proposal | +| `PROPOSAL_NOT_FOUND` | correctable | `proposal_id` is unknown to the seller (never issued, wrong tenant, or evicted from cache) | Request and finalize a fresh proposal, then retry | +| [`MULTI_FINALIZE_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-multi-finalize-unsupported) | correctable | A legacy `get_products` request attempted to finalize multiple proposals where the seller cannot guarantee atomic commitment | Sequence single-proposal legacy `get_products` finalize calls | +| [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required) | correctable | Requested update falls outside the envelope (budget, dates, volume, targeting) the original quote was priced against; `pricing_option` remains locked | Adjust the update to fit the current quote, rediscover products/terms, add packages when available, or create a separate media buy. 3.1 does not define an amendment-quote artifact for [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy). | +| `SIGNAL_NOT_FOUND` | correctable | Referenced signal does not exist in the catalog | Verify `signal_id` via [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals), or confirm availability from this agent | +| [`AUDIENCE_TOO_SMALL`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-audience-too-small) | correctable | Audience segment below minimum size | Broaden targeting or upload more audience members | + +### Budget and Creative + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| [`BUDGET_TOO_LOW`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-too-low) | correctable | Budget below seller's minimum | Increase budget or check `capabilities.media_buy.limits` | +| [`BUDGET_EXHAUSTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-exhausted) | terminal | Account or campaign budget fully spent | Buyer must add funds or increase budget cap | +| `CREATIVE_NOT_FOUND` | correctable | Referenced creative does not exist in the library | Verify `creative_id` via [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives), or register it via [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) | +| [`CREATIVE_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-rejected) | correctable | Creative failed content-policy, brand-safety, or accessibility review | Revise according to the applicable policy or validated accessibility criteria | + +### System + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| `RATE_LIMITED` | transient | Request rate exceeded | Wait for `retry_after` seconds, then retry | +| [`SERVICE_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-service-unavailable) | transient | Seller service temporarily unavailable | Retry with exponential backoff | +| [`STALE_RESPONSE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-stale-response) | transient (advisory) | Non-fatal: seller served a populated payload from cache past its freshness target because an upstream/sub-agent was unreachable. Distinct from `SERVICE_UNAVAILABLE` (empty payload + fatal). `error.details` follows [`error-details/stale-response.json`](pathname:///schemas/v3/error-details/stale-response.json) | Accept the cached payload, or retry later for fresh data — inspect `error.details.cache_age_seconds` to decide | +| [`CONFIGURATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-configuration-error) | terminal | Seller-side deployment misconfiguration (e.g., missing `mock_upstream_url`, undeclared `upstream_url`, unset env var). Distinct from `SERVICE_UNAVAILABLE` (transient) and `INVALID_REQUEST` (buyer-fixable). Sellers MUST flip transport failure markers (HTTP 5xx, MCP `isError: true`, A2A `failed`); `error.message` carries operator-actionable detail and MUST NOT include credentials, connection strings, or stack traces | Surface to the seller's operator; do not auto-retry — retries will not resolve a misconfigured deployment | +| [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) | transient | Concurrent modification detected | Re-read the resource and retry with current state | +| `REFERENCE_NOT_FOUND` | correctable | Generic fallback for referenced resources without a dedicated not-found code. See [Not-found precedence](#standard-error-codes) | Verify the identifier via the appropriate discovery task; prefer a resource-specific code when one exists | + +## Recovery Classification + +Use the `recovery` field to determine how to handle errors: + +| Recovery | Meaning | Action | +|----------|---------|--------| +| `transient` | Temporary failure (rate limit, service unavailable, conflict) | Retry after `retry_after` or with exponential backoff | +| `correctable` | Request can be fixed and resent (invalid field, budget too low, creative rejected) | Modify the request and retry | +| `terminal` | Requires human action (account suspended, payment required) | Escalate to a human operator | + +For unknown `recovery` values (forward compatibility), treat as `terminal`. + +```javascript +function isRetryable(error) { + // Use recovery field when available + if (error.recovery) { + return error.recovery === 'transient'; + } + + // Network errors are retryable + if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') { + return true; + } + + // Fall back to error code matching + return ['RATE_LIMITED', 'SERVICE_UNAVAILABLE', 'CONFLICT'].includes(error.code); +} +``` + +## Retry Logic + +The rules in this section bound every `transient`-classified error a caller may retry, including the `transient` default applied to unknown error codes under [§ Forward-compatible decoding](#forward-compatible-decoding-normative). A receiver that decodes an unknown code and falls back to `transient` MUST apply `maxRetries` and the jittered exponential-backoff schedule below; the open-enum decoding rule does not exempt receivers from the retry budget. A hostile or buggy sender emitting `code=GO_FOREVER, recovery=transient` cannot induce unbounded retries against a conformant client. + +### Normative throttling behavior + +These rules apply when a caller receives a throttling-category error ([`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited), or any error whose `recovery` is `transient` and whose `details` conform to the [`rate-limited`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/rate-limited.json) detail shape): + +- Callers **MUST** honor `retry_after` when present and **MUST NOT** retry the same request sooner than the indicated delay. AdCP 3.2 producers **MUST** emit an integer. A caller that receives a legacy finite fractional value **MUST** round it up before clamping to `[1, 3600]`. +- Callers **SHOULD** use exponential backoff with jitter when `retry_after` is absent. A base of 2 seconds, a cap of 60 seconds, and ±25% jitter is a safe default. +- Callers **MUST NOT** treat non-throttling errors (e.g., [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request), [`CREATIVE_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-rejected)) as if they were throttled. Retrying a rejected-for-other-reasons response at backoff cadence is a bug, not a defensive posture. +- Callers **SHOULD** surface repeated throttling to their operator rather than retrying indefinitely; a persistent `RATE_LIMITED` response is a capacity or policy signal, not a transient blip. +- Sellers **SHOULD** return `RATE_LIMITED` with a populated `retry_after` rather than silently queuing or dropping requests, so well-behaved callers can back off intentionally. +- Sellers **MAY** populate the [`rate-limited`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/rate-limited.json) detail shape (`limit`, `remaining`, `window_seconds`, `scope`) to let callers plan ahead rather than react per-429. + +### Exponential Backoff + +Implement exponential backoff for retryable errors: + +```javascript +async function retryWithBackoff(fn, options = {}) { + const { + maxRetries = 3, + baseDelay = 1000, + maxDelay = 60000 + } = options; + + for (let attempt = 0; attempt <= maxRetries; attempt++) { + try { + return await fn(); + } catch (error) { + if (!isRetryable(error) || attempt === maxRetries) { + throw error; + } + + // Use retry_after when available, otherwise exponential backoff + const retryAfter = error.retry_after || + Math.min(baseDelay * Math.pow(2, attempt), maxDelay); + + // Add jitter to prevent thundering herd + const jitter = retryAfter * (0.75 + Math.random() * 0.5); + await sleep(jitter); + } + } +} +``` + +### Rate Limit Handling + +```javascript +async function handleRateLimit(error, retryFn) { + if (error.recovery !== 'transient' && + error.code !== 'RATE_LIMITED') { + throw error; + } + + const retryAfter = error.retry_after || 60; + console.log(`Rate limited. Waiting ${retryAfter} seconds...`); + + await sleep(retryAfter * 1000); + return retryFn(); +} +``` + +## Error Handling Patterns + +### Basic Error Handler + +```javascript +async function handleAdcpError(error) { + // Use recovery classification when available + switch (error.recovery) { + case 'transient': + const delay = error.retry_after + ? error.retry_after * 1000 + : 5000; + await sleep(delay); + return retry(); + + case 'correctable': + // Surface suggestion so the request can be fixed + if (error.suggestion) { + console.log('Suggestion:', error.suggestion); + } + if (error.field) { + console.log('Problem field:', error.field); + } + throw error; + + case 'terminal': + console.error('Terminal error:', error.message); + throw error; + } + + // Fall back to error code matching + switch (error.code) { + case 'AUTH_REQUIRED': { + // Two sub-cases share this code; see the AUTH_REQUIRED warning above. + const requestHadCredentials = Boolean(error.request_had_credentials); + if (!requestHadCredentials) { + await refreshCredentials(); + return retry(); + } + // Credentials were presented and rejected — surface to operator. + throw error; + } + + case 'INVALID_REQUEST': + console.error('Validation error:', error); + throw error; + + default: + console.error('AdCP error:', error); + throw error; + } +} +``` + +### User-Friendly Messages + +Convert technical errors to user-friendly messages: + +```javascript +const USER_MESSAGES = { + 'RATE_LIMITED': 'Too many requests. Please wait a moment and try again.', + 'BUDGET_TOO_LOW': 'This is below the seller\'s minimum budget. Increase your budget.', + 'PRODUCT_NOT_FOUND': 'One or more products could not be found. Try searching again.', + 'ACCOUNT_SUSPENDED': 'Your account has been suspended. Contact the seller to resolve.', + 'SERVICE_UNAVAILABLE': 'The service is temporarily unavailable. Please try again in a few minutes.', + 'CREATIVE_REJECTED': 'Your creative did not pass creative review. Check the validated diagnostics for details.', + 'AUDIENCE_TOO_SMALL': 'Your target audience is too small. Try broadening your targeting.' +}; + +function getUserMessage(code, fallbackMessage) { + return USER_MESSAGES[code] || fallbackMessage || 'An unexpected error occurred. Please try again.'; +} +``` + +### Structured Error Logging + +Log errors with context for debugging: + +```javascript +function logError(error, context = {}) { + console.error('AdCP Error:', { + code: error.code, + recovery: error.recovery, + message: error.message, + field: error.field, + timestamp: new Date().toISOString(), + ...context, + // Don't log sensitive data + // NO: credentials, briefs, PII + }); +} +``` + +## Webhook Error Handling + +### Failed Webhook Delivery + +When webhook delivery fails, fall back to polling: + +```javascript +class WebhookErrorHandler { + async onDeliveryFailure(taskId, error) { + console.warn(`Webhook delivery failed for ${taskId}:`, error); + + // Start polling as fallback + this.startPolling(taskId); + + // Track failure for monitoring + this.metrics.incrementCounter('webhook_failures'); + } + + async startPolling(taskId) { + const response = await adcp.call('tasks/get', { + task_id: taskId, + include_result: true + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + await this.processResult(taskId, response); + } else { + // Schedule next poll + setTimeout(() => this.startPolling(taskId), 30000); + } + } +} +``` + +### Webhook Handler Errors + +Handle errors in your webhook endpoint gracefully: + +```javascript +app.post('/webhooks/adcp', async (req, res) => { + try { + // Always respond quickly + res.status(200).json({ status: 'received' }); + + // Process asynchronously + await processWebhookAsync(req.body); + } catch (error) { + // Log error but don't fail the response + console.error('Webhook processing error:', error); + + // Move to dead letter queue for investigation + await deadLetterQueue.add(req.body, error); + } +}); +``` + +## Recovery Strategies + +### Context Recovery + +If context expires, start a new conversation: + +```javascript +async function callWithContextRecovery(request) { + try { + return await adcp.call(request); + } catch (error) { + if (error.code === 'INVALID_REQUEST' && + error.message?.includes('context not found')) { + // Clear stale context and retry + delete request.context_id; + return await adcp.call(request); + } + throw error; + } +} +``` + +### Partial Success Handling + +Some operations may partially succeed: + +```json +{ + "status": "completed", + "message": "Created media buy with warnings", + "media_buy_id": "mb_123", + "errors": [ + { + "code": "COMPLIANCE_UNSATISFIED", + "message": "Required disclosure position not supported by one placement", + "field": "packages[0].placements[2]", + "suggestion": "Choose a format that supports the required disclosure positions" + } + ] +} +``` + +Handle partial success: + +```javascript +function handlePartialSuccess(response) { + if (response.status === 'completed' && response.errors?.length) { + // Show warnings to user + for (const warning of response.errors) { + showWarning(warning.message, warning.suggestion); + } + } + + // Continue with successful result + return response; +} +``` + +## Governance Error Patterns + +[`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) returns a `status` field rather than an error object. Governance results are not errors in the protocol sense — they are decisions. Handle them separately from AdCP task errors. + +| Governance status | Meaning | Action | +|-------------------|---------|--------| +| `approved` | Plan passes governance | Proceed | +| `conditions` | Approved with constraints | Apply conditions, re-check | +| `denied` | Plan violates governance | Block the operation | + +If the governance agent needs human review internally (e.g., the action exceeds the agent's authority), `check_governance` behaves like any async task — it returns `submitted`/`working` status and eventually resolves to `approved` or `denied`. Handle this with the standard [async task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle), not special-case logic. + +Governance errors from the protocol layer (as opposed to governance decisions) use the standard error format. The most common: + +| Code | Recovery | When it occurs | +|------|----------|----------------| +| [`PLAN_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-plan-not-found) | correctable | [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) was not called before `check_governance` | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | correctable | Missing required fields (e.g., `plan_id`, `caller`) | +| [`AUTH_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-required) | correctable | Governance agent requires authentication | + +## Configuration Error Patterns + +[`CONFIGURATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-configuration-error) signals a seller-side deployment defect — an account declared with `mode: 'mock'` but no `mock_upstream_url`, a platform on `mode: 'live'` or `mode: 'sandbox'` with no `upstream_url`, a required environment variable unset on the seller process. The buyer cannot fix it; retries cannot resolve it; an operator at the seller has to. The catalog has no generic `INTERNAL_ERROR` code by design, and `CONFIGURATION_ERROR` is deliberately narrower — it covers the actionable slice where the remediation is "report this to the seller's operator." Opaque crashes that don't fit that profile remain catalog-uncoded; sellers MAY return platform-specific codes, and buyers fall back to the `recovery` classification per the [forward-compatibility rule](#recovery-classification). + +### Aggregate signal: per-request terminal, per-seller outage + +A single `CONFIGURATION_ERROR` is `terminal` for the request that received it — the buyer MUST surface to a human at the seller and MUST NOT auto-retry. Repeated `CONFIGURATION_ERROR` from the same seller in a short window is an operational signal of a different kind: a seller-side outage. Buyer-side dashboards and alerting SHOULD treat aggregate `CONFIGURATION_ERROR` rate per seller as an outage indicator (e.g., page on N occurrences in M minutes from a single seller), distinct from the per-request-terminal handling. This convergence matters because a buyer that buckets aggregate `CONFIGURATION_ERROR` with generic terminal errors loses the seller-isolated outage signal that motivated the code's existence. + +### error.message: operator-actionable, not deployment-internal + +The code itself is the discriminator — `CONFIGURATION_ERROR` carries no `error.details` shape (the [minimal-disclosure precedent](#per-agent-authorization-gate) of [`AGENT_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-agent-suspended) / [`AGENT_BLOCKED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-agent-blocked) applies). `error.message` carries the diagnostic, and sellers SHOULD calibrate it to a level useful to a seller-side operator without leaking deployment internals to the buyer. The message is wire-visible — it MUST NOT include credentials, connection strings, full file paths, or stack traces. + +Useful (operator can act, buyer learns nothing exploitable): + +```json +{ + "code": "CONFIGURATION_ERROR", + "message": "account is mode='mock' but no mock_upstream_url declared in metadata; populate it in the AccountStore", + "recovery": "terminal" +} +``` + +Not useful (the operator already knew there was a problem; the buyer learns where the seller's filesystem is): + +```json +{ + "code": "CONFIGURATION_ERROR", + "message": "configuration error", + "recovery": "terminal" +} +``` + +Leaks (don't): + +```json +{ + "code": "CONFIGURATION_ERROR", + "message": "ECONNREFUSED postgres://admin:hunter2@10.0.1.42:5432/prod (at /opt/seller/src/db/pool.ts:127)", + "recovery": "terminal" +} +``` + +## Best Practices + +1. **Check `recovery` first** — it's the most reliable signal for how to handle an error +2. **Implement retries** — use exponential backoff for transient errors +3. **Respect rate limits** — honor `retry_after` values +4. **Handle unknown codes gracefully** — fall back to `error.recovery`; default to `transient` when absent (see [Forward-compatible decoding](#forward-compatible-decoding-normative)) +5. **Log with context** — include `code`, `recovery`, and `field` for debugging +6. **Fallback strategies** — always have a backup (e.g., polling for webhooks) +7. **Don't retry terminal errors** — escalate to a human operator +8. **Handle partial success** — process warnings in successful responses + +## Next Steps + +- **Transport Bindings**: See [Transport Errors](/dist/docs/3.2.0-beta.4/building/operating/transport-errors) for how errors travel over MCP and A2A +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for webhook error handling +- **Security**: See [Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for authentication errors diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/index.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/index.mdx new file mode 100644 index 0000000000..ad9aaaad27 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/index.mdx @@ -0,0 +1,32 @@ +--- +title: L3 — Protocol semantics +sidebarTitle: L3 — Protocol semantics +description: "Protocol-semantics layer of the AdCP stack. Lifecycle state machines, idempotency, error catalog, async-task contract, conformance test surface, webhook emission. Where most of an SDK's value lives." +"og:title": "AdCP — L3 (Protocol semantics)" +--- + +L3 enforces what AdCP *means* on the agent side. The wire shape is well-formed (L0); the caller is authentic (L1) and authorized (L2); now: is the request legal given the current state of the world? + +For agents, L3 is the bulk of the protocol surface — the [3–4 person-month from-scratch build](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#why-sdks-matter-more-in-adcp-than-in-eg-http) lives almost entirely here. For callers, L3 is consumer-side: weeks of handler glue, classifying error codes and handling state transitions rather than enforcing them. + +## What an SDK at L3 must provide + +If you're picking an SDK or porting one to a new language, this is the L3 build target: + +- **Lifecycle state-machine graphs** for all spec-defined resources, with a transition-assertion primitive that emits the spec-correct error code (`NOT_CANCELLABLE` / `INVALID_STATE` / etc.). +- **Idempotency cache** with cross-payload conflict detection and the no-payload-echo invariant on `IDEMPOTENCY_CONFLICT` envelopes. +- **Async-task store + dispatcher** — tools opt into async; the SDK returns `task_id`, accepts polling, and emits the terminal artifact. +- **Webhook emitter** — signed, retried, idempotent. +- **The conformance test surface** (`comply_test_controller`), wired to drive state deterministically when the resolved account is in sandbox or mock mode (and rejected otherwise). +- **Per-resource persistence primitives** that handle the spec's echo contracts. +- **Server-construction entry point** that ties all of the above together with sane defaults. + +For the cumulative cross-layer story (what L0+L1+L2+L3 buys you), see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#l3--protocol-semantics). For what changed at L3 between 2.5 and 3.0, see [What changed at L3 in 3.0](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0). + +## Pages in this layer + +- **[Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)** — status values, transitions, polling. +- **[Async operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations)** — sync, async, and interactive task handling. +- **[Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)** — push notifications, signing, retry, idempotency. +- **[Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling)** — error categories, codes, recovery classification. +- **[`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)** — sandbox-only conformance test surface. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle.mdx new file mode 100644 index 0000000000..c1aeae508f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle.mdx @@ -0,0 +1,295 @@ +--- +title: Task Lifecycle +description: "AdCP task lifecycle: status values (submitted, working, input-required, completed, failed), state transitions, response structure, and polling patterns for all operations." +"og:title": "AdCP — Task Lifecycle" +--- + +Every AdCP response includes a `status` field that tells you exactly what state the operation is in and what action you should take next. This is the foundation for handling any AdCP operation. + +:::note Application-layer task state +The status values and lifecycle described here are transport-independent AdCP application state. MCP and A2A task mechanisms may wrap, stream, or deliver an AdCP response, but they do not replace AdCP's `task_id`, webhook payloads, or polling/reconciliation surfaces. + +For `submitted` operations, observe the AdCP task with [push notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) or the AdCP polling surface. The [AdCP v3 A2A profile](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension) standardizes fresh `get_task_status` invocations; MCP sellers may expose either `get_task_status` or the legacy AdCP `tasks/get` alias. Transport-native MCP/A2A task methods use their own wire shapes and are separate from AdCP task polling. +::: + +## Status Values + +AdCP uses the same status values as the [A2A protocol's TaskState enum](https://a2a-protocol.org/dev/specification/#63-taskstate-enum): + +| Status | Meaning | Your Action | +|--------|---------|-------------| +| `submitted` | Task queued, blocked on external dependency | Configure webhook, show "queued" indicator | +| `working` | Agent actively processing (>30s) | Wait for result — out-of-band progress signal, not a polling trigger | +| `input-required` | Needs information from you | Read `message` field, prompt user, send follow-up | +| `completed` | Successfully finished | Process `data`, show success message | +| `canceled` | User/system canceled task | Show cancellation notice, clean up | +| `failed` | Error occurred | Show error from `message`, handle gracefully | +| `rejected` | Agent rejected the request | Show rejection reason, don't retry | +| `auth-required` | Authentication needed | Prompt for auth, retry with credentials | +| `unknown` | Indeterminate state | Log for debugging, may need manual intervention | + +## Response Structure + +Every AdCP response uses a **flat structure** where task-specific fields are at the top level: + +```json +{ + "status": "completed", // Always present: what state we're in + "message": "Found 5 products", // Always present: human explanation + "context_id": "ctx-123", // Session continuity + "context": { // Application-level context echoed back + "ui": "buyer_dashboard" + }, + "products": [...] // Task-specific fields at top level +} +``` + +:::warning Single status field required +Agents MUST NOT emit the legacy `task_status` or `response_status` fields alongside `status`. The `status` field is the single authoritative task state. Agents emitting either alongside `status` are non-conformant. +::: + +## Status Handling + +### Basic Pattern + +```javascript +function handleAdcpResponse(response) { + switch (response.status) { + case 'completed': + // Success - process the data (task fields are at top level) + showSuccess(response.message); + return processData(response); + + case 'input-required': + // Need more info - prompt user + const userInput = await promptUser(response.message); + return sendFollowUp(response.context_id, userInput); + + case 'working': + // Server is actively processing — just wait, result will arrive + showProgress(response.message); + return response; + + case 'failed': + // Error - show message and handle gracefully + showError(response.message); + return handleError(response.errors); + + case 'auth-required': + // Authentication needed + const credentials = await getAuth(); + return retryWithAuth(credentials); + + default: + // Unexpected status + console.warn('Unknown status:', response.status); + showMessage(response.message); + } +} +``` + +### Clarification Flow + +When status is `input-required`, the message tells you what's needed: + +```json +{ + "status": "input-required", + "message": "I need more information about your campaign. What's your budget and target audience?", + "context_id": "ctx-123", + "products": [], + "suggestions": ["budget", "audience", "timing"] +} +``` + +**Client handling:** +```javascript +if (response.status === 'input-required') { + // Extract what's needed from the message + const missingInfo = extractRequirements(response.message); + + // Prompt user with specific questions + const answers = await promptForInfo(missingInfo); + + // Send follow-up with same context_id + return sendMessage(response.context_id, answers); +} +``` + +### Approval Flow + +Human approval at the task layer is modelled as `input-required` (when the buyer must respond, e.g. confirm a budget) or `submitted` (when the seller is waiting on an internal human, e.g. IO signing). These implement the [Embedded Human Judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) principle that judgment cannot be delegated to software — when an action exceeds autonomous authority, the system halts for human review rather than proceeding. + +> `pending_approval` is an Account status, not a task status and not a MediaBuy status. It indicates the seller is reviewing an account (credit, contracts) before it can be used. Don't reuse the name for task-level approval. + +```json +{ + "status": "input-required", + "message": "Media buy exceeds auto-approval limit ($100K). Please approve to proceed with campaign creation.", + "context_id": "ctx-123", + "approval_required": true, + "amount": 150000, + "reason": "exceeds_limit" +} +``` + +**Client handling:** +```javascript +if (response.status === 'input-required' && response.approval_required) { + // Show approval UI + const approved = await showApprovalDialog(response.message, response); + + // Send approval decision + const decision = approved ? "Approved" : "Rejected"; + return sendMessage(response.context_id, decision); +} +``` + +### Operations Over 30 Seconds + +Operations that take longer than 30 seconds return either `working` or `submitted`. These statuses mean different things: + +- **`working`**: The server is actively processing and will deliver the result when ready. No polling needed — the server sends progress out-of-band and the result arrives on the open connection. +- **`submitted`**: The operation is blocked on an external dependency (human approval, publisher review). Configure a webhook or poll. + +```json +{ + "status": "submitted", + "message": "Media buy submitted for publisher approval", + "context_id": "ctx-123", + "task_id": "task-456" +} +``` + +**Handling for `submitted` operations:** +- **All transports**: Use [push notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) (recommended) or poll the AdCP task with `get_task_status` / legacy `tasks/get`. +- **MCP/A2A transport tasks**: Treat native task state as transport state. A native task can finish once it has delivered an AdCP payload that still says `status: 'submitted'`. + +## Status Progression + +Tasks progress through predictable states: + +``` +submitted → working → completed + ↓ ↓ ↑ +input-required → → → → → + ↓ + failed +``` + +- **`submitted`**: Task queued, blocked on external dependency — configure webhook or poll +- **`working`**: Agent actively processing (>30s) — wait for result, no polling needed +- **`input-required`**: Need user input, continue conversation +- **`completed`**: Success, process results +- **`failed`**: Error, handle appropriately + +## Polling and Timeouts + +### Polling is for `submitted` only + +Don't poll for `working` — the server delivers the result on the open connection. Polling is a backup for `submitted` operations (webhooks are preferred). + +Send `include_result: true` to receive the terminal task payload on the polled response once the task reaches `status: completed`. The `result` object on the response carries the same shape the original task would have returned synchronously — for example, polling a `create_media_buy` task returns `result: { media_buy_id, packages, status }`. For `failed` tasks, read the existing `error` field instead. Webhooks remain the supported delivery mechanism (see [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)); `include_result` is the typed polling alternative for buyers that prefer pull over push. + +### Typed task results in SDKs + +AdCP 3.2 deliberately keeps the polling envelope's `result` property generic. Draft-07 cannot select a `$ref` dynamically from the sibling `task_type` value without enumerating every task, and embedding that enumeration made `get_task_status` grow whenever any async-capable tool grew. Exact result validation is still required; it is selected through the release manifest instead of duplicated into the polling schema. + +The release `manifest.json` artifact therefore publishes `task_result_resolution`. For a terminal result, first check `terminal_schema_overrides[task_type]`; when no override exists, replace `{task_type}` in `/tools/{task_type}/response_schema`. A tool's canonical response schema already contains its task-local terminal branches, including the structured `get_products` rejection. SDK generators SHOULD use that rule to expose a generic relationship equivalent to: + +```ts +type ToolTaskType = Extract; +type TaskHandle = { taskId: string; taskType: T }; +type TaskResult = + T extends keyof TaskResultOverrides + ? SchemaType + : T extends ToolName + ? ToolResponse + : never; +type TaskStatus = { + task_id: string; + task_type: T; + status: AdcpTaskStatus; + result?: TaskResult; +}; +``` + +A tool call that returns `submitted` can retain its tool name in `TaskHandle`, so a later `getTaskStatus(handle)` returns the precise result type without importing a global union. SDKs SHOULD keep a string-only overload for recovered or persisted task IDs; that overload returns an unknown result until the response's `task_type` is checked, then resolves and validates the matching manifest schema or override. If a typed handle's expected tool differs from the returned `task_type`, the SDK MUST reject the response as a task-correlation failure. + +Webhook envelopes retain their separate async payload schema. For 3.x compatibility, task reconciliation also continues to accept the historically shared event value `media_buy_delivery`; its manifest override selects `media-buy-delivery-webhook-result.json`. AdCP 4.0 can separate event types from tool task types, remove the legacy `tasks/get` alias, and make this generic SDK relationship part of the canonical task model. + +```javascript +// Polling is only for 'submitted' operations +async function pollForResult(taskId, pollInterval = 30_000) { + while (true) { + await sleep(pollInterval); + + const response = await adcp.call('get_task_status', { + task_id: taskId, + include_result: true + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + // response.result carries the terminal payload when status === 'completed' + // response.error carries error details when status === 'failed' + return response; + } + } +} +``` + +### Timeout Configuration + +```javascript +const TIMEOUTS = { + sync: 30_000, // 30 seconds — most operations complete here + working: 300_000, // 5 minutes — connection timeout for active processing + interactive: 300_000, // 5 minutes for human input + submitted: 86_400_000 // 24 hours for external dependencies +}; + +function getTimeout(status) { + if (status === 'submitted') return TIMEOUTS.submitted; + if (status === 'working') return TIMEOUTS.working; + if (status === 'input-required') return TIMEOUTS.interactive; + return TIMEOUTS.sync; +} +``` + +## Task Reconciliation + +Use `list_tasks` (or legacy `tasks/list` in 3.x) to recover from lost state: + +```javascript +// Find all pending operations +const pending = await session.call('list_tasks', { + filters: { + statuses: ["submitted", "working", "input-required"] + } +}); + +// Reconcile with local state +const missingTasks = pending.tasks.filter(task => + !localState.hasTask(task.task_id) +); + +// Resume tracking missing tasks +for (const task of missingTasks) { + startPolling(task.task_id); +} +``` + +## Best Practices + +1. **Always check status first** - Don't assume success +2. **Handle all statuses** - Include a default case for unknown states +3. **Preserve context_id** - Required for conversation continuity +4. **Use task_id for tracking** - Especially for long-running operations +5. **Implement timeouts** - Don't wait forever +6. **Log status transitions** - Helps with debugging and auditing + +## Next Steps + +- **Async Operations**: See [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) for handling different operation types +- **Webhooks**: See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for push notification patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) for error categories and recovery diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks.mdx new file mode 100644 index 0000000000..8fa5a43c96 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks.mdx @@ -0,0 +1,681 @@ +--- +title: Push Notifications +description: "AdCP push notifications: how sellers deliver async task status updates to your webhook endpoint via RFC 9421–signed POST requests (with legacy HMAC fallback). Setup, URL templates, and idempotency." +"og:title": "AdCP — Push Notifications" +--- + +Push notifications let sellers deliver task status updates to you directly, instead of requiring you to poll. You provide a webhook URL in the task request; the seller POSTs status changes to that URL as the task progresses. + +## How it works + +1. A unique operation ID is generated per task invocation for webhook correlation +2. A webhook URL is built for your receiver. The URL may contain your own routing token, but it is opaque to the seller +3. `push_notification_config` is injected into the task request body with the URL and explicit `operation_id` — no shared secret required +4. The seller POSTs webhook notifications to your URL as the task status changes, signing each POST with its `adcp_use: "request-signing"` key published in its own brand.json `agents[]` entry; deprecated `webhook-signing` keys remain accepted during the compatibility window +5. You verify the signature against the seller's published JWKS and dedupe by `idempotency_key` +6. Each notification echoes the explicit `operation_id` back in the payload so you can correlate it without parsing the URL + +``` +create_media_buy request + └── push_notification_config + └── url: "https://you.com/adcp/webhook/create_media_buy/agent_123/route_abc123" + └── operation_id: "op_456" + // No shared secret — the seller signs with its own key, you verify against + // its published JWKS. See "Signature verification" below. + + ↓ seller processes task ↓ + +POST https://you.com/adcp/webhook/create_media_buy/agent_123/route_abc123 + Signature-Input: sig1=("@method" "@target-uri" "@authority" "content-type" "content-digest"); + created=1706097600;expires=1706097900;nonce="...";keyid="seller-webhook-2025"; + alg="ed25519";tag="adcp/webhook-signing/v1" + Signature: sig1=:: + Content-Digest: sha-256=:: + Content-Type: application/json + + { + "idempotency_key": "whk_01HW9D3H8FZP2N6R8T0V4X6Z9B", ← dedup by this + "task_id": "task_456", + "operation_id": "op_456", ← echoed from push_notification_config.operation_id + "status": "completed", + "result": { ... } + } +``` + +Webhook v1 retains this legacy unpadded Base64URL encoding throughout AdCP 3.x; it does not inherit the 3.2 request-signing migration to RFC 8941 padded Base64. SDKs select the webhook parser from the configured callback route, never as fallback after request-profile parsing fails. + +If you're using the `@adcp/sdk` library, this entire flow is handled automatically. As a **buyer**, configure `webhookUrlTemplate` and your agent URL on the client; `push_notification_config` is injected into every outgoing task call, and incoming webhooks are verified against the seller's JWKS automatically. As a **seller emitting webhooks**, publish a signing JWK at your brand.json `agents[]` entry. New signers use `adcp_use: "request-signing"`; if you want webhook-only key material, publish a second `request-signing` JWK with a distinct `kid`. + +:::warning Legacy HMAC fallback (deprecated) +Buyers integrating with receivers that have not yet adopted the RFC 9421 webhook profile MAY opt into the legacy HMAC-SHA256 scheme by populating `push_notification_config.authentication.credentials`. That path is deprecated and removed in AdCP 4.0 — see [Legacy HMAC-SHA256 fallback](#legacy-hmac-sha256-fallback-deprecated) below. Because the inbound request that registers the webhook is typically not 9421-signed in 3.0, the `authentication` block is susceptible to on-path strip/inject — see [Downgrade and injection resistance](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks) for the operational mitigations. +::: + +## Naming: snake_case vs camelCase + +This trips people up. There are two naming conventions in play: + +| Context | Field name | Example | +|---------|-----------|---------| +| **MCP task arguments** (AdCP JSON) | `push_notification_config` | `{ push_notification_config: { url: ..., operation_id: ... } }` | +| **A2A transport configuration** | `taskPushNotificationConfig` | `configuration: { taskPushNotificationConfig: { id: ..., url: ... } }` | + +The AdCP field name is always **`push_notification_config`** (snake_case). It goes in the task request body alongside your other task parameters. + +The two objects are not aliases. `push_notification_config` registers an AdCP +application webhook and includes `operation_id`. A2A +`taskPushNotificationConfig` registers delivery for the A2A transport Task and +does not define `operation_id`. + +## Adding push_notification_config to a request + +### MCP + +Include `push_notification_config` as a task argument, merged with the rest of your task parameters: + +```json +{ + "brand": { "brand_id": "acme" }, + "start_time": { "type": "date", "date": "2025-03-01" }, + "end_time": "2025-06-30T23:59:59Z", + "packages": [...], + "push_notification_config": { + "url": "https://you.com/webhooks/adcp/create_media_buy/route_abc123", + "operation_id": "op_abc123" + } +} +``` + +`authentication` is omitted in the default case — the seller signs with its own `adcp_use: "request-signing"` key. Deprecated `webhook-signing` keys remain accepted during the compatibility window. Include `authentication.credentials` only if you need the legacy HMAC-SHA256 fallback. + +### A2A + +For a durable AdCP operation invoked through the v3 A2A profile, keep the AdCP +webhook registration inside the typed task input: + +```json +{ + "message": { + "messageId": "msg-create-001", + "role": "ROLE_USER", + "parts": [{ + "data": { + "skill": "create_media_buy", + "input": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "account": { "account_id": "acc_demo_001" }, + "brand": { "domain": "brand.example" }, + "proposal_id": "proposal_001", + "total_budget": { "amount": 100000, "currency": "USD" }, + "start_time": "asap", + "end_time": "2027-06-30T23:59:59Z", + "push_notification_config": { + "url": "https://you.example/webhooks/adcp/create-media-buy", + "operation_id": "op_abc123" + } + } + } + }] + } +} +``` + +If the buyer also wants updates while the A2A handler itself is running, it +may separately set `configuration.taskPushNotificationConfig` with the A2A +fields `id`, `url`, optional `token`, and optional `authentication`. On an +initial `SendMessage`, omit `taskId`; the server has not assigned it yet. That +transport registration ends with the A2A Task and does not replace AdCP +polling or the application webhook above. + +## Operation IDs and URL templates + +Operation IDs let you correlate incoming webhooks to the right task invocation. The pattern: + +1. Buyer generates a unique operation ID per task call +2. Buyer threads it through to the seller as `push_notification_config.operation_id`. The webhook URL structure is the buyer's choice and is **opaque to the seller** +3. Seller echoes `operation_id` verbatim in every webhook payload — no URL parsing needed + +**Normative wire contract:** + +- **Buyers SHOULD** supply `operation_id` to the seller for every webhook registration and generate a unique value per task invocation (UUID recommended). Sellers MAY reject a webhook registration that omits `operation_id` with `INVALID_REQUEST`. +- **Sellers MUST** echo the buyer-supplied `operation_id` value in every webhook payload exactly as received. The payload field is the **only** source of truth for correlation. +- **Sellers MUST NOT** derive `operation_id` by parsing `push_notification_config.url` — the URL structure (path template, query parameters, opaque token, etc.) is implementation-defined from the seller's point of view and cannot be reliably reversed across implementations. A buyer's URL convention is not part of the protocol. +- **Receivers MAY** dispatch HTTP endpoints by URL path or query string, but **MUST NOT** use URL-derived values as the operation correlation key. The wire-level correlation identifier is the payload field. + +This matches the precedent set by every comparable async-notification protocol in ad tech (OpenRTB `nurl`/`burl`, VAST tracking pixels, A2A `PushNotificationConfig`): the entity firing the HTTP call never parses the receiver's URL for correlation data. + +**URL template pattern (buyer-side convention only):** +``` +https://you.com/webhooks/{task_type}/{agent_id}/{route_token} +``` + +The template above is a useful **server-side routing aid for the buyer** — it lets a buyer's HTTP server dispatch on path segments without first parsing the body — but it is not normative and sellers cannot rely on it. A buyer who prefers `?route=…`, a flat path, or an entirely opaque token is fully conformant as long as the seller-side `operation_id` is supplied through the SDK's send-side API. + +**Example (client library handles this automatically):** +```typescript +import { randomUUID } from 'crypto'; + +const operationId = randomUUID(); // e.g. "cd51e063-2b79-4a6d-afac-ed7789c3a443" +const routeId = randomUUID(); // receiver-local routing token; opaque to the seller +const webhookUrl = `https://you.com/adcp/webhook/create_media_buy/${agentId}/${routeId}`; + +// pass both webhookUrl and operationId in push_notification_config +``` + +The seller's webhook payload will include `"operation_id": "cd51e063-2b79-4a6d-afac-ed7789c3a443"`, so your handler can correlate to the right pending operation by reading the payload field directly. URL paths can select an HTTP handler, but not the protocol operation ID. + +**Seller-SDK implementations** surface `operation_id` as an explicit parameter on the send-side webhook API (e.g., Python `WebhookSender.send_mcp(url=…, operation_id=…)`). The seller's application code threads the value through from the original task request to the webhook fire; the SDK never attempts to recover it from the URL. + +### Echoing the caller's `context` object + +When the originating request carried a top-level `context` object, the seller MUST echo that same object verbatim in every webhook payload for the same operation, alongside `operation_id`. This is the same contract that applies to synchronous and async-status responses — see [Context and sessions — Normative echo contract](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#normative-echo-contract). The echo MUST carry through `working`, `input-required`, `completed`, `failed`, and `canceled` deliveries; dropping `context` between the initial response and a later webhook breaks buyer-side correlation exactly where it's needed most. Buyers routing by `context.trace_id` or `context.internal_campaign_id` rely on verbatim echo on every delivery. + +## When webhooks fire + +Webhooks are sent for each status change after the initial response, as long as `push_notification_config` is in the request. + +If the task completes synchronously (initial response is already terminal, such as `completed`, `failed`, or `rejected`), no webhook is sent — you already have the result. + +Only operations whose initial response is non-terminal (`working` or `submitted`) may later emit AdCP task webhooks. For an inline terminal response, sellers MUST NOT synthesize a task webhook by inventing a `task_id` or replaying the inline result to `push_notification_config.url`; sync-only operations, and sync-only operation modes where `push_notification_config` is not meaningful, MAY reject that field as a well-formed runtime error instead. This is a seller-to-buyer wire rule: buyer SDKs MAY normalize synchronous responses into local callbacks, promises, or handler invocations, but those local SDK conveniences are not AdCP webhooks. If a future AdCP version adds a buyer-signaled sync-completion notification mode, it will be explicit and capability-advertised; the 3.x task webhook contract does not define one. + +**Status changes that trigger webhooks:** + +| Status | Meaning | +|--------|---------| +| `working` | Task is processing — may include progress info | +| `input-required` | Waiting for human approval or clarification | +| `completed` | Final result available | +| `failed` | Task failed with error details | +| `canceled` | Task was canceled | + +## Webhook payload formats + +### MCP + +```json +{ + "idempotency_key": "whk_01HW9D3H8FZP2N6R8T0V4X6Z9B", + "task_id": "task_456", + "operation_id": "cd51e063-2b79-4a6d-afac-ed7789c3a443", + "task_type": "create_media_buy", + "domain": "media-buy", + "status": "completed", + "timestamp": "2025-01-22T10:30:00Z", + "message": "Media buy created successfully", + "result": { + "media_buy_id": "mb_12345", + "packages": [ + { "package_id": "pkg_001", "context": { "line_item": "li_ctv_sports" } } + ] + } +} +``` + +Every webhook payload carries a required `idempotency_key` — a sender-generated key that is stable across retries of the same event. This is the canonical dedup field; see [Reliability](#reliability) below. + +### Payload anatomy: envelope vs. result + +Webhook receivers must distinguish the **wire envelope** from the task-specific **result**. The full MCP webhook envelope is the JSON object sent as the HTTP POST body. Delivery-report content lives under `result`; it is not valid as the top-level POST body by itself. + +For a delivery reporting fire, the full wire payload looks like: + +```json +{ + "idempotency_key": "whk_20260526_example_000031", + "operation_id": "delivery_report_67_2026_04", + "task_id": "delivery_report_67_2026_04_000031", + "task_type": "media_buy_delivery", + "status": "completed", + "timestamp": "2026-05-26T09:00:44.582Z", + "message": "Scheduled media buy delivery report available", + "result": { + "notification_type": "scheduled", + "sequence_number": 31, + "reporting_period": { + "start": "2026-05-25T00:00:00Z", + "end": "2026-05-25T23:59:00Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { + "media_buy_id": "mb_001", + "status": "active", + "totals": { + "impressions": 125000, + "spend": 5625.0, + "clicks": 250 + }, + "by_package": [] + } + ] + } +} +``` + +This inner result object is valid delivery-report content, but it is **not valid as the top-level webhook POST body**: + +```json +{ + "notification_type": "scheduled", + "sequence_number": 31, + "reporting_period": { + "start": "2026-05-25T00:00:00Z", + "end": "2026-05-25T23:59:00Z" + }, + "currency": "USD", + "media_buy_deliveries": [] +} +``` + +The top-level `status` is the async webhook status (`completed`, `failed`, `working`, and so on). The nested `media_buy_deliveries[].status` is the media buy lifecycle or reporting state (`active`, `paused`, `reporting_delayed`, and so on). Do not collapse the two fields. + +For delivery-report data events such as `scheduled`, `final`, `delayed`, `adjusted`, and `window_update`, `notification_id` is absent by design; dedupe the transport event with `idempotency_key`. The `aggregated_totals` field is API-only for `get_media_buy_delivery` responses and must not be emitted in reporting webhook result payloads. + +Signatures and content digests are computed over the exact raw JSON bytes sent as this full envelope. Re-serializing just the `result` object, adding whitespace, or changing field order before verification changes the bytes and breaks signature validation. + +### A2A + +A2A sends a `Task` object (for final states) or `TaskStatusUpdateEvent` (for progress). For final states (`completed`, `failed`), AdCP result data is in `.artifacts[0].parts[]`. For interim states (`working`, `input-required`), data is in `status.message.parts[]`. + +```json +{ + "task": { + "id": "task_456", + "contextId": "ctx_123", + "status": { + "state": "TASK_STATE_COMPLETED", + "timestamp": "2025-01-22T10:30:00.000Z" + }, + "artifacts": [{ + "artifactId": "result", + "parts": [ + { "text": "Media buy created successfully" }, + { + "data": { + "media_buy_id": "mb_12345", + "packages": [ + { "package_id": "pkg_001", "context": { "line_item": "li_ctv_sports" } } + ] + } + } + ] + }] + } +} +``` + +### Protocol comparison + +| | MCP | A2A | +|---|---|---| +| **Config field** | `push_notification_config` (in task args) | `configuration.taskPushNotificationConfig` (separate from skill params) | +| **Envelope** | `mcp-webhook-payload.json` | Native `Task` / `TaskStatusUpdateEvent` | +| **Result location** | `result` field | `.artifacts[0].parts[].data` (final) / `status.message.parts[].data` (interim) | +| **Data schemas** | Identical AdCP schemas | Identical AdCP schemas | + +### Registration channel determines envelope shape + +Webhook envelope shape is determined by **which registration mechanism the buyer used**, not by which transport the sync request was sent over: + +| Registered via | Delivered envelope | +|---|---| +| AdCP `push_notification_config` (task argument, MCP/A2A/REST) | [`mcp-webhook-payload.json`](#mcp) | +| A2A `TaskPushNotificationConfig` ([`CreateTaskPushNotificationConfig`](https://a2a-protocol.org/latest/specification/) RPC, or inline `configuration.taskPushNotificationConfig` on `SendMessage`) | A2A native `Task` / `TaskStatusUpdateEvent` per A2A 1.0 §4.3.3 | +| Account-level `sync_accounts.accounts[].notification_configs[]` | Event-specific payloads such as `creative-status-changed-webhook.json`, `creative-assignment-changed-webhook.json`, `indicators-changed-webhook.json`, `account-status-changed-webhook.json`, or `wholesale-feed-webhook.json` | +| Agent-level `sync_agent_notification_configs.notification_configs[]` | Event-specific AdCP payload schemas such as `capabilities-changed-webhook.json` | + +The two channels are independent. A buyer MAY register both for the same task and receive both webhooks per status change. + +**Why this is the model, not "match inbound transport".** Each channel is purpose-built for its envelope: AdCP `push_notification_config` is the AdCP-layer registration for the AdCP `mcp-webhook-payload` shape; A2A `TaskPushNotificationConfig` is the A2A-layer registration for A2A's own `StreamResponse`-wrapped delivery. The buyer picks the channel that matches the receiver — there's no need for a discriminator field, and no ambiguity to override. + +**Typical case: A2A sync, AdCP-shape webhooks.** A buyer orchestrating from an MCP-native runtime that uses A2A for one specific high-throughput sync operation puts `push_notification_config` in the AdCP task arguments inside its `SendMessage` body. The seller honors it as an AdCP-shape registration, regardless of A2A being the sync transport. The buyer's receiver gets the same `mcp-webhook-payload` shape it gets from every other AdCP webhook in its pipeline. + +**A2A buyers wanting A2A-shape webhooks** register through A2A's native push notification mechanism; AdCP doesn't need to add anything for that case. + +### Status-specific result data + +| Status | `result` / `data` contains | +|--------|---------------------------| +| `completed` / `failed` | Full task response | +| `working` | Progress: `percentage`, `current_step`, `total_steps` | +| `input-required` | Reason and any validation errors | +| `submitted` | Minimal acknowledgment | + +## Signature verification + +Every AdCP 3.0 webhook is signed under the [RFC 9421 webhook profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks). The seller signs with its `adcp_use: "request-signing"` key published in its own brand.json `agents[]` entry; deprecated `webhook-signing` keys remain accepted during the compatibility window. You verify against the seller's published JWKS. No shared secret crosses the wire. + +**Publisher sends three headers** (plus `Content-Type`): + +``` +Signature-Input: sig1=("@method" "@target-uri" "@authority" "content-type" "content-digest"); + created=;expires=;nonce=; + keyid=;alg="ed25519";tag="adcp/webhook-signing/v1" +Signature: sig1=:: +Content-Digest: sha-256=:: +``` + +These two binary headers use the webhook-v1 legacy encoding. The AdCP 3.2 request profile uses RFC 8941 padded Base64 instead; a receiver selects one parser from the trusted route/profile and never tries both. + +Covered components are fixed: `@method`, `@target-uri`, `@authority`, `content-type`, `content-digest`. `content-digest` is REQUIRED — the body is the event; a signature that doesn't cover it isn't protecting the attack surface that matters. + +Property-list change payloads retain a required body-level `signature: "rfc9421"` compatibility marker through 3.x because the previously published schema required a string at that location without defining interoperable signature semantics. Receivers MUST accept any string in that field from an older 3.x sender, ignore it for authentication, and verify only the HTTP signature headers above. Property-list registration exposes no legacy authentication selector, so this delivery surface is RFC 9421-only. The marker is removed in 4.0. Collection-list webhook schema and behavior remain unchanged; migrating that contract requires separately versioned work. + +**Verification** follows the 14-step [request verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#verifier-checklist-requests) with three webhook substitutions: + +- Error codes use the `webhook_signature_*` prefix (see [Webhook error taxonomy](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-error-taxonomy)). +- `tag` MUST be `adcp/webhook-signing/v1`. +- Resolve `keyid` via the seller operator's `brand.json` `agents[].jwks_uri`, applying any publisher `adagents.json` `signing_keys[]` pin when present (you already have the seller's agent URL from your integration). + +**Receiver implementation sketch:** +```typescript +import { createRemoteJWKSet, jwtVerify } from 'jose'; +// Use a validated RFC 9421 library (e.g., `http-message-signatures`) pinned to the AdCP profile. + +app.post('/webhooks/adcp/*', async (req, res) => { + try { + // 1. Parse Signature-Input / Signature headers and reject on malformed. + // 2. Resolve keyid against the seller operator's brand.json JWKS. + // 3. Run the AdCP webhook verifier checklist (14 steps). + await verifyAdcpWebhookSignature(req, { + sellerAgentUrl: req.sellerContext.agentUrl, // known from your integration + requiredTag: 'adcp/webhook-signing/v1', + allowedAlgs: ['ed25519', 'ecdsa-p256-sha256'], + }); + } catch (err) { + return res.status(401) + .setHeader('WWW-Authenticate', `Signature error="${err.code}"`) + .end(); + } + + // 4. Dedup by idempotency_key before applying side effects (see Reliability below). + processWebhook(req.body); + res.status(200).end(); +}); +``` + +:::caution Raw body and content-digest +Your `Content-Digest` verification (step 11 of the checklist) requires the raw HTTP body bytes. Capture them before JSON parsing — any re-serialization will break the digest match. + +In Express: +```typescript +app.use(express.json({ + verify: (req, _res, buf) => { (req as any).rawBody = buf.toString('utf-8'); }, +})); +``` +::: + +:::note Replay protection +The `created`/`expires`/`nonce` sig-params enforce a 5-minute max validity window and `(keyid, nonce)` replay dedup. See [Transport replay dedup](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#transport-replay-dedup) for the per-keyid cap and memory-bounding rules. +::: + +### Legacy HMAC-SHA256 fallback (deprecated) + +:::warning Deprecated — removed in AdCP 4.0 +The HMAC-SHA256 scheme below is a compatibility affordance for 3.x only. New integrations SHOULD omit `push_notification_config.authentication` and use the [9421 webhook profile](#signature-verification) above. Sellers MAY decline to support the legacy scheme. +::: + +Buyers can opt into HMAC-SHA256 by populating `push_notification_config.authentication.credentials`. When present, the seller signs with HMAC-SHA256 using a shared secret and includes a timestamp for replay protection. + +**Configuration (legacy):** +```json +{ + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "your_shared_secret_min_32_chars" + } +} +``` + +**Publisher sends two headers (legacy):** +``` +X-ADCP-Signature: sha256= +X-ADCP-Timestamp: +``` + +**Signature algorithm (legacy):** + +The signed message is `{unix_timestamp}.{raw_json_body}` — the Unix timestamp (in seconds), a dot, then the exact JSON bytes being sent in the HTTP body. + +``` +Signature = sha256= + hex( HMAC-SHA256( secret, "{timestamp}.{rawBody}" ) ) +``` + +The `rawBody` **must** be the exact bytes sent on the wire. When serializing a JSON payload to produce the body, use **compact separators** (`","` and `":"`, no surrounding whitespace) — this matches JavaScript `JSON.stringify` and most HTTP-client defaults, and is what the receiver sees as `raw_body`. The common cross-SDK failure here is a signer that calls a language default which inserts spaces (e.g., Python `json.dumps(payload)`) while the HTTP client writes compact bytes on the wire — the signer then signs over bytes the receiver never sees. Use `json.dumps(payload, separators=(",", ":"))` (or equivalent) for byte-equality. See [Webhook Security — legacy normative rules](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#legacy-hmac-sha256-fallback-deprecated-removed-in-40) for the full rules on canonical on-wire form and verifier input handling. + +**Publisher implementation (legacy):** +```typescript +import { createHmac } from 'crypto'; + +function signWebhook(rawBody: string, secret: string): { signature: string; timestamp: string } { + const timestamp = Math.floor(Date.now() / 1000).toString(); + const message = `${timestamp}.${rawBody}`; + const hex = createHmac('sha256', secret).update(message).digest('hex'); + return { signature: `sha256=${hex}`, timestamp }; +} +``` + +**Receiver implementation (legacy):** +```typescript +import { createHmac, timingSafeEqual } from 'crypto'; + +function verifyWebhook( + rawBody: string, signature: string, timestamp: string, secret: string, +): boolean { + const ts = parseInt(timestamp, 10); + if (isNaN(ts)) return false; + const now = Math.floor(Date.now() / 1000); + if (Math.abs(now - ts) > 300) return false; + + const message = `${ts}.${rawBody}`; + const expected = `sha256=${createHmac('sha256', secret).update(message).digest('hex')}`; + if (signature.length !== expected.length) return false; + return timingSafeEqual(Buffer.from(signature), Buffer.from(expected)); +} +``` + +Normative rules for the legacy scheme are in [Webhook Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#legacy-hmac-sha256-fallback-deprecated-removed-in-40). + +### Legacy Bearer token (deprecated) + +The A2A `authentication.schemes: ["Bearer"]` scheme is also supported for compatibility and removed in AdCP 4.0. Bearer provides no tamper protection on the body. The 9421 profile is stronger on signer identity (JWKS-anchored, rotatable, revocable) and key management (no shared secret on the wire); body-integrity protection is comparable to the legacy HMAC scheme since both cover the body bytes. Sellers SHOULD refuse Bearer for any mutating callback. + +```json +{ + "authentication": { + "schemes": ["Bearer"], + "credentials": "your_bearer_token_min_32_chars" + } +} +``` + +```javascript +app.post('/webhooks/adcp', (req, res) => { + const token = req.headers.authorization?.replace('Bearer ', ''); + if (token !== process.env.ADCP_WEBHOOK_TOKEN) return res.status(401).end(); + processWebhook(req.body); + res.status(200).end(); +}); +``` + +## Reliability + +Webhooks use **at-least-once delivery** — you may receive the same event more than once, and events may arrive out of order. + +### Dedup by `idempotency_key` + +Every webhook payload — MCP task envelope, governance list-change webhooks (`collection_list_changed`, `property_list_changed`), artifact push webhooks, and rights `revocation-notification` — carries a required `idempotency_key`. Publishers generate this key once per distinct event and reuse it on every retry. Receivers MUST dedupe by it. + +**Sender requirements:** +- The key MUST be cryptographically random (UUID v4 recommended). Sequential, timestamp-only, or otherwise predictable values are non-conformant: receivers dedupe on the raw value, so a predictable key lets an attacker pre-seed a receiver's cache to suppress a later legitimate event. +- The key MUST be stable across retries of the same event and MUST NOT be reused for a distinct event. + +**Receiver requirements:** +- Dedup scope is `(authenticated sender identity, idempotency_key)`. "Authenticated sender identity" means the sender's cryptographic identity as established by signature verification — under the 9421 default, the resolved `keyid` → signer `agents[]` entry URL; under the legacy fallback, the credential binding from the verified HMAC secret or Bearer token. Never derive identity from a payload field. Keys from different senders MUST be kept in independent keyspaces; a receiver integrated with multiple sellers MUST NOT collapse them. During an HMAC→9421 migration, a receiver SHOULD map both sender-identity forms for the same logical seller to one keyspace so that a duplicate across schemes still dedupes. +- **Cross-endpoint dedup (MUST).** A receiver that exposes more than one webhook endpoint (per-integration, per-environment, per-tenant, or per-pod in a horizontally-scaled fleet) MUST share the `(sender identity, idempotency_key)` keyspace across every endpoint a given sender can reach — per-pod in-memory caches are non-conformant. Without a shared tier, the same signed event replayed to a sibling endpoint executes twice. See [Webhook replay dedup sizing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-replay-dedup-sizing) for the transport-layer companion rule on `(keyid, nonce)` scoping. +- Dedup state MUST persist for at least 24h in durable storage that survives process restarts, pod replacements, and region failovers. Publishers SHOULD NOT retry beyond that window; retries arriving after the receiver's TTL will be reprocessed as fresh events. An in-memory-only cache (per-pod `Map` or LRU without a backing tier) is non-conformant — the asymmetry between the ~360 s signature-nonce window and the 24h idempotency window creates a **displaced-replay window** in which a legitimate signed retry (fresh nonce, same `idempotency_key`) passes signature verification and finds no cache entry because the receiver dropped in-memory state. Side effects run twice. Receivers whose cache tier cannot durably honor 24h MUST document the shorter effective window to every sender they integrate with — silent shortening is the unsafe mode. +- Receivers SHOULD bound dedup cache size per sender and return `429 Too Many Requests` (or drop the connection) rather than grow unbounded — a misbehaving or hostile seller emitting high-volume fresh keys is otherwise a storage-amplification vector. +- **Duplicates MUST be answered with `2xx`** (typically `200 OK`), not `409 Conflict`. At-least-once senders interpret any non-2xx response as "delivery failed" and retry with exponential back-off; returning `4xx` on a successfully-deduped event turns correct receiver behavior into a retry storm. A duplicate is a no-op, not an error. +- Webhook receivers do **not** verify payload equivalence across key reuse. If a sender reuses a key with a changed payload (a sender bug), the receiver's cached first copy wins and the second is silently deduped. This differs from the request-side `IDEMPOTENCY_CONFLICT` behavior — senders are solely responsible for generating a fresh key on every distinct event. + +```javascript +app.post('/webhooks/adcp', async (req, res) => { + const payload = req.body; + const { idempotency_key, task_id, status, timestamp, result } = payload; + + // Scope dedup to the authenticated sender — never trust a payload field for identity. + const sender = req.verifiedSenderId; // set by 9421 verifier (keyid → agent URL) or legacy HMAC/Bearer middleware + + // Dedup: same (sender, idempotency_key) within the replay window → already processed. + // Return 200 (not 409) so the sender stops retrying. + if (await db.webhookAlreadyProcessed(sender, idempotency_key)) { + return res.status(200).end(); + } + await db.markWebhookProcessed(sender, idempotency_key); // before side effects — fail-closed on crash + + // Ordering: separately, don't apply a stale status on top of a newer one. + // Ordering state is keyed on task_id, not idempotency_key — two distinct events + // (different keys) can still arrive out of order. Still a 200: we received it cleanly. + const task = await db.getTask(task_id); + if (task?.updated_at >= timestamp) { + return res.status(200).end(); + } + + await db.updateTask(task_id, { status, updated_at: timestamp, result }); + await triggerBusinessLogic(task_id, status); + res.status(200).end(); +}); +``` + +**Always implement polling as backup.** Webhooks can fail due to network issues or server downtime. Use a slower poll interval when webhooks are configured (e.g., every 2 minutes instead of 30 seconds), and stop polling once you receive a terminal status via webhook. + +### Diagnosing missing fires + +When a buyer suspects a webhook isn't reaching its endpoint — gateway 5xx, stale-sequence dedup, drifted webhook URL, suppressed fires under a tripped circuit breaker — call [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys#webhook-activity) with `include_webhook_activity: true`. Each returned media buy will carry a `webhook_activity` array of recent fires for the calling principal, including `idempotency_key` (matches the payload's dedup key — correlate against your own endpoint log), `status` (`success` / `failed` / `timeout` / `connection_error` / `pending`), `http_status_code`, `attempt`, and `error_message`. The scope is the calling principal's own fires; no operator ticket required. + +## Best practices + +1. **Always implement polling as backup** — webhooks can fail; poll at a reduced interval (e.g. every 2 minutes) when webhooks are configured, and stop once you receive a terminal status +2. **Dedupe by `idempotency_key`** — every payload carries a required key stable across retries; track processed keys for at least 24h +3. **Return 2xx on duplicates** — a successfully-deduped event is a no-op, not an error; returning non-2xx triggers the sender's retry back-off and creates retry storms +4. **Verify signatures before processing** — run the 9421 webhook verifier checklist (or the legacy HMAC check if you opted in) before any side effects +5. **Acknowledge immediately** — return `200` before doing any heavy processing to avoid seller timeouts and unnecessary retries +6. **Don't rely on URL structure** — use `operation_id` from the payload for business correlation; URL paths may only demux endpoints +7. **Plan for HMAC removal in 4.0** — if you're currently on the legacy HMAC fallback, migrate to the 9421 webhook profile during 3.x + +## Payload extraction + +Webhook receivers need to detect the format and extract AdCP data. The buyer typically knows the format because it configured the transport, but defensive detection is useful for multi-format receivers. + +### Format detection + +| Signal | Format | +|---|---| +| `status` is a string, `task_id` present | MCP | +| `status` is an object with `.state` | A2A | + +### Extraction + +**MCP webhooks:** Extract data from the `result` field directly. + +**A2A webhooks:** Use the [A2A response extraction](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction) algorithm — final states extract from `.artifacts[0].parts[]` (last DataPart), interim states from `status.message.parts[]` (first DataPart). + +```javascript +function extractAdcpResponseFromWebhook(payload, knownFormat) { + const format = knownFormat || detectFormat(payload); + + if (format === 'mcp') return payload.result ?? null; + if (format === 'a2a') return extractAdcpResponseFromA2A(payload); + return null; +} + +function detectFormat(payload) { + if (payload.status && typeof payload.status === 'object' + && !Array.isArray(payload.status) && payload.status.state) return 'a2a'; + if (typeof payload.status === 'string' && payload.task_id) return 'mcp'; + return null; +} +``` + +### Security requirements + +- **Content-Type validation**: Senders MUST send `application/json`. Receivers MUST reject other types before signature verification. +- **Payload size limit**: Receivers SHOULD enforce a 1MB limit. Reject before signature verification — computing a digest or HMAC over large payloads is a DoS vector. Return `413 Payload Too Large`. +- **Deduplication**: `idempotency_key` is the canonical dedup field. Signature verification (9421 or legacy HMAC) plus replay dedup protect the transport; `idempotency_key` protects against duplicate side effects at the application layer. +- **Format detection**: Auto-detection is a defensive fallback. Receivers SHOULD use the known format from their transport configuration (`knownFormat` parameter) rather than relying solely on payload inspection. A compromised intermediary could craft an ambiguous payload that routes extraction to the wrong path. + +### Test vectors + +Machine-readable test vectors are available at [`/static/test-vectors/webhook-payload-extraction.json`](https://adcontextprotocol.org/test-vectors/webhook-payload-extraction.json). Client libraries SHOULD validate their format detection and extraction logic against these vectors. + +## Reporting webhooks + +Reporting webhooks are separate from task status webhooks. They deliver periodic performance data for active media buys and are configured via `reporting_webhook` in `create_media_buy`, not via `push_notification_config`. + +See [Task Reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference) for details on `reporting_webhook`. + +## Agent-level webhooks + +Agent-level webhooks outlive any account or media buy. They are registered with [`sync_agent_notification_configs`](/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs), not with account-level `notification_configs[]` or per-task `push_notification_config`. + +The initial agent-level event type is `capabilities.changed`. It invalidates cached [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) responses. The webhook payload is deliberately small and does not contain the full capability document; receivers re-read `get_adcp_capabilities` and replace their cached snapshot from the fresh response. Sellers MUST publish the new capability snapshot before firing so the webhook's `capabilities_version` is observable on read. Receivers SHOULD retry the read with normal transient-error backoff if the webhook revision is not yet observable. + +## Persistent channel contract + +Task webhooks fire once per logical task and stop when the task settles. **Persistent webhooks** — `reporting_webhook`, `push_notification_config` on a media buy, account-level `notification_configs[]`, and agent-level `sync_agent_notification_configs` subscribers — outlive any single operation and fire repeatedly for the life of the resource or agent. The contract below applies to persistent channels. + +This section is the transport half of the [Snapshot and log contract](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log). For the read-side rules (snapshot is authoritative, replay = re-read), see that page. + +### Delivery semantics + +- **At-least-once delivery.** Sellers MAY re-fire the same logical event under retry. Receivers MUST dedupe transport retries by `idempotency_key`. For state-shaped events that also carry a typed `notification_id` (see [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/mcp-webhook-payload.json) and [snapshot-and-log Rule 1](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log#1-separate-transport-event-and-resource-identity)), receivers MUST also track `notification_id` to correlate fires to current snapshot state — seeing the same `notification_id` under two different `idempotency_key` values is a re-emission signal, not a transport retry. +- **No ordering guarantee.** Two events on the same resource within seconds MAY arrive out of order. Receivers MUST reconcile via the resource snapshot rather than treating webhook ordering as canonical. +- **Idempotent application.** Apply the same payload twice and the resulting receiver state MUST be identical. + +### Coalescence + +For state-shaped event types, sellers SHOULD coalesce multiple near-simultaneous changes on the same resource into a single push. **Coalescence windows are per event type and not a flat ceiling** — a latency-sensitive event (fraud, brand safety) cannot wait the same window an indicator can. + +| Event type | Default coalescence window | Notes | +|---|---|---| +| `impairment` (general) | 5 minutes (SHOULD NOT exceed) | Default for resource-state impairments — audience suspended, creative revoked, etc. | +| `impairment` (latency-sensitive) | Sub-minute / no coalescence | Fraud-driven, brand-safety-driven, or other classes where the buyer's response window is short. Sellers MUST NOT apply the general default to these. | +| Future indicator events | Hours to daily | Higher noise tolerance; bigger window appropriate. | +| Future defect events | Minutes to hours | Between impairment and indicator in urgency. | + +Sellers MAY declare a shorter coalescence window via `get_agent_capabilities` for receivers that need sub-default latency. Sellers MUST NOT exceed the per-type default without explicit buyer opt-in declared on the receiver side. Delivery report fires (`scheduled`, `final`) follow their own cadence and are not subject to this coalescence rule. + +### Replay and recovery + +If a buyer's receiver was offline and missed a fire, recovery is **read the snapshot**. Two paths exist for every persistent channel and they're at parity in content: + +- Missed `impairment` event → call `get_media_buys` and read `impairments[]` (full state recovery). +- Missed delivery report fire → call `get_media_buy_delivery` for the window in question with `time_granularity` set to the granularity the seller declared in `reporting_capabilities.windowed_pull_granularities` (#4590). The pull returns the same per-window slices the webhook delivered. Sellers that have not yet declared a windowed granularity return date-range aggregates and daily breakdowns only and cannot reconstruct sub-daily fires. +- Missed any other state-shaped event → call the corresponding `get_*` task. + +AdCP does not commit to an event-replay primitive at the transport layer. The webhook delivery visibility surface (`webhook_activity[]` on `get_media_buys`, proposed in [#4278](https://github.com/adcontextprotocol/adcp/issues/4278)) exposes recent fires within a retention window for **debugging** — buyers use it to verify that the seller fired and what HTTP status the receiver returned. It is not a data recovery channel; that's what the snapshot's per-window pull (#4590) is for. + +### Mutability and rotation + +`push_notification_config` and `reporting_webhook` on a media buy MAY be updated via `update_media_buy` without re-creating the buy. Common reasons: rotating the receiver URL, replacing an expired bearer token, swapping signing keys. + +Sellers MUST honor the updated config on the next fire after the update is acknowledged. There is no formal handoff window — buyers MAY receive a small number of fires against the prior URL during the propagation window and SHOULD treat both URLs as live until the prior URL has been quiet for a coalescence window. + +### Auth renewal + +Persistent webhooks outlive bearer tokens. Receivers using bearer auth (legacy HMAC profile or token-based mTLS) SHOULD rotate tokens via `update_media_buy` before expiry. Receivers using the 9421 signing profile do not need token rotation — verification is against the seller's published JWKS, which the seller rotates independently. + +If a seller's fire receives a 401 from the receiver, the seller SHOULD treat this as a transient receiver-side configuration error: retry per the standard schedule, surface the failure in `webhook_activity[]` for debugging, and do not auto-disable the webhook. + +### Termination + +Persistent webhooks fire through the buy's terminal lifecycle moves: + +- `final` delivery report fires after the buy reaches `completed`, `canceled`, or `rejected`. +- Any pending `impairment` events fire (or are coalesced and fired) before termination if the seller has them queued. +- After the final fire, no further events fire against the configured URLs. Sellers MAY retain `webhook_activity[]` for the retention window after termination so buyers can audit the closing sequence. + +## Next steps + +- [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) — status values and transitions +- [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) — handling long-running tasks +- [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) — webhook error patterns diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller.mdx new file mode 100644 index 0000000000..52698d1364 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller.mdx @@ -0,0 +1,230 @@ +--- +title: Build a caller +sidebarTitle: Build a caller +description: "Client-side guide for AdCP buyers and demand-side applications. Install the SDK, discover an agent's capabilities, make calls, handle async responses and errors, and ingest reporting. Weeks of handler glue, not months." +"og:title": "AdCP — Build a caller" +--- + +If you're building the **buy side** — a DSP, planning tool, agentic client, or any application that calls AdCP agents to plan, buy, and report — start here. Caller-side L0–L3 is weeks of handler glue, not the [3–4 person-month build](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#why-sdks-matter-more-in-adcp-than-in-eg-http) the agent side requires. The full-stack SDK in your language carries L0–L3; you write the calling logic, response handling, and whatever your application does with the data. + + +**Spec-level reference vs build-shaped guide.** This page walks you through the build. The wire-level invariants — every rule that applies to every mutating call — live at [Calling an AdCP agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent). Read it once before going to production; refer back whenever you're debugging a wire-shape error. + + + +**Try it against a live agent.** AAO runs a public test agent at `https://test-agent.adcontextprotocol.org` with per-domain endpoints — `/sales/mcp`, `/creative/mcp`, `/signals/mcp`, `/governance/mcp`. Point your client at the matching endpoint and `getAdcpCapabilities()` works without auth. Use it to verify your install before pointing at a real seller. + + +## Install the SDK + +The same SDKs that ship server primitives also ship the calling client. Install one and you have both. + + + +```bash +npm install @adcp/sdk +``` + +```typescript +import { createSingleAgentClient } from '@adcp/sdk'; + +const client = createSingleAgentClient({ + id: 'sales', + name: 'Sales agent', + agent_uri: 'https://sales.example.com/mcp', + protocol: 'mcp', +}); +``` + +For multi-agent fan-out (one client driving many sellers in parallel) use `ADCPMultiAgentClient` instead — same call surface, indexed by agent id. + +- [NPM Package](https://www.npmjs.com/package/@adcp/sdk) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client) + + +```bash +pip install adcp +``` + +```python +from adcp import ADCPClient, AgentConfig, Protocol + +client = ADCPClient(AgentConfig( + id="sales", + agent_uri="https://sales.example.com/mcp", + protocol=Protocol.MCP, +)) +``` + +- [PyPI Package](https://pypi.org/project/adcp/) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client-python) + + +```bash +go get github.com/adcontextprotocol/adcp-go/adcp +``` + +The Go caller surface is in active development. See the [adcp-go README](https://github.com/adcontextprotocol/adcp-go) for current coverage. + + + +## Authenticate + +Most agents require credentials before they'll respond to anything beyond `get_adcp_capabilities`. The SDK accepts auth at construction: + + + +```typescript +const client = createSingleAgentClient({ + id: 'sales', + name: 'Sales agent', + agent_uri: 'https://sales.example.com/mcp', + protocol: 'mcp', + auth_token: process.env.ADCP_API_KEY, +}); +``` + + +```typescript +const client = createSingleAgentClient({ + id: 'sales', + name: 'Sales agent', + agent_uri: 'https://sales.example.com/mcp', + protocol: 'mcp', + signing: { keyId: 'your-key-id', privateKey: /* PEM or KMS handle */ }, +}); +``` + + + +If your first call returns a 401 / `AUTH_REQUIRED`, the credentials aren't reaching the agent — check the constructor option, not the request payload. See the [L1 security implementation profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for the full credential model. + +## First call: discover the agent + +Before calling tools by hand, ask the agent what it supports. + +```typescript +const capabilities = await client.getAdcpCapabilities(); +// → { supported_protocols: [...], adcp_versions: [...], features: {...} } +``` + +`get_adcp_capabilities` returns the agent's protocol coverage, AdCP version range, and feature flags. Use it to gate calls — if `media_buy` isn't in `supported_protocols`, don't call `create_media_buy` against this agent. See the [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) reference for the full response shape. + +For the rest of the discovery chain (agent card, `tools/list`, `get_schema`), see the [Discovery chain section of Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#discovery-chain). + +## Make a call + +Typed methods on the client correspond to AdCP tools. The SDK validates your request against the bundled schemas before sending and parses the response into a typed value. + +```typescript +const products = await client.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442046', + buying_mode: 'brief', + brief: 'Video campaign for pet owners, 18–34, US, $50K monthly', +}); + +const buy = await client.createMediaBuy({ + idempotency_key: crypto.randomUUID(), + account: { brand: { domain: 'acme.com' }, operator: 'sales.example' }, + packages: [/* … */], +}); +``` + +Two things worth knowing on the first call: + +- **Generate a fresh `idempotency_key` per logical operation.** Same key on retry → server replays the same response. Fresh key after a failure creates duplicate buys. See the [Idempotency rules](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#idempotency-replay-vs-new-operation). +- **`account` is a discriminated `oneOf`.** Pick one variant (`{account_id}` from `sync_accounts` / `list_accounts`, or `{brand, operator}` as the natural key — `brand.domain` is the buyer's brand domain, `operator` is the seller agent's deployment hostname or brand.json identifier) and send only its required fields. Merging them fails both. See [`account` is `oneOf`](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#account-is-oneof--pick-exactly-one-variant). + +## Handle the three response shapes + +Every mutating tool returns one of three shapes. Handle them explicitly. + +```typescript +const response = await client.createMediaBuy({/* … */}); + +if ('errors' in response) { + // Error: don't retry without fixing — read response.adcp_error.issues[] + // for correctable failures (validation, oneOf, etc.) +} else if (response.status === 'submitted') { + // Async: the work is queued, NOT done. The completion payload arrives + // later — either via webhook (preferred) or by polling the AdCP task. +} else { + // Sync success: response carries the completion payload directly. + // (e.g., response.media_buy_id, response.packages) +} +``` + +The SDK steers you to webhooks for async completion. Configure `webhookUrlTemplate` and a status-change handler at construction; the SDK verifies the inbound webhook against the seller's JWKS and fires your handler with the same `result` shape that synchronous responses carry — see [Receive webhooks](#receive-webhooks) below. + +If you must poll instead of using webhooks (e.g. inside a one-shot script), call the AdCP polling surface: `get_task_status` when the seller advertises it, otherwise legacy AdCP `tasks/get` in 3.x. The [Async responses section of Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#async-responses-status-submitted-means-queued) has the wire contract. + +## Recover from errors + +When you see `adcp_error` in a response, read `issues[]` and act based on `recovery`: + +```typescript +const { code, recovery, issues } = response.adcp_error; + +switch (recovery) { + case 'correctable': + // Buyer-side fix. Patch the JSON pointers from issues[], resend with + // the SAME idempotency_key (fresh key = new operation). + break; + case 'transient': + // Retry with the SAME idempotency_key. Same key on retry replays the + // cached response if the work landed. + break; + case 'terminal': + // Human action required. Don't retry. + break; +} +``` + +`issues[]` is the actionable part: each entry has a JSON Pointer (`pointer`), an Ajv keyword (`required`, `oneOf`, `enum`, etc.), and — for `oneOf` failures — a `variants[]` array listing each variant's required fields. See the [Error recovery section](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#error-recovery--read-issues) for the full envelope and recovery semantics. + +## Receive webhooks + +For async tasks, you can either poll or register a webhook. The webhook delivers the same `result` payload as AdCP task polling with `include_result: true`. The SDK ships an RFC 9421 webhook verifier (`createWebhookVerifier` from `@adcp/sdk/signing/server`) that resolves keys via the seller's brand.json, enforces the replay window, and surfaces structured errors for the [webhook error taxonomy](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-error-taxonomy). + +If you wire the multi-agent client with a `webhookUrlTemplate` and status-change handlers (per the [@adcp/sdk README](https://github.com/adcontextprotocol/adcp-client#readme)), incoming webhooks are verified and dispatched into your handlers automatically — your HTTP route is one line that hands the request to the client. + +For the wire-level requirements your endpoint MUST satisfy regardless of how it's wired (covered components, `content-digest` enforcement, dedup discipline), see [L3 — Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#signature-verification). + +## Ingest reporting + +Reporting is read-only and follows the same call/response shape as everything else. Pull delivery for the buys you own and iterate on a windowed cadence: + +```typescript +const delivery = await client.getMediaBuyDelivery({ + media_buy_ids: ['mb_123', 'mb_456'], + window: { start: '2026-05-01T00:00:00Z', end: '2026-05-02T00:00:00Z' }, +}); +``` + +For sellers that support performance webhooks, you'll receive deltas via the same webhook receiver shown above; otherwise poll on whatever cadence your reporting needs. Caller L4 — optimization, pacing alerts, attribution joins, dashboards — is your application code on top of the typed `delivery` object. + +## What you didn't have to write + +Caller-side L0–L3 is weeks of handler glue because the SDK already shipped: + +- **L0** — typed request builders, response parsers, schema validation against the bundled schemas. +- **L1** — outbound RFC 9421 signing (per-call), inbound webhook verification, key rotation. +- **L2** — agent registry lookup, agent-card publication, credential composition. +- **L3** — async-task polling, webhook receiver, idempotency-key generation helpers, error-recovery classification. + +The [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) decomposes each layer; the [server-vs-client comparison table](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#server-vs-client-at-each-layer) is the side-by-side view of the cost asymmetry. + +## What's next + +- **[Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent)** — the canonical wire-contract reference. Read once before going to production. +- **[Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas)** — schema bundle, type generation, version pinning. +- **[Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)** — push notifications, signing, retry, reliability patterns. +- **[Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling)** — error categories, codes, recovery classification. +- **[Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — storyboards also exist for caller-side wire conformance; run them once your calls are working. + +Per-protocol task references: + +- [Media buy task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/index) +- [Creative task reference](/dist/docs/3.2.0-beta.4/creative/task-reference) +- [Signals task reference](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) +- [Brand protocol tasks](/dist/docs/3.2.0-beta.4/brand-protocol) diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent.mdx new file mode 100644 index 0000000000..0c6a7acf1c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent.mdx @@ -0,0 +1,218 @@ +--- +title: Build an Agent +sidebarTitle: Build an Agent +description: "Use AdCP SDK skill files to generate storyboard-compliant agents with a coding agent in minutes." +"og:title": "AdCP — Build an Agent" +--- + +The fastest way to build an AdCP agent is to point a coding agent (Claude Code, Codex, Cursor, Windsurf) at a skill file from an AdCP SDK. Each skill produces a protocol-compliant, storyboard-validated agent in 2–8 minutes. + + +**Publisher without an engineering team?** Protocol compliance is one piece of going live — product management, activation into your ad server, and hosting are separate lifts. See **[Operating an Agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent)** for the three paths: partner with a managed platform, self-host a prebuilt agent, or build your own. + + +## Install the SDK + +Each SDK handles protocol compliance — schema validation, error formats, version negotiation, and response builders — so you write business logic, not protocol plumbing. + + + +```bash +npm install @adcp/sdk +``` + +The JS/TS SDK provides typed tool registration, response builders, and a built-in storyboard runner. Most agents in production use this SDK. + +- [NPM Package](https://www.npmjs.com/package/@adcp/sdk) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client) + + +```bash +pip install adcp +``` + +The Python SDK provides the same capabilities — subclass `ADCPHandler`, implement tools, and use response builders for every return value: + +```python +from adcp.server import ADCPHandler, serve +from adcp.server.responses import capabilities_response + +class MySeller(ADCPHandler): + async def get_adcp_capabilities(self, params, context=None): + return capabilities_response(["media_buy"]) + + # ... implement tools, use response builders for every return + +serve(MySeller(), name="my-seller") +``` + +Response builders (`adcp.server.responses`) handle schema compliance so you don't construct raw JSON. Use them for every tool return. + +- [PyPI Package](https://pypi.org/project/adcp/) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client-python) + + +```bash +go get github.com/adcontextprotocol/adcp-go/adcp +``` + +The Go SDK provides typed tool registration, response builders, and a compliance test controller. Types are generated from canonical AdCP schemas. + +| Component | Import | +|-----------|--------| +| Tool registration | `adcp.AddTool(server, name, desc, handler)` | +| HTTP server | `adcp.Serve(createAgent)` | +| Response builders | `adcp.ProductsResponse(data)`, `adcp.MediaBuyResponse(data)` | +| Test controller | `adcp.RegisterTestController(server, store)` | + +See the [Go SDK README](https://github.com/adcontextprotocol/adcp-go) for complete examples. + +Response builders (`adcp.ProductsResponse()`, `adcp.MediaBuyResponse()`, etc.) handle schema compliance so you return typed structs, not raw JSON. + +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-go) + + + + +**Use the SDK for your language.** All three SDKs — JS/TS, Python, and Go — handle schema validation, error formats, and protocol negotiation. You do not need to use a different language for protocol compliance. + + +## Choose a skill + +Each SDK ships skills that walk a coding agent through building a specific agent type. Common skills across SDKs: + +- `build-seller-agent` — publisher, SSP, or media network selling inventory +- `build-signals-agent` — CDP or data provider serving audience segments +- `build-creative-agent` — ad server or CMP rendering creatives +- `build-generative-seller-agent` — AI ad network generating ads from briefs +- `build-retail-media-agent` — retail media network with catalog-driven creative + +For example, the JS/TS seller skill lives at [`adcp-client/skills/build-seller-agent/SKILL.md`](https://github.com/adcontextprotocol/adcp-client/tree/main/skills/build-seller-agent). Skill coverage and naming vary per language since each SDK includes implementation guidance specific to its stack. Browse the directory for your language: + +- **JS/TS** — [adcp-client/skills](https://github.com/adcontextprotocol/adcp-client/tree/main/skills) +- **Python** — [adcp-client-python/skills](https://github.com/adcontextprotocol/adcp-client-python/tree/main/skills) +- **Go** — [adcp-go/skills](https://github.com/adcontextprotocol/adcp-go/tree/main/skills) + +### Which domain and specialisms do you claim? + +Each agent declares its `supported_protocols` (domains) and `specialisms` on `get_adcp_capabilities`. Each skill's storyboard verifies the domain baseline — to also claim a specialism, your agent must pass that specialism's storyboard. Skills-to-specialism mapping: + +| Skill | Typical `supported_protocols` | Typical `specialisms` (pick one or combine) | +|---|---|---| +| `build-seller-agent` | `["media_buy", "creative"]` | `sales-guaranteed`, `sales-non-guaranteed` | +| `build-generative-seller-agent` | `["media_buy", "creative"]` | `creative-generative` + `sales-non-guaranteed` | +| `build-retail-media-agent` | `["media_buy", "creative"]` | `sales-catalog-driven` | +| `build-signals-agent` | `["signals"]` | `signal-owned`, `signal-marketplace` | +| `build-creative-agent` | `["creative"]` | `creative-ad-server`, `creative-template` | + +**Picking a sales specialism:** See [Choosing a sales specialism](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#choosing-a-sales-specialism) in the Compliance Catalog for the full decision tree. Quick reference: +- **`sales-guaranteed`** — IO approval, fixed pricing. Set `media_buy.supports_proposals: true` if you support RFP/proposal flows; `false` (or omit) for direct-buy only. +- **`sales-non-guaranteed`** — auction / PMP. +- **`sales-broadcast-tv`**, **`sales-catalog-driven`**, **`sales-social`** — channel-specific; see the decision tree. + +You can claim more than one. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy and per-specialism storyboards. + +Building a **brand rights** agent (licensing talent, music, stock media)? There's no skill today — see the [Brand Protocol docs](/dist/docs/3.2.0-beta.4/brand-protocol) and claim `brand-rights` under the `brand` domain. + +See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for every domain and specialism with its storyboard and status (stable, preview, deprecated). + +Storyboard passing earns the **[AAO Verified (Spec)](/dist/docs/3.2.0-beta.4/building/verification/aao-verified)** qualifier — validated against seeded test data on a test-mode endpoint. Once your agent is running against real production inventory, consider enrolling in the **(Live)** qualifier, which adds continuous observability of real delivery on a dedicated compliance account. An agent can hold (Spec), (Live), or both; enterprise buyers that treat AdCP as production infrastructure filter on (Live). + +## Build the agent + +Point your coding agent at the skill file for your agent type. In Claude Code: + + + +``` +Fetch https://raw.githubusercontent.com/adcontextprotocol/adcp-client/main/skills/build-seller-agent/SKILL.md, then build a seller agent for a premium sports news publisher with guaranteed CTV and OLV inventory. +``` + + +``` +Fetch https://raw.githubusercontent.com/adcontextprotocol/adcp-client-python/main/skills/build-seller-agent/SKILL.md, then build a seller agent for a premium sports news publisher with guaranteed CTV and OLV inventory. +``` + +Point at the `adcp-client-python` skill for your agent type. If the exact skill isn't there yet, browse [adcp-client-python/skills](https://github.com/adcontextprotocol/adcp-client-python/tree/main/skills) for the closest match. + + +``` +Fetch https://raw.githubusercontent.com/adcontextprotocol/adcp-go/main/skills/build-seller-agent/SKILL.md, then build a seller agent for a premium sports publisher. +``` + + + +In Cursor or Windsurf, download the skill file and include it as context with your prompt. Each skill walks the coding agent through: + +1. Business model decisions (what you sell, how you price, approval workflow) +2. Tool registration with correct schemas +3. Response shapes that pass storyboard validation +4. Error handling and edge cases + +## Validate with storyboards + + +The storyboard runner requires Node.js, regardless of what language your agent is written in. + + +Once the agent is running, validate it against the matching storyboard: + +```bash +# JS/TS agent +npx tsx agent.ts & +npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp media_buy_seller --json + +# Python agent +python agent.py & +npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp media_buy_seller --json + +# Go agent +go run main.go & +npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp media_buy_seller --json +``` + +Storyboards exercise every required tool call and validate response shapes. The storyboard runner uses sandbox mode by default — your agent receives `sandbox: true` on all account references and should return simulated data without real platform calls. A passing run means your agent is protocol-compliant. + +``` +media_buy_seller (9 steps) + ✓ get_adcp_capabilities + ✓ sync_accounts + ✓ get_products + ✓ create_media_buy + ✓ canonical creative capability declarations + ✓ sync_creatives + ✓ list_creatives + ✓ get_media_buy_delivery + ✓ provide_performance_feedback + 9/9 passed +``` + + +**Protocol-compliant ≠ production-ready.** A passing run means your agent speaks AdCP correctly. Going live requires business infrastructure behind each tool call — products and pricing, activation into your ad server, order management, hosting, and discovery registration via `adagents.json`. See **[Operating an Agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent)** for the full list and whether to partner, self-host, or build. + + + +Each skill includes variant storyboards for different business models — non-guaranteed, guaranteed with approval, proposal mode, and more. Run `npx @adcp/sdk@latest storyboard list` to see all available storyboards. + + +See **[Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** for the full testing workflow — debugging failing steps, running compliance checks, and validating interactively through Addie. If your agent **wraps an upstream platform** (DSP, SSP, retail data, creative server, signal marketplace), see **[Validate adapter agents with mock upstream fixtures](/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures)** for the pre-staging gate that surfaces façade bugs storyboards alone don't catch. + +## Additional resources + +The JS/TS SDK includes documentation designed for both humans and coding agents: + +| Resource | JS/TS location | Purpose | +|----------|----------------|---------| +| Protocol spec | `node_modules/@adcp/sdk/docs/llms.txt` | Full protocol in one file — tools, types, error codes, examples | +| Server guide | `node_modules/@adcp/sdk/docs/guides/BUILD-AN-AGENT.md` | Server-side implementation patterns | + +Python and Go equivalents are in each SDK's GitHub repository. See [adcp-client-python](https://github.com/adcontextprotocol/adcp-client-python) and [adcp-go](https://github.com/adcontextprotocol/adcp-go). + +## What's next + +- **[Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — Storyboards, compliance checks, and the build-validate-fix loop +- **[Operating an Agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent)** — What sits behind the protocol layer, and whether to partner, self-host, or build +- **[Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk)** — Schema access, CLI tools, and SDK package exports +- **[MCP integration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide)** — Transport, sessions, and auth details +- **[Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk.mdx new file mode 100644 index 0000000000..1742ccf7fa --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk.mdx @@ -0,0 +1,183 @@ +--- +title: Choose your SDK +sidebarTitle: Choose your SDK +description: "Pick the AdCP SDK for your language. Coverage matrix, install commands, and what each SDK ships at L0–L3 so you can focus on L4 business logic." +"og:title": "AdCP — Choose your SDK" +--- + +The AdCP SDKs absorb L0–L3 (wire, signing, auth, protocol semantics) so you write L4 business logic. Pick the SDK in the language you're already in — all three SDKs target the same wire conformance bar. + +For the layered model behind this — what each layer contains and what an SDK at each layer should provide — see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack). + +## Coverage matrix + +What "shipped" means at each layer is the [L0–L3 checklist](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#what-an-sdk-at-each-layer-should-provide). + +*Last updated: 2026-08-20.* + +| SDK | Current package | 3.2 beta support | L0 | L1 | L2 | L3 | +|---|---|---|:-:|:-:|:-:|:-:| +| **`@adcp/sdk`** (TypeScript) | `14.0.0-beta.4` | Exact `3.2.0-beta.3` support | ✅ | ✅ | ✅ | ✅ | +| **`adcp`** (Python) | `7.0.2` | Pending exact 3.2 support | ✅ | ⚠️ | ⚠️ | ⚠️ | +| **`adcp/v3`** (Go) | `v3.0.0` | Pending exact 3.2 support | ⚠️ | ⚠️ | ⚠️ | ⚠️ | + +Legend: ✅ shipped · ⚠️ partial / role-dependent · ❌ not yet covered. The L0–L3 columns describe the current package, not a 3.2 support claim. + + +**3.2 packages are prereleases.** The TypeScript beta supports the exact beta.3 +protocol checkpoint; it does not imply compatibility with a future beta.4. +Python and Go have not published exact 3.2 support statements yet. See the +[3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). + + +The TypeScript SDK currently provides the broadest L0–L3 surface. Python is a +first-class SDK with complete schema/type coverage and role-dependent higher +layers. The Go `adcp/v3` module provides typed AdCP 3.x surfaces, signing, and +transport/server building blocks with role-dependent coverage. Check the +release links below for changes after this matrix date. + +For the status of every published protocol version, see [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions). Migration and archived-version guidance lives under [Release notes & migration](/dist/docs/3.2.0-beta.4/reference/migration/index). + +**TypeScript and Python are the first-class supported languages**, with the +layer coverage shown in the matrix above. **Go** is moving in the same +direction. **Other languages** are not on the official roadmap; +community-maintained ports are welcome — see the [Builders Working Group](/dist/docs/3.2.0-beta.4/community/working-group) +and the [Slack community](/dist/docs/3.2.0-beta.4/community/joining-slack). + +## JavaScript / TypeScript + +[![npm version](https://img.shields.io/npm/v/@adcp/sdk)](https://www.npmjs.com/package/@adcp/sdk) + +```bash +npm install @adcp/sdk@14.0.0-beta.4 +``` + +```javascript +import { createSingleAgentClient } from '@adcp/sdk'; + +const client = createSingleAgentClient({ + id: 'sales', + name: 'Sales agent', + agent_uri: 'https://sales.example.com/mcp', + protocol: 'mcp', +}); + +const products = await client.listProducts({ + adcp_version: '3.2-beta.3', + account: { account_id: 'account_123' }, + criteria: { + offer_filters: { channels: ['ctv'] }, + }, +}); +``` + +**Resources:** +- [NPM Package](https://www.npmjs.com/package/@adcp/sdk) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client) + +**Package exports:** +- `@adcp/sdk` — main entry: caller (`createSingleAgentClient`, `ADCPMultiAgentClient`) and shared types +- `@adcp/sdk/server` — agent-side server primitives (`createAdcpServerFromPlatform`, `createAdcpServer`, decisioning-platform interfaces) +- `@adcp/sdk/signing` — RFC 9421 signing primitives +- `@adcp/sdk/signing/server` — webhook + request verifiers (`createWebhookVerifier`, `verifyRequestSignature`, `createExpressVerifier`) +- `@adcp/sdk/signing/client` — outbound signing (`signRequest`, `signWebhook`, `createSigningFetch`) +- `@adcp/sdk/testing` — buyer-side storyboard runner (`runStoryboard`, `comply`, `testAgent`) and seller-side controller scaffold (`createComplyController` — see [Get Test-Ready](/dist/docs/3.2.0-beta.4/building/verification/get-test-ready)) +- `@adcp/sdk/conformance` — assertion + storyboard helpers for conformance harnesses +- `@adcp/sdk/schemas` — bundled AdCP JSON Schemas +- `@adcp/sdk/types` — TypeScript type definitions + + + +SDK 14 keeps the established 3.0/3.1 tools and compatibility adapters for +mixed-version deployments. It also retains `@adcp/sdk/server/legacy/v5` and +`@adcp/sdk/types/v2-5` for applications actively migrating older code. New 3.2 +integrations should use the main server and per-tool type exports. + + + +## Python + +[![PyPI version](https://img.shields.io/pypi/v/adcp)](https://pypi.org/project/adcp/) + +```bash +pip install adcp +``` + +```python +from adcp import ADCPClient, AgentConfig, Protocol, GetProductsRequest + +client = ADCPClient(AgentConfig( + id='sales', + agent_uri='https://sales.example.com/mcp', + protocol=Protocol.MCP, +)) + +result = await client.get_products( + GetProductsRequest( + idempotency_key='550e8400-e29b-41d4-a716-446655442045', + buying_mode='brief', + brief='Video campaign for pet owners', + ), +) +``` + +**Resources:** +- [PyPI Package](https://pypi.org/project/adcp/) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client-python) + +## Go + +```bash +go get github.com/adcontextprotocol/adcp-go/adcp/v3@v3.0.0 +``` + +The Go SDK's `adcp/v3` module provides typed tool registration, response +builders, signing, and a compliance test controller. Types are generated from +canonical AdCP schemas. The `/v3` suffix is required by Go semantic import +versioning. + +| Component | Import | +|-----------|--------| +| Tool registration | `adcp.AddTool(server, name, desc, handler)` | +| HTTP server | `adcp.Serve(createAgent)` | +| Response builders | `adcp.ProductsResponse(data)`, `adcp.MediaBuyResponse(data)`, etc. | +| Test controller | `adcp.RegisterTestController(server, store)` | +| Skills | [github.com/adcontextprotocol/adcp-go/skills](https://github.com/adcontextprotocol/adcp-go/tree/main/skills) | + +See the [Go SDK README](https://github.com/adcontextprotocol/adcp-go) for the full API reference. + +**Resources:** +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-go) + +## CLI tools + +The JavaScript and Python SDKs include command-line tools for testing and development. + +Both SDKs share the same positional shape: `adcp [tool] [payload]`. The first positional is an alias, a built-in (`test-mcp`, `test-a2a`), or a URL — protocol is auto-detected. Save aliases with `--save-auth` to avoid retyping. + +### JavaScript CLI + +```bash +npx @adcp/sdk@14.0.0-beta.4 --help +npx @adcp/sdk@14.0.0-beta.4 --save-auth my-agent https://sales.example.com/mcp +npx @adcp/sdk@14.0.0-beta.4 my-agent list_products '{"adcp_version":"3.2-beta.3","account":{"account_id":"account_123"}}' +# or against the built-in public test agent: +npx @adcp/sdk@14.0.0-beta.4 test-mcp list_products '{"adcp_version":"3.2-beta.3"}' +``` + +The CLI also drives storyboards (`adcp storyboard run`), conformance grading (`adcp grade`), and registry diagnostics. See `--help` for the full surface. + +### Python CLI + +```bash +uvx adcp --help +uvx adcp --save-auth my-agent https://sales.example.com/mcp +uvx adcp my-agent get_products '{"idempotency_key":"550e8400-e29b-41d4-a716-446655442064","buying_mode":"brief","brief":"CTV campaign"}' +``` + +## What's next + +- **[Build an agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent)** — server-side L4 path. Skill files + coding agent. +- **[Build a caller](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller)** — client-side L4 path. Install, call, handle responses, ingest reporting. +- **[Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas)** — schema bundle, type generation, version pinning. +- **[Migrate from hand-rolled](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled)** — already running an AdCP agent built before the SDKs covered much? Swap one layer at a time. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L4/index.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L4/index.mdx new file mode 100644 index 0000000000..d1f39d9813 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L4/index.mdx @@ -0,0 +1,17 @@ +--- +title: L4 — Business logic +sidebarTitle: L4 — Business logic +description: "Business-logic layer of the AdCP stack. What an SDK leaves to you: inventory and pricing on the agent side, planning and buying on the caller side. The default starting layer for ~95% of adopters." +"og:title": "AdCP — L4 (Business logic)" +--- + +L4 is what makes your agent or caller yours. An AdCP SDK ships L0–L3 (wire, signing, auth, protocol semantics) and leaves L4 to you. For most adopters this is the right starting layer — your team's value-add lives here, not in re-implementing the protocol underneath. + +See the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) for what each layer below contains and what an SDK at each layer must provide. + +## Pages in this layer + +- **[Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk)** — language coverage matrix, install commands, package exports, CLI tools. Start here if you haven't picked an SDK. +- **[Build an agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent)** — server side. Point a coding agent at a skill file; get a storyboard-compliant AdCP agent. +- **[Build a caller](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller)** — client side. Install the SDK, discover the agent, make calls, handle responses, ingest reporting. +- **[Migrate from hand-rolled](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled)** — already running an AdCP agent built before the SDKs were mature? Swap one layer at a time. diff --git a/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled.mdx b/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled.mdx new file mode 100644 index 0000000000..3337201037 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled.mdx @@ -0,0 +1,224 @@ +--- +title: Migrate from a hand-rolled agent +sidebarTitle: Migrate from hand-rolled +description: "Incremental migration path for adopters with a working AdCP agent in production. Inventory step, lowest-risk-first swap order, conflict modes (idempotency, account-mode, webhook signing, state-machine drift), per-step rollback playbook, intermediate states that pass conformance, and when not to migrate." +"og:title": "AdCP — Migrate from a hand-rolled agent" +--- + +This guide is for adopters with a **working AdCP agent in production** who want to move to an official SDK without a flag-day rewrite. Your agent serves real traffic; you have engineers who built the current stack and will defend it; you can't afford a multi-week freeze. The path is incremental — swap one layer at a time, ship after each step, re-certify as you go. + +If you're greenfield, you're in the wrong doc — see [Build an Agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent). If you're still deciding whether to migrate at all, see the [hand-rolled re-evaluation check](/dist/docs/3.2.0-beta.4/building#two-checks-before-you-start) on the building overview. + +## 0. Inventory what you own today + +Before swapping anything, write down what your hand-rolled stack provides at each layer of [the AdCP stack](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack). Use the L0–L3 checklists in that doc as the rubric. Mark each row: *shipped* / *partial* / *not yet*. + +This determines order of operations. The lowest-risk swap is usually the layer where you have the **least** coverage today, because there's the least existing behavior to reconcile. + +## 1. Get to spec compliance first, before changing any code + +Single most important step: + +1. Stand up a **mock-mode account** in your agent. (If you don't have the live/sandbox/mock distinction yet, see [Account-mode mismatch](#account-mode-mismatch) below — add the flag at your boundary first.) +2. Route mock-mode traffic to the reference mock-server. +3. Run the AdCP storyboards against your agent (see [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance) and [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)). +4. Read the pass/fail report. + +The failure list is your migration backlog, ordered. It converts "I think the SDK adds value" into "here are the storyboards we fail and which L3 component each one points at." Without this step you're buying an SDK based on a sales pitch instead of measured gap. + +You may discover you're more conformant than you thought (in which case the migration is smaller than you expected) or less (in which case the case for adopting the SDK strengthens). Either outcome is useful. + +## 2. Order of operations (lowest risk first) + +Recommended swap order: + +1. **Conformance test surface** ([`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)). Pure additive — mock-mode traffic now goes through the SDK; live traffic untouched. Earns spec-compliance certification on the spot. +2. **Error code catalog**. Replace your error-envelope construction with the SDK's error builders. Recovery classifications and code precedence (e.g., `NOT_CANCELLABLE` over `INVALID_STATE`) come for free. See [Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). +3. **Idempotency cache**. Riskiest swap — see [Two idempotency caches in series](#two-idempotency-caches-in-series). Spec contract: [Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). +4. **Async-task store + dispatcher**. Adopt the SDK's `task_id` + terminal-artifact contract. Often touches your worker queue. See [Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). +5. **State machines**, one resource at a time. MediaBuy first ([lifecycle reference](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle)) if it's where you spend the most maintenance time. Re-run lifecycle storyboards after each. +6. **Webhook emission** (signed, retried, idempotent). Independent of 1–5; can be parallelized. See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). +7. **RFC 9421 signing + verification**. Independent of everything above; can be parallelized. See [Security implementation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). +8. **Auth / account store**. Last. Your hand-rolled L2 probably encodes business decisions that don't move easily. + +You can stop at any step. Adopting at L3 (steps 1–6) without L2 is a perfectly valid endpoint — your auth layer keeps doing what it does, the SDK takes over protocol semantics. See [What you can leave hand-rolled](#5-what-you-can-leave-hand-rolled). + +## 3. Conflict modes to watch for + +These are the "two stacks fighting each other" failure modes that make incremental migration painful if you don't see them coming. + +### Two idempotency caches in series + +Your existing cache fields requests at the perimeter; the SDK's cache fields requests at the protocol boundary. Symptoms: same `idempotency_key` returns different envelopes depending on which cache hit first; cross-payload reuse is detected by one and not the other. + +**Resolution.** Pick one, retire the other. Usually retire yours — the SDK's enforces the *no-payload-echo* invariant on `IDEMPOTENCY_CONFLICT` (stolen-key read-oracle threat) and the cross-payload conflict detection that the spec mandates. If you need to keep your storage backend (Redis, Postgres), point the SDK's cache contract at it as a custom backend instead of forking the SDK. + +### Account-mode mismatch + +The SDK distinguishes `live` / `sandbox` / `mock` accounts (see [Sandbox](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox)). If your hand-rolled stack lacks the distinction, mock-mode storyboards may dispatch to live handlers. Symptoms: storyboards mutate production state; conformance certification refuses to dispatch. + +**Resolution.** Add the account-mode flag at your boundary before adopting the SDK's conformance controller. The `comply_test_controller` refuses to run against any account that isn't sandbox or mock — that refusal is a feature, not a bug. + +### Webhook signature ownership + +If both stacks try to sign outbound webhooks, the receiver sees two `Signature` headers (or one wins and the other is silently overwritten by the proxy). Either way, signatures don't verify. + +**Resolution.** Pick one signer at the boundary; usually the SDK's, since it tracks key rotation against the public key registry and handles the RFC 9421 canonicalization correctly. Keep your KMS-backed key material; configure the SDK's signing-provider abstraction to use it. + +### State machine drift + +Your hand-rolled state machine probably has edges the SDK rejects (e.g., direct `pending_creatives → completed` skipping `active`, or `active → canceled` without distinguishing the `NOT_CANCELLABLE` vs `INVALID_STATE` precedence). Symptoms: lifecycle storyboards fail with `INVALID_STATE` where you expected to succeed. + +**Resolution.** Run the lifecycle storyboards against your agent *before* swapping the state machine. Reconcile your edge set to the spec — fix obvious bugs, file spec issues for ambiguities. Then swap the SDK's state machine in; it'll enforce what you just hand-converged on. + +### Webhook delivery transport + +If your queue/worker stack delivers webhooks today, the SDK's emitter would double-deliver if you wire it on without retiring yours. Symptoms: receivers see duplicate idempotency keys with the same payload at slightly different times. + +**Resolution.** The SDK builds the envelope; how you ship it is yours. Configure the SDK to hand off to your existing transport instead of running its built-in HTTP delivery — that's the seam. + +### Schema validation collisions + +If you validate inbound payloads against your own schema bundle, and the SDK validates again at its boundary, you get either duplicate work (cheap) or contradictory verdicts (a real bug — your bundle drifted from the published schemas). + +**Resolution.** Retire your local validator after the SDK is in. While both run, treat any discrepancy as your bundle being stale, not the SDK being wrong. + +## 4. Intermediate states that pass conformance + +After each step, you can re-run mock-mode storyboards and re-certify. You don't need to finish the migration to claim conformance — you only need to pass the storyboards at whatever cut-line the SDK's conformance suite enforces. + +| After step | What you have | Conformance status | +|---|---|---| +| 1 | Conformance controller wired; agent unchanged | **Spec compliance** (mock-mode storyboards run against your unchanged L3) | +| 2 | + SDK error envelopes | Same; better recovery semantics | +| 3 | + SDK idempotency | Same; tighter security on cross-payload reuse | +| 4 | + SDK async-task contract | Same; uniform task lifecycle | +| 5 | + SDK state machines | Same; transition validation no longer your problem | +| 6 | + SDK webhook envelope | Same; signed, retried, dedup-keyed | +| 7 | + SDK signing | **Live compliance** (when that storyboard set ships) | +| 8 | + SDK account store | Full L4-on-SDK | + +You ship after each step. Production traffic stays up. + +### Rollback per step + +Every step in the swap order should be reversible inside ~5 minutes. The general pattern: each swap is a **feature-flagged switch between your hand-rolled component and the SDK's**, not a deletion. You ship the swap behind a per-account flag, observe, then flip the default. Rollback is the same flag in the other direction. + +What to plan for, swap by swap: + +| Step | Revert mechanism | What state may have leaked | First thing to verify on rollback | +|---|---|---|---| +| 1. Conformance controller | Disable the SDK route on mock-mode accounts | None — mock-mode is sandbox-only by design | Mock storyboards still pass against your hand-rolled L3 | +| 2. Error envelopes | Flip back to your error builder | Outbound envelopes from the swap window may carry SDK-shape error codes; downstream consumers that key off your old codes may have logged them | Your error-monitoring dashboard is reading the right envelope shape again | +| 3. Idempotency cache | Flip back to your cache | **Both caches saw traffic during the swap window.** Same `idempotency_key` may now exist in both stores with different envelopes. After rollback, your cache is authoritative; flush the SDK's cache on revert | No `IDEMPOTENCY_CONFLICT` storms from the dual-cache window | +| 4. Async-task contract | Flip back to your task store | Outstanding tasks that started under the SDK's contract may have a different terminal-artifact shape than your worker expects | Drain or abort tasks created during the swap window before the revert lands | +| 5. State machines | Flip back to your state machine | The SDK may have rejected transitions your machine would have accepted (or vice versa). Affected resources are in a state your code may not know how to advance | Run a one-shot reconciliation query: "any resources in a state that's legal under both machines? Any in a state that's only legal under one?" | +| 6. Webhook envelope | Flip back to your emitter | Receivers got SDK-shape webhooks during the swap window. They may have already acked. Don't re-emit on rollback | Your dedup table accepts both old and new `idempotency_key` shapes (transitional) | +| 7. RFC 9421 signing | Flip back to your signer | Receivers got SDK-signed webhooks/responses during the window. Their key registry must still resolve your old `keyid` | Your old `keyid` is still published in your JWKS | +| 8. Account store | Flip back to your store | Account resolution decisions made under the SDK's store may have routed traffic to different tenants than your store would have | Run a reconciliation on accounts that were resolved during the swap window before fully reverting | + +### The 2 a.m. production failure + +If swap N fails in production at 2 a.m., the on-call recipe: + +1. **Flip the per-account flag back** to your hand-rolled component for the affected accounts (or globally if you can't isolate the blast radius). This is the only step required to stop the bleeding. +2. **Confirm the leakage row** above for that step. Most steps leave residual state somewhere — note what it is so the morning debug doesn't start cold. +3. **Don't rerun the conformance suite mid-incident.** It runs against mock-mode; production failures are a different signal. +4. **File the incident against the swap step**, not against the SDK in general. The migration guide's swap-order is the unit of investigation; the SDK's coverage matrix is downstream of that. + +**Don't plan for irreversible swaps.** If a step doesn't fit the flag-and-flip pattern (e.g., a destructive schema migration), do it as a separate, named project — not as part of the swap order. + +## 5. What you can leave hand-rolled + +The SDK is opinionated where the spec is opinionated, and pluggable where it isn't. You don't have to give up your existing infra: + +- **Signing provider.** Keep your KMS integration. The SDK accepts a custom signer. +- **Account store.** Keep your multi-tenant routing. The SDK's account-store interface is the seam. +- **Idempotency backend.** Keep your Redis / Postgres. The SDK's cache contract is pluggable. +- **Webhook delivery transport.** Keep your queue. The SDK builds the envelope; how you ship it is yours. +- **Schema validation library.** Keep your validator if you want; the SDK uses its own at its boundary, not yours. + +If your hand-rolled stack has good answers to these, swap them in as **configuration**, not as forks. + +## 6. Versioning during the migration + +Two version axes you'll be juggling: + +- **Spec version of your buyers.** A migration is a great moment to add per-call `adcpVersion` pinning so you stop forking handlers by buyer-version. See [Version Adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation). +- **SDK version.** Don't migrate to a legacy import path as a final state — migrate *through* it. The legacy subpath exists so you can adopt one specialism at a time on the new entry point while the rest stays on the old one. Greenfield code in the same project uses the new framework directly. + +### Worked example: two buyers, mid-swap + +You're on step 3 (idempotency), buyer A is temporarily on end-of-life AdCP 2.5 while migrating, and buyer B is on AdCP 3.0. You've adopted the SDK's controller, error envelopes, and idempotency cache for the accounts you've cut over. Buyer A is mid-flight to the SDK; buyer B is greenfield on the SDK. This is a migration bridge, not a supported production endpoint state. + +Your inbound side: identify each peer's spec version up front (from the agent registry, the agent card, or the `adcp_version` field if present), pin `adcpVersion` on the agent / per call, and let the SDK adapt the wire shape. Example with `@adcp/sdk`: + +```ts +import { ADCPMultiAgentClient } from '@adcp/sdk'; + +const buyerA = new ADCPMultiAgentClient([{ + id: 'buyer-a', + agent_uri: 'https://buyer-a.example.com/mcp/', + protocol: 'mcp', + auth_token: process.env.BUYER_A_TOKEN, + adcpVersion: 'v2.5', // ← per-agent pin, no fork in handlers +}]); + +const buyerB = new ADCPMultiAgentClient([{ + id: 'buyer-b', + agent_uri: 'https://buyer-b.example.com/a2a', + protocol: 'a2a', + auth_token: process.env.BUYER_B_TOKEN, + adcpVersion: '3.0', // ← canonical / current +}]); +``` + +Your outbound (server) side, declaring what *you* accept: + +```ts +import { createAdcpServer } from '@adcp/sdk/server'; + +createAdcpServer({ + capabilities: { + major_versions: [3], + supported_versions: ['3.0'], + }, + // …handlers, all on the canonical 3.0 shape; + // 2.5 callers are translated by client-side adapters before they reach you. +}); +``` + +What this looks like for one call from each buyer, mid-step-3: + +| | Buyer A (2.5 wire) | Buyer B (3.0 wire) | +|---|---|---| +| **Inbound shape** | 2.5 `create_media_buy` | 3.0 `create_media_buy` | +| **Adapter does** | Translates 2.5 → 3.0 shape | Pass-through | +| **Your handler sees** | 3.0 typed object | 3.0 typed object (same) | +| **Idempotency cache** | SDK's (you're on step 3) | SDK's | +| **Error envelope** | SDK's, translated back to 2.5 on outbound | SDK's | +| **Outbound shape** | 2.5 (translated by adapter on the way out) | 3.0 | + +One handler codebase. Two wire versions. Both buyers see the envelope shape they expect. Adopting `adcpVersion` pinning at step 3 is cheap — most of the version work is in the adapter modules, which the SDK already ships. + +If you fall back (rollback step 3 to your hand-rolled cache), buyer A still goes through the SDK's translation adapters — the version machinery and the idempotency machinery are independent. You don't re-fork your handler code on rollback. + +## 7. When to *not* migrate + +If your agent serves a frozen wire surface for a small set of named buyers and your engineers spend ~zero time on protocol maintenance, the migration ROI is low. Reasonable holds: + +- You serve a frozen, supported 3.x wire surface and have a dated plan to adopt the current release before that surface reaches end of life. +- Your conformance gap (from step 1) is small enough to fix in place without adopting the SDK. +- You have a hard regulatory or operational reason for owning every layer end-to-end. + +In those cases, do step 1 anyway — route mock-mode through the reference mock-server for spec compliance certification — and revisit the migration question at AdCP 4.0 or when your buyer mix moves. + +The migration is for adopters whose **maintenance load is real and growing**. The cost claim ([~3–4 person-months for L0–L3 from scratch](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#why-sdks-matter-more-in-adcp-than-in-eg-http)) is what you're *buying back* by adopting incrementally — but only if that maintenance load actually exists. + +## See also + +- [The AdCP stack](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) — layered architecture reference +- [Where to start](/dist/docs/3.2.0-beta.4/building) — decision page +- [Version Adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation) — three-mechanism reference +- [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance) — how the storyboard suite grades your agent +- [Build an Agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) — greenfield path; useful as a reference for what the L4-on-SDK end state looks like diff --git a/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb.mdx b/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb.mdx new file mode 100644 index 0000000000..bbab1349f4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb.mdx @@ -0,0 +1,122 @@ +--- +title: AdCP and OpenRTB +sidebarTitle: AdCP vs OpenRTB +description: "AdCP vs OpenRTB: how they differ and work together. AdCP handles agent workflows, OpenRTB handles impression-time decisions, and the Trusted Match Protocol connects the two for use cases like cross-publisher frequency capping." +"og:title": "AdCP — AdCP and OpenRTB" +--- + +AdCP and OpenRTB are complementary standards that operate at different layers of the advertising stack. They are not competing — a platform can (and often will) implement both. + +One of the most important connection points is **cross-publisher frequency capping**. AdCP enables it the same way OpenRTB enables programmatic buying: by exposing each impression to a buyer-controlled real-time decision layer before the ad server serves. In AdCP, that integration point is the **[Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match)**. + +## What each standard does + +| | OpenRTB | AdCP | +|---|---------|------| +| **Layer** | Impression-level transactions | Agent-level workflows | +| **Core operation** | Real-time bid request/response | Task-based campaign management | +| **Participants** | DSPs and SSPs | AI agents and advertising platforms | +| **Timing** | Real-time (milliseconds) | Asynchronous (seconds to days) | +| **Scope** | Single impression auction | End-to-end campaign lifecycle | +| **Maintained by** | IAB Tech Lab | AgenticAdvertising.org | +| **Maturity** | Production (v2.6) | Production (v3.0) | +| **Transport** | HTTP POST | MCP (tool calling) or A2A (agent-to-agent) | + +## Where they overlap + +Both standards touch media buying, but at different granularities: + +- **OpenRTB** handles individual impression decisions: "Should I bid on this impression, and how much?" +- **AdCP** handles campaign-level decisions: "What inventory is available? Execute this campaign with this budget and targeting." + +A single AdCP `create_media_buy` task might result in thousands of OpenRTB bid requests over the campaign's lifetime. + +## Where they're different + +**Scope.** OpenRTB is focused on the auction — bid requests, bid responses, win notifications, and billing events. AdCP covers the full campaign lifecycle: product discovery, creative management, audience activation, campaign execution, and delivery reporting. AdCP also works independently of real-time bidding: a direct-sold publisher, sponsored content business, broadcast seller, or commerce media network can implement AdCP without any OpenRTB integration. + +**Communication model.** OpenRTB uses synchronous HTTP: a bid request arrives, and the bidder must respond within a few hundred milliseconds. AdCP is asynchronous: an agent submits a `create_media_buy` task, and the platform processes it on its own timeline, returning status updates. + +**Participants.** OpenRTB connects demand-side platforms (DSPs) to supply-side platforms (SSPs) in automated auctions. AdCP connects AI agents to any advertising platform — including but not limited to DSPs and SSPs. + +**Data model.** OpenRTB defines impression objects, bid objects, and deal objects. AdCP defines media products, media buys, creative formats, audience signals, and brand governance rules. + +## How they work together + +A typical integration uses both standards at different layers: + +1. A **buyer agent** uses AdCP to discover available products on a publisher's platform (`get_products`) +2. The agent creates a campaign via AdCP (`create_media_buy`) with budget, targeting, and scheduling +3. At impression time, the publisher sends a **TMP Context Match** (page content, available packages) and an **Identity Match** (opaque user token, package IDs) to the TMP Router +4. TMP evaluates cross-publisher exposure and returns offers and eligibility decisions — the publisher joins them locally +5. The buyer agent checks delivery via AdCP (`get_media_buy_delivery`) to monitor overall campaign performance + +In this model, AdCP handles the strategic layer (what to buy, how much to spend, who to target), TMP handles the real-time execution layer (which packages activate on which impressions), and OpenRTB handles the tactical auction layer where applicable (which specific impressions to win). + +## TMP: The Real-Time Bridge + +The [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match) is how AdCP reaches impression-time decisioning. It gives the buyer a real-time look at each impression opportunity so cross-publisher data can affect the serve decision, without turning AdCP itself into an auction protocol. + +TMP defines two structurally separated operations: + +```mermaid +flowchart LR + buyer["**Buyer Agent**
Creates media buy in AdCP"] + pub["**Publisher**
Impression opportunity"] + ctx["**Context Match**
Page content + packages
(no user identity)"] + id["**Identity Match**
User token + package IDs
(no page context)"] + join["**Publisher Join**
Intersect offers × eligibility"] + decision["**Activate or suppress**"] + + buyer --> pub + pub --> ctx + pub --> id + ctx --> join + id --> join + join --> decision +``` + +For cross-publisher frequency capping, this means: + +1. AdCP defines the campaign, budget, and packages +2. At impression time, the publisher sends a Context Match request (which packages match this content?) and an Identity Match request (is this user eligible for these packages?) +3. The buyer's Identity Match agent checks exposure history across all publishers connected to the TMP Router — frequency caps, audience membership, and purchase history are evaluated here +4. The publisher joins the two responses locally: packages that matched the context *and* passed identity eligibility activate; everything else is suppressed + +The buyer never sees both context and identity simultaneously. Cross-publisher frequency capping is enforced through the Identity Match path, where the buyer maintains a shared exposure store across publishers. + +## Other standards in the ecosystem + +AdCP and OpenRTB exist alongside several other standards: + +| Standard | Purpose | Maintained by | +|----------|---------|---------------| +| **MCP** (Model Context Protocol) | AI tool calling — how an AI model calls external tools | Anthropic | +| **A2A** (Agent-to-Agent Protocol) | Multi-agent collaboration — how autonomous agents communicate | Google | +| **VAST** / **VPAID** | Video ad serving and interactive video | IAB Tech Lab | +| **ads.txt** / **sellers.json** | Supply chain transparency and authorized seller verification | IAB Tech Lab | +| **Open Measurement SDK** | Viewability and attention measurement | IAB Tech Lab | + +AdCP uses MCP and A2A as transport layers. It references IAB content taxonomies and audience segment standards where applicable. + +## Frequently asked questions + + + + +No. They serve different purposes. OpenRTB handles real-time impression auctions. AdCP handles campaign-level agent workflows. A platform can implement both. + + + +No. AdCP works independently. A platform that doesn't use real-time bidding (for example, a direct-sold publisher or a commerce media network) can implement AdCP without any OpenRTB integration. + + + +Yes. When a buyer agent creates a media buy via AdCP, the sell-side platform can use any internal mechanism to fulfill the order — including OpenRTB auctions, direct insertion orders, private marketplace deals, or TMP-mediated real-time activation for things like cross-publisher frequency caps. + + + +No. AgenticAdvertising.org is an independent member organization. It is not a subsidiary, working group, or affiliate of IAB Tech Lab. However, AdCP is designed to be compatible with IAB standards. + + + diff --git a/dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate.mdx b/dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate.mdx new file mode 100644 index 0000000000..6338bb3e00 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate.mdx @@ -0,0 +1,180 @@ +--- +title: How AI agents communicate ad specs across platforms +sidebarTitle: How agents communicate +description: "How AI advertising agents discover inventory, exchange campaign data, and execute buys across platforms using AdCP's standardized task schemas and MCP transport." +"og:title": "AdCP — How AI agents communicate ad specs across platforms" +--- + +When an AI agent manages a campaign across multiple platforms, it needs to do the same things on each one: find available inventory, submit a buy, provide creatives, and check delivery. The challenge is that every platform describes these operations differently. + +AdCP solves this by defining a standard set of tasks — each with a fixed request schema and response schema — that agents use regardless of which platform they're talking to. + +## The communication problem + +Consider a buyer agent managing campaigns across three platforms: + +| Operation | Platform A | Platform B | Platform C | +|---|---|---|---| +| Find inventory | `GET /api/products` | `POST /inventory/search` | `GET /catalogue` | +| Execute a buy | `POST /api/campaigns` | `PUT /orders/new` | `POST /media-buys` | +| Check delivery | `GET /api/reports` | `POST /analytics/query` | `GET /stats/{id}` | + +Without a standard, the agent needs custom code for each platform — different endpoints, different field names, different response formats. This limits how many platforms an agent can work with. + +With AdCP, the agent uses the same tasks everywhere: + +| Operation | AdCP task | +|---|---| +| Find inventory | `get_products` | +| Execute a buy | `create_media_buy` | +| Check delivery | `get_media_buy_delivery` | + +The schemas are identical across platforms. Only the transport connection differs. + +## Two transport protocols + +AdCP tasks travel over two protocols, depending on the integration type: + +### MCP (Model Context Protocol) + +MCP is how AI assistants call external tools. An AdCP MCP server exposes tasks as tools that Claude, Cursor, or any MCP-compatible client can call. + +``` +AI Assistant → MCP Client → AdCP MCP Server → Platform +``` + +The agent calls `get_products` as a tool. The MCP server translates the request to the platform's internal API and returns a standardized response. + +**Best for:** Human-in-the-loop workflows where an AI assistant helps a media buyer interact with platforms. + +### A2A (Agent-to-Agent Protocol) + +A2A is how autonomous agents communicate with each other. A buyer agent sends structured messages to a seller agent, which processes them and returns results — potentially over long-running operations. + +``` +Buyer Agent → A2A Client → Seller Agent → Platform +``` + +The buyer agent sends a `create_media_buy` task as a message. The seller agent processes it (which might take seconds or hours), streaming status updates back. + +**Best for:** Automated workflows where agents operate independently, with human approval at key checkpoints. + +### Same tasks, different transport + +The critical point: AdCP task definitions are transport-agnostic. A `get_products` request has the same fields whether it travels over MCP or A2A. A platform implements the domain logic once and serves it over both transports. + +## What agents exchange + +AdCP defines tasks across several domains. Here's what agents actually send back and forth in a typical campaign: + +### Product discovery + +The buyer agent asks "what can I buy?" and gets back a structured catalog of media products — each with pricing, formats, targeting options, and delivery types. + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442007", + "buying_mode": "brief", + "brief": "Premium video inventory on sports content for Q2" +} +``` + +The response includes product IDs, pricing models (CPM, CPC, flat rate), available creative formats, and audience reach estimates. The agent can compare products across platforms because the schema is the same everywhere. + +### Creative specs + +Before submitting creatives, the agent reads the product's canonical `format_options[]`. The declaration is already complete: it carries the accepted canonical kind, parameters, and asset slots. + +```json +{ + "format_options": [ + { + "format_option_id": "video_preroll_16x9", + "publisher_domain": "streamhaus.example", + "format_kind": "video_hosted", + "params": { + "width": 1920, + "height": 1080, + "slots": [{ "asset_group_id": "video_main", "asset_type": "video", "required": true }] + } + } + ] +} +``` + +When production is needed, the buyer finds a compatible creative agent through the registry and selects one of that agent's `creative.supported_formats[]` entries with `build_creative.target_capability_id`. + +### Audience data + +Agents exchange audience signals — targeting segments, contextual data, first-party data — through `get_signals`. The buyer describes what they need, and the data provider returns matching segments with reach estimates and pricing, which the agent can evaluate before activating via `activate_signal`. + +### Campaign execution + +The agent creates a media buy with budget, schedule, and brand identity: + +```json +{ + "account": { "account_id": "acct-12345" }, + "brand": { "brand_id": "nova-electronics" }, + "proposal_id": "prop-sports-video", + "total_budget": { "amount": 25000, "currency": "USD" }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-06-30T23:59:59Z" +} +``` + +The platform can process this immediately or asynchronously. AdCP's status system (`completed`, `working`, `submitted`, `input-required`) communicates progress back to the agent. + +### Delivery reporting + +The agent calls `get_media_buy_delivery` to pull performance data — impressions, clicks, spend, and conversion events — in a standardized format. Because the delivery schema is the same across platforms, the agent can aggregate and compare performance without reconciling different metric names or calculation methods. + +## A worked example + +Pinnacle Media, a fictional agency, runs a campaign for a consumer electronics brand across three AdCP-enabled platforms. + + + +### Discover agents + +The buyer agent checks `adagents.json` on each publisher's domain to find their sales agents and supported protocols. + +### Compare inventory + +The agent calls `get_products` on all three platforms in parallel. It receives structured product catalogs and compares pricing, formats, and reach — all in the same schema. + +### Check creative requirements + +The agent compares the products' canonical `format_options[]` declarations and identifies a compatible shared constraint envelope across all three, reducing creative production to a shared set. + +### Execute buys + +The agent calls `create_media_buy` on each platform with budget allocations based on its comparison analysis. Some platforms confirm immediately; others return `working` status and confirm later. + +### Monitor delivery + +The agent polls `get_media_buy_delivery` across all three platforms daily, aggregating results into a unified performance view for the agency's planning team. + + + +The agency's team sets strategy and reviews results. The agent handles the cross-platform execution, format negotiation, and unified reporting. + +## Getting started + + + + Detailed technical comparison of MCP and A2A as AdCP transports. + + + Implementation guides, SDKs, and integration patterns. + + + The buyer-side perspective: how agents automate media buying across platforms. + + + How platforms expose their inventory to AI buyer agents. + + + What sits behind a protocol-compliant agent, and whether to build or buy. + + diff --git a/dist/docs/3.2.0-beta.4/building/concepts/index.mdx b/dist/docs/3.2.0-beta.4/building/concepts/index.mdx new file mode 100644 index 0000000000..2e4f37bf1a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/index.mdx @@ -0,0 +1,116 @@ +--- +title: Why AdCP +description: "Why AdCP exists: the fragmentation problem across RTB, platform APIs, and direct IO — and how a universal agent protocol for advertising solves it." +"og:title": "AdCP — Why AdCP" +--- + +## Allocation, Not Day Trading + +RTB treats advertising like day trading: *"What is this impression worth?"* It works for fungible inventory but commoditizes everything. + +AdCP enables portfolio-level allocation: *"How should I invest my ad budget?"* This mirrors how advertisers actually think—they buy outcomes, not impressions. + + + Why the RTB mental model doesn't fit how advertisers actually make decisions. + + +## The Structural Problem + +Programmatic advertising defaults to a single question: *"What is this impression worth right now?"* That framing embeds CPM-based, auction-centric assumptions into the transaction layer — assumptions that do not hold for most global ad spend. Direct deals, sponsorships, broadcast, out-of-home, and retail media all operate on different pricing models, different timelines, and different success metrics. They are not edge cases; they are the majority. + +AdCP sits at the **campaign-workflow layer**, above the auction. It does not replace OpenRTB or compete with serve-time decisioning — it coordinates the planning, negotiation, proposal, and deal-creation steps that happen before and after the auction fires. The [protocol comparison](/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb) explains how AdCP and OpenRTB coexist. + +By structuring these workflow steps as protocol-level tasks, AdCP enables agents to apply [brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json), [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/), and governance checks at decision time — not as an afterthought. Agents that use these tasks can reason about brand suitability, creative fit, and compliance as part of the buying process rather than bolting them on post-execution. The protocol makes this possible; individual agents decide how much of it to use. + +## The Fragmentation Problem + +Today, advertisers face three completely different buying systems: + +| Paradigm | Era | How It Works | +|----------|-----|--------------| +| **RTB/Biddable** | Legacy web | Real-time bidding via OpenRTB | +| **API-based** | Modern social, AI | Platform-specific APIs (Meta, TikTok) | +| **Direct IO** | Legacy | Insertion orders, manual deals | + +Each requires different integrations, tools, workflows, and expertise. 90% of ad spend never touches RTB—it lives in walled gardens, direct deals, and premium inventory. + +AdCP creates a **universal API standard** that unifies all three under one umbrella. + +## Omnichannel By Design + +Buying billboards is fundamentally different from buying social links: + +- **Different pricing**: Flat rate vs CPM vs engagement-based +- **Different creatives**: Static images vs dynamic video vs conversational AI +- **Different measurement**: Impressions vs engagement vs footfall + +AdCP creates a conceptual layer that abstracts these differences while preserving what makes each channel unique. One protocol, any channel. + +## Why Agents? + +Intelligent agents reduce the cost of managing complex, negotiated deals: + +- **Adapt to nuances** without over-specifying everything in code +- **Handle variability** across platforms and channels +- **Natural language** lets buyers describe intent, not configure parameters +- **Scale relationships** from 3-5 platforms to 20+ without scaling teams + +## The Protocol Layer for AI + +AdCP isn't just unifying legacy systems—it's the protocol layer for emerging AI surfaces. + +### Sponsored Intelligence + +Like VAST defined video ad serving, SI defines conversational brand experiences in AI assistants. When an AI says *"Delta has flights to Boston—want me to connect you with their assistant?"*—SI defines what happens next. + + + How conversational AI changes the economics of advertising. + + +### Brand identity + +Standardized brand identity for AI-powered creative generation. Brands express who they are—colors, tone, assets—in formats AI systems can consume. + +Together, these support fully AI-powered systems like Performance Max that need structured brand inputs, not manual campaign configuration. + + + + Monetizing AI surfaces — the reversed data flow, product spectrum, and SI Chat Protocol. + + + Standardized brand identity for AI creative generation. + + + +## Design Implications + +These goals drive AdCP's technical design: + +- **Asynchronous**: Deals take time. This is not a real-time protocol—operations may take minutes to days. +- **Human-in-the-loop**: Some decisions need human approval. Publishers can require manual sign-off. +- **Multiple transports**: MCP and A2A provide the same tasks through different protocols. + +## The Protocol Family + +| Protocol | Purpose | Key Tasks | +|----------|---------|-----------| +| **Media Buy** | Campaign execution | `get_products`, `create_media_buy` | +| **Signals** | Audience targeting | `get_signals`, `activate_signal` | +| **Creative** | Ad creative management | `build_creative`, `sync_creatives` | +| **Governance** | Brand suitability, quality, compliance | Property lists, content standards | +| **Sponsored Intelligence** | Conversational brand experiences | `si_initiate_session` | +| **Curation** | Inventory packaging | Coming soon | + +## Next Steps + + + + MCP vs A2A—when to use which, and what's the same. + + + Why agentic advertising raises the stakes, what AdCP defends against, and a checklist for brand IT and CISOs. + + + JavaScript and Python libraries for AdCP. + + diff --git a/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape.mdx b/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape.mdx new file mode 100644 index 0000000000..5f3384e345 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape.mdx @@ -0,0 +1,140 @@ +--- +title: AI advertising standards landscape +sidebarTitle: Industry landscape +description: "AI advertising standards landscape: how AdCP, OpenRTB, MCP, and A2A relate. Comparison of protocols, standards bodies, and their roles in agentic advertising." +"og:title": "AdCP — AI advertising standards landscape" +--- + +The key standards shaping AI-powered advertising are AdCP (agent workflow coordination), OpenRTB (impression auctions), MCP (AI tool calling), and A2A (agent-to-agent communication). Advertising is moving from programmatic (machine-executed auctions) to agentic (AI agents managing full campaign lifecycles), and these protocols define how the pieces connect. + +This page maps the landscape: what exists, who maintains it, and how they fit together. + +## Active protocols + +### Ad Context Protocol (AdCP) + +AdCP defines how AI agents interact with advertising platforms. It covers the full campaign lifecycle: product discovery, media buying, creative generation, audience activation, brand governance, and delivery reporting. + +| | | +|---|---| +| **Scope** | Agent-level advertising workflows | +| **Transport** | MCP (tool calling) or A2A (agent-to-agent) | +| **Maintained by** | [AgenticAdvertising.org](https://agenticadvertising.org) | +| **License** | Apache 2.0 (open source) | +| **Current version** | 3.0 (GA, April 2026) | +| **Key tasks** | `get_products`, `create_media_buy`, `build_creative`, `activate_signal` | + +AdCP is transport-agnostic: the same task definitions work over both MCP and A2A. A platform implements once; agents connect via either transport. + +### OpenRTB + +OpenRTB handles real-time impression auctions — the bid request / bid response cycle that powers most programmatic display and video advertising. + +| | | +|---|---| +| **Scope** | Impression-level transactions | +| **Transport** | HTTP POST | +| **Maintained by** | [IAB Tech Lab](https://iabtechlab.com) | +| **Current version** | 2.6 / 3.0 | +| **Key objects** | Bid request, bid response, win notice, billing notice | + +OpenRTB and AdCP are complementary. OpenRTB handles "should I bid on this impression?"; AdCP handles "create a campaign with this budget and targeting." See [AdCP and OpenRTB](/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb) for details. + +### Model Context Protocol (MCP) + +MCP defines how AI models call external tools. Developed by Anthropic, it's the standard for connecting AI assistants to APIs, databases, and services. + +| | | +|---|---| +| **Scope** | AI tool calling | +| **Transport** | JSON-RPC over stdio or SSE | +| **Maintained by** | [Anthropic](https://modelcontextprotocol.io) | +| **Used by** | Claude, Cursor, Windsurf, and other AI assistants | + +AdCP uses MCP as one of its transport layers. An AdCP MCP server exposes advertising tasks (like `get_products` or `create_media_buy`) as tools that any MCP-compatible AI assistant can call. + +### Agent-to-Agent Protocol (A2A) + +A2A defines how autonomous agents communicate with each other. Developed by Google, it enables multi-agent workflows where specialized agents collaborate. + +| | | +|---|---| +| **Scope** | Agent-to-agent collaboration | +| **Transport** | HTTP + JSON-RPC with SSE streaming | +| **Maintained by** | [Google](https://google.github.io/A2A/) | +| **Used by** | Multi-agent orchestration frameworks | + +AdCP uses A2A as its other transport layer. In an A2A setup, a buyer agent sends AdCP tasks to a seller agent as structured messages, with support for long-running operations via streaming. + +## Standards bodies and organizations + +| Organization | Focus | Key outputs | +|---|---|---| +| **[AgenticAdvertising.org](https://agenticadvertising.org)** | AI agent advertising standards | AdCP specification, JSON schemas, client SDKs | +| **[IAB Tech Lab](https://iabtechlab.com)** | Digital advertising standards | OpenRTB, VAST, ads.txt, sellers.json, content taxonomy | +| **[Anthropic](https://anthropic.com)** | AI safety and research | MCP specification | +| **[Google](https://google.github.io/A2A/)** | AI and cloud | A2A specification | +| **[W3C](https://www.w3.org)** | Web standards | Privacy Sandbox APIs, Topics API | + +AgenticAdvertising.org is an independent member organization. It is not a subsidiary or working group of IAB Tech Lab, Anthropic, Google, or any other company. Its members include platform providers, advertisers, agencies, and developers. + +## Other standards in the ecosystem + +| Standard | Purpose | Maintained by | +|---|---|---| +| **VAST** / **VPAID** | Video ad serving and interactive video | IAB Tech Lab | +| **ads.txt** / **sellers.json** | Supply chain transparency | IAB Tech Lab | +| **Open Measurement SDK** | Viewability and attention measurement | IAB Tech Lab | +| **Unified ID 2.0** | Privacy-preserving identity | The Trade Desk / Prebid | +| **Privacy Sandbox** | Cookie-less targeting APIs | Google / W3C | + +## How the layers fit together + +These protocols operate at different layers of the stack: + +``` +┌──────────────────────────────────────────────┐ +│ Strategy layer (AdCP) │ +│ Campaign planning, budget allocation, │ +│ cross-platform coordination │ +├──────────────────────────────────────────────┤ +│ Transport layer (MCP / A2A) │ +│ How agents call tools and exchange data │ +├──────────────────────────────────────────────┤ +│ Execution layer (OpenRTB / platform APIs) │ +│ Impression-level auctions, ad serving, │ +│ creative rendering │ +├──────────────────────────────────────────────┤ +│ Measurement layer (OMSDK / UID2 / Privacy) │ +│ Viewability, attribution, identity │ +└──────────────────────────────────────────────┘ +``` + +A typical workflow: an AI agent uses **MCP** to call **AdCP** tasks on a publisher's platform, creating a campaign. The publisher's ad server uses **OpenRTB** to execute impression-level delivery. **OMSDK** measures viewability. **ads.txt** verifies the supply chain. + +## What's changing + +Three trends are reshaping how these standards interact: + +**Agent-mediated buying.** Instead of humans navigating dashboards, AI agents will manage campaigns across platforms. This creates demand for standardized agent interfaces — which is what AdCP provides. + +**Protocol convergence.** MCP and A2A are establishing the transport layer for agent communication. Domain-specific protocols like AdCP build on top of them. This mirrors how HTTP became the transport layer and domain-specific APIs built on top. + +**Vertical specialization.** Generic agent protocols (MCP, A2A) handle communication. Vertical protocols handle domain logic. AdCP handles advertising. The same transport-plus-domain pattern may emerge in other verticals as agent adoption grows. + +## Getting involved + + + + Understand the protocol architecture and core concepts. + + + Participate in working groups that shape protocol direction. + + + Detailed comparison of AdCP and OpenRTB — how they complement each other. + + + Technical comparison of MCP and A2A as AdCP transport layers. + + diff --git a/dist/docs/3.2.0-beta.4/building/concepts/managing-response-size.mdx b/dist/docs/3.2.0-beta.4/building/concepts/managing-response-size.mdx new file mode 100644 index 0000000000..59328e3666 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/managing-response-size.mdx @@ -0,0 +1,145 @@ +--- +title: Managing Response Size +sidebarTitle: Managing Response Size +description: "How to keep AdCP responses lean with proposal planning, product field selection, pagination, feed versioning, and client-side projection." +"og:title": "AdCP — Managing Response Size" +--- + +When a buyer agent calls an AdCP seller, the response can range from a few +seller-planned proposals to a wholesale mirror containing detailed product, +signal, and placement metadata. This page covers the controls that keep those +responses right-sized—and the client-side projection that matters most. + +## Wire response ≠ model context + +The single most important point: **the bytes on the wire are not what your model has to consume.** + +AdCP responses are structured data. An MCP response arrives as `structuredContent` — typed JSON that the client parses before any model sees it. An A2A response pairs a human-readable `TextPart` with an authoritative `DataPart`. In both cases, a well-built client stores the full response and projects or summarizes it before prompting the next model turn. + +``` +Seller agent → structured response (full data) + ↓ +Client stores raw response + ↓ +Client projects / summarizes → model context (lean) +``` + +If your agent is forwarding raw tool results into the model context unchanged, the fix is in the client, not the protocol. Store the response, extract what the model needs for its next decision, and reference the stored data by ID when details are needed later. + + + **Naive-host caveat.** Some MCP hosts pass the entire `structuredContent` blob into the model context as-is. If you control the host, project before prompting. If you don't, the controls below become your primary defense against oversized context. + + +## Ask for a plan when you want curation + +Use `request_proposals` when the seller should turn a campaign brief into a +small set of actionable plans: + +```json +{ + "adcp_version": "3.2-beta.0", + "idempotency_key": "550e8400-e29b-41d4-a716-446655442001", + "account": { "account_id": "account_123" }, + "brand": { "domain": "acme-outdoor.example" }, + "brief": "Build a concise premium-video plan for Acme Outdoor's Q4 launch. Prioritize completed views.", + "criteria": { + "offer_filters": { "channels": ["olv"] }, + "targeting_overlay": { "geo_countries": ["US"] } + } +} +``` + +The seller returns immutable draft proposals rather than a catalog page. Use +typed `refine_proposals` requests to narrow the plan without retransmitting the +full source response. + +Use `list_products` instead when the buyer wants published offers or maintains +a wholesale mirror. A mirror is a feed-synchronization topology, not a cheaper +proposal mode. + +## `fields` selector for lightweight discovery + +When you only need a subset of published product data, pass `fields` to +`list_products`: + +```json +{ + "adcp_version": "3.2-beta.0", + "account": { "account_id": "account_123" }, + "criteria": { + "offer_filters": { "channels": ["olv"] } + }, + "fields": ["product_id", "name", "pricing_options"], + "max_results": 10 +} +``` + +This is useful when: +- Your agent is scanning multiple sellers and only needs IDs and prices for initial comparison +- You want to skip heavy fields like `product_card`, `product_card_detailed`, `placements`, or signal metadata +- You're building a summary view before drilling into specific products + +Without `fields`, the seller returns the full product object — including visual card definitions, placement specs, and any bundled signal metadata. For a first-pass discovery across multiple sellers, that's more data than you need. + +## Pagination for cardinality control + +`list_products` uses cursor-based pagination: + +| Parameter | Description | +|---|---| +| `max_results` | Maximum products per page | +| `cursor` | Opaque cursor from the previous response | + +Response: + +| Field | Description | +|---|---| +| `next_cursor` | Cursor for the next page; omitted on the terminal page | +| `feed_version` | Opaque version of the selected offer feed | +| `pricing_version` | Optional separately versioned pricing layer | +| `cache_scope` | Whether versions describe the public or account layer | + +Pass `next_cursor` into the next `list_products` request. A mirror stores +`feed_version` with its `cache_scope` and uses account-level product webhooks +for routine changes. Conditional reads with `if_feed_version` repair gaps or +confirm that a selected feed is unchanged; they do not replace a healthy +webhook stream. + +## Truncation flags on delivery + +[`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) returns breakdown arrays (by geo, by creative, by day, etc.) that can grow large. Each breakdown array has a sibling boolean flag — `by_geo_truncated`, `by_creative_truncated`, etc. — that tells you whether the returned rows are the complete set or just the top-N: + +| Flag value | Meaning | +|---|---| +| `false` | All rows are present | +| `true` | Additional rows exist beyond what was returned | + +When a flag is `true`, the returned rows are sorted by the requested metric descending — you have the most significant breakdowns, and the tail is omitted. This is by design: delivery breakdowns are for optimization decisions, not archival reporting. If you need the full dataset, use the seller's native reporting API. + +## Putting it together + +A token-efficient AdCP integration follows this pattern: + +1. **Use `request_proposals` for seller curation.** Ask for plans instead of downloading a feed and prompting a model to rediscover seller expertise. +2. **Use typed `refine_proposals`.** Carry proposal IDs and changes, not the full prior response, into the next turn. +3. **Store raw responses client-side.** Don't feed full product objects into the model context. Extract what matters, summarize the rest. +4. **Read truncation flags before paginating delivery.** If `by_geo_truncated: false`, you already have everything — no need for follow-up calls. +5. **Treat wholesale as synchronization.** Bootstrap with `list_products`, apply product webhooks, and use versioned reads for repair. + + + + Choose published offers, wholesale mirroring, or seller-planned proposals. + + + Field selection, cursor pagination, feed versions, and mirror repair. + + + Breakdown arrays, truncation flags, and sort semantics. + + + MCP vs A2A transport and how responses are structured. + + + Product structure, `product_card` vs `product_card_detailed`, and rendering. + + diff --git a/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison.mdx b/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison.mdx new file mode 100644 index 0000000000..fe74ebe565 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison.mdx @@ -0,0 +1,267 @@ +--- +title: Protocol Comparison +description: "MCP vs A2A for AdCP: side-by-side comparison of transport formats, async handling, status systems, and when to use each protocol for advertising agent integration." +"og:title": "AdCP — Protocol Comparison" +--- + +Both MCP and A2A provide identical AdCP capabilities using the same unified status system. They differ only in transport format and async handling. + +## Quick Comparison + +| Aspect | MCP | A2A | +|--------|-----|-----| +| **Request Style** | Tool calls | Task messages | +| **Response Style** | Direct JSON | Artifacts | +| **Status System** | Unified status field | Unified status field | +| **Async Handling** | AdCP status payloads over tool calls; optional MCP Tasks wrapper | AdCP status payloads in A2A artifacts; optional SSE streaming | +| **Webhooks** | `push_notification_config` in tool args | Native PushNotificationConfig | +| **Task Management** | AdCP `task_id` via webhooks or AdCP polling (`get_task_status`, legacy `tasks/get`) | AdCP `task_id` via webhooks or AdCP polling | +| **Context** | Manual (pass context_id) | Automatic (protocol-managed) | +| **Best For** | Claude, AI assistants | Agent workflows | + +## Unified Status System + +Both protocols use the same status field with consistent values. + +### Status Handling (Both Protocols) + +Every response includes a status field that tells you exactly what to do: + +```json +{ + "status": "input-required", // Same values for both protocols + "message": "Need your budget", // Same human explanation + // ... protocol-specific formatting below +} +``` + +| Status | What It Means | Your Action | +|--------|---------------|-------------| +| `completed` | Task finished | Process data, show success | +| `input-required` | Need user input | Read message, prompt user, follow up | +| `working` | Processing (< 120s) | Wait for the open call/stream result; show progress | +| `submitted` | Long-running (hours to days) | Provide webhook or poll less frequently | +| `failed` | Error occurred | Show error, handle gracefully | +| `auth-required` | Need auth | Prompt for credentials | + +See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for complete status handling guide. + +## Transport Format Differences + +Same status and data, different packaging: + +### MCP Response Format +```json +{ + "status": "input-required", + "message": "I need your budget and target audience", + "context_id": "ctx-123", + "products": [], + "suggestions": ["budget", "audience"] +} +``` + +### A2A Response Format +```json +{ + "status": "input-required", + "contextId": "ctx-123", + "artifacts": [{ + "artifactId": "artifact-product-discovery-xyz", + "name": "product_discovery", + "parts": [ + { + "kind": "text", + "text": "I need your budget and target audience" + }, + { + "kind": "data", + "data": { + "products": [], + "suggestions": ["budget", "audience"] + } + } + ] + }] +} +``` + +## Async Operation Differences + +Both protocols carry the same AdCP status progression: +`submitted` → `working` → `completed`/`failed` + +The progression above is AdCP application state. MCP Tasks and A2A task state are transport mechanics that can deliver an AdCP payload, but they are not a replacement for AdCP task polling or reconciliation. + +### MCP Task-Augmented Call (Transport Wrapper) +```javascript +// Task-augmented tool call — returns CreateTaskResult immediately +const createResult = await mcp.callTool({ + name: "create_media_buy", + arguments: { + buyer_ref: "acme_q1", + packages: [...], + push_notification_config: { // Optional: webhook for session-outliving ops + url: "https://buyer.com/webhooks/adcp/create_media_buy/op_123", + authentication: { schemes: ["HMAC-SHA256"], credentials: "secret" } + } + }, + task: { ttl: 86400000 } // Request task-augmented execution +}); +// createResult.task = { taskId: "task-456", status: "working", pollInterval: 5000 } + +// Client polls via MCP Tasks protocol (outside the LLM loop) +const status = await mcp.getTask({ taskId: "task-456" }); +// status = { taskId: "task-456", status: "completed", ... } + +// Retrieve the actual CallToolResult, then inspect the AdCP payload inside it +const result = await mcp.getTaskResult({ taskId: "task-456" }); +// result = { content: [...], isError: false } + +const adcpResponse = result.structuredContent; +if (adcpResponse.status === "submitted") { + // The MCP task delivered the AdCP response; the media-buy workflow is still open. + await adcp.call("get_task_status", { + task_id: adcpResponse.task_id, + include_result: true + }); +} +``` + +### A2A Async Pattern + +The AdCP v3 profile returns an AdCP Submitted result inside a completed A2A +Task. The two IDs remain independent: + +```json +{ + "task": { + "id": "a2a-task-456", + "contextId": "ctx-123", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [{ + "data": { + "status": "submitted", + "task_id": "adcp-task-456" + } + }] + }] + } +} +``` + +Poll the durable operation with a fresh activated `{ skill: +"get_task_status", input: { task_id: "adcp-task-456" } }` invocation. Do not +poll `a2a-task-456`. For transport progress while a handler is executing, use +the official A2A `SendStreamingMessage` or `SubscribeToTask` operations and +consume their `StreamResponse` SSE frames. Durable AdCP webhooks are registered +as `push_notification_config` inside the typed task input; A2A +`configuration.taskPushNotificationConfig` tracks only the transport Task. + +## Context Management + +### MCP: Manual Context +```javascript +let contextId = null; + +async function callAdcp(request) { + if (contextId) { + request.context_id = contextId; + } + + const response = await mcp.call('get_products', request); + contextId = response.context_id; // Save for next call + + return response; +} +``` + +### A2A: Message Context +```javascript +// The server assigns contextId on the first typed invocation. +const response1 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ data: { + skill: "get_products", + input: { buying_mode: "brief", brief: "Find video products" } + } }] + } +}); + +// The next Message explicitly carries the returned contextId. +const response2 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + contextId: response1.contextId, + role: "ROLE_USER", + parts: [{ data: { + skill: "get_products", + input: { buying_mode: "brief", brief: "Focus on premium video inventory" } + } }] + } +}); +``` + +## Clarification Handling + +Both protocols use the same `status: "input-required"` pattern: + +```javascript +// Works for both MCP and A2A +function handleResponse(response) { + if (response.status === 'input-required') { + const info = promptUser(response.message); + return sendFollowUp(response.context_id, info); + } + + if (response.status === 'completed') { + return processResults(response); + } +} +``` + +## Error Handling + +Both use `status: "failed"` with same error structure: + +```json +{ + "status": "failed", + "message": "Insufficient inventory for your targeting criteria", + "context_id": "ctx-123", + "error_code": "insufficient_inventory", + "suggestions": ["Expand targeting", "Increase CPM"] +} +``` + +## Choosing a Protocol + +### Choose MCP if you're using: +- Claude Desktop or Claude Code +- MCP-compatible AI assistants +- Simple tool-based integrations +- Direct JSON responses + +### Choose A2A if you're using: +- Google AI agents or Agent Engine +- Multi-modal workflows (text + files) +- Real-time streaming updates +- Artifact-based data handling + +### Both protocols provide: +- Same AdCP tasks and capabilities +- Unified status system for clear client logic +- Context management for conversations +- Async operation support +- Human-in-the-loop workflows +- Error handling and recovery + +## Next Steps + +- **MCP Guide**: See [MCP Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide) for tool calls and context management +- **A2A Guide**: See [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) for artifacts and streaming +- **Both protocols**: Provide the same capabilities with unified status handling diff --git a/dist/docs/3.2.0-beta.4/building/concepts/security-model.mdx b/dist/docs/3.2.0-beta.4/building/concepts/security-model.mdx new file mode 100644 index 0000000000..4106af4be8 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/concepts/security-model.mdx @@ -0,0 +1,312 @@ +--- +title: Security Model +sidebarTitle: Security Model +description: "Why agentic advertising raises the stakes for security, the threats AdCP is designed to defend against, and a checklist for security and IT leaders evaluating an AdCP deployment." +"og:title": "AdCP — Security Model" +--- + +For CISOs, security architects, and third-party risk reviewers evaluating an AdCP deployment — on either side of the transaction (brands, agencies, publishers, platforms, data providers). The [implementation reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) has the normative rules; this page explains the model behind them. + +## Why security is foundational, not an add-on + +In traditional advertising, a human reviews an insertion order before money moves. In agentic advertising, the agent is the human. It evaluates briefs, negotiates terms, places buys, handles reporting, and decides whether to retry a failed transaction — often without a person in the loop until something already happened. + +That shift concentrates risk in three ways: + +- **Authority is portable.** A credential that can spend $10M/year fits in a token. A stolen token with the right scope can create real media buys against real budget, and the buy will look legitimate to every downstream system because it *is* legitimate — from the protocol's point of view. +- **Decisions are fast.** An agent can run a full plan-to-purchase loop in seconds. A compromised loop can burn through a day's budget in minutes. There is no ad ops team watching line items populate. +- **The attacker uses the same tools you do.** AI can red-team an API as fast as it can use one. If your agent has a documented surface (and it should — that's how other agents discover it), an adversary's agent can enumerate it, probe it, and fuzz it at machine speed. Security-by-obscurity is not a control. + +These are the conditions AdCP was built to withstand. The rest of this page is how. + +A breach surface in agentic ad tech is not "data exposure." It is **unauthorized financial commitments**, **bypassed governance**, **cross-tenant data leakage between advertisers on the same platform**, and **tampering with audit trails that regulators will later ask to see**. Each of those has a named threat model in the implementation reference. This page steps back and explains why. + +## What changes in the threat model + +**Everything from traditional API security still applies** — authentication, authorization, rate limiting, input validation, transport security, data-at-rest encryption, endpoint hardening, logging. An agent is an HTTP service on the public internet; every control you would apply to a REST API you still apply here. AdCP does not replace that baseline, and this page does not re-teach it. + +What agentic advertising *adds* is a second layer of concerns, on top of the traditional ones: + +| Traditional API security already covers... | Agentic advertising additionally requires... | +|---|---| +| Authenticating the human user | Authenticating the [agent](/dist/docs/3.2.0-beta.4/reference/glossary#a) *on behalf of* a brand or agency, and proving that brand authorized this specific spend | +| Preventing data exfiltration | Preventing *unauthorized state changes* — agents retry, loop, and fan out; a single successful injection can execute many times | +| Rate limiting abusive callers | Preventing **replay attacks**: an agent retrying a $1M media buy on a network timeout must never create two | +| Input validation | **Counterparty URL validation**: agents fetch from URLs other agents supply (webhooks, registries, JWKS, reporting buckets) — each is an [SSRF](/dist/docs/3.2.0-beta.4/reference/glossary#s) vector into your internal network | +| Audit logging | **Cryptographically signed governance attestation** that survives the transaction and is verifiable by a regulator years later, without trusting either party | +| Single-tenant isolation | **Multi-agent, multi-account isolation on shared infrastructure** — one compromised agent must not see another agent's buys, creatives, or targeting | + +None of this is novel cryptography. What's new is the combination — well-understood primitives operating autonomously, at machine speed, across party boundaries — with the controls on the left now backstopping decisions humans used to make. + +### Threats specific to agentic advertising + +Three attack classes don't appear in a traditional API threat model but belong in this one: + +- **Credential reuse across accounts under one agent.** An agency agent typically holds credentials that work across every brand in its authorized-account set. A stolen agent token is therefore a multi-brand breach, not a single-brand one. AdCP's per-`(agent, account)` cache scoping (see [Agent and Account Isolation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#agent-and-account-isolation)) and signed governance tokens (bound to a specific plan and seller) limit *what* can be done with a stolen credential, but don't prevent the theft. Credential hygiene in agentic systems is proportionally more critical than in single-tenant APIs. +- **Shared-governance-agent supply chain.** A governance agent often signs for many brands from a single origin. Its compromise is a multi-tenant breach. The JWKS / revocation-list requirements in the [governance profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context) limit the blast radius and make rotation observable, but the buyer's due-diligence posture toward its governance agent is a real-world security dependency — treat the governance agent as a processor with multi-customer blast radius and assess it accordingly. +- **Cross-principal key reuse on multi-tenant operators.** Any operator hosting agents on behalf of more than one principal — a governance agent serving multiple brands, a buyer agent serving multiple advertisers, a sales agent serving multiple publishers — MUST scope signing keys per principal rather than reuse one key across the fleet. Concretely, each `keyid` MUST bind to a single principal so that a single compromised key reduces to a single-principal breach and revocation is granular. A convention such as `{operator}:{principal}:{key_version}` is a useful operator-side bookkeeping aid, but the `kid` value itself is opaque to verifiers per RFC 7517 — verifiers MUST NOT parse `kid` structure to derive principal identity or make authorization decisions, and MUST resolve the owning principal via the authenticated signature → JWKS → agent entry chain, using the `kid` only as an index into the JWKS. Operators that invent a structured convention thus create an internal bookkeeping tool, not an on-wire authorization input. Operators SHOULD advertise the isolation property in their capability surface as `identity.per_principal_key_isolation: true` so counterparties can verify the property without reading out the JWKS by hand. +- **Prompt injection exfiltrating agent-side credentials.** Planners, creative-review agents, brief-interpretation pipelines all process untrusted text (briefs, creative metadata, product descriptions, campaign names) while holding credentials. A successful injection can cause the agent to issue unauthorized tool calls or leak tokens into logs, external URLs, or downstream agent messages. AdCP cannot prevent this at the protocol layer, but every operator running an LLM-powered agent needs input sandboxing, egress controls on tool calls (which URLs / which tools can the agent reach from within a given prompt context), and monitoring for anomalous credential use. The protocol-layer slice that *is* addressable — keeping buyer-principal credentials off the LLM-visible task payload entirely — is the [Credential placement](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#credential-placement) rule: credentials MUST arrive on the transport's authentication channel and never inside request args. This is the most likely near-term breach vector in the space and is not solved by protocol compliance alone. +- **Cross-principal tool-call confusion.** A buyer agent typically holds active credentials for *multiple* principals at once — several sellers (one set of credentials per seller) and several brand accounts (inside a single agency agent's authority set). LLM-driven agents often expose every one of those tool surfaces to the same planning loop. A prompt injected via text returned from seller X (a product description, a campaign name, a rejection reason) can cause the agent to call a tool on seller Y's endpoint, or to call `create_media_buy` for brand A using a budget authorized for brand B. This is the classical [confused deputy](https://en.wikipedia.org/wiki/Confused_deputy_problem) problem at LLM-tool-call granularity. The protocol-layer defense is in Layer 2 (account scoping on every tool call, refusing any cross-account action the caller does not hold authority for); the operator-layer defense is to tag each inbound string with its principal of origin, refuse tool calls whose target principal differs from the principal that supplied the string unless a human approves, and forbid a single LLM context from holding credentials for principals whose interests can conflict. This threat is distinct from ordinary prompt injection: the attacker does not need to escape the sandbox to use the *victim principal's* credentials — the victim's own agent does it for them. + +### Structural privacy separation + +AdCP is designed so that parties learn only what they need to act. This is enforced by protocol structure, not just policy. Examples: + +- **[Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match)** splits impression-time decisions into two independent calls: *Context Match* carries content signals (topic, sentiment, embeddings) with no user identity; *Identity Match* carries an opaque user token with no page context. Neither call alone reveals which user visited which page — the decomposition is the privacy property. +- **Signals Protocol** returns `activation_key` values to authenticated callers with deployment access only, and structurally separates marketplace catalog access (public) from private-signal disclosure (account-scoped). +- **Governance tokens** use `policy_decision_hash` instead of inline `policy_decisions` when the buyer's compliance posture is sensitive — the full decision log remains available to auditors via the signed `audit_log_pointer`, under the governance agent's access control. +- **Audience members** in `sync_audiences` use `hashed_email` and `hashed_phone` fields whose schemas require SHA-256 hashing on the buyer side and structurally reject cleartext. Note that an unsalted SHA-256 of an email or phone is pseudonymous PII, not anonymous — it is recoverable via precomputed dictionaries, so operators MUST treat hashed identifiers as PII for retention and consent. See [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations#unsalted-hashed-identifiers-are-pseudonymous-not-anonymous). + +"Structural" here means an attacker who compromises one leg of a split workflow gains no information that was designed to live only in the other leg. It's a weaker guarantee than cryptographic confidentiality but a stronger one than policy alone. + +## AdCP's layered defense model + +AdCP defends against these threats with five layers. Each one is a separate control; a failure in one does not collapse the others. This is the same defense-in-depth pattern used in payment systems — the five layers below describe *what* every compliant implementation must get right. *How* you build them is yours. + +```mermaid +flowchart TB + A[Request arrives] --> B["Layer 1: Identity
mTLS / signed requests / API key"] + B --> C["Layer 2: Isolation
Per-agent, per-account scope"] + C --> D["Layer 3: Idempotency
At-most-once execution"] + D --> E["Layer 4: Signed Governance
JWS from governance agent"] + E --> F["Layer 5: Auditability
Replay-proof audit trail"] + F --> G[Execute side effects] + + style B fill:#e0f2fe,stroke:#0369a1 + style C fill:#e0f2fe,stroke:#0369a1 + style D fill:#e0f2fe,stroke:#0369a1 + style E fill:#e0f2fe,stroke:#0369a1 + style F fill:#e0f2fe,stroke:#0369a1 +``` + +### Layer 1: Identity — who is actually calling? + +Before any other check, the seller must establish *which authenticated agent* is making the request. AdCP defines three mechanisms; the version-gating determines which are permitted for which operation class: + +- **RFC 9421 signed HTTP requests** — the buyer signs each request with a key declared in its public agent registry. *Recommended in 3.0 for all authenticated operations; REQUIRED for mutating / financial operations in 3.1+.* +- **mTLS** — the buyer presents a client certificate resolving to a registered domain. *Permitted for any operation in 3.0 and 3.1+.* +- **Bearer tokens** (pre-provisioned API key or JWT) — issued by the seller at onboarding, mapped to the buyer. *Permitted in 3.0 as the effective baseline; **PROHIBITED for mutating / financial operations in 3.1+**, read-only thereafter.* + +The normative matrix and verifier rules live in [Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#authentication-method); the 3.0 → 3.1 sunset for bearer on mutating operations is logged under [known limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations#authentication-and-identity). + +**What this defends against.** An attacker cannot claim to be Acme by setting an `iss` field or a `caller` header. Identity is bound to something the attacker cannot forge (a private key, a certificate, or a pre-shared secret). Every subsequent layer uses the authenticated agent as its scope — get this wrong and the rest of the stack is decorative. + +### Layer 2: Isolation — one agent cannot see another + +Every piece of state — media buys, creatives, idempotency cache entries, session IDs, governance tokens — is scoped to the agent that created it and the [account](/dist/docs/3.2.0-beta.4/reference/glossary#a) that authorized the work. Queries that forget the scope leak data across tenants; AdCP requires sellers to scope every read by the authenticated agent and its authorized accounts, and to return a generic "not found" rather than leak existence across the boundary. + +Implementations typically enforce this at the database layer (Postgres row-level security is the canonical pattern) so a bug in one handler cannot punch through the wall. + +Within the tenant boundary, not every caller gets the same grant. A seller may issue one agent a full media-buy scope and another agent a narrow read + webhook-attach scope (e.g., the [`attestation_verifier`](/dist/docs/3.2.0-beta.4/accounts/overview#standard-named-scope-attestation_verifier) scope for AAO Verified compliance engines). Callers discover their own grant via the `authorization` object attached to per-account entries in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses; sellers enforce locally and reject out-of-scope requests with `SCOPE_INSUFFICIENT`, `READ_ONLY_SCOPE`, or `FIELD_NOT_PERMITTED`. + +**What this defends against.** Competitive intelligence leaks. An attacker authenticated as Agent A cannot probe Agent B's media buys, creatives, or idempotency keys — not by ID guessing, not by timing side-channels, not by error-message differencing. A legitimately-authenticated agent with a narrow scope cannot escalate into tasks or fields it was not granted. + +### Layer 3: Idempotency — at-most-once execution + +Every mutating AdCP request carries a required [`idempotency_key`](/dist/docs/3.2.0-beta.4/reference/glossary#i). The seller stores the first successful response under that key, scoped to the authenticated agent, with a declared replay TTL (minimum 1h, recommended 24h, maximum 7d). A retry with the same key and the same payload returns the cached response and marks it `replayed: true`. A retry with a *different* payload under the same key is rejected with `IDEMPOTENCY_CONFLICT`. + +This is the control that makes retries safe. Without it, a network timeout on `create_media_buy` forces the buyer to choose between double-booking (retry) and abandoning a legitimate buy (don't retry). With it, the same bytes always produce the same outcome — exactly once. + +**What this defends against.** Double-booking from retries. Replay attacks from a stolen-then-reused request. Duplicate webhooks from agent side effects ("Campaign created!" notifications, downstream tool calls, LLM memory writes). `replayed: true` lets every downstream system know whether a response represents a new event or a cached one. + +The full normative rules, including payload canonicalization and the oracle-resistance properties of the error taxonomy, are in [Request Safety](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). + +### Layer 4: Signed governance — cryptographic proof of approval + +When a plan is approved for spend, the governance agent issues a signed JWS token — not a shared secret, not an opaque cookie, but a public-key-verifiable attestation bound to: + +- **`sub`** — an issuer-generated opaque governed-action binding; the seller cannot derive the buyer's plan ID from it +- **`aud`** — the specific seller allowed to act on it +- **`phase`** — whether this is intent, purchase, modification, or delivery +- **`exp`** — when the authorization expires (15 min for intent, ≤30 days for execution) +- **`jti`** — a unique token ID used for replay dedup + +The seller fetches the governance agent's public keys via JWKS, verifies the signature, runs the 15-step verification checklist, and only then treats the request as approved. Auditors and regulators can verify the same token years later using the same public keys — neither buyer nor seller can retroactively forge an approval. + +**What this defends against.** Unauthorized spend. A compromised buyer credential alone cannot create a media buy — the attacker also needs a valid, unrevoked governance token signed by the buyer's governance agent, bound to this specific seller, for this specific plan, for this specific operation, within its validity window (±60s clock-skew tolerance on `iat`/`nbf`/`exp`; see the [implementation reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context) for exact bounds), whose `jti` has not been seen before. + +### Layer 5: Auditability — the trail survives the transaction + +Every protocol event produces structured, correlated records: the signed governance token, the `idempotency_key` and its `replayed` flag, the request ID chain, and — for governance-controlled events — a revocable audit log pointer. These are *queryable by auditors* via `get_plan_audit_logs`, not private to either buyer or seller. + +Key properties: + +- **Revocation.** Governance agents publish a signed revocation list at a well-known path. Compromised keys and rescinded plans can be invalidated without trusting the CDN serving the list. +- **Retention.** Revoked public keys remain discoverable for 7+ years so historical tokens remain verifiable after rotation. +- **Approval provenance.** Because the governance attestation is signed and public-key-verifiable, any party holding the artifact can verify it was approved by the holder of the signing key at the stated time. This approaches non-repudiation — but only conditionally. The buyer cannot later claim the plan was *never approved* so long as (a) the signing key was not compromised at time-of-signing (revocation lists bound this — a post-hoc claim of "the key was already stolen when I signed" is falsifiable against the revocation timeline) and (b) the signer retains ordinary custody of its signing key. The seller side is *weaker*: an attestation proves the plan existed, not that it was delivered or acknowledged. For full bilateral non-repudiation, the seller should emit a signed `plan_receipt` binding `{plan_id, received_at, plan_sha256}` as a signed webhook using an `adcp_use: "request-signing"` key — durable seller-side acknowledgement flows through the same at-rest webhook path as every other webhook artifact (see [What gets signed](#what-gets-signed--and-what-doesnt) below). Absent a signed receipt, "never received" remains deniable. + +**What this defends against.** After-the-fact tampering. Claim drift between parties in a dispute. Regulatory inquiries that arrive long after the credentials have rotated. + +## What gets signed — and what doesn't + +AdCP 3.2 has six application-layer signing surfaces — five sharing the JWKS publication pattern, plus TMP's own envelope: + +- **Inbound request signing.** Buyers (and sellers acting as buyer-side clients) sign their outbound tool calls with [RFC 9421](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing). Key purpose `adcp_use: "request-signing"`. +- **Outbound webhook signing.** Sellers sign asynchronous [webhook deliveries](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks) — task completion, status changes, downstream events, and any specialism-scoped durable artifact (brand-rights, AAO Verified compliance, sales-intelligence relay, governance receipts). RFC 9421. Key purpose `adcp_use: "request-signing"`; deprecated `adcp_use: "webhook-signing"` keys remain accepted on the webhook path for backward compatibility. +- **Governance attestation signing.** Governance agents sign the JWS tokens that authorize spend (Layer 4 above). Distinct profile from RFC 9421, with its own key purpose (`adcp_use: "governance-signing"`), JWKS, and revocation list. +- **Designated-task response payload signing.** A closed list of tasks — currently `verify_brand_claim` and its bulk variant `verify_brand_claims` — sign their response *payload* as a [JWS envelope](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing) carried inside the response body. Key purpose `adcp_use: "response-signing"`. The signature is load-bearing for the brand-protocol direction-asymmetric trust model; receivers parse the response body and verify the JWS against the responding agent's published key. This is payload-envelope JWS, not RFC 9421 §2.2.9 transport response signing — the latter is not defined in 3.x for any task, including the designated ones. See [Brand Protocol: trust model](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim#trust-model). +- **Portable credential signing.** Proof formats carried through the shared attestation model sign independently issued credentials. When an AdCP agent publishes the credential verification key through its `agents[].jwks_uri`, that JWK uses the generic `adcp_use: "attestation-signing"` purpose; domain profiles such as rights grants do not coin their own key purpose. The proof format defines its signature input and algorithm, while AdCP binds issuer policy, subject, resolution, and consuming-action evaluation. +- **Trusted Match Protocol envelope.** TMP signs match-time requests with its own Ed25519 envelope, scaled to TMP's per-request budget (sample-verify at ~5%); it shares JWKS publication with the five surfaces above but is its own profile. See [TMP signing model](/dist/docs/3.2.0-beta.4/trusted-match/specification#signing-model). + +**Synchronous AdCP responses are NOT signed at the transport layer.** Outside the designated-task list (`verify_brand_claim` family — payload-envelope JWS, not RFC 9421 transport), buyers MUST NOT rely on response signatures; integrity guarantees for synchronous replies are delivered by TLS within the authenticated session. Artifacts requiring at-rest attestation MUST be delivered via signed webhooks. This applies symmetrically to MCP `tools/call` replies and to A2A non-streaming responses (and their streaming `artifactUpdate` frames); A2A push-notification delivery already rides the signed-webhook path covered by the second surface above. + +### Why the split is deliberate + +This is two delivery surfaces with one RFC 9421 signing purpose, not a synchronous-response coverage gap. + +- **TLS-scoped synchronous + signed-webhook async is the design.** The synchronous reply is consumed inside the authenticated session that carried the request — the buyer holds TLS-bound proof that the seller's authenticated edge answered, with the same edge-termination caveats that govern request-side body integrity at body-modifying CDNs (see [Transport security: edge-termination](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#what-this-section-does-not-replace)). A signature on the body would protect against post-edge tampering but does not protect against anything the authenticated TLS session hasn't already established between the parties' authenticated edges. At-rest integrity, by contrast, is what webhooks are for: the artifact survives past the original transport and verifies long after the session has closed, against keys that long-outlive the TCP connection. +- **Webhook-only is a forcing function for sellers.** Making "this artifact needs at-rest integrity" an *explicit modeling decision* — emit a webhook — rather than a free rider on every reply pushes operators toward intentional design. Sellers who would otherwise reach for a generic response-signing primitive "for completeness," without asking *which* artifacts actually warrant attestation, are pushed to make the call up front. +- **Doubling the signing surface is operationally fragile.** Every additional signing purpose or profile is another key declaration in the JWKS, another rotation cycle, another verifier code path, another conformance grader, another revocation entry to monitor. The cost is borne by every adopter for every deployment; the benefit accrues to a narrow set of audit and forwarding flows that have a cleaner path through webhooks. Net negative across the ecosystem. + +### Cases that look like response signing but aren't + +- **Audit and forensics on tool-call replies.** A buyer that needs to attest "the seller said X at time T" requests the artifact via a webhook-emitting tool path, not via the synchronous reply. The asymmetry forces the right design question: which replies actually need at-rest integrity? In practice, fewer than instinct suggests. +- **Cross-agent forwarding** (sales-intelligence relay, brand-rights handoff, AAO Verified compliance attestations). The durable artifact in each of these flows rides the standard signed-webhook path using `adcp_use: "request-signing"` — there is no per-specialism `adcp_use` value in 3.x, and no general-purpose response-signing primitive (the closed designated-task list above is the only response-payload-signing surface, and these flows aren't on it). The specialism delivers its attestable payload as a signed webhook from its own agent; that's already the answer. +- **Bilateral non-repudiation receipts** (e.g., a seller's signed `plan_receipt` binding `{plan_id, received_at, plan_sha256}`). Where the spec recommends the seller emit such a receipt, it is delivered as a signed webhook using the same `adcp_use: "request-signing"` key purpose — not on the synchronous reply that acknowledged the inbound governance attestation. + +### The request-the-webhook pattern + +If you genuinely need an attestable artifact from a tool that today returns it synchronously, the spec-supported path is to structure the tool to emit a signed webhook carrying the canonical version, and treat the synchronous reply as transport-only acknowledgement. The buyer registers a webhook on the request; the seller delivers the durable artifact via that webhook with `adcp_use: "request-signing"` (deprecated `webhook-signing` keys are still accepted during the compatibility window). Verification is uniform with every other at-rest seller-to-buyer message, no new specialism, no new grader. + +Some 3.x tools that today return durable artifacts synchronously (e.g., `acquire_rights` returning `rights_constraint` and `generation_credentials` on the synchronous reply, or any tool whose seller-side receipt is currently delivered inline) are candidates to either restructure under this pattern or accept that their durable-integrity path is the webhook variant — not a future synchronous-response signature. + +This decision is the resolution of [#3737](https://github.com/adcontextprotocol/adcp/issues/3737); revisitable in 4.0 if the threat model evolves (e.g., a transport pattern emerges where a synchronous reply carries durable state that does not also flow through a webhook). + +## What to verify before going live + +If you are approving an AdCP deployment — as a brand CISO, a security architect at a publisher, or the IT lead at an agency — these are the questions to ask your team (or your vendor). Each maps to one of the layers above. + +### Identity + +- [ ] How is the calling agent authenticated? (RFC 9421 signed requests, mTLS, or Bearer/API key — not a header field, not `iss`. For mutating / financial operations, plan the migration off Bearer before the 3.1 sunset — see [Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#authentication-method).) +- [ ] Where are tokens stored? (KMS / secret manager — not files, not env vars at rest) +- [ ] Is the rotation cadence right-sized to blast radius and documented? (≤24h is a reasonable default for write-capable tokens; tighter windows are appropriate for tokens that commit spend at scale or cross organizational boundaries.) +- [ ] What is the revocation path, and who can execute it in under an hour? + +### Isolation + +- [ ] Is agent/account isolation enforced at the database layer (row-level security), not just in application code? +- [ ] Do error messages leak existence across agents or accounts? ("Not found" for both "doesn't exist" and "exists but not yours") +- [ ] Are idempotency keys, session IDs, and governance tokens scoped per authenticated agent, never shared across the tenant boundary? + +### Idempotency + +- [ ] Is `capabilities.idempotency.replay_ttl_seconds` declared, and does the declared value match the implementation's actual cache retention? +- [ ] Does the implementation reject missing or malformed keys with `INVALID_REQUEST` before touching business logic? +- [ ] Is the idempotency cache shared across instances (so a restart doesn't allow a silent double-execution)? +- [ ] Are successful responses cached? (Errors must not be cached, or the system locks buyers out for their TTL.) + +### SSRF discipline + +- [ ] Does every outbound fetch to a counterparty URL (webhooks, JWKS, adagents.json, reporting buckets) run the full 6-point check: HTTPS-only, reserved-IP deny list, IP pinning, no redirects, size and timeout caps, suppressed error detail? +- [ ] Is the reserved-IP deny list enumerated from an authoritative source (IANA, cloud-provider documentation) and reviewed each time you add a new cloud provider or region? See the [implementation reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) for the current enumeration. + +### Governance verification + +- [ ] If this agent accepts `governance_context`, does it run all 15 verification steps or reject? +- [ ] Is the revocation list polled on the declared cadence with a documented fetch-failure safe default? +- [ ] Are JWKS caches bounded above by the revocation polling interval? + +### Auditability + +- [ ] Is the full governance token persisted verbatim (including the envelope it arrived in) for the retention period? +- [ ] Can an auditor query by `jti`, `plan_id`, or authenticated agent identifier and reconstruct the full chain of custody? +- [ ] Are logs append-only and tamper-evident (e.g., object storage with legal hold, not a mutable table)? + +### Operational readiness + +- [ ] Is there a runbook for: compromised credential revocation, webhook secret rotation, governance key rotation, incident communication to counterparties? +- [ ] Is there monitoring for: `IDEMPOTENCY_CONFLICT` rate spikes (probing attacks), failed governance verifications (spoofing attempts), SSRF rejections from a single counterparty, unusual cross-agent or cross-account access patterns, 401/403 spikes from a single peer? +- [ ] Has the team tabletopped at least one of: credential theft, governance key compromise, cross-tenant data leak, prompt-injection-driven credential exfiltration? +- [ ] Is there a documented DR/RPO target for the idempotency cache specifically (not just the application database)? The cache is correctness-critical, not just performance-critical. +- [ ] What is the penetration-test cadence, and does the scope include the MCP and A2A surfaces (not only REST)? + +### Data handling and subprocessors + +- [ ] Is there a documented subprocessor list for the agent's data flow, and does it include the LLM providers the agent uses? +- [ ] Is the DPA with each LLM provider explicit about whether prompts, brand assets, first-party signals, or creative metadata may be retained or used for model training? +- [ ] Is data residency configurable to meet EU / UK / other regional requirements, and is the configuration visible in the agent's capabilities or contract? +- [ ] Is log retention aligned with both forensics needs (90 days minimum for security logs) and privacy obligations (limits on PII retention)? The two can conflict; the runbook should name the decision. +- [ ] If the agent is an LLM-powered planner, is there a sandbox model for tool calls arising from prompts authored from untrusted text (briefs, user chat, creative metadata)? What egress controls limit which URLs / which tools the agent can reach from within a given prompt context? + + +**On using this checklist.** Internal use or under NDA is fine. Publishing a fully-answered copy externally — especially one with specific "no" answers — gives adversaries a map of which controls a vendor hasn't invested in. Treat a completed checklist as reconnaissance-sensitive. + + +## Where humans stay in the loop + +Security in agentic advertising is not an argument for removing humans — it's an argument for placing them where they have the most leverage and the least latency cost. AdCP's [Embedded Human Judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) principles specify five load-bearing places: + +1. **Intent setting** — humans define campaign goals, audiences, and budget envelopes before any agent acts. +2. **Boundary setting** — humans define the policies, constraints, and thresholds the agent must operate within. Plan-level `audience_constraints` and governance policies are machine-enforceable expressions of human judgment. +3. **Exception handling** — when governance returns `conditions` or `denied`, or when a `TERMS_REJECTED` lands, the decision escalates to a human by design. +4. **Override authority** — humans can pause, cancel, or modify an active buy at any time. The protocol's lifecycle tasks (`pause`, `resume`, `cancel`, `update_media_buy`) are explicit about which states accept which interventions. +5. **Audit and accountability** — every spend commitment produces a signed, replay-proof trail a human can inspect after the fact. + +A useful reading: the security controls on this page defend the *boundary* the humans set. They do not replace the humans. + +## What AdCP does not do in 3.0 + +Knowing what a protocol doesn't do is part of evaluating it. The canonical, maintained list lives at [**Known Limitations**](/dist/docs/3.2.0-beta.4/reference/known-limitations) and spans security, privacy, commerce, authentication, governance, and conformance. The security-relevant items it covers include: no end-user authentication, no protocol-level breach-notification SLA or CVD policy, no protocol-level PII transport, no LLM prompt-injection guarantee, no data-residency mechanism at the protocol layer, no OAuth 2.1 normative requirement, no general-purpose synchronous RPC response signing — designated-task payload envelopes (`verify_brand_claim` family) excepted (see [What gets signed](#what-gets-signed--and-what-doesnt) above), no cross-currency buy support, no protocol-level delivery-dispute flow, and no in-protocol payment or settlement. + +None of these are hidden. Each is a visible edge of the specification and a candidate for future work. + +## Trust anchors and the key-discovery gap + +The identity, governance, and pointer-file layers above all rest on the same hidden assumption: that the public keys verifying signatures can be discovered honestly. In 3.0, that discovery path is counterparty-rooted in every case: + +- **RFC 9421 buyer keys** — JWKS fetched from the buyer agent's own domain or `.well-known` path. +- **Governance JWS keys** — JWKS fetched from the governance agent's own domain. +- **Agent signing keys** — operator-attested through `brand.json` `agents[].jwks_uri`, with publisher `adagents.json` `authorized_agents[].signing_keys[]` pins for mutating seller authorizations. +- **`adagents.json` authoritative pointers** — fetched from the publisher's own `/.well-known`, with the pointer-swap threat documented in [managed-networks security](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations). + +Every one of those steps trusts the counterparty's own infrastructure as the root of trust. TLS does not close this — the certificate is issued to the hostname the attacker has compromised, so it verifies clean. An attacker who controls a counterparty's CDN, DNS, or `/.well-known` path can therefore serve attacker-controlled keys, and every signature made with those keys will verify against them. + +What 3.0 actually delivers is **trust-on-first-use with continuity**: verifiers cache the first-seen keys, pin rotations against the prior key set, and alert on unexpected changes. This raises the bar — an attacker must either control the counterparty origin for long enough to look routine, or swap keys at onboarding before the victim has cached anything — but it does not close the gap. It is an honest description of the 3.x posture, not a claimed cryptographic root of trust. + +### What raises the bar in 3.x + +Implementers SHOULD layer independent attestation sources rather than rely on any single origin. Each control below converts a silent key-swap into a detectable event within a bounded window: + +- **Multi-source cross-check.** When a signing key appears in `brand.json`, verify it matches the key used on signed agent responses *and* a DNS-based attestation (a TXT record at the publisher's apex binding the key fingerprint to the domain, rotated in lock-step with the key material). Compromise of the HTTPS origin alone does not also forge DNS; an attacker must break both surfaces simultaneously. +- **Publication-delay / continuity windows.** Treat a never-before-seen key as provisional for a declared period (24–72 h) during which high-value operations continue to be verified against the previously cached key, and alerts fire on the rotation. A legitimate rotation survives this with operator acknowledgement; an attacker-injected key surfaces before any spend moves. +- **Out-of-band key-change signalling.** Publishers, governance agents, and buyer agents SHOULD announce key rotations through channels the counterparty origin cannot forge — vendor status pages, ads.txt cross-references, partner announcement lists, direct operator notification. The protocol does not prescribe the channel; the requirement is that a channel exists and the verifier watches it. +- **Rotation-validity discipline.** Keys past their declared rotation window are an attack surface, not a preference signal. Verifiers SHOULD reject signatures made with a key past its declared validity rather than silently falling back to older cached material, and SHOULD refuse to accept a rotation that sets `not_after` in the past as a legitimate rollover. + +These controls do not substitute for a root of trust. They make a key-swap attack detectable and costly rather than silent and cheap — which is the security posture 3.x can honestly deliver. + +### What AdCP 4.0 needs: a centralized publisher-key registry + +The permanent fix is a centralized registry analogous in spirit to Certificate Transparency for TLS or `sellers.json` for the ad-tech identity layer. The minimal protocol-relevant properties: + +1. **Publisher enrollment.** Each publisher, governance agent, and sales-agent domain registers a root verification key under its domain identity. The registry binds `{domain, root_key_fingerprint, enrolled_at}` and attests domain control through a documented challenge (DNS, HTTPS, or equivalent). +2. **Append-only rotation log.** Rotations are appended, not overwritten. The registry publishes a transparency log so a key rotation cannot be backdated, withdrawn, or selectively served to different verifiers. +3. **Public queryability.** Buyers, sellers, and validators query the registry by domain and receive the current root-key set plus the rotation history. The registry is a discovery index, not a signing authority — it never holds private keys and cannot issue signatures on any party's behalf. +4. **Governance-neutral operation.** The registry is operated by an industry body with published governance, documented key-ceremony transparency for the registry's own signing keys, and a succession plan independent of any single vendor. +5. **Backwards-compatible wire format.** Keys in the registry surface through the same JWKS format that verifiers already consume. A 3.x verifier's switch to registry-anchored trust is a configuration change (point JWKS discovery at the registry-index URL), not a new protocol surface. + +This is **explicitly not a 3.x requirement.** It is logged as a 4.0 track so implementers who build the in-protocol attestation surfaces today — `brand.json` `agents[].jwks_uri`, publisher `adagents.json` `authorized_agents[].signing_keys[]`, `authoritative_location`, signed governance JWS — can shape their data so a later registry lookup can anchor it without protocol breakage. Specifically, implementers SHOULD keep key declarations at stable single-purpose URIs, SHOULD carry key fingerprints alongside full key material (the registry can only anchor what it can unambiguously identify), and SHOULD NOT conflate signing keys with transport keys. + +Until the registry exists, the multi-source controls above are the 3.x normative baseline. They are the difference between "an attacker who compromises one counterparty origin gets silent authority" and "the compromise produces a detectable signal within a bounded window." 3.x promises the second; it does not promise the first. + +## What is outside the protocol + +AdCP specifies the wire. It does not specify — and cannot substitute for — any of the following: + +- **Secret storage.** Use KMS, Vault, Secrets Manager, or equivalent. Protocol compliance does not magically protect a token sitting in a committed `.env` file. +- **Endpoint hardening.** Your agent is a service on the public internet. WAF, rate limiting, DDoS protection, TLS configuration, OS patching, dependency scanning — all on you. +- **Monitoring and incident response.** The protocol emits the signals worth watching (idempotency conflicts, governance failures, SSRF rejections). Detecting and responding to them is your operations team's job. +- **Human controls.** Approval thresholds, spend caps, pause authority — these are policy configurations inside your agent or your governance platform, not the protocol. +- **Physical and personnel security.** The usual controls over who can touch production, who holds break-glass credentials, and who can push to main. + +Think of AdCP as specifying the locks on the doors. You still own the building. + +## Further reading + +- **[Security (implementation reference)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security)** — Normative rules for HMAC, idempotency, SSRF, agent/account isolation, and governance verification +- **[Embedded Human Judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment)** — The five principles that keep humans in the loop on decisions with real consequences +- **[Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match)** — The two-call decomposition (Context Match / Identity Match) that delivers structural privacy separation at serve time +- **[Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)** — Signature format, replay windows, rotation +- **[Signed Governance Context](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context)** — The 15-step verification checklist +- **[Operating an Agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent)** — Credential management, monitoring, and incident response as operating concerns +- **[How Agents Communicate](/dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate)** — `adagents.json`, `brand.json`, and the discovery trust chain diff --git a/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities.mdx b/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities.mdx new file mode 100644 index 0000000000..9b678048ce --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities.mdx @@ -0,0 +1,80 @@ +--- +title: Known spec ambiguities +description: "Open AdCP spec gaps that affect compliance testing — with workarounds and issue links. Entries are removed as the underlying issues close." +"og:title": "AdCP — Known spec ambiguities" +--- + +This page enumerates spec gaps that currently affect storyboard conformance. Each entry covers one of three patterns: a spec `MAY` branch where vectors assert one outcome, a response field storyboards assert that the schema does not yet require, or a testing-infrastructure quirk that prevents a vector from probing through the reference SDK. + +**Entries persist until the fix ships in a tagged `@adcp/sdk` or spec release** — closing the GitHub issue is not the removal trigger, because an implementer on an SDK version that predates the fix still hits the symptom. Each entry's Workaround names the release gate when relevant. If an entry here doesn't match what you're seeing, check the GitHub issue for the latest state — the fix may have landed in a release you haven't pulled yet. + +## How to use this page + +If a storyboard fails on a behavior you believe is spec-conformant, search this page for the storyboard name or the assertion text. Each entry describes the gap, the workaround that gets you past the blocker, and the issue that tracks the fix. Entries are removed when the fix ships in a tagged release, not when the issue closes — pair this page with the linked issue and the SDK / spec release notes for the authoritative state. + +For the opposite direction — failures that are **not** in this list and do have clean fixes — see the [storyboard troubleshooting guide](/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting). + +## Current ambiguities + +### `check_governance` `conditions` field shape + +- **Schema**: `check-governance-response.json` defines `conditions[]` items as `{ field, required_value?, reason }` with `field` and `reason` required. The `status: conditions` status now requires `conditions` with `minItems: 1`. +- **Resolution**: [#2603](https://github.com/adcontextprotocol/adcp/issues/2603). The schema tightening lands in the protocol patch release following this entry's removal. +- **Workaround (until you pull the fix)**: emit `conditions[]` with the canonical `{ field, reason }` shape on every `status: conditions` response. Agents following the prose description already do this; the schema tightening just makes enforcement mechanical. + +### PRM required for non-OAuth agents + +- **Storyboard**: `universal/security.yaml` phases `oauth_discovery` + `mechanism_required`. +- **Gap**: the RFC 9728 / RFC 8414 probes run for every agent by default. API-key-only sandboxes were standing up fake issuer URLs to "pass" the probes, which is worse than skipping them. +- **Resolution**: [#2606](https://github.com/adcontextprotocol/adcp/issues/2606) and [#5042](https://github.com/adcontextprotocol/adcp/issues/5042) — the storyboard narrative now explicitly directs static-credential-only agents to declare `auth.api_key` or `auth.basic` in the test kit and omit PRM entirely. Optional-phase semantics make `oauth_discovery` failures non-fatal; `mechanism_required` passes via the matching static-credential path. +- **Workaround**: if your agent has no OAuth issuer, do not serve `/.well-known/oauth-protected-resource/...`. Configure your agent to accept the test kit's probe credential as valid. For Bearer agents, the default test kit (`acme-outdoor`) probes with `demo-acme-outdoor-v1`, and your agent must accept that value alongside your production key. For Basic agents, provide a test kit with `auth.basic.username`/`auth.basic.password` or `auth.basic.credentials`. This satisfies either `test_kit.auth.api_key` or `test_kit.auth.basic` and lets the matching static-credential phase run; without it the phase is skipped and `assert_mechanism` fails with `actual: []`. See the [storyboard troubleshooting guide — static-credential agent: assert_mechanism](/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting#static-credential-agent-no-auth-mechanism-contributed-assert_mechanism) for the concrete fix. + +### Idempotency missing-key probe via SDK + +- **Storyboard**: `universal/idempotency.yaml` step `missing_key/create_media_buy_missing_key`. +- **Gap**: the reference `@adcp/sdk` SDK auto-injects `idempotency_key` on mutating tasks, so a vector that tries to probe "missing key rejection" never reaches the agent with a missing key — the runner would inject one before dispatch. +- **Resolution**: [#2607](https://github.com/adcontextprotocol/adcp/issues/2607) — the step declares `omit_idempotency_key: true`, which signals the runner to skip both its own `applyIdempotencyInvariant` and the SDK's auto-inject. The request arrives at your agent without a key, letting the vector probe the rejection path honestly. +- **Workaround**: nothing required — honor the existing spec requirement (reject missing `idempotency_key` on mutating tasks with `INVALID_REQUEST` or `VALIDATION_ERROR`). + +### Response schema fields asserted by storyboards + +- **Storyboards**: `sales_catalog_driven` (catalog counts), `creative_ad_server` (pricing_options), `media_buy_seller/inventory_list_targeting` (property_list echo), `creative_ad_server` (vendor_cost required). +- **Gap**: historical drift between what storyboard vectors assert and what the response schemas require. +- **Resolution**: [#2604](https://github.com/adcontextprotocol/adcp/issues/2604). Audit complete: + - `sync-catalogs-response.json` now requires `item_count` on catalog entries when `action` is `created`/`updated`/`unchanged`. + - `property_list` / `collection_list` echo: already canonical via `packages[].targeting_overlay`. + - `list-creatives-response.json` `pricing_options`: already canonical (array, `minItems: 1`, items require `pricing_option_id`). + - `report-usage-request.json` `vendor_cost`: already required. +- **Workaround**: emit `item_count` on every non-failed/non-deleted catalog entry. Conformant agents already do this; the schema tightening catches gaps at `response_schema` validation. + +### Rights-holder vs advertiser `brand_id` in brand protocol + +- **Storyboard**: `specialisms/brand-rights/index.yaml` phases `identity_discovery` + `rights_search`. +- **Gap**: `get_brand_identity.brand_id` identifies the advertiser (e.g., `acme_outdoor`); `get_rights.brand_id` scopes the search to a specific rights-holder brand (e.g., talent like `daan_janssen`). Same field name, different entities — before the #2627 fix the storyboard threaded the advertiser id through to the rights-holder filter, and a conformant agent either returned empty rights (fail) or added a "return all when no match" fallback (masking bugs). +- **Resolution**: [#2627](https://github.com/adcontextprotocol/adcp/issues/2627) — the storyboard now sends `buyer_brand` (advertiser for compatibility filtering) and omits the rights-holder `brand_id` filter so the agent returns its full catalog. +- **Workaround**: treat `get_rights.brand_id` as a rights-holder filter only; populate `buyer_brand` for compatibility filtering against the buyer's `brand.json`. + +### Re-cancel error code — `NOT_CANCELLABLE` vs `INVALID_STATE` + +- **Storyboards**: `protocols/media-buy/state-machine.yaml > recancel_buy` and `scenarios/invalid_transitions.yaml > double_cancel/second_cancel`. +- **Gap**: `specification.mdx` §128 (MAY `NOT_CANCELLABLE`) and §129 (MUST `INVALID_STATE` on terminal-state updates) both applied to re-cancel of a `canceled` buy. State-machine-first implementations returned `INVALID_STATE` per §129; cancellation-first implementations returned `NOT_CANCELLABLE`. Vectors historically pinned one. +- **Resolution**: [#2617](https://github.com/adcontextprotocol/adcp/issues/2617) / [#2619](https://github.com/adcontextprotocol/adcp/pull/2619) + [#2628](https://github.com/adcontextprotocol/adcp/issues/2628) — §129 now carves out the cancellation case: when the terminal-state update IS a cancellation attempt, agents MUST return `NOT_CANCELLABLE`. Other illegal transitions (pause/resume on canceled) still return `INVALID_STATE`. Both storyboards now assert `NOT_CANCELLABLE` on re-cancel. +- **Workaround**: return `NOT_CANCELLABLE` on `canceled: true` updates to buys already in `canceled`. Return `INVALID_STATE` on pause/resume of terminal-state buys. The cancellation-specific code wins on re-cancel; the generic code wins on everything else. + +### Branch-set step grading (`peer_branch_taken`) + +- **Storyboards**: any with parallel `optional: true` phases sharing a `contributes_to:` flag. +- **Gap**: a conformant agent picks one branch (for example, immediate success); the other branch's assertion (for example, `status: pending_review`) fails because the agent took the opposite behavior. Runners before the #2629 fix surfaced this as `× (unknown step)` in the summary even though the `any_of` aggregate passed — implementers debugged a branch they weren't on. +- **Resolution**: [#2629](https://github.com/adcontextprotocol/adcp/issues/2629) — runners now grade non-chosen branch steps with skip reason `peer_branch_taken` (distinct from `not_applicable`, which is reserved for protocol/specialism coverage gaps). See `storyboard-schema.yaml` § "Per-step grading in any_of branch patterns" for the authoring rules and `runner-output-contract.yaml > skip_result.reasons.peer_branch_taken` for the canonical `detail` shape. +- **Workaround**: if your runner reports an unexpected branch failure, check whether a peer optional phase contributed the same `contributes_to` flag. If so, you're conformant on the branch you chose — the runner needs the #2629 update. + +### SDK request-builder overriding spec-conformant `sample_request` + +- **Storyboard**: `sales_catalog_driven` `optimization_loop/provide_feedback`, exposed via the `@adcp/sdk` compliance runner. +- **Gap**: the storyboard's `sample_request` correctly declares `performance_index`, `metric_type`, `feedback_source` per the `provide-performance-feedback-request.json` schema. But `@adcp/sdk`'s internal `request-builder.js` had a hardcoded override for `provide_performance_feedback` that replaced the payload with a non-spec `feedback: { satisfaction, notes }` shape, so conformant agents rejected with `INVALID_REQUEST` and failed the vector. +- **Resolution**: upstream [adcontextprotocol/adcp-client#689](https://github.com/adcontextprotocol/adcp-client/issues/689) + [#2626](https://github.com/adcontextprotocol/adcp/issues/2626) — remove the override and let the storyboard's `sample_request` drive the payload. +- **Workaround**: bump to an `@adcp/sdk` release that includes the adcp-client#689 fix. Until then, the `provide_performance_feedback` vector will fail on any agent that validates its requests against the spec schema. + +## When an ambiguity isn't listed + +If you're blocked on a behavior you believe the spec leaves ambiguous but it's not on this list, open an issue at [adcontextprotocol/adcp](https://github.com/adcontextprotocol/adcp/issues/new). Include the storyboard, the vector's assertion text, the conformant branch you picked, and why you believe the spec allows it. The fastest resolutions come from issues that cite the specific spec paragraph and the specific vector assertion — that's enough for a maintainer to either point you at an existing fix or confirm the gap and schedule it. diff --git a/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack.mdx b/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack.mdx new file mode 100644 index 0000000000..38939c0937 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack.mdx @@ -0,0 +1,340 @@ +--- +title: The AdCP stack +sidebarTitle: SDK stack reference +description: "Layered reference for AdCP implementers. The five layers (L0 wire, L1 signing, L2 auth, L3 protocol semantics, L4 business logic), what each layer contains, what an SDK at each layer should provide, how SDKs absorb version drift, and what 'from scratch' actually signs you up for." +"og:title": "AdCP — The AdCP stack" +--- + + +**AdCP spans the transaction/control plane and its own serve-time execution layer.** Planning, deal creation, creative submission, and reporting use AdCP's MCP/A2A task surfaces. Impression-time activation of pre-negotiated packages uses [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match), while auctions and rendering still sit in adjacent protocols such as RTB and VAST. Most AdCP task latency budgets are seconds and often async-by-design; TMP is the AdCP surface built for millisecond serve-time decisions. + + +The first question when you sit down to build an AdCP agent is **where you want to spend your engineering time**. By the time a buyer's `create_media_buy` reaches your business logic, it has crossed five distinct layers — wire format, signing, auth, protocol semantics, and finally what you actually want to build. The lower you start, the more of the stack you own. + +This page lays out those layers, what an SDK provides at each one, and what's left for you to write either way. Use it to pick the entry point that fits your team — whether that's letting an SDK absorb the protocol surface so you can focus on the L4 logic that differentiates your agent, or going lower because you have a specific reason to. The cost decompositions further down ([per-component L3 breakdown](#why-sdks-matter-more-in-adcp-than-in-eg-http), [version-adaptation](#version-adaptation)) are there to make either choice deliberate. + +Two notes on framing before the layers: + +- **The protocol surface has grown.** AdCP 3.0 added [a substantial L3 floor](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0) — mandatory idempotency, published lifecycle state machines, the conformance test surface, RFC 9421 signatures as a baseline, expanded error catalog. If you last evaluated SDKs against an earlier version, the line between "what the SDK does" and "what I'd write myself" has moved. +- **AdCP looks like a thin protocol from the outside.** From the inside it has more L3 (state machines, idempotency, async-task contract, error semantics, conformance) than implementers tend to expect on a first read. The decompositions on this page exist so the L3 estimate is visible up front. + +Audience: AdCP implementers in any language — whether you're building an agent, authoring an SDK, or evaluating one. + +## The five layers + +The same five layers exist on both sides of an AdCP conversation — **agent (server)** and **caller (client)**. The work is asymmetric, though: an agent **enforces** the protocol (state machines, idempotency, error semantics, conformance surface, webhook emission), while a caller **consumes** it (reads state, supplies idempotency keys, handles errors, receives webhooks). L0 (wire) and L1 (signing) are mostly symmetric; L2 (auth) and especially L3 (protocol semantics) are where the surface diverges. L4 exists on both sides, but it's a different shape — the agent's L4 is its inventory and decisioning, the caller's L4 is its planning and buying logic. + +When this page describes a layer in agent-shaped terms, look for the *Client side* note at the end — it names the (typically smaller) caller-side surface. Most of the per-page cost commentary, the L3 person-month estimates, and the conformance discussion all describe the server side; building a caller is meaningfully lighter at L2–L3 because most of the work is consuming the protocol, not enforcing it. + +**Caller-only?** Skim the *Client side* notes on each layer below, then jump to [Server vs client at each layer](#server-vs-client-at-each-layer) for the cost comparison. + +```mermaid +%%{init: {"flowchart": {"htmlLabels": true, "wrappingWidth": 9999}, "themeVariables": {"fontSize": "14px"}}}%% +flowchart TB + subgraph yours["yours, always"] + L4["L4 — Business logic
Inventory forecasting · pricing · creative review · upstream ad-server calls
(GAM / FreeWheel / Kevel / your decisioning engine)
The agent's competitive surface — what makes your agent yours"] + end + + subgraph sdk["what an AdCP SDK provides"] + direction TB + L3["L3 — Protocol semantics
Lifecycle state machines · idempotency · error catalog · transition validation
Async-task contract · webhook emission · conformance surface · response envelope"] + L2["L2 — Auth & registry
Agent identity verification · brand resolution · AAO bridge
Multi-tenant account resolution · principal scoping · sandbox-vs-live routing"] + L1["L1 — Identity & signing
RFC 9421 HTTP message signatures · public-key registries
Signature verification · replay-window enforcement · key rotation"] + L0["L0 — Wire & transport
JSON-over-HTTP framing · MCP message envelopes · A2A SSE streams
JSON schema validation · language-native type generation"] + L3 ~~~ L2 + L2 ~~~ L1 + L1 ~~~ L0 + end + + L4 ~~~ L3 +``` + +### L0 — Wire & transport + +What it does: takes protocol bytes off the wire and turns them into typed in-memory values. Schema validation catches malformed payloads at the door. + +What's in it: + +- HTTP routing (or stdio for MCP-over-stdio). +- MCP message framing (`tools/call` envelope, JSON-RPC 2.0). +- A2A SSE event streams. +- JSON schema validation against the spec's `*.json` files (see [Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas)). +- Type generation: producing language-native types from the spec's schemas, so application code is statically checked. + +If you only have L0, you have a parser. The buyer's `create_media_buy` is a typed object on your stack — and you have to do everything else yourself. + +*Client side:* same primitives, mirror direction. The client serializes outbound requests against the same schemas and consumes responses through the same type-generation pipeline. L0 is essentially symmetric. + +### L1 — Identity & signing + +What it does: cryptographically verifies that the request came from who the headers claim it did, and that the body wasn't modified in transit. See [Security model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) and the [implementation profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). + +What's in it: + +- RFC 9421 HTTP message signatures (`Signature-Input`, `Signature` headers). +- Public-key resolution from agent registries (or operator-published JWKS). +- Signature verification against the canonicalized request. +- Replay-window enforcement (`created` / `expires` parameters). +- Key rotation: handling `keyid` changes without dropping in-flight requests. + +If you have L0+L1, you know who's calling you. You still don't know *what* they're allowed to do. + +*Client side:* signs outbound requests with its own key; verifies webhook callbacks from the agent. Same RFC 9421 + replay-window + key-rotation primitives, just one inbound path (webhooks) instead of every request. + +### L2 — Auth & registry + +What it does: turns a verified identity into a scoped principal — which buyer, which brand, which advertiser account, which sandbox-vs-live tier. See [Accounts](/dist/docs/3.2.0-beta.4/accounts/overview) and [Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent). + +What's in it: + +- Agent registry lookup (resolving agent metadata from a published [agent card](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent)). +- Brand resolution: mapping the requesting agent to a buyer brand / advertiser identity via [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol). +- AAO ([AgenticAdvertising.org](https://agenticadvertising.org)) bridge: resolving an agent's member org, AAO Verified badges, and registry visibility — see [Registering an agent](/dist/docs/3.2.0-beta.4/registry/registering-an-agent) and [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified). +- Multi-tenant account resolution: the same wire request maps to different accounts depending on the principal. +- Sandbox-vs-live account flagging — see [Sandbox](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox). +- Permission scoping: which AdCP tools this principal is allowed to call. + +If you have L0+L1+L2, you have a verified, scoped principal asking to do something. You still don't know if the *something* is legal in the current state. + +*Client side:* a small subset. The client publishes its own identity (agent card, brand domain), looks up the agent it's calling via the registry, and presents its credentials. There's no multi-tenant routing, no principal scoping, no sandbox/live boundary to enforce — the client *is* the principal, and chooses which agent to talk to. + +### L3 — Protocol semantics + +What it does: enforces what AdCP *means*. The wire shape is well-formed (L0); the caller is authentic (L1) and authorized (L2); now: is the request legal given the current state of the world? + +What's in it: + +- **Lifecycle state machines** — `MediaBuy` ([reference](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle)), `Creative`, `Account`, `SISession`, `CatalogItem`, `Proposal`, `Audience`. Each with legal edges defined by the spec. +- **Transition validation** — enforce the legal edges per resource; emit `NOT_CANCELLABLE` for cancel-attempts against a state that forbids it; `INVALID_STATE` for other illegal moves. The cancellation-specific code takes precedence over the generic one whenever the attempted action is a cancel. +- **Idempotency** — `idempotency_key` required on every mutating tool; same key replays the cached response within TTL; cross-payload reuse fails with `IDEMPOTENCY_CONFLICT` (with no payload echo, per the stolen-key read-oracle threat model). See the [idempotency profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). +- **Error code catalog** — codes with recovery semantics (`transient` / `correctable` / `terminal`). Choosing the right code is part of the spec contract. See [Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). +- **Async-task contract** — tools that don't complete synchronously return a `task_id`; clients poll or receive webhook callbacks; the task's terminal artifact carries the original tool's response shape. See [Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). +- **Webhook emission** — state changes notify subscribed buyers, with retry, idempotency, and signature. See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). +- **Conformance test surface** — `comply_test_controller` (sandbox-only) exposes `seed_*` / `force_*` / `simulate_*` so storyboards can drive state deterministically. See [comply_test_controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) and [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance). +- **Response envelope** — `context`, `task_id`, `status` field, error envelope shape, `adcp_version` echo, capability advertisement. + +If you have L0+L1+L2+L3, you have a complete AdCP protocol implementation. You still haven't done any business logic. + +*Client side:* the consumer-side mirror, which is much smaller. The client *reads* state machines (handles each terminal status correctly) rather than enforcing transitions. It *supplies* `idempotency_key` on retries rather than maintaining the cache. It *classifies* error codes by recovery semantics (`transient` → retry, `correctable` → fix and resubmit, `terminal` → don't retry) rather than choosing the right one to emit. It *polls or receives* async-task results and webhook callbacks rather than emitting them. There's no `comply_test_controller` surface to expose, and no conformance bar to certify against on the consumer side. The L3 person-month estimate later on this page is server-side; client L3 is weeks of handler glue, not months. + +### L4 — Business logic + +This is what makes your agent yours. + +What's in it: + +- Inventory forecasting against your real ad server. +- Pricing logic, deal terms, contract semantics. +- Creative review policy (brand safety, format compliance). +- Upstream calls to GAM / FreeWheel / Kevel / Yahoo / your in-house decisioning engine. +- Optimization, pacing, fraud detection — anything that differentiates your inventory from a competitor's. + +This is the layer an AdCP SDK leaves to you, **and only this layer**. + +*Client side:* L4 is also yours, just a different shape. The caller's L4 is media planning, budget allocation, target-audience selection, deal evaluation, reporting ingest — whatever your buy-side application does with the agents it calls. See [Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent) for the spec-side reference. The asymmetry runs through the whole stack: agent L4 differentiates *inventory*, caller L4 differentiates *demand*. + +## Server vs client at each layer + +The same five layers; very different cost. Use this when sizing the work for a caller-only build vs. an agent build. + +| Layer | Agent (server) | Caller (client) | +|---|---|---| +| **L4** | Inventory, pricing, creative review, ad-server integration. What differentiates you as a seller. | Planning, budgeting, agent selection, reporting consumption. What differentiates you as a buyer. | +| **L3** | **Enforces** state machines, idempotency, error semantics, conformance test surface, webhook emission. ~3–4 person-months. | **Consumes** the same. Reads state, supplies idempotency keys, classifies errors, polls/receives async + webhooks. Weeks of handler glue. | +| **L2** | Multi-tenant principal resolution, sandbox/live boundary, brand resolution, permission scoping. | Publishes own identity; looks up the agent it's calling. Much smaller surface. | +| **L1** | Verifies inbound on every request; signs outbound webhooks. | Signs outbound on every request; verifies inbound webhooks. Same crypto, mirrored path. | +| **L0** | Receives + parses + validates against schemas. | Serializes + sends + validates against schemas. Symmetric. | + +A from-scratch caller is a weeks-long job across L0–L3 — handler glue, signing, registry lookup, response parsing — not the [3–4 person-month L3 build](#why-sdks-matter-more-in-adcp-than-in-eg-http) the agent side requires. The rest of this page concentrates on the agent side because that's where the cost lives, but the layer model and the SDK coverage matrix apply equally to a caller-only build. + +## What an SDK at each layer should provide + +Implementer-facing checklist. An SDK that claims coverage of layer L*n* should expose, at minimum, the primitives below. Adopters use this as a self-evaluation tool when picking an SDK; SDK authors use it as a build target. + +The checklist describes **server-side coverage** — the agent surface is where the bulk of an SDK's value lives. **Client-side coverage** at each layer is a subset: typed request builders + response parsers (L0), outbound signing + webhook verification (L1), agent-card publication + registry lookup (L2), state-machine *handlers* + idempotency-key generation + error-recovery classification + async-result polling (L3). A full-stack SDK ships both. + +### L0 coverage + +- Generated language-native types from the published JSON schemas (one type per request/response pair, plus shared resource types). +- A schema validator wired against the bundled schemas — so adopters can validate inbound and outbound payloads without hand-rolling the schema-loading dance. +- Transport adapters for at least one of \{MCP, A2A\}; ideally both. These typically wrap upstream protocol SDKs rather than reimplementing them. +- A schema-bundle accessor that finds the right schema files for the active AdCP version without forcing the adopter to hardcode paths. + +### L1 coverage + +- RFC 9421 message-signature signing for outbound requests. +- RFC 9421 verification for inbound requests, including replay-window enforcement on `created` / `expires` and `keyid`-based key lookup. +- A pluggable signing-provider abstraction: in-process keys for development, KMS / HSM providers for production. +- Test fixtures or a verifier-test harness so adopters can assert their signing wiring is correct without booting a full agent. + +### L2 coverage + +- An account-store abstraction that resolves an authenticated principal to a scoped account, with hooks for multi-tenant routing. +- Authentication primitives for at least API-key and bearer-token shapes, plus a way to compose them. +- Brand-resolution / agent-registry lookup (or a documented extension point if the SDK doesn't ship it natively). +- The sandbox-vs-live account flag, enforced at the SDK boundary so the conformance-test surface refuses to dispatch on production accounts. + +### L3 coverage + +- Lifecycle state-machine graphs for all spec-defined resources, with a transition-assertion primitive that emits the spec-correct error code (`NOT_CANCELLABLE` / `INVALID_STATE` / etc.). +- Idempotency cache with cross-payload conflict detection and the no-payload-echo invariant on `IDEMPOTENCY_CONFLICT` envelopes. +- Async-task store + dispatcher: tools opt into async; the SDK returns `task_id`, accepts polling, and emits the terminal artifact. +- Webhook emitter: signed, retried, idempotent. +- The conformance test surface (`comply_test_controller`), wired to drive state deterministically when the resolved account is in sandbox or mock mode (and rejected otherwise). +- Per-resource persistence primitives that handle the spec's echo contracts. +- Server-construction entry point that ties all of the above together with sane defaults. + +### L4 coverage + +Out of scope for any SDK. The adopter writes this. + +## SDK coverage varies + +Different language SDKs cover different subsets of L0–L3. There is no single SDK every implementer must use; what matters is that an implementation reaches the [conformance bar](/dist/docs/3.2.0-beta.4/building/verification/conformance) at L3, regardless of how much hand-rolling it took to get there. + +Within a given language, the full-stack SDK is the default starting point. The layered model in this doc exists to explain what you'd be reimplementing if you went lower (special-purpose proxies, custom-stack integrations) or ported the SDK to a new language — not to suggest there's a meaningful win in starting lower for a typical agent build. + +### Current SDK coverage + +**Python and TypeScript are the first-class languages.** Both are committed to full L0–L4 coverage — TypeScript is GA across L0–L3 today; Python is finishing its 4.x cycle to the same bar. **Go** is moving in the same direction, with L0 and partial L1 in active development. **Other languages** are not on the official roadmap today, but we're open to community-maintained ports — if you want to help, see the [Builders Working Group](/dist/docs/3.2.0-beta.4/community/working-group) and the [Slack community](/dist/docs/3.2.0-beta.4/community/joining-slack). + +Snapshot of what each official SDK ships today. Refresh this table on SDK majors and on AdCP spec revs. + +*Last updated: 2026-05-03.* + +| SDK | Production GA | Beta / dev | L0 | L1 | L2 | L3 | +|---|---|---|:-:|:-:|:-:|:-:| +| **`@adcp/sdk`** (TS) | `6.9.0` | — | ✅ | ✅ | ✅ | ✅ | +| **`adcp`** (Python) | `3.x` | `4.x` | ✅ | ⚠️ | ⚠️ | ⚠️ | +| **`adcp-go`** | — | `v1.x` | ⚠️ | ❌ | ❌ | ❌ | + +Legend: ✅ shipped · ⚠️ partial / in flight · ❌ not yet covered. **Production GA** is the line you should pin to today. **Beta / dev** is what's in flight on the next major. `@adcp/sdk` 6.x carries full L0–L3 — adopters write L4 only. Python 3.x is the production line with full L0; the 4.x rewrite (in beta) closes L1–L3. Go ships types + transport in dev; L1–L3 in scope. See [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk) for install commands, package exports, and per-language gap detail. + +What "shipped" means at each layer is the L0–L3 checklist above — these rows should not claim ✅ until every checklist item is satisfied in the published SDK build. For coverage detail beyond this snapshot, see each SDK's repo. + +For shape comparison purposes, here are the three coverage archetypes an SDK can land in regardless of language: + +| Archetype | L0 | L1 | L2 | L3 | Adopter writes | +|---|---|---|---|---|---| +| Full-stack SDK | ✅ | ✅ | ✅ | ✅ | L4 only | +| Transport + signing only | ✅ | ✅ | ⚠️ | ❌ | L2 + L3 + L4 | +| Types-only / generated bindings | ✅ | ❌ | ❌ | ❌ | L1 + L2 + L3 + L4 | + +### Hosted implementations + +Different shape from an SDK: a **deployable agent** you run rather than a library you import. Adopters configure rather than code. Useful when you want an AdCP surface in front of an existing system without writing handler code yourself. + +| Implementation | Maintainer | Stack | Notes | +|---|---|---|---| +| **AdCP mock-server** | spec maintainers | Reference | The black-box AdCP agent storyboards run against. All language SDKs forward mock-mode traffic to it; shared infrastructure for [spec compliance](/dist/docs/3.2.0-beta.4/building/verification/conformance). | +| **Prebid SalesAgent** | [Prebid community](https://github.com/prebid/salesagent) | Python | Open-source seller-side AdCP agent. Publishers run it as their AdCP-facing implementation; hand-rolled at L0–L3 today, evolving alongside the official SDKs. | + +Hosted implementations satisfy the same L3 conformance bar that SDKs do — the spec is implementation-agnostic. The difference is operational shape: a hosted implementation is a service you deploy and configure, an SDK is code you compile into your own service. + +The choice is a tradeoff between leverage and control. A full-stack SDK ships you the most code for free but couples you to its choices. A transport-only SDK gives you maximum control but signs you up for months of L1–L3 work before you can certify. Most production adopters want the full stack with the option to swap individual layers (custom signing provider, custom account store, custom idempotency backend) — which a well-architected full-stack SDK exposes as configuration, not as a fork. + +## Where can you start? + +You can implement at any layer. The lower you start, the more you build. + +| Starting layer | What you write | What's done for you | +|---|---|---| +| L0 (from scratch) | All five layers | Nothing | +| L1 (you have a JSON-over-HTTP toolkit) | L1+L2+L3+L4 | L0 (parser, schema validation) | +| L2 (you have HTTP signatures via a library) | L2+L3+L4 | L0+L1 | +| L3 (you have an auth/registry library) | L3+L4 | L0+L1+L2 | +| L4 (you use a full-stack AdCP SDK) | L4 only | L0+L1+L2+L3 | + +A full-stack AdCP SDK lifts you to L4. You implement upstream calls. The SDK threads the protocol envelope around them. Pick one if your team's value-add is L4 differentiation; build lower if you have a specific reason — and budget for the L1–L3 scope honestly. + +See [Where to start](/dist/docs/3.2.0-beta.4/building) for a short decision page that picks an entry point based on what you're building. + +## Why SDKs matter more in AdCP than in (e.g.) HTTP + +A common comparison: *"HTTP is a protocol. People build HTTP servers from scratch all the time. Why would AdCP be different?"* + +The answer is layer L3. HTTP's protocol semantics are minimal — methods, status codes, headers. A from-scratch HTTP server can ship in a weekend with an off-the-shelf parser. + +AdCP's L3 is large: + +- **State machines** — 7 resource types with published lifecycle graphs. +- **Async tasks** — every mutating tool can be sync or async; the contract for which terminal artifact closes the task is non-trivial. +- **Idempotency** — cache, replay, conflict, TTL — all wired correctly. +- **Error catalog** — codes with recovery classification. Picking the wrong one fails [conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance). +- **Conformance test surface** — storyboards drive your state via the [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) tool. You ship a non-trivial controller surface. +- **Webhook emission** — signed, retried, idempotent. + +A from-scratch AdCP agent is **~3–4 person-months of L3 work alone**, before any L4 differentiation. The breakdown, for one senior engineer to a mock-mode conformance bar, is roughly: + +| L3 component | Honest estimate | +|---|---| +| 7 lifecycle state machines (define edges, validate transitions, emit the right `NOT_CANCELLABLE` / `INVALID_STATE` codes) | ~1 week each = **6–7 weeks** | +| Idempotency cache (cross-payload conflict detection + no-payload-echo invariant) | **1 week** | +| Async-task store + dispatcher (correct terminal-artifact contract per tool) | **1–2 weeks** | +| Error-code catalog wiring (recovery classification, code precedence) | **1–2 weeks** | +| `comply_test_controller` conformance surface (`seed_*` / `force_*` / `simulate_*`) | **1–2 weeks** | +| Webhook emission (signed, retried, idempotent, dedup-keyed) | **1 week** | +| RFC 9421 signing + verification + replay-window + key rotation (counted separately as L1, but commonly bundled in the same scope) | **2–3 weeks** | +| Integration, conformance debugging, spec re-reading | **2–3 weeks** | + +That's **~14–18 weeks**, depending on team familiarity with HTTP message-signatures and lifecycle modeling. The estimate **excludes version-adaptation work** — every spec rev that adds a tool, an edge, or an error code adds rows to a translation matrix you carry forever. SDK adopters get those for free; from-scratch implementers pay them every release. + +This is a single-engineer-to-mock-conformance estimate. **At publisher / large-platform scale, multiply by ~2× to ~3×** for SRE, security review, KMS / HSM integration with existing key infrastructure, load testing, and on-call burden — none of which is L3 spec work, all of which is real cost before the surface is production-grade. + +"From scratch" reads cheap when L0 (the wire shape) is the only layer in view. L3 is where the actual scope hides — the table above is what we'd point a team at before they commit either way. + +## Version adaptation + +Three "version" axes move at the same time, and an SDK's job is to keep them from colliding inside your business logic: + +| Axis | Example | What changes when it moves | +|---|---|---| +| **Spec version** | AdCP `2.5 → 3.0.5 → 3.1` | Wire shapes, error codes, lifecycle states, new tools | +| **SDK version** | SDK `5.x → 6.x` | API surface, ergonomics, compile-time guarantees | +| **Peer version (per call)** | Buyer at v3.0, seller at v2.5 | A single conversation crosses versions; payloads need translation | + +A from-scratch agent has to handle all three by hand. SDKs ship three concrete mechanisms so adopters don't: + +1. **Per-call spec-version pinning.** Set `adcpVersion` (or the language equivalent) on an agent; the SDK runs requests and responses through adapter modules so handler code stays on the canonical (current) shape regardless of what the peer speaks. +2. **SDK-major migration via co-existence imports.** Bumping an SDK major doesn't force a same-day rewrite — the prior major's surface remains available alongside the new entry point. Migrate one specialism at a time. +3. **Wire-level negotiation.** Every request carries `adcp_major_version`; servers declare what they support and return `VERSION_UNSUPPORTED` (a recovery-classified error) if the caller is out of range. + +Code-level recipes per mechanism live in [Version Adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation). For the spec-side rules, see [Versioning](/dist/docs/3.2.0-beta.4/reference/versioning). + +### Why this matters + +Versioning in AdCP is **continuous, not episodic**. Once 3.1 ships, you'll be talking to 3.0 and 3.1 callers simultaneously, indefinitely. Without translation adapters this is a fork in your codebase. With them it's a constructor flag. + +The spec itself has already done one of these crossings. **2.5 → 3.0** added a substantial L3 floor — see [What changed at L3 in 3.0](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0) for the canonical list. A from-scratch 2.5 agent was tractable; a from-scratch 3.0 agent is the [~3–4 person-month L3 build](#why-sdks-matter-more-in-adcp-than-in-eg-http) decomposed above. + +The from-scratch path that worked for 2.5 doesn't scale to 3.0, and 3.0 isn't where the spec stops. SDKs exist because L3 grew faster than implementers could hand-roll, and the version-adaptation surface keeps growing each release. + +## Where the work actually lives + +Five places L3 cost concentrates, in rough order of magnitude. Useful as a self-check whether you're scoping a from-scratch build or re-evaluating a hand-rolled one: + +1. **L3 is most of the work.** State machines, idempotency, error catalog, async tasks — ~3–4 person-months before any L4 differentiation. See the [decomposition](#why-sdks-matter-more-in-adcp-than-in-eg-http) for per-component weeks. +2. **Conformance is L3-driven.** Storyboards probe state transitions and error shapes (see [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance)). Without transition validators, the spec gets re-derived from test failures. +3. **Versioning compounds.** Each spec rev that adds a tool, a lifecycle edge, or an error code is a new translation row the adapter layer carries. Owning the adapter layer means owning that matrix every release. +4. **RFC 9421 + key rotation is its own project.** Signing providers, KMS integration, replay windows — real engineering, none of it L4 differentiation. +5. **The mock-server is shared infrastructure.** SDKs wire mock-mode dispatch to it for free. Hand-rolled implementations either skip mock-mode (and lose spec-compliance certification) or rebuild it. + +If you built before the SDKs covered much, this list is the input to a re-evaluation — not a verdict either way. The [migration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled) walks the swap-one-layer-at-a-time path for teams who decide a partial swap is worth it: which layer to swap first, conflict modes to watch for, which intermediate states still pass conformance. + +## What this means for compliance + +Two kinds of compliance, both shaped by the layered model: + +- **Spec compliance (L3 protocol test)** — does the implementation satisfy the AdCP wire contract? Storyboards walk the state machines, exercise the error codes, test the async-task contract. The adopter's upstream is irrelevant. Runs against **mock-mode** accounts: the agent forwards every tool call to the reference mock-server. This certifies the SDK's (or hand-rolled implementation's) L3 layer. +- **Live compliance (full-stack test, planned)** — does the actually deployed agent (adopter's L4 code against their test infra) behave correctly under storyboards end-to-end? Runs against **sandbox-mode** accounts: the adopter's code path is exercised, not the mock. This certifies that L0–L3 plus the adopter's upstream combined produce the right wire behavior. + +The reference mock-server is the **spec-compliance oracle** — a black-box AdCP agent that storyboards run against. All language SDKs forward mock-mode traffic to it over HTTP, so the reference path is shared across the ecosystem. The mock-server is SDK-independent: a hand-rolled L0–L3 implementation can pass spec compliance by routing its own mock-flavored accounts to the same mock-server and verifying storyboard pass/fail against its own L3 wire behavior. For the authority chain and triage order when a failure implicates an SDK or the mock itself, see [Mock-server authority and failure triage](/dist/docs/3.2.0-beta.4/building/verification/conformance#mock-server-authority-and-failure-triage). + +## TL;DR + +- AdCP has five layers; the spec lives at L0–L3, your agent lives at L4. +- "From scratch" means implementing L0–L3 yourself. That's a lot — see the [per-component breakdown](#why-sdks-matter-more-in-adcp-than-in-eg-http). +- A full-stack AdCP SDK lifts you to L4. You write business logic; the SDK handles the protocol. Different language SDKs cover different subsets of L0–L3; pick one that matches how much of the protocol you want to inherit — see the [coverage matrix](#current-sdk-coverage). +- **Version adaptation is an SDK feature, not an adopter project.** Per-call spec-version adapters, co-existence imports across SDK majors, and on-wire `adcp_major_version` negotiation let you talk to peers on any supported version without forking your handlers. Hand-rolled agents inherit the entire translation matrix forever. +- Compliance comes in two flavors: **spec compliance** (mock-mode, protocol-only, L3 reference test) and **live compliance** (sandbox-mode, full-stack, L0–L4 end-to-end; planned). +- If you last evaluated SDKs before 3.0, the comparison has moved — see [the L3 floor 3.0 added](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0). Re-evaluate against today's coverage, not the one you remember. diff --git a/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation.mdx b/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation.mdx new file mode 100644 index 0000000000..8f1a56a103 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation.mdx @@ -0,0 +1,314 @@ +--- +title: Version Adaptation +sidebarTitle: Version Adaptation +description: "Three version axes move at the same time when you ship an AdCP agent — spec version, SDK version, and per-peer version. SDKs ship three concrete mechanisms (per-call pinning, co-existence imports, on-wire negotiation) so adopters don't carry the translation matrix in handler code." +"og:title": "AdCP — Version Adaptation" +--- + +Three versions move at the same time when you ship an AdCP agent or client: + +| Axis | Example | What changes | +|---|---|---| +| **Spec version** | AdCP `2.5 → 3.0 → 3.1` | Wire shapes, error codes, lifecycle states, new tools | +| **SDK version** | SDK `5.x → 6.x` | API surface, ergonomics, compile-time guarantees | +| **Peer version** (per call) | Buyer at v3.0, seller at v2.5 | A single conversation crosses versions | + +Official SDKs ship three concrete mechanisms so adopters don't carry the translation matrix in handler code. This page is the recipe per mechanism. For the conceptual background see the [SDK stack — Version adaptation section](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#version-adaptation). For the spec-side rules see [Versioning](/dist/docs/3.2.0-beta.4/reference/versioning). + + +AdCP v2.5 is end of life. The v2.5 examples below describe a temporary migration bridge for existing integrations, not a supported production configuration. New integrations must use v3. + + +## Mechanism 1 — Pin the spec version per call + +Use this when you're a **client** talking to a peer that's pinned to an older (or newer beta) spec version. The SDK runs your request and the peer's response through adapter modules so your handler code stays on the canonical (current) shape. + +### Pin the version on a single agent + +JavaScript / TypeScript (`@adcp/sdk`): + +```ts +import { ADCPMultiAgentClient } from '@adcp/sdk'; + +const client = ADCPMultiAgentClient.simple( + 'https://legacy-agent.example.com/mcp/', + { + auth_token: process.env.AGENT_TOKEN, + adcpVersion: 'v2.5', // ← pin here + }, +); + +const agent = client.agent('default-agent'); +const result = await agent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442052', + buying_mode: 'brief', + brief: 'CTV inventory', +}); +``` + +Python and Go SDKs expose the same mechanism under their idiomatic call sites — see each SDK's repo. The shape is consistent: per-agent or per-call version pin, validated at construction time, with adapter modules translating to/from the canonical shape transparently. + +### Validate the version up front + +`adcpVersion` (or the language equivalent) is validated at construction time. The SDK only accepts versions whose **schema bundle ships with the build** — if the bundle isn't present (e.g., you pinned a beta channel that hasn't been synced into your installed SDK), construction throws a typed configuration error with a pointer to the schema-sync tooling. + +To see what your installed SDK actually has bundled, query the SDK's compatibility-list export — every official SDK exposes one. For the spec-side authoritative list of what each AdCP version means on the wire, see [`schemas/`](https://github.com/adcontextprotocol/adcp/tree/main/dist/schemas). + +### What the adapters actually do + +Each SDK ships per-tool adapter modules — pure shape translations (field renames, default population, structural reshaping). The SDK applies them transparently when the version pin is set; your handler sees the current shape regardless of which version the peer speaks. + +When AdCP 3.1 ships and you bump the SDK, a new adapter folder appears for the now-legacy 3.0. Your handlers don't move. + +### Same-major tool replacements + +AdCP 3.2's compact lifecycle replaces the broad `get_products`, `create_media_buy`, and `update_media_buy` facades with narrower tool names. This is not ordinary version-shape adaptation: some current operations need more than one legacy call, and one has no faithful legacy equivalent. The release manifest makes that distinction machine-readable through `legacy_fallback` on each replacement and `superseded_by` on each compatibility facade. + +| Current SDK method | Legacy peer tool | Fallback mode | Required behavior | +|---|---|---|---| +| `listProducts` | `get_products` wholesale | `orchestrated` | Translate only the representable criteria subset. A normal compact result requires a real seller-issued feed version and cache scope; exact `product_ids` require paging one stable feed until every ID is found or the feed is exhausted. 3.0 and 2.5 cannot supply the ordinary fenced result. | +| `requestProposals` | `get_products` brief | `orchestrated` | Project genuine proposals only when every canonical commercial term is present. A products-only legacy result becomes the projection-only `products_available` compatibility outcome with an actionable continuation; never fabricate a proposal or digest. | +| `refineProposals` | `get_products` refine or proposal finalize | `orchestrated` | Translate only dimensions the legacy peer represents exactly. Mint and durably map immutable successors; finalize batches require the same all-or-none hold boundary. | +| `declineProposals` | none | `none` | Throw a typed capability error before sending a call; never silently discard terminal feedback | +| `buyProducts` | `create_media_buy` explicit packages | `orchestrated` | Translate product purchases to packages without adding creatives, then materialize the accepted proposal snapshot expected by the current result | +| `acceptProposal` | `create_media_buy` proposal mode | `orchestrated` | Execute a new-buy proposal directly; amendment/cancellation proposals require an SDK-managed compatibility workflow or a typed capability error when the legacy seller cannot preserve it | +| `controlMediaBuy` | `update_media_buy` | `orchestrated` | Map only canonical operational fields and never route creative, flight, package-addition, or billing-term mutations through this adapter | + +Client SDKs SHOULD expose the current methods as their primary API and choose the peer path from `media_buy.lifecycle_tools`. A directly advertised current tool always wins. A `direct` fallback may run transparently. An `orchestrated` fallback may run transparently only when the SDK ships a handwritten adapter that preserves the current tool's result completeness, terminal state, atomicity, and idempotency semantics; the manifest classification does not synthesize that state machine. In particular, SDKs adapting a direct 3.x creation MUST retain the accepted commercial snapshot locally when the legacy seller cannot return it, and MUST not pretend a legacy seller supports proposal-based amendments. Each underlying legacy mutation needs its own deterministic replay identity, and retrying the current SDK call must resume rather than restart the sequence. Otherwise the SDK MUST throw a typed `CapabilityUnsupportedError` carrying `requested_tool`, the peer's advertised tools, and `fallback_mode`. + +`orchestrated` is conditional, not a promise that every valid compact payload can +be sent to every earlier 3.x peer. Adapters MUST preflight each structured field +and fail before calling the peer when the older version has no exact +representation. They MUST preserve legacy `incomplete[]`, time-budget, and +product-pagination semantics instead of turning a partial result into complete +success. In particular, 2.5 has no wholesale-feed contract, while 3.0 has +wholesale pagination but no seller-issued feed or pricing fence. Released 3.1 +can support a normal `listProducts` projection only when the seller returns a +real scope-correct wholesale feed version and all requested criteria map +exactly. + +### Products-only brief results + +A valid 2.5, 3.0, or 3.1 brief may return useful products and no proposals. +Compact compatibility preserves that result as `products_available`. This is a +projection-only compatibility outcome: native 3.2 sellers do not emit it, and +ordinary `request_proposals` success still contains a genuine proposal. + +Its `purchase_continuation` is discriminated: + +- `listed_purchase` is available only after the coordinator re-reads the exact + selected products through a real seller-issued, account-scoped feed and + obtains its feed and pricing fences. Those seller values flow unchanged into + `buyProducts`. +- `legacy_create` routes to established explicit-package `create_media_buy` + when no truthful fence exists. It declares + `feed_version_not_atomic` and `pricing_version_not_atomic`. For AdCP 2.5 it + additionally declares `mutation_idempotency_not_guaranteed`; 3.0 and 3.1 + declare that loss when the actual peer cannot provide their mutation replay + guarantee. It fails closed unless the caller explicitly accepts every + returned loss before mutation. + +Client SDKs expose that second path through an SDK-local +`continueLegacyPurchase` operation using the generated +`CompatibilityPurchaseCoordinatorInput` type. The input carries a coordinator +idempotency key, the opaque token, the bound account, selected product IDs, the +exact accepted loss set, and the proposed source-version `create_media_buy` +payload. It is not an AdCP tool payload. The coordinator validates every +binding, exact consent, expiry, source-version request schema, and token claim +before sending only the legacy create request. Exact retries resume durable +state; crash-ambiguous mutations fail unless they can be reconciled +authoritatively. + +The coordinator never promotes products into a feed on the seller's behalf and +never synthesizes `feed_version`, `pricing_version`, a proposal, +`commercial_terms`, or `terms_digest`. A projection token may bind the observed +response to the caller, account, and selected payload, but it is not a +seller-issued atomic fence. The legacy seller still revalidates availability +and price during create. This compatibility outcome and its legacy continuation +are deprecated in 3.2 and removed in AdCP 4.0. + +In the reverse direction, a 3.2 seller advertising established +`get_products` and `create_media_buy` facades keeps products returned by a +products-only brief executable through that same legacy create facade. An +established buyer is never required to understand `products_available` or an +SDK-local continuation token. + +For every proposal revision and finalization, the adapter MUST retain a durable mapping from the current successor `proposal_id` to the legacy source ID. A later `acceptProposal` sends the mapped legacy ID to `create_media_buy` while returning and retaining the current immutable successor snapshot. The mapping is part of the adapter's replay state: losing it, reusing the source ID as the current ID, or minting a second successor on retry violates the 3.2 contract. A legacy proposal may be projected only when the adapter can source every required purchase price, resolved flight, brand, and other canonical term. Valid legacy proposals may omit those facts; the adapter returns `products_available` or a typed capability error rather than filling the gaps itself. + +Simple free-text refinement and product `include`/`omit` operations may map when +their result is a complete successor. Typed budget, CPM, impression, flight, +alternative-count, criteria-replacement, amendment, and cancellation semantics +need exact adapters or a pre-mutation failure. Legacy `more_like_this` maps to +free text only with explicit lossy consent. Legacy proposal `omit` is response +filtering and MUST NOT be interpreted as terminal `declineProposals`; no legacy +decline fallback exists. + +Released legacy `get_products` does not provide the compact tasks' required +mutation-idempotency contract. Durable local replay state is necessary but is +not sufficient when a process can crash after the seller commits and before the +adapter records the response. Unless the adapter can authoritatively reconcile +that state, it MUST fail the fallback rather than claim compact exactly-once +behavior. + +These tools deliberately retain distinct `operation_family` values. Fallback metadata describes SDK adaptation, not cross-name authorization, idempotency equivalence, task recovery, or webhook identity. A client adapter MUST be authorized for the actual legacy call; a grant for a split tool does not transfer across names. Server SDKs may implement the current lifecycle once and derive the deprecated facades for 3.x callers, but may advertise only behavior the adapter actually preserves. + +The complete version and transaction-boundary matrix is in +[`specs/legacy-compact-lifecycle-compatibility.md`](https://github.com/adcontextprotocol/adcp/blob/main/specs/legacy-compact-lifecycle-compatibility.md). + +## Mechanism 2 — Migrate SDK majors via co-existence + +Use this when you bump your SDK from one major to the next and don't want to rewrite every handler the day you upgrade. Each SDK keeps the prior major's surface available alongside the new entry point. + +### Example: `@adcp/sdk` 5.x → 6.x + +In v6.0, the v5 entry point was hard-removed from the top-level export. Existing v5 code keeps working by swapping one import path: + +```ts +// v5 code — change only the import path +import { createAdcpServer } from '@adcp/sdk/server/legacy/v5'; + +serve(() => createAdcpServer({ + name: 'My Agent', + version: '1.0.0', + // …existing v5 handler bag — unchanged +})); +``` + +Greenfield code in the same project uses the v6 entry point side by side: + +```ts +import { createAdcpServerFromPlatform } from '@adcp/sdk/server'; + +const platform = new MyPlatform(); // implements DecisioningPlatform +const server = createAdcpServerFromPlatform(platform, { + name: 'my-agent', + version: '1.0.0', +}); +``` + +Both compile, both run, both pass conformance. You migrate one handler — or one specialism — at a time. The legacy subpath is a documented co-existence path, not a deprecation warning. + +Other-language SDKs follow the same pattern: prior-major surfaces remain importable from a versioned subpath alongside the current entry point. Check each SDK's release notes for the specific import paths. + +### When to actually migrate + +Stay on the legacy surface as long as it keeps compiling and passing [conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance). Migrate a specialism when you want the new features (compile-time specialism enforcement, capability projection, idempotency / signing / async-task / status-normalization pre-wiring on greenfield code). There's no rush. + +## Mechanism 3 — Wire-level negotiation + +Use this when you're a **server** and you want to be explicit about which spec versions you accept. + +### Declare what you support + +`supported_versions` (release-precision strings) and/or `major_versions` go on your agent's capability declaration. Use release-precision strings — `'3.0'`, `'3.1'` — not the legacy aliases (`'v2.5'`, `'v3'`) used for client-side pinning. A 3.x server with no v2.5 handler logic should not declare `'v2.5'` here — its 2.5 callers go through *client-side* adapters at the buyer end, not the server's accepted-version set. If you want to surface your deployment's patch build for incident triage, use the `build_version` capability field — not `supported_versions`. + +Example with `@adcp/sdk` (lower-level handler-bag API): + +```ts +import { createAdcpServer } from '@adcp/sdk/server'; + +const server = createAdcpServer({ + name: 'My Agent', + version: '1.0.0', + capabilities: { + major_versions: [3], + supported_versions: ['3.0', '3.1'], + // …other capability fields + }, + // …handlers +}); +``` + +The union of `supported_versions` (parsed to majors) and `major_versions` defines the seller's accepted set on inbound `adcp_major_version` / `adcp_version` claims. See [Versioning — version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) for the spec rules and the bidirectional negotiation flow introduced in 3.1. + +### What happens on a mismatch + +If a buyer's request carries an `adcp_major_version` (or `adcp_version`) that isn't in the accepted set, the SDK returns a `VERSION_UNSUPPORTED` error envelope. The envelope echoes the seller's `supported_versions` so the buyer can downgrade their pin without an out-of-band lookup. See [VERSION_UNSUPPORTED error data](/dist/docs/3.2.0-beta.4/reference/versioning#version-unsupported-error-data) for the envelope shape. + +### Buyer side: two surfaces + +There are two places version mismatch can surface on the client, and they fire in different conditions: + +**1. Pre-flight typed exception.** When the client already has the peer's capabilities cached and knows up front that the call won't go through, the SDK throws a typed `VersionUnsupportedError` (or language equivalent) *before* sending the request. Catch it from the call site: + +```ts +import { VersionUnsupportedError } from '@adcp/sdk'; + +try { + const result = await agent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442053', + buying_mode: 'brief', + brief: '…', + }); +} catch (err) { + if (err instanceof VersionUnsupportedError) { + // peer doesn't support this call at the pinned version — + // re-pin adcpVersion or switch agents + } + throw err; +} +``` + +**2. `VERSION_UNSUPPORTED` envelope from the wire.** When the mismatch is only detected on the server side (e.g., the buyer's `adcp_major_version` parses different than the buyer's `adcp_version` string), the response carries a typed `VERSION_UNSUPPORTED` error envelope that echoes the seller's `supported_versions`: + +```ts +const result = await agent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442054', + buying_mode: 'brief', + brief: '…', +}); + +if (!result.success && result.adcpError?.code === 'VERSION_UNSUPPORTED') { + const supported = result.adcpError.details?.supported_versions ?? []; + // pick a version you also support, then re-issue with adcpVersion pinned +} +``` + +`VERSION_UNSUPPORTED` is recovery-classified `correctable` — clients that handle it programmatically retry against a supported version. + +This is the third mechanism rather than a fallback to the first: negotiation tells you *what's possible*; per-call pinning tells the SDK *which one to use*. + +## Putting it together + +A supported multi-version production setup, with an optional migration-only bridge for an end-of-life v2.5 peer: + +1. **Server**: declare `supported_versions: ['3.0', '3.1']` in capabilities. The SDK accepts both on the wire and returns `VERSION_UNSUPPORTED` to anyone outside the set. (Only declare a version your handlers actually satisfy.) +2. **Client (per peer)**: pin `adcpVersion` to a supported release based on what the registry or peer's capabilities advertise. Use `'v2.5'` only as a short-lived migration bridge for an existing end-of-life peer; the client-side adapters translate its wire shape so your application code stays on the current spec. +3. **SDK upgrades**: bump the SDK on your schedule; switch to the new entry point per specialism over time; keep the rest on the legacy import until you're ready. + +The combined effect: **one handler codebase, three version axes, no fork.** + +## What this saves you from building + +A from-scratch agent has to: + +- Maintain a translation matrix between every spec version it claims to support, and update it every time a release ships. +- Hand-roll API stability across its own internal refactors. +- Implement the negotiation handshake (`adcp_major_version` parsing, `adcp_version` cross-checks, `VERSION_UNSUPPORTED` envelope shaping with the supported-versions echo). +- Keep its conformance test surface in sync as new versions ship. + +Each of these compounds at every spec revision. SDKs absorb them so your team's effort goes into L4 differentiation, not into versioning plumbing. + +## What changed at L3 in 3.0 + +If you're scoping a hand-rolled agent against today's spec, the L3 surface added with AdCP 3.0 is the largest delta from 2.5. Most of what an SDK does at L3 didn't exist as a published primitive before 3.0: + +- **Mandatory idempotency** — `idempotency_key` required on every mutating tool, with the `replayed: true` / `IDEMPOTENCY_CONFLICT` / `IDEMPOTENCY_EXPIRED` semantics declared on `get_adcp_capabilities`. See [Idempotency on Calling an agent](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent#idempotency-replay-vs-new-operation). +- **Published lifecycle state machines** — seven resource types (`MediaBuy`, `Creative`, `Account`, `SISession`, `CatalogItem`, `Proposal`, `Audience`) with legal-edge enforcement and the `NOT_CANCELLABLE` / `INVALID_STATE` precedence. +- **Conformance test surface** — [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) (sandbox-only) so storyboards drive state deterministically. Replaces ad-hoc per-seller test endpoints. +- **RFC 9421 signatures as a baseline** — optional in 3.0, mandatory under AAO Verified. Replaces the loose-bearer-token posture of 2.5. +- **Expanded error catalog with recovery classification** — 18 standard error codes with `transient` / `correctable` / `terminal` recovery semantics. Hand-rolled 2.5 agents typically returned unstructured error strings. +- **Async-task contract** — every mutating tool can be sync or async; the contract for which terminal artifact closes the task is specified. +- **Webhook signing** — push notifications signed with the same RFC 9421 profile as outbound requests; replay-window + retry semantics specified. + +For the full 3.0 changelog (protocol-wide, not just L3), see [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3). For the migration path, see [Migrate from a hand-rolled agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled). + +A from-scratch 2.5 agent was tractable; a from-scratch 3.0 agent is the [3–4 person-month L3 build](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#why-sdks-matter-more-in-adcp-than-in-eg-http) decomposed in the SDK stack reference. SDKs exist because L3 grew faster than implementers could hand-roll. + +## See also + +- [The AdCP stack](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) — layered architecture reference +- [Where to start](/dist/docs/3.2.0-beta.4/building) — decision page +- [Versioning](/dist/docs/3.2.0-beta.4/reference/versioning) — spec-side version rules +- [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) — protocol-wide 3.0 changelog +- [Migrate from a hand-rolled agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled) — when adopting a stack with mid-flight buyers on different spec versions diff --git a/dist/docs/3.2.0-beta.4/building/index.mdx b/dist/docs/3.2.0-beta.4/building/index.mdx new file mode 100644 index 0000000000..017dbd0d0c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/index.mdx @@ -0,0 +1,96 @@ +--- +title: Building with AdCP +sidebarTitle: Overview +description: "Single decision page for AdCP implementers. Pick the right entry point — caller, agent, or migration — based on what you're building and how much of the protocol you want to inherit." +"og:title": "AdCP — Building with AdCP" +--- + +You're about to write AdCP code. The first decision is **where you want to spend your engineering time** — letting an AdCP SDK handle the protocol surface so you focus on what makes your agent or caller yours, or going lower. + +This page picks an entry point. The [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) is the reasoning. + +## The five layers + +Every AdCP request crosses five layers between the wire and your business logic. SDKs absorb L0–L3; **L4 is the part you write either way.** + +```mermaid +%%{init: {"flowchart": {"htmlLabels": true, "wrappingWidth": 9999}, "themeVariables": {"fontSize": "14px"}}}%% +flowchart TB + subgraph yours["yours, always"] + L4["L4 — Business logic
Inventory · pricing · creative review · planning · buying · reporting
What makes your agent or caller yours"] + end + + subgraph sdk["what an AdCP SDK provides"] + direction TB + L3["L3 — Protocol semantics
Lifecycle state machines · idempotency · error catalog · async tasks · webhooks · conformance"] + L2["L2 — Auth & registry
Principal resolution · brand resolution · multi-tenant account routing"] + L1["L1 — Identity & signing
RFC 9421 message signatures · JWKS · replay-window · key rotation"] + L0["L0 — Wire & transport
JSON-over-HTTP · MCP envelopes · A2A SSE · schema validation · typed bindings"] + L3 ~~~ L2 + L2 ~~~ L1 + L1 ~~~ L0 + end + + L4 ~~~ L3 +``` + +Where you start determines how much of L0–L3 you own. The work is asymmetric across the two sides of an AdCP conversation: an agent **enforces** the protocol (~3–4 person-months at L0–L3); a caller **consumes** it (weeks of handler glue). The [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) decomposes each layer and the [server-vs-client comparison](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#server-vs-client-at-each-layer) makes the cost asymmetry concrete. + +## Recommended path + +For ~95% of adopters: **start at L4 with the full-stack SDK in your language.** + + + + Server side, with engineering capacity. Point a coding agent at a skill file, get a storyboard-compliant AdCP agent in 2–8 minutes (protocol layer only — see [Operating an agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent) for the full going-live scope). + + + Client side. Install the SDK, write the calls, handle async responses and errors, ingest reporting. Weeks-of-handler-glue scope, not months. + + + Small team or no engineering capacity. Self-host [Prebid SalesAgent](https://github.com/prebid/salesagent), or partner with a managed platform that runs an AdCP agent on your behalf. Configuration over code. + + + Already running an AdCP agent built before the SDKs were mature? Swap one layer at a time, with conflict modes, per-step rollback, and intermediate states that pass conformance. + + + Porting an SDK to a new language, building a special-purpose proxy, or integrating into a stack that already owns L0–L2. Read the SDK stack reference for the per-layer contract. + + + +After your first build: run [Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) to confirm conformance against the storyboards, then enroll for the [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) trust mark. + +## Two checks before you start + +**1. What's your team's value-add?** + +- **Inventory, pricing, creative review, decisioning** (agent L4) or **planning, buying, reporting** (caller L4) → start at L4. +- **You're an SDK author / language porter, building a proxy, or integrating into a stack that already owns L0–L2** → go lower. Read the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack) for what each layer must satisfy. +- **Anything else** → default to L4. See [what you write at each layer](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#where-can-you-start) before going lower. + +**2. Do you already have a working agent built before the SDKs were mature?** + +If yes: re-evaluate against [today's SDK coverage](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack#current-sdk-coverage), not the SDK you remember. The [L3 changelog from 2.5](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0) names the new floor; the [migration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled) walks the swap-one-layer-at-a-time path. + +## Cross-cutting concerns + +Things every AdCP implementation needs, regardless of starting layer: + +- **[Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas)** — schema bundles, type generation, version pinning, supply-chain verification. +- **[Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk)** — language coverage matrix, install commands, package exports, CLI tools. +- **[Version adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation)** — per-call spec-version pinning, co-existence imports across SDK majors, on-wire `VERSION_UNSUPPORTED` negotiation. Lets you talk to peers on any supported version without forking handler code. +- **[Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance)** — the L3 protocol bar every agent must reach. Storyboards probe state transitions, error shapes, and the async-task contract. +- **[AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified)** — the public trust mark. Storyboard pass earns `(Spec)`; observed live traffic earns `(Live)`. +- **[Operating an agent](/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent)** — runtime concerns once you're past first launch: monitoring, on-call, version drift, multi-tenant scaling. + +## Going deeper + +- **[Concepts](/dist/docs/3.2.0-beta.4/building/concepts)** — why AdCP exists, protocol comparison, security model, industry context. Start here if you're new and want context before code. +- **[L0 — Wire & transport](/dist/docs/3.2.0-beta.4/building/by-layer/L0)** — MCP and A2A integration, schema validation, type generation. +- **[L2 — Auth & registry](/dist/docs/3.2.0-beta.4/building/by-layer/L2)** — authentication, multi-tenant account state, principal scoping. +- **[L3 — Protocol semantics](/dist/docs/3.2.0-beta.4/building/by-layer/L3)** — task lifecycle, async operations, webhooks, error handling, conformance test surface. +- **[Talk to Addie](/dist/docs/3.2.0-beta.4/learning/overview)** — stuck on a concept? Addie is the AdCP teaching agent. She walks the protocol with you in conversation, and runs the certification path when you're ready to make it stick. + +## Audience + +AdCP implementers in any language — building an agent, building a caller, authoring an SDK, or evaluating one. **Python and TypeScript are the first-class languages** (TypeScript GA on `@adcp/sdk` 6.x; Python GA on `adcp` 3.x with 4.x in beta); **Go** has L0 and partial L1 in active development; community-maintained ports for other languages are welcome — see the [Builders Working Group](/dist/docs/3.2.0-beta.4/community/working-group). diff --git a/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent.mdx b/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent.mdx new file mode 100644 index 0000000000..7ac66bc43b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent.mdx @@ -0,0 +1,128 @@ +--- +title: Operating an Agent +sidebarTitle: Operating an Agent +description: "What sits behind a protocol-compliant agent — products, activation, hosting, and whether to partner, self-host, or build." +"og:title": "AdCP — Operating an Agent" +--- + +The 2–8 minute [Build an Agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) path gets you a protocol-compliant agent. This page is what comes after — the business infrastructure behind each tool call, and how to decide who runs it. + +The worked example here is a **sales agent**, since that's the most infrastructure-heavy case. Short callouts mark where the operational concerns diverge for signals, creative, and retail-media agents. + +## What the SDK already handles + +Before listing what's missing, it helps to be explicit about what a storyboard-validated agent already gives you: + +- AdCP tool schemas and typed registration +- Request/response shapes that pass compliance +- Error formats and version negotiation +- A starting point with example products you can swap for real ones + +Everything below is what sits behind those tool handlers. + +## Partner, self-host, or build + +There are three paths to a live agent. They differ in how much you own, not whether you own anything at all — in every case you still own products, pricing, and the activation into your ad server. + +**Partner with a managed sales agent platform.** The platform runs the agent endpoint, holds state, and exposes admin UIs for your ad ops team to manage products, pricing, and approvals. You connect your ad server; the platform handles the protocol and the operations around it. Fastest to live, least control. + +**Self-host a prebuilt agent.** Deploy an existing open-source agent — today this usually means the [Prebid Sales Agent](https://github.com/prebid/salesagent), a community full-stack seller agent with GAM integration — on your own infrastructure, and connect it to your systems. You skip writing the protocol layer and admin UI, but you own hosting, upgrades, database, and the ad-server wiring. Middle ground: more control than partnering, less work than building. + +**Build your own.** Use the SDK and skill files to write a custom agent. You get full control over business logic, pricing models, and activation paths, at the cost of owning the code alongside everything else. Right answer when no prebuilt agent fits your stack or pricing model. + +The SDKs and storyboards cover protocol compliance across all three paths. Everything in the table below is what's outside that line, regardless of which path you take. + +## What you'll still need to build or provision + +| Component | What it does | Example approaches | +|---|---|---| +| **Product & pricing management** | Lets ad ops define products, rate cards, packaging, and availability without code changes. The skill files hardcode example products; a real agent needs these dynamic and editable. | A partner platform's product catalog, a prebuilt agent's admin UI (e.g. Prebid Sales Agent), or a custom admin UI backed by a database. | +| **Persistent storage** | Stores products, pricing, media buys, creative assignments, and delivery state across requests. | PostgreSQL, MySQL, or any datastore your team is comfortable operating. | +| **Creative review & policy** | Applies brand-safety, legal, and format checks to creatives before they go live. The protocol carries the creative; your policy decides whether to accept it. | Human review queue, automated policy engine (IAB categories, brand lists), or a hybrid. Often the first thing ad ops teams underestimate. | +| **Trafficking & fulfillment** | Turns a sold media buy into a live campaign in your ad server. This sits entirely outside AdCP and is usually the hardest piece. | *Manual:* email or Slack alerts that prompt ad ops to set up campaigns in GAM. *Semi-automated:* Google Ad Manager API to create line items and assign creatives. *Full automation:* end-to-end pipeline from buy confirmation to live delivery. | +| **Delivery reporting & performance** | Powers `get_media_buy_delivery` and `provide_performance_feedback` with real numbers. The protocol tools exist; the log ingest, aggregation, and attribution pipeline behind them is yours to build. | Ad server reporting API pulls, log-level ingest into a warehouse, or a managed analytics tool feeding the agent. | +| **Order management** | Tracks buy status, approval workflows, creative deadlines, and pacing beyond what the protocol's task lifecycle covers. | Status fields in your database to start; a dashboard as volume grows. | +| **Hosting** | Keeps your agent live at the URL you declare in operator `brand.json` and publisher `adagents.json`. Downtime or URL drift breaks buyer verification. | Cloud VM, container service (Cloud Run, ECS, Fly.io), or a managed hosting platform. | +| **Discovery and authorization records** | Tells buyer agents who operates the endpoint, where its signing keys live, and which publisher authorizes it for which inventory. Protocol support is declared by `get_adcp_capabilities`. | Publish operator `brand.json` and publisher `adagents.json`. See [Seller setup](/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup) and [Authorized Properties](/dist/docs/3.2.0-beta.4/governance/property/authorized-properties). | + +## Where the protocol ends and your business begins + +AdCP defines the shape of the conversation between agents. It does not define: + +- **Pricing strategy** — how you price inventory, how rate cards flex, when discounts apply +- **Approval policy** — which campaigns you accept or reject, and on what grounds +- **Billing and invoicing** — no spec-level billing; you reconcile with buyers out-of-band +- **Identity and consent** — user-level identity, consent capture, and data-subject rights are regulated and implementation-specific +- **SLA monitoring** — uptime, latency, and error budgets for your agent endpoint +- **Ad ops workflow** — how your team monitors pacing, makegoods, and escalations + +A partner platform makes default choices for most of these; a self-hosted prebuilt agent gives you its defaults to override; a self-built agent makes you make every call. + +## Where this differs by agent type + +The components table above assumes a sales agent. Other agent types share most of it but have specific additions: + +- **Signals agents** — consent and provenance are load-bearing. You need a defensible data lineage (where a segment came from, what consent covers it) and the ability to honor opt-outs. Activation is less about ad-server trafficking and more about delivering segments to platforms that already ingest them. +- **Creative agents** — asset storage, transcoding, and rendering SLAs replace ad-server trafficking. Creative review becomes policy on what you'll render, not what you'll traffic. +- **Retail-media agents** — catalog freshness is the operational constraint; your products change as SKUs change. Activation often runs through retail-specific ad platforms rather than GAM. + +## Operating the agent in production + +A protocol-compliant agent is not the same as a well-operated agent. That's two different concerns: **ongoing ad-ops health** (the protocol stuff actually doing its job) and **security** (the protocol stuff staying trustworthy when it does). Treat both with the same seriousness you give your ad-server integration. + +### Ad-ops health monitoring — what you actually watch + +This is the day-to-day job. Most of it is protocol-aware extensions of the monitoring any ad ops team already runs. The point is not "new concepts to learn" — it's "here are the specific protocol signals you need dashboards for." Addie can help you set these up. + +| What to watch | Why it matters | Signals to alert on | +|---|---|---| +| **Open task queue depth** | Async tasks (`create_media_buy` proposals, `sync_creatives` approvals, `si_initiate_session`) stack up when approvers fall behind. Deep queues mean buyers are waiting. | Tasks open > SLA (e.g. creative approvals > 4h), oldest task age trending up, queue growing faster than it drains. | +| **Creative approval throughput** | Creatives need to actually get approved or rejected. A queue that silently stops moving looks identical to "everything's fine" — except buys aren't launching. | Approval/rejection rate vs. submission rate, creatives older than expected review window still `pending`, rejection reason distribution. | +| **Lifecycle transitions firing on time** | The seller MUST transition `pending_start` → `active` when the flight date arrives. Missed transitions leave campaigns never-delivered even though they "created" fine. | Buys still in `pending_start` past flight start, buys in `pending_creatives` past creative arrival, `paused` buys that should have auto-resumed. | +| **Webhook delivery health** | Webhooks are how buyers learn about async state changes. Silent delivery failures mean buyers poll instead — or don't, and miss the event entirely. | Failed delivery rate, retry backlog, dead-letter queue size, time from state change to successful push. | +| **Status correctness for non-launchable buys** | Campaigns that *can't* go live (creative rejected, account suspended, policy denial) MUST be reflected in the status — not silently stuck. Governance depends on this. | Buys that are neither delivering nor showing a terminal/blocked status; mismatch between ad-server state and AdCP state. | +| **Delivery reporting freshness and accuracy** | `get_media_buy_delivery` should return current numbers. Stale reporting means buyers optimize on lies. | Last-updated timestamp trailing, spend deltas that don't reconcile with ad-server logs. | +| **Idempotency-cache behavior** | A retried `create_media_buy` must return the cached response, not create a duplicate. Compliance tests this in a sandbox — production drift is its own signal. | `IDEMPOTENCY_CONFLICT` rate (bug in buyer or attacker probing), `IDEMPOTENCY_EXPIRED` for ongoing work (TTL too short), duplicate media buys created in the ad server (cache failure). | +| **Error-code distribution** | A spike in a specific error code from a specific buyer is usually the first signal of a real problem. | Top-N error codes per buyer per hour, new error codes you haven't seen before. | + +This is the monitoring a sales agent needs regardless of who wrote the code. A partner platform should expose dashboards for most of this; a self-hosted prebuilt agent requires you to wire them up; a self-built agent puts every row on your team. + +### Security monitoring — what compliance covers vs. what stays with you + +**Most AdCP security mechanics are enforced by the [compliance suite](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) — you don't need to hand-verify them.** The storyboard runner verifies authentication, idempotency, schema conformance, error handling, and governance behavior against your agent. If the suite passes, the wire-level behavior is correct. You don't need to learn agent/account scoping internals, JWS verification steps, or canonical JSON — the tests do. + +What the compliance suite checks (so you don't have to teach it): + +| Storyboard | What it verifies | +|---|---| +| `security_baseline` (universal) | Auth is required on protected operations; invalid keys rejected; at least one of API key or OAuth 2.0 is correctly advertised. | +| `idempotency` (universal) | Mutating requests honor `idempotency_key`: replay returns cached, conflict returns `IDEMPOTENCY_CONFLICT`, missing key returns `INVALID_REQUEST`. | +| `schema-validation`, `error-compliance` | Responses match schemas; errors use the standard taxonomy. | +| Protocol + specialism storyboards | Per-protocol behavior (media buy lifecycle, creative workflow, signals activation) is correct end-to-end. | +| Request-signing test vectors | RFC 9421 signed requests validate correctly across 25+ positive and negative cases. | + +**What you still own**, regardless of who wrote the code: + +| Concern | What you decide and run | +|---|---| +| **Credential storage and rotation** | Store tokens in a KMS/secret manager. Use short-lived tokens (≤24h for write-capable; consider ≤1h for tokens that can commit spend). Never log in full, never commit. The right rotation cadence depends on the blast radius of a leaked token — justify yours, don't copy a number. | +| **Key ceremony and break-glass** | Have a documented process for generating, transporting, and destroying high-value keys (webhook secrets, governance signing keys). Maintain sealed break-glass credentials for incident recovery — and a procedure for using them that leaves an audit trail. | +| **Idempotency replay TTL** | Declare `capabilities.idempotency.replay_ttl_seconds` — floor 1h, recommended 24h, max 7d — and verify the declared value matches actual cache retention. Prebuilt agents expose this as config; self-built bake it in. | +| **Cross-instance and multi-region failover** | The idempotency cache, session store, and webhook dedup state must survive an instance restart and be shared across horizontally scaled instances. In a multi-region deployment, the cache must be consistent enough that a retry routed to region B replays a buy originally processed in region A. Memory-only state breaks at-most-once guarantees on the first pod restart. | +| **Security signal monitoring** | Watch for `IDEMPOTENCY_CONFLICT` spikes (probing), failed governance verifications (spoofing), SSRF rejections from a single counterparty, 401/403 spikes from one peer. Same dashboard as ops monitoring — just different alerts. | +| **Vendor risk on your counterparties** | Your governance agent, your signals providers, your creative vendors all hold credentials or issue signed tokens that affect your campaigns. Assess them the way you assess any processor: disclosure policy, breach notification commitment, compliance attestations, uptime SLA. | +| **Incident response runbook** | Know how to revoke a compromised credential in under an hour, rotate webhook secrets, notify counterparties, publish a `revoked_kids` entry if you issue governance tokens. Tabletop it before you need it. | + +If you're **partnering**, ask the vendor: "Do you pass the AdCP compliance suite on every release? Which version? Can I see the latest run?" That single question covers most of the code-controls surface. Also ask whether they hold SOC 2 Type II, ISO 27001, or the equivalent attestation for your industry — and what their breach-notification commitment is. If you're **self-hosting a prebuilt agent**, run the compliance suite yourself against your deployment. If you're **self-building**, the compliance suite is your regression harness. + + +**For security and IT leaders:** The [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) page is written for you — CISOs, security architects, and third-party risk reviewers at brands, agencies, publishers, and platforms alike. It explains the threat landscape and what AdCP defends against by design, and includes a checklist of questions to ask your engineering team (or your vendor) before going live. + + +## What's next + +- **[Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — The compliance suite referenced above +- **[Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security)** — The normative reference for HMAC, idempotency, SSRF, and governance verification +- **[How Agents Communicate](/dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate)** — Discovery via `adagents.json` and `brand.json` +- **[Seller Integration](/dist/docs/3.2.0-beta.4/building/operating/seller-integration)** — Patterns for connecting an agent to an ad server +- **[Authorized Properties](/dist/docs/3.2.0-beta.4/governance/property/authorized-properties)** — Who can sell what, and how that's declared diff --git a/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design.mdx b/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design.mdx new file mode 100644 index 0000000000..ba3a2c4a75 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design.mdx @@ -0,0 +1,528 @@ +--- +title: Orchestrator Design +description: "AdCP orchestrator design: state machine patterns, persistent operation tracking, async-first architecture, and reconciliation for multi-vendor campaign workflows." +"og:title": "AdCP — Orchestrator Design" +--- + +This guide covers best practices for building AdCP orchestrators that handle asynchronous operations, pending states, and human-in-the-loop workflows. + +## Core Design Principles + +### 1. Asynchronous First + +The AdCP protocol is inherently asynchronous. Operations may take seconds, hours, or even days to complete. + +**DO:** +- Design all operations as async/await +- Store operation state persistently +- Handle orchestrator restarts gracefully +- Implement proper timeout handling + +**DON'T:** +- Assume immediate completion +- Use synchronous blocking calls +- Store state only in memory +- Retry indefinitely without backoff + +### 2. Status-Driven Logic + +Operations progress through standardized status values: + +```python +TASK_STATUSES = { + "submitted", # Long-running (hours to days) - provide webhook or poll + "working", # Processing (< 120 seconds) - poll frequently + "input-required", # Need user input/approval - continue conversation + "completed", # Success - process results + "failed", # Error - handle appropriately + "canceled", # User canceled + "auth-required" # Need authentication +} +``` + +### 3. State Machine Design + +Implement proper state machines aligned with AdCP task statuses: + +```python +class OperationState(Enum): + # Local orchestrator states + REQUESTED = "requested" + CALLING_ADCP = "calling_adcp" + + # AdCP task states (match server responses) + SUBMITTED = "submitted" + WORKING = "working" + INPUT_REQUIRED = "input_required" + COMPLETED = "completed" + FAILED = "failed" + CANCELED = "canceled" + +# Valid state transitions +VALID_TRANSITIONS = { + "requested": ["calling_adcp"], + "calling_adcp": ["submitted", "working", "input_required", "completed", "failed"], + "submitted": ["working", "completed", "failed", "canceled"], + "working": ["completed", "failed", "input_required"], + "input_required": ["submitted", "working", "completed", "failed"] +} +``` + +## Operation Tracking + +### Persistent Storage + +Store all operations with comprehensive tracking: + +```python +class OperationTracker: + def __init__(self, db): + self.db = db + + async def create_operation(self, operation_type, request_data, webhook_config=None): + operation = { + "id": str(uuid.uuid4()), + "type": operation_type, + "status": "requested", + "request": request_data, + "webhook_config": webhook_config, + "created_at": datetime.now(), + "updated_at": datetime.now(), + "task_id": None, + "context_id": None, + "result": None, + "error": None + } + await self.db.operations.insert_one(operation) + return operation["id"] + + async def update_status(self, operation_id, status, **kwargs): + update = { + "status": status, + "updated_at": datetime.now() + } + update.update(kwargs) + + await self.db.operations.update_one( + {"id": operation_id}, + {"$set": update} + ) + + async def get_pending_operations(self): + """Get all operations that need monitoring""" + return await self.db.operations.find({ + "status": {"$in": ["submitted", "working", "input_required"]} + }).to_list(length=None) +``` + +### State Reconciliation + +Sync local state with server on startup: + +```python +async def reconcile_with_server(self, adcp_client): + """Sync local state with server using AdCP task reconciliation""" + server_tasks = await adcp_client.call('list_tasks', { + 'filters': {'statuses': ['submitted', 'working', 'input_required']} + }) + + server_task_ids = {task['task_id'] for task in server_tasks['tasks']} + local_operations = await self.get_pending_operations() + local_task_ids = {op['task_id'] for op in local_operations if op['task_id']} + + return { + 'orphaned_on_server': server_task_ids - local_task_ids, + 'missing_from_server': local_task_ids - server_task_ids, + 'total_pending_server': len(server_tasks['tasks']), + 'total_pending_local': len(local_operations) + } +``` + +## Async Operation Handler + +### Response Routing + +Handle responses based on status: + +```python +class AsyncOperationHandler: + def __init__(self, adcp_client, tracker, notifier): + self.adcp = adcp_client + self.tracker = tracker + self.notifier = notifier + self.polling_tasks = {} + + async def handle_operation_response(self, operation_id, response): + """Handle any AdCP response with proper status routing""" + status = response.get("status") + + # Update operation with response details + await self.tracker.update_status( + operation_id, + status, + task_id=response.get("task_id"), + context_id=response.get("context_id"), + result=response.get("result") if status == "completed" else None, + error=response.get("error") if status == "failed" else None + ) + + # Route based on status + if status == "completed": + await self._handle_completed(operation_id, response) + elif status == "failed": + await self._handle_failed(operation_id, response) + elif status == "submitted": + await self._handle_submitted(operation_id, response) + elif status == "working": + await self._handle_working(operation_id, response) + elif status == "input_required": + await self._handle_input_required(operation_id, response) +``` + +### Submitted Operations + +Handle long-running operations: + +```python +async def _handle_submitted(self, operation_id, response): + """Handle long-running operations""" + task_id = response["task_id"] + + # Check if webhook is configured + operation = await self.tracker.get_operation(operation_id) + webhook_config = operation.get("webhook_config") + + if webhook_config: + # Webhook will handle completion notification + await self.notifier.notify_submitted_with_webhook(operation_id, task_id) + else: + # Start polling for completion + polling_task = asyncio.create_task( + self._poll_for_completion(operation_id, task_id, interval=60) + ) + self.polling_tasks[task_id] = polling_task +``` + +### Polling with Backoff + +Implement efficient polling: + +```python +async def _poll_for_completion(self, operation_id, task_id, interval=60): + """Poll task status until completion""" + max_polls = 1440 if interval == 60 else 24 # 24 hours or 2 minutes + poll_count = 0 + + while poll_count < max_polls: + try: + await asyncio.sleep(interval) + poll_count += 1 + + task_response = await self.adcp.call('get_task_status', { + 'task_id': task_id, + 'include_result': True + }) + + await self.handle_operation_response(operation_id, task_response) + + if task_response["status"] in ["completed", "failed", "canceled"]: + break + + except Exception as e: + await self.tracker.update_status( + operation_id, + "failed", + error=f"Polling error: {str(e)}" + ) + break + + self.polling_tasks.pop(task_id, None) + + if poll_count >= max_polls: + await self.tracker.update_status( + operation_id, + "failed", + error="Task polling timeout" + ) +``` + +## Webhook Support + +### Reliable Webhook Handler + +Implement webhooks with reliability patterns: + +```python +class WebhookHandler: + def __init__(self, tracker, notifier, secret_key): + self.tracker = tracker + self.notifier = notifier + self.secret_key = secret_key + self.processed_events = {} + + def verify_webhook_signature(self, payload: bytes, signature: str) -> bool: + """Verify webhook authenticity""" + expected_signature = hmac.new( + self.secret_key.encode(), + payload, + hashlib.sha256 + ).hexdigest() + return signature == f"sha256={expected_signature}" + + async def is_replay_attack(self, timestamp: str, event_id: str) -> bool: + """Prevent replay attacks using timestamp and event ID""" + event_time = datetime.fromisoformat(timestamp.replace('Z', '+00:00')) + now = datetime.now() + + if now - event_time > timedelta(minutes=5): + return True + + return event_id in self.processed_events +``` + +### Webhook + Polling Backup + +Never rely solely on webhooks: + +```python +class ReliableWebhookOrchestrator: + def __init__(self): + self.webhook_timeout = timedelta(minutes=10) + self.backup_polling_delay = timedelta(minutes=2) + + async def _handle_submitted_with_webhook(self, operation_id, task_id): + """Handle submitted task with webhook + backup polling""" + + async def backup_polling(): + await asyncio.sleep(self.backup_polling_delay.total_seconds()) + + operation = await tracker.get_operation(operation_id) + if operation["status"] not in ["completed", "failed", "canceled"]: + logger.info(f"Starting backup polling for task {task_id}") + await self._poll_for_completion(operation_id, task_id, interval=60) + + asyncio.create_task(backup_polling()) +``` + +## Example Orchestrator + +Complete orchestrator implementation: + +```python +class AdCPOrchestrator: + def __init__(self): + self.adcp = AdCPClient() + self.tracker = OperationTracker(db) + self.handler = AsyncOperationHandler(self.adcp, self.tracker, UserNotifier()) + self.webhook_base_url = "https://orchestrator.com/webhooks" + + async def create_campaign(self, user_id, request, enable_webhook=True): + """Create a campaign with governance validation and full async handling. + + Plans must already be synced via sync_plans before calling this method. + Plan creation happens during the planning phase, not at campaign creation time. + """ + + # 1. Run intent check (plan must already exist) + if request.get("governance_context"): + gov_check = await self.adcp.call("check_governance", { + "plan_id": request["governance_context"]["plan_id"], + "caller": request["governance_context"]["caller"], + "tool": "create_media_buy", + "payload": request + }) + if gov_check["status"] == "denied": + raise GovernanceDeniedError(gov_check["explanation"]) + if gov_check["status"] == "conditions": + raise GovernanceConditionsError(gov_check["conditions"]) + # If check_governance needs human review internally, it returns + # async task status (submitted/working) and resolves to + # approved or denied — standard task lifecycle. + + # 2. Create the media buy + await self._create_media_buy(user_id, request, enable_webhook) + + async def _create_media_buy(self, user_id, request, enable_webhook=True): + """Create a media buy with full async handling.""" + + # 1. Prepare webhook configuration + webhook_config = None + if enable_webhook: + webhook_config = { + "webhook_url": f"{self.webhook_base_url}/adcp/{user_id}", + "webhook_auth": { + "type": "bearer", + "credentials": await self.get_webhook_token(user_id) + } + } + + # 2. Create operation record + operation_id = await self.tracker.create_operation( + "create_media_buy", + request, + webhook_config=webhook_config + ) + + try: + # 3. Call AdCP + response = await self.adcp.call("create_media_buy", request, webhook_config) + + # 4. Handle response + await self.handler.handle_operation_response(operation_id, response) + + # 5. Return appropriate response to user + return self._format_user_response(operation_id, response) + + except Exception as e: + await self.tracker.update_status(operation_id, "failed", error=str(e)) + raise + + async def reconcile_state_on_startup(self): + """Recover from orchestrator restart""" + reconciliation = await self.tracker.reconcile_with_server(self.adcp) + logger.info(f"State reconciliation: {reconciliation}") + + for task_id in reconciliation["orphaned_on_server"]: + # Resume monitoring orphaned tasks + operation_id = await self.tracker.create_operation( + "unknown", + {}, + status="submitted" + ) + await self.tracker.update_status(operation_id, "submitted", task_id=task_id) + asyncio.create_task( + self.handler._poll_for_completion(operation_id, task_id) + ) +``` + +## Governance in the Campaign Lifecycle + +Plan creation ([`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans)) happens during the planning phase — before any campaigns exist. Governance checks happen during campaign execution. These are separate concerns. + +**Planning phase** (once per media plan): +``` +sync_plans — orchestrator pushes the plan to the governance agent +``` + +**Campaign execution** (per media buy): +``` +check_governance(tool + payload) → create_media_buy → check_governance(media_buy_id + planned_delivery) → delivery → report_plan_outcome +``` + +| Phase | Who calls | Task | What happens on failure | +|-------|-----------|------|------------------------| +| Intent check | Orchestrator | [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) (`tool` + `payload`) | Campaign violates buyer's plan — denied or conditioned before any spend. If the governance agent needs human review, the task goes async and resolves to approved or denied. | +| Execution check | Seller | [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) (`media_buy_id` + `planned_delivery`) | Seller's delivery plan doesn't match buyer's expectations — purchase blocked | +| Delivery check | Seller | [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) (`phase: delivery` + `delivery_metrics`) | Drift detected — pacing, geo, or channel distribution deviates from plan | +| Plan outcome | Orchestrator | [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) | No feedback loop — governance agent cannot improve future recommendations | + +See the [media buy governance workflow](/dist/docs/3.2.0-beta.4/media-buy/index#governance) for the complete sequence with code examples, and the [seller integration guide](/dist/docs/3.2.0-beta.4/building/operating/seller-integration#execution-checks) for the seller's execution check obligations. + +## Best Practices + +### 1. Persistent Storage + +Always use persistent storage for operation state: +- Database (PostgreSQL, MongoDB) +- Message queue (Redis, RabbitMQ) +- Distributed cache (Redis Cluster) + +### 2. Idempotency + +Make all operations idempotent: + +```python +async def create_media_buy_idempotent(self, request): + existing = await self.db.operations.find_one({ + "type": "create_media_buy", + "request.po_number": request["po_number"], + "status": {"$in": ["created", "active"]} + }) + + if existing: + return existing["result"] + + return await self.create_media_buy(request) +``` + +### 3. Timeout Handling + +Implement reasonable timeouts: + +```python +OPERATION_TIMEOUTS = { + "create_media_buy": timedelta(hours=24), + "update_media_buy": timedelta(hours=12), + "creative_approval": timedelta(hours=48) +} +``` + +### 4. Error Recovery + +Implement retry logic with circuit breakers: + +```python +@retry( + stop=stop_after_attempt(3), + wait=wait_exponential(min=1, max=60), + retry=retry_if_exception_type(TransientError) +) +async def call_adcp_api(self, tool, params): + try: + return await self.adcp.call(tool, params) + except RateLimitError: + raise TransientError("Rate limited") + except NetworkError: + raise TransientError("Network error") +``` + +### 5. Monitoring and Alerting + +Track key metrics: +- Pending operation count by type +- Average approval time +- Rejection rate +- Task timeout rate +- API error rate + +## User Communication + +Keep users informed about pending operations: + +```python +class UserNotifier: + async def notify_pending_approval(self, user_id, operation): + message = { + "type": "pending_approval", + "operation_id": operation["id"], + "message": "Your media buy requires publisher approval", + "estimated_time": "2-4 hours" + } + await self.send_notification(user_id, message) + + async def notify_approval(self, user_id, operation): + message = { + "type": "operation_approved", + "operation_id": operation["id"], + "message": "Your media buy has been approved", + "media_buy_id": operation["result"]["media_buy_id"] + } + await self.send_notification(user_id, message) +``` + +## Summary + +Building a robust AdCP orchestrator requires: +1. Asynchronous design throughout +2. Proper state management with persistence +3. Graceful handling of pending states +4. User communication for long-running operations +5. Monitoring and observability + +Remember: Pending states are not errors - they're a normal part of the advertising workflow. + +## Next Steps + +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for push notifications +- **Security**: See [Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for multi-tenant security diff --git a/dist/docs/3.2.0-beta.4/building/operating/seller-integration.mdx b/dist/docs/3.2.0-beta.4/building/operating/seller-integration.mdx new file mode 100644 index 0000000000..42bd715c17 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/seller-integration.mdx @@ -0,0 +1,361 @@ +--- +title: Making your inventory available to AI agents +sidebarTitle: Seller integration +description: "Seller integration guide for AdCP. How publishers, SSPs, and ad platforms expose inventory to AI buyer agents through standardized product discovery and media buy tasks." +"og:title": "AdCP — Making your inventory available to AI agents" +--- + +AI agents are starting to buy media. When an agency's AI assistant is evaluating ad inventory across platforms, it needs a way to discover what you sell, understand your pricing and targeting options, and execute a buy — all through a standard interface. + +AdCP (Ad Context Protocol) provides that interface. If you're a publisher, SSP, or ad platform, implementing AdCP makes your inventory accessible to any compliant buyer agent without requiring custom integrations for each one. + +## Why this matters + +Today, every platform requires buyers to learn a proprietary API. That works when humans are doing the buying. But AI agents work across many platforms simultaneously, and they need a shared language for common operations. + +Platforms that implement AdCP are discoverable by buyer agents out of the box. Platforms that don't require each buyer to build a custom integration — which limits the pool of agents that can access your inventory. + +## What you need to implement + +AdCP sell-side integration has four parts: + + + +### Publish publisher authorization + +Publish an `adagents.json` file on each publisher domain. This file declares the publisher's properties and the agents authorized to sell or enrich that inventory — similar to how `ads.txt` works for supply chain transparency. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Example Publisher", + "email": "adops@publisher.example.com", + "domain": "publisher.example.com" + }, + "properties": [ + { + "property_id": "publisher_home", + "property_type": "website", + "name": "Example Publisher", + "publisher_domain": "publisher.example.com", + "identifiers": [{ "type": "domain", "value": "publisher.example.com" }] + } + ], + "authorized_agents": [ + { + "authorization_type": "property_ids", + "url": "https://ads.publisher.example.com/mcp", + "authorized_for": "Example Publisher direct inventory", + "property_ids": ["publisher_home"], + "signing_keys": [ + { + "kid": "publisher-sales-prod-2026", + "kty": "OKP", + "alg": "EdDSA", + "crv": "Ed25519", + "x": "w8zcY1LZqV4n1oKbfyq3n2q3sL2uV3z7kEw1m9Qjv4A", + "use": "sig" + } + ] + } + ] +} +``` + +Buyer agents check `adagents.json` to verify publisher authorization and, for mutating seller authorizations, publisher-pinned signing keys. They discover the agent's protocol coverage from `get_adcp_capabilities`, not from `adagents.json`. + +### Publish operator identity + +Publish `brand.json` at `https://{your-domain}/.well-known/brand.json` for the organization operating the sales agent. `adagents.json` tells buyers which publisher authorizes a sales agent; `brand.json` tells buyers which operator is claiming the sales path, which properties it represents, and where to find signing keys. + +For publisher-owned sales teams, list owned or direct properties. For networks and SSPs, list represented properties with `relationship: "delegated"` or `relationship: "ad_network"` and make sure that value matches the publisher's `authorized_agents[].delegation_type` in `adagents.json`. The two files form the bilateral verification chain: the operator declares "I sell this property", and the publisher confirms "this operator is authorized to sell it". A publisher that delegates sales should still publish `adagents.json`; its own `brand.json` is recommended for publisher identity and portfolio context, but the delegated operator's `brand.json` is the required identity record for the agent buyers call. + +For the full sell-side setup pattern, including direct publisher and delegated network examples, see [seller setup](/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup). + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "example_publisher", + "url": "https://publisher.example.com", + "names": [{ "en_US": "Example Publisher" }], + "properties": [ + { + "type": "website", + "identifier": "publisher.example.com", + "relationship": "owned" + } + ], + "agents": [ + { + "type": "sales", + "url": "https://ads.publisher.example.com", + "id": "publisher_sales", + "jwks_uri": "https://ads.publisher.example.com/.well-known/jwks.json" + } + ] +} +``` + +The `agents[].jwks_uri` lets buyers resolve your public signing keys. The protocol requires verifiable signatures and discoverable public keys; it does not require a specific KMS vendor. Production agents should back private signing keys with KMS/HSM or a managed secret system. Sellers that send AdCP webhooks should publish an `adcp_use: "request-signing"` JWK in that JWKS so buyers can verify outbound webhook signatures. Deprecated `adcp_use: "webhook-signing"` keys remain accepted on the webhook path for backward compatibility. See [request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing) for the key-publication and webhook-signing profile. + +### Expose your inventory + +Implement `get_products` to describe what you sell. Each product represents a buyable unit — a display placement, a video slot, a sponsored listing, a newsletter sponsorship. Buyer agents call this with a `buying_mode` and optional `brief`: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442000", + "buying_mode": "brief", + "brief": "Premium display placements for consumer electronics brand" +} +``` + +Your response includes structured product objects with pricing, formats, and delivery types: + +```json +{ + "products": [ + { + "product_id": "homepage_leaderboard", + "name": "Homepage leaderboard", + "channels": ["display"], + "format_option_refs": [{ "scope": "product", "format_option_id": "display_728x90" }], + "pricing_options": [ + { + "pricing_option_id": "cpm_standard", + "pricing_model": "cpm", + "floor_price": 8.00, + "currency": "USD" + } + ] + } + ] +} +``` + +The richer the product metadata, the better buyer agents can match your inventory to campaign requirements. + +For content-centric inventory like podcasts, CTV, or live events, products reference shows and can offer exclusivity: + +```json +{ + "products": [ + { + "product_id": "signal_noise_sponsorship", + "name": "Signal & Noise — Category Sponsorship", + "description": "Category-exclusive sponsorship of the Signal & Noise podcast, including pre-roll and mid-roll host read placements.", + "collections": [{ "publisher_domain": "crestnetwork.example.com", "collection_ids": ["signal_noise"] }], + "publisher_properties": ["crestnetwork_podcast"], + "channels": ["podcast"], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll (30s)", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "host_read", "name": "Mid-roll host read (60s)", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "exclusivity": "category", + "format_option_refs": [{ "scope": "product", "format_option_id": "audio_30s" }], + "pricing_options": [ + { + "pricing_option_id": "flat_monthly", + "pricing_model": "flat_rate", + "fixed_price": 15000, + "currency": "USD" + } + ] + } + ] +} +``` + +See [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments) for the full content model and [Media products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#exclusivity) for exclusivity patterns. + +### Accept and fulfill buys + +Implement `create_media_buy` to accept campaign instructions from buyer agents. A media buy includes the product, budget, schedule, and any targeting parameters. + +```json +{ + "account": { "account_id": "acct-56789" }, + "brand": { "brand_id": "nova-electronics" }, + "proposal_id": "prop-homepage-leaderboard", + "total_budget": { "amount": 10000, "currency": "USD" }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-04-30T23:59:59Z" +} +``` + +Your platform processes the buy according to your normal workflow — whether that's instant activation, internal review, or an approval queue. AdCP's asynchronous status system (`completed`, `working`, `submitted`, `input-required`) lets you model any workflow. + + +**Status must be persisted, not computed from flight dates.** Store `status` as an explicit database field, updated only by protocol events — not by comparing `start_time`/`end_time` to the current date. Date arithmetic cannot produce `paused`, `canceled`, or `rejected`; those states are driven by explicit commands. See [seller implementation invariants](/dist/docs/3.2.0-beta.4/media-buy/media-buys#seller-implementation-invariants) for the full implementation requirement. + + + + +## Industry-specific guidance + +The core integration steps above apply to all sellers. If you're an **ad network aggregating across multiple platforms**, see the [ad networks deep dive](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) for product modeling, account chains, catalog forwarding, and `adagents.json` for networks. + +If you sell inventory for publishers you don't own (as a network or SSP), declare those properties in your [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#property-relationships) with the appropriate `relationship` value (`delegated` or `ad_network`). This creates bilateral verification — you declare the relationship, and each publisher confirms by authorizing your agent with the matching `delegation_type` in their adagents.json. + +For vertical-specific product modeling, pricing patterns, and measurement: + +- **AI platforms and AI ad networks**: See the [Sponsored Intelligence guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) for sponsored responses, AI search products, generative creative from catalogs, and SI Chat Protocol handoffs. +- **Retail media networks**: See the [commerce media guide](/dist/docs/3.2.0-beta.4/media-buy/commerce-media) for sponsored product listings, closed-loop attribution, and in-store measurement. + +## Accounts and sandbox + +Production sales agents should implement the accounts protocol. [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) let buyers establish billing relationships, track spend per advertiser, and manage multiple operators buying on behalf of different brands through a single agent. + +The account model depends on your platform: + +- **Walled gardens** (social platforms, AI platforms, retail media networks) typically use account-id namespaces — set `require_operator_auth: true` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) so each operator authenticates independently, expose `list_accounts` when the upstream platform owns the namespace, and require buyers to pass discovered `account_id` values. +- **Open platforms** (publishers, SSPs) can use buyer-declared accounts — the agent is trusted and declares accounts via `sync_accounts`. + +See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) for full workflows. + +**Sandbox support is strongly recommended.** Declare `account.sandbox: true` in your capabilities so buyers can validate the full integration — product discovery, media buy creation, delivery reporting — before committing real spend. Buyer-declared account sellers provision test accounts through `sync_accounts` with `sandbox: true`; account-id namespace sellers expose pre-existing sandbox accounts through `list_accounts` or out-of-band setup. Without sandbox, buyers must test against live inventory, which slows adoption and increases onboarding friction. See [Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox) for implementation details. + +## Delivery reporting + +All Media Buy Protocol sales agents MUST implement [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) and include `reporting_capabilities` on every product. Buyer agents pull performance data — impressions, clicks, spend, conversions — in a standardized format. This is how agents monitor campaigns across platforms without logging into each dashboard individually. See [Required tasks by protocol](/dist/docs/3.2.0-beta.4/protocol/required-tasks) for the full list of required seller tasks. + +Sellers building AdCP into their production stack should consider enrolling in the **[AAO Verified (Live)](/dist/docs/3.2.0-beta.4/building/verification/aao-verified)** qualifier once they're serving real campaigns. (Live) adds continuous observability of live delivery data on a designated compliance account, distinct from the (Spec) qualifier earned automatically by storyboard passing. Opt-in, no new infrastructure on the seller side — grant the [`attestation_verifier`](/dist/docs/3.2.0-beta.4/accounts/overview#standard-named-scope-attestation_verifier) scope on one account with live campaigns. + +## Product design patterns + +Different inventory types use different AdCP features: + +| Inventory type | Key features | +|---|---| +| Standard display/video | Canonical `format_options`, `delivery_type: "non_guaranteed"`, auction pricing | +| Podcast sponsorship | `shows`, `placements` (host read), `delivery_type: "guaranteed"`, flat_rate | +| CTV series sponsorship | `shows`, `exclusivity`, `delivery_type: "guaranteed"` | +| Live event | `shows` (cadence: event), `episodes` (flexible_end, tentative), `exclusivity` | +| Retail media | `catalog_types`, `catalog_match`, metric optimization | + +For content-centric inventory, see [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments). For exclusivity and sponsorship patterns, see [Media products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#exclusivity). + +## Governance enforcement + +Buyer agents increasingly require governance compliance before committing spend. Implementing governance makes your inventory eligible for brand-safe campaigns, reduces post-campaign disputes, and signals to buyer agents that your platform takes brand suitability seriously. Three governance domains are relevant to sellers. + +### Property governance via adagents.json + +Your `adagents.json` file is the foundation of property governance. It declares which properties you sell, which agents are authorized to sell them, and which governance agents have data about your inventory. Buyer agents use this to verify supply path authorization and discover property intelligence — if your `adagents.json` is missing or incomplete, buyer agents cannot verify that you are authorized to sell what you claim. + +Declare `property_features` entries to point buyers toward governance agents that score your properties for quality, sustainability, or brand safety. See the [property governance specification](/dist/docs/3.2.0-beta.4/governance/property/specification) for the full schema and the [adagents.json tech spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) for publisher-side setup. + +### Content standards enforcement + +When a buyer includes a `content_standards_ref` in a `get_products` or `create_media_buy` request, they are asking you to enforce brand suitability rules during delivery. Your responsibilities: fetch the standards from the referenced governance agent, evaluate whether you can enforce them, reject the buy if you cannot, and calibrate your local evaluation model against the governance agent via `calibrate_content`. After delivery, push content artifacts back to the buyer so they can validate compliance independently. + +If you cannot meaningfully enforce a buyer's content standards, reject the buy rather than accepting it and failing silently. See the [content standards implementation guide](/dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide) for the full sales agent workflow. + +### Execution checks + +When a request carries `governance_context`, a service declaring `adcp.governance_enforcement` first verifies the signed intent token, including its audience, task, canonical payload hash, and monetary ceiling. A media seller whose task claim includes `online_execution_check` additionally prepares its candidate delivery, calls [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) with the preserved context and `planned_delivery`, and commits only after approval. A `signed_context`-only task commits after the inbound token passes verification. The buyer's plan ID is not part of this service boundary. + +```javascript +// Before confirming create_media_buy: prepare without external side effects. +const candidate = await prepareMediaBuy(request); +const check = await governanceAgent.checkGovernance({ + caller: "https://seller.example.com", + governance_context: request.governance_context, // preserve byte-for-byte after standard-claim verification + phase: "purchase", + planned_delivery: { + media_buy_id: candidate.media_buy_id, + geo: { countries: ["US"] }, + channels: ["olv"], + start_time: candidate.start_time, + end_time: candidate.end_time, + total_budget: candidate.total_budget.amount, + currency: candidate.total_budget.currency + } +}); + +if (check.verdict !== "approved") { + // Execution checks are binary. Do not commit on denied or malformed responses. + return { error: "GOVERNANCE_DENIED", detail: check.explanation }; +} + +return await commitMediaBuy(candidate); // atomic state transition after approval +``` + +Execution checks cover three phases of the media buy lifecycle: + +| Phase | When to call | What's checked | +|-------|-------------|----------------| +| `purchase` | Before confirming `create_media_buy` | Budget, geo, channels, flight dates, policies | +| `modification` | Before confirming [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) | Change magnitude, reallocation, new parameters | +| `delivery` | Periodically during delivery | Pacing, spend rate, geo drift, channel distribution | + +Agents declare exactly which modes they enforce per task in `adcp.governance_enforcement.tasks`. See [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) for the full specification. + +### Campaign governance context + +When a buyer includes `governance_context` in the protocol envelope of a `create_media_buy` request, store it alongside the media buy. This is an opaque value — you don't interpret it, you just persist and forward it. + +Pass `governance_context` back to the buyer's governance agent on every lifecycle event for that media buy: + +| Lifecycle event | How governance_context flows | +|---|---| +| **Create** | Received in `create_media_buy` envelope. Store it. If calling `check_governance`, include it. | +| **Activate** | Include stored `governance_context` when calling `check_governance` with the seller's `planned_delivery`. | +| **Update** | Include on `check_governance` for modifications. The governance agent uses it to track cumulative changes. | +| **Pause / Resume** | Include if calling `check_governance`. The governance agent updates pacing state. | +| **Cancel / Complete** | Include so the governance agent can close out budget tracking and produce final audit. | +| **Delivery webhooks** | Include in webhook payloads so the governance agent can correlate delivery data. | + +The governance agent uses `governance_context` to reconnect each event to the original plan, campaign, and budget state. Without it, the governance agent has no way to track the media buy across its lifecycle. + +If `governance_context` is not present in the original request, skip governance calls — the buyer is not using campaign governance for this media buy. + +### Creative governance + +Buyer agents may require creative evaluation before delivery — security scanning, content categorization, or quality scoring. As a seller, you participate by submitting creative manifests to governance agents via `get_creative_features` and honoring the feature requirements the buyer sets (for example, blocking creatives flagged for `auto_redirect` or `credential_harvest`). You do not need to implement the evaluation yourself; specialist governance agents handle that. + +See the [creative governance overview](/dist/docs/3.2.0-beta.4/governance/creative/index) for the feature-based evaluation model and multi-agent collaboration pattern. + +### For Sponsored Intelligence sellers: generation-time enforcement + +Traditional sellers apply governance as a post-delivery filter — classify content, then block what fails. Sponsored Intelligence platforms generate creative at serve time, which means governance rules can be enforced during generation rather than after the fact. When a buyer pushes content standards, apply them as constraints on your generation pipeline so unsuitable content is never produced. This gives brands a fundamentally stronger guarantee: suitability is built into the output, not bolted on as a check afterward. See the [Sponsored Intelligence guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) for how content standards integrate with catalog-driven creative generation. + +## How it connects to your existing stack + +AdCP sits alongside your existing APIs and dashboards. It doesn't replace your self-serve platform or your internal campaign management system. It adds a standard interface that AI agents can use. + +| Your existing system | How AdCP relates | +|---|---| +| Self-serve dashboard | AdCP serves a different audience (AI agents, not humans) | +| Management API | AdCP provides a standard subset; your API provides the full feature set | +| Ad server (GAM, custom) | AdCP sends campaign instructions; your ad server handles delivery | +| OpenRTB integration | AdCP handles campaign setup; OpenRTB handles impression-level auctions | + +## Getting started + + + + Create and validate your adagents.json file using the interactive builder. + + + Full reference for sell-side task implementations: products, media buys, and delivery reporting. + + + Implementation guides, SDKs, and integration patterns. + + + What sits behind protocol compliance — activation, storage, hosting, and build-vs-buy. + + + Ask questions about implementing AdCP for your platform — no code required. + + + Product modeling and workflows for AI platforms and ad networks. + + + Product modeling and workflows for retail media networks. + + diff --git a/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting.mdx b/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting.mdx new file mode 100644 index 0000000000..c3f3bcfa2b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting.mdx @@ -0,0 +1,148 @@ +--- +title: Storyboard troubleshooting +description: "Common failure patterns when running AdCP compliance storyboards — missing fixtures, signature challenges, envelope drift, context echo, capability mismatches, and state-machine error codes." +"og:title": "AdCP — Storyboard troubleshooting" +--- + +When a compliance storyboard fails against your agent, the runner reports a step name and error text. This page maps the most common error patterns to their root causes and fixes, so you can resolve each class of failure without spelunking through SDK source or runner internals. + +Each section shows the error you'll see, what it means, and what to change in your agent. + +## Unknown fixture errors + +``` +× (unknown step): PRODUCT_NOT_FOUND: Package 0: Product not found: test-product +``` + +The storyboard's `sample_request` references a hardcoded ID (`test-product`, `test-pricing`, `campaign_hero_video`, `gov_acme_q2_2027`, etc.). The runner expects the agent to have that ID in its catalog before the mutating step runs. + +**Fix:** On the dev or staging endpoint registered for Verified (Spec), implement `comply_test_controller` and honor the seed scenarios declared in the storyboard's `fixtures:` block. Do not expose the controller on the production endpoint used for Verified (Sandbox). When `prerequisites.controller_seeding: true` is set, the runner auto-injects a fixtures phase that calls `seed_product`, `seed_pricing_option`, `seed_creative`, `seed_plan`, or `seed_media_buy` in foreign-key order before the main phases execute. + +Implement only the scenarios your selected specialisms require. For example, `sales-non-guaranteed` needs `seed_product` and `seed_pricing_option`; it does not require the full controller surface unless another selected storyboard declares additional fixtures. + +See [Compliance test controller — Scenarios](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#scenarios) for the full seed contract. Agents that return `UNKNOWN_SCENARIO` on a seed call grade the storyboard `not_applicable` — they are not penalized for missing sandbox surface, but they cannot pass storyboards that depend on pre-seeded state. + +## Ambiguous sandbox account discovery + +``` +× Discover sandbox accounts for media buy: list_accounts returned multiple matching accounts (acct-a, acct-b); provide media_buy_account_id/account_id to disambiguate +``` + +The runner is resolving an account-id namespace (`account.require_operator_auth: true`) and the credential can see more than one plausible sandbox account. It cannot safely choose an `account_id` for later media-buy calls. + +**Fix:** Prefer a dedicated compliance credential bound to one sandbox account. If the credential must expose a roster, return enough brand data for exactly one active sandbox row to match the selected test kit's `brand.house.domain`. Do not set `require_operator_auth: false` as a workaround unless the seller genuinely uses buyer-declared natural keys (`brand` + `operator`); that flag is a buyer-facing account-model promise, not a runner hint. + +When a valid `account` capability block is present, merely exposing `list_accounts` does not opt a buyer-declared seller into account-ID discovery. Leave `require_operator_auth` false or absent, and support `sync_accounts` with `sandbox: true`, when the buyer declares accounts. If the whole `account` block is absent or could not be read, the runner may retain its legacy `list_accounts` discovery heuristic. See [Get test-ready — Pick your sandbox bootstrap path](/dist/docs/3.2.0-beta.4/building/verification/get-test-ready). + +## Signature challenge missing on 401 + +``` +× (unknown step): expected error="request_signature_required", got error="(none)" +``` + +The storyboard sent an unsigned request to an operation declared in `get_adcp_capabilities.request_signing.required_for`. Your agent rejected with 401 but did not include a `WWW-Authenticate: Signature ...` challenge header, so the runner could not resolve the error code from the transport binding. + +**Fix:** Emit the RFC 9421 challenge header on every 401 caused by missing or invalid signatures. The runner resolves the error code via the transport binding order — if the `WWW-Authenticate` header is absent, the error classification falls back to "(none)" even when the JSON body carries a useful message. + +The reference SDK constructs these errors via `RequestSignatureError` from `@adcp/sdk/signing` with `.code: RequestSignatureErrorCode`. The full taxonomy (`request_signature_required`, `request_signature_header_malformed`, `request_signature_tag_invalid`, `request_signature_window_invalid`, `request_signature_key_unknown`, etc.) is enumerated in that module. Your agent SHOULD surface the same code on the challenge so SDK-speaking callers can recover automatically. + +See [Signed Requests (Transport Layer)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) for the challenge-header format and the [transport-error binding order](/dist/docs/3.2.0-beta.4/building/operating/transport-errors). + +## Response envelope drift + +``` +× (unknown step): Response contains errors array +``` + +The vector used `check: error_code` but your response surfaces the error on a shape the runner's client-detection order didn't expect. In practice, this means your agent returned `errors[]` when the transport layer already carried `adcp_error`, or vice versa — the storyboard asserted a single error code and the runner resolved it from a different layer than you emitted on. + +**Fix:** Pick one error surface per response and stick to it per the [envelope vs. payload two-layer model](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#envelope-vs-payload-errors-the-two-layer-model). On MCP: `adcp_error` for structured content; `errors[]` for task-payload errors. On A2A: the same layers apply — transport error in the envelope, application error in the task artifact's DataPart. + +The runner's `check: error_code` is shape-agnostic — it resolves from either layer — but if your agent emits both simultaneously they can disagree, and the runner grades the resolved code against the vector's expectation. Choosing one surface and being consistent avoids the divergence. + +## Context echo failures + +``` +× (unknown step): expected field "context.correlation_id" = "xyz", got (missing) +``` + +Your agent returned a response that does not include the `context:` object from the request. Every storyboard step that sends `context: { correlation_id: ... }` asserts that `context.correlation_id` echoes unchanged in the response. + +**Fix:** Preserve the full `context:` object verbatim on every response, including errors. The echo contract is normative — buyers use `correlation_id` to stitch multi-agent flows, and the runner grades every context-carrying step on it. See [Context and sessions — Normative echo contract](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#normative-echo-contract). + +Captures use the same contract in reverse: storyboards that pass `"$context."` through `context_outputs:` rely on the capture populating after the producer step's validations pass. A downstream step reading `$context.foo` when the producer failed or omitted `context:` grades as `unresolved_substitution`. + +## Capability-vector mismatch (runner declared, agent doesn't support) + +``` +× (unknown step): capability X asserted but not declared in get_adcp_capabilities +``` + +The storyboard dispatched a step that requires a capability your agent does not advertise in its `get_adcp_capabilities` response. The runner should auto-skip these steps; if you're seeing them graded as failures instead, either the capability is declared at the wrong key or the runner is missing the auto-skip path. + +**Fix:** Double-check your `get_adcp_capabilities.tools` list and any required-for fields (`request_signing.required_for`, `idempotency.supported_tools`, etc.). For vectors that apply only to specialized agents, the storyboard author can use `skipVectors` to flag the opt-out explicitly; as an implementer, the fix is almost always on the capability declaration rather than the vector. + +## Required-for composition + +``` +× (unknown step): missing auth — step requires authenticated or signed +``` + +The runner encountered a mutating step that expected either authenticated credentials or a signed request, and the transport carried neither. Typically this means the test kit didn't declare `auth.api_key` or `auth.basic` AND the agent doesn't advertise request-signing support — leaving the runner with no way to authenticate the call. + +**Fix:** Either (a) declare `auth.api_key` or `auth.basic` in the test kit so the runner uses a static Authorization-header credential, or (b) advertise request-signing via `get_adcp_capabilities.request_signing` so the runner signs the request instead. The runner's `requireAuthenticatedOrSigned` gate accepts either path — it fails only when both are absent. + +## Static-credential agent: no auth mechanism contributed (assert_mechanism) + +```json +{ + "check": "assertion", + "passed": false, + "description": "Probe validations failed.", + "expected": ["auth_mechanism_verified"], + "actual": [] +} +``` + +The `mechanism_required` phase found no contribution to `auth_mechanism_verified` from any optional auth phase. This is the most common failure for static-credential-only agents (Bearer API key or HTTP Basic), and it is not a real auth problem — it is a test-kit configuration gap. + +**What happened:** The `api_key_path` phase has `skip_if: "!test_kit.auth.api_key"` and the `basic_path` phase has `skip_if: "!test_kit.auth.basic"` — each is skipped unless the test kit declares the matching credential. The `oauth_discovery` phase 404s on `/.well-known/oauth-protected-resource/...` (expected for static-credential-only agents; those failures are silently ignored by the runner). With all optional auth phases contributing nothing, `assert_mechanism` sees `actual: []`. + +**The `--auth TOKEN` distinction:** The `--auth TOKEN` flag you pass to the runner is the runner's own session credential — it authorizes the runner's own requests to your agent. It is entirely separate from `test_kit.auth.api_key` or `test_kit.auth.basic`, which are the specific credentials the static-credential phases send during positive and invalid-credential probes. These are not the same token and are not interchangeable. + +**Fix for Bearer API key agents:** Every default AdCP brand test kit declares its probe API key under `auth.api_key` using the `demo--v1` naming convention. The default test kit (`acme-outdoor`) uses `demo-acme-outdoor-v1`. Configure your agent to accept the kit's probe key as a valid compliance-testing credential alongside your production key. The `demo--` prefix is the AdCP conformance handle — accept any Bearer token matching the prefix for the kits you run against (the suffix can rotate across spec versions, the prefix stays stable): + +```typescript +serve({ + authenticate: verifyApiKey({ + keys: { + [PRODUCTION_TOKEN]: { principal: 'my-principal' }, + // Accept the default compliance kit's probe key (and any future suffix rotation) + 'demo-acme-outdoor-v1': { principal: 'compliance-runner' }, + } + }) +}) +``` + +**Fix for HTTP Basic agents:** Use a test kit that declares `auth.basic` with either `username`/`password` or a single `credentials` value containing the unencoded `username:password` pair. Configure your agent to accept that Basic credential as a valid compliance-testing credential alongside your production Basic credential. The `basic_path` phase then sends the valid Basic credential and a random-invalid Basic credential, and contributes `auth_mechanism_verified` only when the agent accepts the valid credential and rejects the invalid one. + +Agents that only accept their own production credential skip the matching static path (no test-kit credential matches), fail `oauth_discovery` (no PRM), and land at `actual: []` in `assert_mechanism`. Adding the test-kit credential to your allowed-credentials set is sufficient — you do not need a PRM endpoint or an OAuth issuer. + +Do not serve a fake `/.well-known/oauth-protected-resource/...` pointing at a non-existent issuer to "pass" the OAuth phase. That triggers the advertised-but-unserved failure mode the storyboard was designed to catch. + +See [Known spec ambiguities — PRM required for non-OAuth agents](/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities#prm-required-for-non-oauth-agents) for background on why the carve-out exists and how the static-credential / `oauth_discovery` phase semantics were designed. + +## `INVALID_STATE` vs `INVALID_TRANSITION` + +Two codes that are easy to confuse: + +- **`INVALID_STATE`** — the canonical AdCP media-buy error code for "the resource is in a state that doesn't allow this action." Used on `create_media_buy`/`update_media_buy`/`pause`/`resume`/`cancel` against a media buy that cannot transition as requested. See `media-buy/specification.mdx` and `media-buy/media-buys/index.mdx` for authoritative usage. +- **`INVALID_TRANSITION`** — specific to the `comply_test_controller` sandbox primitive. Emitted when a runner requests a state-machine transition the seller rejects (e.g., forcing `approved` → `archived` without going through `active`). See [Compliance test controller — Scenarios](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#scenarios). + +A storyboard vector that asserts `INVALID_STATE` on a production task but your agent returns `INVALID_TRANSITION` is an error-code vocabulary mismatch — `INVALID_TRANSITION` is not in the canonical enum at `static/schemas/source/enums/error-code.json` and should not appear outside the compliance test controller. + +## When none of the above matches + +If you hit a failure that doesn't map to anything here, check the [known spec ambiguities](/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities) page — some storyboards are blocked on resolved-but-unreleased spec gaps, and the workaround is tracked there. + +Still stuck? File an issue at [adcontextprotocol/adcp](https://github.com/adcontextprotocol/adcp/issues) with the storyboard name and the smallest relevant, redacted error excerpt. Remove credentials, agent URLs, account or resource identifiers, and business or personal data; do not attach full request or response payloads. Maintainers can usually narrow the pattern from the error signature. diff --git a/dist/docs/3.2.0-beta.4/building/operating/support-recovery-runbooks.mdx b/dist/docs/3.2.0-beta.4/building/operating/support-recovery-runbooks.mdx new file mode 100644 index 0000000000..436a4feb7e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/support-recovery-runbooks.mdx @@ -0,0 +1,222 @@ +--- +title: "Support recovery runbooks" +sidebarTitle: "Support recovery" +description: "Operational runbooks for escalation SLA follow-up, certification completion recovery, domain verification, and registry crawl recovery." +"og:title": "AdCP - Support recovery runbooks" +--- + +# Support recovery runbooks + +These runbooks cover support cases that should not sit silently in Addie, certification, or registry queues. + +## Escalation SLA follow-up + +Addie support requests are visible in the admin escalation dashboard and in the requester's dashboard. The SLA enforcement job runs hourly. + +Admin follow-up rules: + +- Urgent open requests are re-surfaced to the configured private escalation Slack channel after 4 hours. +- Other open requests are re-surfaced after 24 hours. +- Acknowledged or in-progress requests are re-surfaced after 24 hours without an update. +- Requesters receive a visible dashboard update after 24 hours and can add details or close the request themselves. + +Operator checklist: + +1. Open `/admin/escalations`. +2. Filter to active requests and look for "Needs pickup" or "Needs update". +3. Acknowledge or move the request to in progress when a human owns it. +4. Add requester-visible notes when the requester needs status. +5. Resolve the request when fixed, and notify the user when appropriate. + +If Slack notifications are missing, configure the escalation channel in `/admin/settings`. + +## Certification completion recovery + +The certification recovery job runs every 6 hours. It looks for passed attempts that did not finish module or credential reconciliation. + +Automatic behavior: + +- Reconcile the passed attempt to `learner_progress`. +- Re-run credential eligibility and awarding. +- File a deduplicated escalation if automatic repair cannot award the credential. + +Manual repair: + +1. Open `/admin/certification`. +2. In "Attempts needing attention", click "Reconcile credentials" for passed attempts. +3. If the attempt still has warnings, open the learner detail panel. +4. Use "Admin completion repair" only when there is a teaching checkpoint for the learner, module, and Addie thread. +5. Run "Issue missing badges" when the local credential exists but Certifier badge fields are missing. +6. Record the escalation ID or reason in the note field. + +Do not create a duplicate manual credential unless the learner record already proves the module completion. Repair the learner record first, then issue or backfill the credential. + +## Domain verification recovery + +Use admin domain verification recovery when a member has published the WorkOS DNS TXT record but the self-service verify path is blocked, rate-limited, or the webhook did not update local state. + +This is an internal support workflow. Use authenticated admin domain tooling or the private ops runbook; public docs should not expose admin endpoint paths, bearer-token examples, or WorkOS challenge-token handling. + +Before closing a registry/domain escalation as resolved, confirm the registry state, not just the AAO UI: + +- The target domain has a local `organization_domains` row for the intended org. +- That row is `verified=true`. +- The row is not attached to the member's personal workspace when the support request is for a company org. +- The registry no longer returns `member:null` for the relevant domain. +- The requested agent hostname is covered by a verified domain row on the registering org. + +If WorkOS shows a verified domain but the local rows are missing, stale, or attached to another org, run the WorkOS-domain reconciliation action for the intended org. This replays WorkOS as the source of truth, mirrors domains into `organization_domains`, and re-runs brand-registry sync for verified domains. It does not bypass DNS verification; WorkOS still has to know the domain/challenge first. + +For personal-workspace/company-org split incidents, run the read-only admin preview first: + +- Use the private domain-split preview from the internal ops runbook or admin UI. +- The preview reports WorkOS state, local `organization_domains`, member-profile presence, org membership, and the next safe action. +- Only run the reconciliation action when the preview says WorkOS already verifies the domain for the company org. +- If billing appears attached to the personal workspace, use the separate Stripe customer preview/confirm workflow after human review; do not move billing in the domain repair path. + +Outcomes: + +- `success: true`: WorkOS confirmed DNS and local `organization_domains` was reconciled. +- `still_pending`: WorkOS still cannot see the TXT record. Ask the member to confirm the record name and token. +- `no_challenge`: issue a new domain challenge from the member domain settings or admin domain tooling. + +DNS propagation normally takes minutes, but stale provider caches can last longer. Do not keep retrying every few seconds; fix the DNS record and retry after propagation. + +If the request is invalid or suspicious, close it as `wont_do` with notes. Do not mark a registry/domain escalation `resolved` while the local domain row is missing, unverified, or attached to the wrong org. + +## Registry and heartbeat recovery + +Use these triggers after a member fixes `adagents.json`, `brand.json`, authorization, or endpoint health. + +Publisher and brand crawl requests require an authenticated member or admin request and a JSON `domain` body: + +```bash +curl -X POST "https://agenticadvertising.org/api/registry/crawl-request" \ + -H "Content-Type: application/json" \ + -b "$SESSION_COOKIE" \ + --data '{"domain":"example.publisher"}' +``` + +Expected accepted response: + +```json +{ + "message": "Crawl request accepted", + "domain": "example.publisher", + "crawl_request_id": "8d127de4-5568-4756-b66c-dd9b0780fd8f" +} +``` + +Acceptance means the request was committed to the durable PostgreSQL queue; it +does not mean the crawl has completed. Check the request with the same member +or admin session: + +```bash +CRAWL_REQUEST_ID="8d127de4-5568-4756-b66c-dd9b0780fd8f" +curl "https://agenticadvertising.org/api/registry/crawl-request/$CRAWL_REQUEST_ID" \ + -b "$SESSION_COOKIE" +``` + +The lifecycle is `queued` → `running` → `completed` or `invalid`. Transient +failures move through `retrying`; full-crawl contention produces `deferred` +without consuming an attempt. `failed` is terminal after the bounded retry +budget. Request history is retained for 30 days. + +If a worker exits while a request is running, its two-minute lease expires and +another worker reclaims the request. Do not manually change queue rows. For a +terminal `failed` request, correct the reported error category and submit a new +crawl request after the per-domain rate-limit window; the old request remains +as the audit record. + +Workers claim at most the configured crawl concurrency per tick. If a periodic +full crawl is active, claimed requests are persisted as `deferred`, their claim +attempt is refunded, and they become eligible again after 30 seconds. This +makes contention visible without spending the retry budget or performing +origin work. On worker startup, the durable queue starts immediately and the +initial full crawl waits a fixed 30 seconds. This gives already-due requests a +bounded opportunity to run after a deploy. After that window, the full crawl +holds an exclusive PostgreSQL intent lock while waiting for active publisher +crawls, including across bounded execution-lock timeouts and retries. New +publisher crawls therefore defer instead of starving the six-hour full crawl. +Each active publisher crawl holds a PostgreSQL shared global execution lock and +an exclusive per-domain lock for the fetch/write lifecycle; the periodic full +crawl holds the exclusive global lock. These session locks use dedicated +connections outside the application pool, so crawl concurrency does not consume +the connections needed by heartbeats, status reads, or mirror transactions. A +lost worker session releases its locks automatically. The locks prevent an +expired or duplicate attempt from +overwriting newer mirror state. The mirror transaction +also verifies the current request lease token before committing. Publisher GET +requests do not acquire these locks and continue to serve the last committed +mirror state while crawling is delayed or unavailable. + +Routine dedicated lock-session operations are bounded at 10 seconds. Full-crawl +intent acquisition may wait 10 seconds, with a 10-second socket-operation +margin. The periodic full crawl may wait up to two minutes for the global lock, +plus the same operation margin. A missed keepalive or unlock deadline +invalidates the lock and forcibly closes its dedicated connection so a wedged +socket cannot hold a queue worker or request lease indefinitely. + +For the first deployment, use Fly's `immediate` strategy and leave +`PUBLISHER_CRAWL_QUEUE_ENABLED=false`. Immediate replacement prevents an old +image, which does not participate in the new PostgreSQL execution locks, from +overlapping a new worker. After every machine runs the lock-participating image, +set the gate to `true` and restart that image before accepting requests. Keep +that consumer-capable image available for rollback; rolling back to an older +image pauses queued work and removes status lookup until the new image is +restored, but does not delete committed requests. Restore the normal rolling +strategy only after every deployable image participates in these locks. + +Admission returns `crawl_queue_at_capacity` with `503` and `Retry-After` when +10,000 active requests are already queued or running. This is backpressure, not +acceptance; retry later rather than inserting or editing queue rows manually. + +Operational logs include `crawl_request_id`, attempt count, +`accepted_to_terminal_ms`, queue depth, oldest-due lateness, reclaimed-lease +count, and final-attempt lease expirations. A `Publisher crawl request queue +requires attention` warning means a lease is expired or due work is more than +five minutes late; requests intentionally waiting in retry backoff do not +trigger it. Confirm that the worker process is healthy, then use the status +endpoint to determine whether the request recovered before escalating. + +For brand manifests, use the same body shape: + +```bash +curl -X POST "https://agenticadvertising.org/api/registry/brand-crawl-request" \ + -H "Content-Type: application/json" \ + -b "$SESSION_COOKIE" \ + --data '{"domain":"example.brand"}' +``` + +Expected accepted response: + +```json +{ "message": "Brand crawl request accepted", "domain": "example.brand" } +``` + +Agent refresh and heartbeat requeue use an encoded agent URL. The caller must own the agent or be an AAO admin. + +```bash +AGENT_URL="https://seller.example/adcp" +ENCODED_URL="$(node -e 'process.stdout.write(encodeURIComponent(process.argv[1]))' "$AGENT_URL")" + +curl -X POST "https://agenticadvertising.org/api/registry/agents/$ENCODED_URL/refresh" \ + -b "$SESSION_COOKIE" +``` + +Refresh returns the latest probe result or a `409`, `429`, or `502` error if monitoring is paused, rate-limited, or the probe fails. + +Queue heartbeat without synchronous probing when the agent should be checked by the normal monitor: + +```bash +curl -X POST "https://agenticadvertising.org/api/registry/agents/$ENCODED_URL/monitoring/requeue" \ + -b "$SESSION_COOKIE" +``` + +Expected response: + +```json +{ "requeued": true } +``` + +Use refresh for a specific agent after endpoint or capability fixes. Use crawl request for publisher authorization changes. diff --git a/dist/docs/3.2.0-beta.4/building/operating/transport-errors.mdx b/dist/docs/3.2.0-beta.4/building/operating/transport-errors.mdx new file mode 100644 index 0000000000..a163a0486d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/operating/transport-errors.mdx @@ -0,0 +1,728 @@ +--- +title: Transport Error Mapping +description: "How AdCP structured errors travel over MCP and A2A transports: extraction paths, JSON-RPC codes, recovery behavior, and client implementation requirements." +"og:title": "AdCP — Transport Error Mapping" +--- + +AdCP errors are **application-layer** errors. They belong in the tool/task response, not in the transport error channel. This page defines how the [`error.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/error.json) schema maps to MCP and A2A response envelopes. + +For the error schema itself, standard codes, and recovery strategies, see [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). + +## Layer Separation + +| Layer | Examples | Channel | +|---|---|---| +| Transport | Connection refused, malformed JSON-RPC, internal crash | JSON-RPC `error` / A2A protocol error | +| Application | `RATE_LIMITED`, `BUDGET_TOO_LOW`, `CREATIVE_REJECTED` | Tool/task response body | + +Transport errors are handled by protocol libraries. Application errors are handled by business logic. Mixing them loses the structured recovery data that makes AdCP errors useful. + +## MCP Binding + +### Tool-Level Errors + +The standard path for all AdCP error codes. The tool executed, understood the request, and is returning a structured error. + +**Today's practical path:** Most MCP hosts (Claude Desktop, Cursor, Windsurf) read `content` text on error responses and do not surface `structuredContent` to LLMs or programmatic consumers. Until `structuredContent` adoption is widespread, the text-fallback path is how most errors will be extracted. Servers SHOULD support both paths: + +```json +{ + "content": [{"type": "text", "text": "{\"adcp_error\":{\"code\":\"RATE_LIMITED\",\"message\":\"Request rate exceeded\",\"retry_after\":5,\"recovery\":\"transient\"}}"}], + "isError": true, + "structuredContent": { + "adcp_error": { + "code": "RATE_LIMITED", + "message": "Request rate exceeded", + "retry_after": 5, + "recovery": "transient" + } + } +} +``` + +**`content` text** carries the AdCP error as a JSON string for text-based extraction. **`structuredContent.adcp_error`** carries the same error for programmatic clients that support it. Servers that include human-readable text SHOULD add it as a second content item, keeping it terse (one sentence): + +```json +{ + "content": [ + {"type": "text", "text": "{\"adcp_error\":{\"code\":\"RATE_LIMITED\",\"message\":\"Request rate exceeded\",\"retry_after\":5,\"recovery\":\"transient\"}}"}, + {"type": "text", "text": "Rate limited — retry in 5s."} + ], + "isError": true, + "structuredContent": { + "adcp_error": { + "code": "RATE_LIMITED", + "message": "Request rate exceeded", + "retry_after": 5, + "recovery": "transient" + } + } +} +``` + +**Terse text when `structuredContent` is present.** When `structuredContent` carries the full error, the human-readable text content item SHOULD be a single terse sentence (e.g., "Rate limited — retry in 5s."). The error details are already in `structuredContent` and the JSON text fallback. Repeating the full error in prose wastes LLM context tokens — especially for transient errors that accumulate during retries. + +**`adcp_error` key**: Namespacing avoids collisions with success data that may also appear in `structuredContent` (e.g., `products`). A single key simplifies detection. + +**`structuredContent`** requires MCP 2025-03-26 or later. Servers on older MCP versions omit `structuredContent` — the JSON string in `content[0].text` is sufficient. Clients parse this via the text-fallback path (see [Client Detection Order](#client-detection-order)). + +### Transport-Level Errors + +When infrastructure rejects a request *before* tool dispatch (API gateway, rate-limit middleware), the tool never executes. Use a reserved JSON-RPC error code with the AdCP error in `data`: + +```json +{ + "jsonrpc": "2.0", + "id": "req-123", + "error": { + "code": -32029, + "message": "Rate limit exceeded", + "data": { + "adcp_error": { + "code": "RATE_LIMITED", + "retry_after": 5, + "recovery": "transient" + } + } + } +} +``` + +### Reserved JSON-RPC Codes + +| Code | AdCP Error Code | When | +|---|---|---| +| `-32029` | `RATE_LIMITED` | Infrastructure rate limit before tool dispatch | +| `-32028` | `AUTH_MISSING` | No credentials presented; auth rejected by middleware before tool dispatch | +| `-32027` | `SERVICE_UNAVAILABLE` | Infra health check fails, upstream down | + +These codes are in the JSON-RPC server-defined range (`-32000` to `-32099`). All other AdCP error codes use the tool-level path exclusively. + + +**MCP server SDK note:** Throwing `McpError` from inside a tool handler produces a JSON-RPC error response — the SDK does **not** convert it to an `isError: true` tool result. This means `-32029` works the same way whether thrown from middleware or a tool handler. However, application-layer errors (where the tool understood the request and is returning a structured failure) should use the `isError: true` tool-level path above, not JSON-RPC error codes. Reserve `-32029`/`-32028`/`-32027` for infrastructure that rejects requests before tool dispatch. + + +### MCP Server Implementation + +```javascript +function adcpErrorResponse(error) { + const adcpError = { + code: error.code, + message: error.message, + recovery: error.recovery, + ...(error.retry_after != null && { retry_after: error.retry_after }), + ...(error.field != null && { field: error.field }), + ...(error.suggestion != null && { suggestion: error.suggestion }), + ...(error.details != null && { details: error.details }), + }; + return { + content: [{ type: "text", text: JSON.stringify({ adcp_error: adcpError }) }], + isError: true, + structuredContent: { adcp_error: adcpError }, + }; +} + +server.tool( + "get_products", + "Search product catalog", + { query: z.string() }, + async ({ query }) => { + try { + const products = await searchProducts(query); + return { + content: [{ type: "text", text: `Found ${products.length} products` }], + structuredContent: { products }, + }; + } catch (err) { + if (err.code && err.recovery) { + return adcpErrorResponse(err); + } + throw err; + } + } +); +``` + +## A2A Binding + +### Failed Tasks + +Use `status: "failed"` with the AdCP error in an artifact `DataPart`, plus a `TextPart` for human/LLM consumption: + +```json +{ + "id": "task_456", + "status": { + "state": "failed", + "timestamp": "2025-01-22T10:30:00Z" + }, + "artifacts": [{ + "artifactId": "error-result", + "parts": [ + { + "kind": "text", + "text": "Rate limit exceeded. Retry in 5 seconds." + }, + { + "kind": "data", + "data": { + "adcp_error": { + "code": "RATE_LIMITED", + "message": "Request rate exceeded", + "retry_after": 5, + "recovery": "transient" + } + } + } + ] + }] +} +``` + +This follows the [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format) conventions: final states use `.artifacts` for data. + +**Relationship to the "no wrappers" rule.** The `adcp_error` key is an intentional exception for failed tasks. Unlike success responses where `DataPart` contains task-specific data (e.g., `products`), a failed task's `DataPart` contains only the error. The key acts as a type discriminator so clients can distinguish error from success payloads without relying solely on status. + +### Error MIME Type (Optional) + +A2A agents MAY set `metadata.mimeType` on the error `DataPart`: + +```json +{ + "kind": "data", + "data": { "adcp_error": { "code": "RATE_LIMITED", "recovery": "transient" } }, + "metadata": { "mimeType": "application/vnd.adcp.error+json" } +} +``` + +Clients MUST NOT require the MIME type. The `adcp_error` key is the authoritative signal. + +## Envelope vs. payload errors + +AdCP exposes errors in two distinct places. This page covers the **transport envelope** (`adcp_error`); the **payload errors array** (`errors[]`) is covered in [Error Handling — Envelope vs. payload errors](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#envelope-vs-payload-errors-the-two-layer-model). + +| Layer | Key | When to populate | Readers | +|---|---|---|---| +| **Transport envelope** (this page) | `adcp_error` (MCP `structuredContent`, A2A `DataPart`, JSON-RPC `error.data`) | The task failed; transport needs a typed, extractable error signal | MCP hosts, A2A clients, `@adcp/sdk` | +| **Task payload** | `payload.errors[]` (or top-level `errors[]`) | The task ran; payload reports one or more issues (fatal or non-fatal warnings) | Business-logic consumers | + +A fatal task failure SHOULD populate **both** layers — see the canonical `protocol-envelope.json` examples and the `error-handling.mdx` reference for the normative SHOULD. + +## Client Detection Order + +Clients MUST check for AdCP errors in this order: + +1. **`structuredContent.adcp_error`** (with `isError: true`) — MCP tool-level error +2. **`artifacts[].parts[].data.adcp_error`** — A2A task-level error (artifacts) +3. **`status.message.parts[].data.adcp_error`** — A2A task-level error (status message) +4. **`error.data.adcp_error`** — JSON-RPC transport-level error +5. **JSON-parsed `content[].text` with `adcp_error` key** — Text fallback for older MCP servers (only for `isError` responses) +6. **`payload.errors[0]`** (or top-level `errors[0]`) — payload-layer fallback. Used when the transport envelope does not surface `adcp_error` but the payload carries an `errors[]` array. Reading from the payload is legitimate for non-fatal cases where only the payload layer is populated (e.g., `input-required` tasks reporting warnings), but a fatal task that surfaces errors only via the payload is a conformance gap on the agent side. +7. **No structured error found** — fall back to generic error handling. + +Clients MUST validate that extracted errors have a `code` field of type `string`. If validation fails, treat as no structured error found. + +### Storyboard `check: error_code` contract + +Storyboard validators use `check: error_code` rather than path-specific assertions because the error may surface on either layer. The runner contract: + +- `check: error_code` resolves the error code by running the [client detection order](#client-detection-order) above — preference in order: `adcp_error.code` (transport) → `errors[0].code` (payload). +- If neither layer carries a `code`, the validation fails with `error_code_not_resolvable`. +- Storyboard authors SHOULD NOT pin assertions to a specific path (e.g., `check: field_present, path: "errors"`) — that couples the test to one layer and fails against agents that surface errors on the other. See [Storyboard authoring — Asserting on errors](/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring#asserting-on-errors). + +**Extraction vs. action.** The detection order above is the *extraction* layer — it returns the raw `adcp_error` object with field values preserved as-is (including out-of-range `retry_after`). Clamping, retry logic, and other behavioral requirements apply at the *action* layer (see [Recovery Behavior](#recovery-behavior)). + +In practice, implementations branch on transport type first and only check the relevant paths: + + +```javascript MCP Client +function extractAdcpErrorFromMcp(response) { + if (!response.isError) return null; + + // 1. structuredContent (preferred) + if (response.structuredContent?.adcp_error) { + return validate(response.structuredContent.adcp_error); + } + + // 2. Text fallback + if (response.content) { + for (const item of response.content) { + if (item.type === 'text' && item.text) { + try { + const parsed = JSON.parse(item.text); + if (parsed && typeof parsed === 'object' && !Array.isArray(parsed) + && parsed.adcp_error) { + return validate(parsed.adcp_error); + } + } catch { /* not JSON */ } + } + } + } + + return null; +} + +// Reject malformed or oversized payloads +function validate(error) { + if (!error || typeof error !== 'object' || Array.isArray(error)) return null; + if (typeof error.code !== 'string') return null; + if (error.code.length === 0 || error.code.length > 64) return null; + if (JSON.stringify(error).length > 4096) return null; + return error; +} + +// For JSON-RPC errors (caught as McpError) +function extractAdcpErrorFromMcpError(error) { + return validate(error.data?.adcp_error); +} +``` + +```javascript A2A Client +function extractAdcpErrorFromA2a(task) { + // 1. Artifacts (preferred — final state data) + if (task.artifacts) { + for (const artifact of task.artifacts) { + const dataParts = (artifact.parts || []).filter(p => p.kind === 'data'); + for (const part of dataParts) { + if (part.data?.adcp_error) { + return validate(part.data.adcp_error); + } + } + } + } + + // 2. status.message.parts (some A2A implementations) + const parts = task.status?.message?.parts; + if (Array.isArray(parts)) { + for (const part of parts) { + if (part.kind === 'data' && part.data?.adcp_error) { + return validate(part.data.adcp_error); + } + } + } + + return null; +} +``` + + +## Recovery Behavior + +Once extracted, apply recovery based on the `recovery` field: + +| Recovery | Client Behavior | +|---|---| +| `transient` | Retry after `retry_after` seconds. When `retry_after` is absent or non-finite, use exponential backoff starting at the client's configured initial delay. | +| `correctable` | Surface `suggestion` and `field` to caller, do not auto-retry | +| `terminal` | Surface error to human operator, do not retry | + +**`retry_after` bounds and migration:** AdCP 3.2 sellers MUST return an integer from 1 through 3600 seconds. A producer converting a computed fractional delay MUST round up before clamping (`ceil(delay)`, then clamp to `[1, 3600]`) so migration never schedules a retry earlier than intended. The 3.x schema continues to accept finite fractional values for backward compatibility with earlier producers; clients that encounter one MUST apply the same ceiling-then-clamp rule. Non-finite values (`NaN`, `Infinity`) MUST be treated as absent. This prevents both aggressive retry loops and pathologically long stalls from misconfigured servers. + +**Retry ceiling:** Buyer agents SHOULD enforce a maximum retry count (e.g., 3 attempts) and a maximum cumulative retry duration (e.g., 300 seconds) per operation. Transient errors that persist beyond the retry budget SHOULD be escalated as terminal. Without a ceiling, a malicious or misconfigured seller returning `retry_after: 3600` on every request can stall an agent indefinitely. + +**When `recovery` is absent:** Fall back to code-based classification using the standard error code table. This allows [Level 1](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#compliance-levels) servers (which return `code` + `message` only) to still get correct recovery behavior from capable clients. If the code is also unknown, treat as `terminal`. + +For unknown `recovery` values (forward compatibility), treat as `terminal`. + +```javascript +// Standard code → recovery mapping for when recovery field is absent +const CODE_RECOVERY = { + RATE_LIMITED: 'transient', + SERVICE_UNAVAILABLE: 'transient', + CONFLICT: 'transient', + INVALID_REQUEST: 'correctable', + AUTH_MISSING: 'correctable', + AUTH_INVALID: 'terminal', + AUTH_REQUIRED: 'correctable', // deprecated alias for AUTH_MISSING + POLICY_VIOLATION: 'correctable', + PRODUCT_NOT_FOUND: 'correctable', + PRODUCT_UNAVAILABLE: 'correctable', + PROPOSAL_EXPIRED: 'correctable', + PROPOSAL_NOT_FOUND: 'correctable', + MULTI_FINALIZE_UNSUPPORTED: 'correctable', + REQUOTE_REQUIRED: 'correctable', + BUDGET_TOO_LOW: 'correctable', + CREATIVE_REJECTED: 'correctable', + UNSUPPORTED_FEATURE: 'correctable', + AUDIENCE_TOO_SMALL: 'correctable', + ACCOUNT_MOVED: 'correctable', + ACCOUNT_IDENTITY_CONFLICT: 'correctable', + ACCOUNT_SETUP_REQUIRED: 'correctable', + ACCOUNT_AMBIGUOUS: 'correctable', + COMPLIANCE_UNSATISFIED: 'correctable', + GOVERNANCE_DENIED: 'correctable', + MEDIA_BUY_NOT_FOUND: 'correctable', + PACKAGE_NOT_FOUND: 'correctable', + CREATIVE_NOT_FOUND: 'correctable', + SIGNAL_NOT_FOUND: 'correctable', + SESSION_NOT_FOUND: 'correctable', + SESSION_TERMINATED: 'correctable', + REFERENCE_NOT_FOUND: 'correctable', + VALIDATION_ERROR: 'correctable', + ACCOUNT_NOT_FOUND: 'terminal', + ACCOUNT_PAYMENT_REQUIRED: 'terminal', + ACCOUNT_SUSPENDED: 'terminal', + BUDGET_EXHAUSTED: 'terminal', + CONFIGURATION_ERROR: 'terminal', +}; + +function getRecovery(adcpError) { + if (adcpError.recovery) return adcpError.recovery; + return CODE_RECOVERY[adcpError.code] || 'terminal'; +} + +function handleAdcpError(adcpError) { + switch (getRecovery(adcpError)) { + case 'transient': + const raw = adcpError.retry_after; + const delay = Number.isFinite(raw) ? Math.max(1, Math.min(3600, Math.ceil(raw))) : null; + return { action: 'retry', delaySeconds: delay }; + + case 'correctable': + return { + action: 'fix_request', + field: adcpError.field, + suggestion: adcpError.suggestion, + }; + + case 'terminal': + return { action: 'escalate', message: adcpError.message }; + + default: + // Unknown recovery value: treat as terminal + return { action: 'escalate', message: adcpError.message }; + } +} +``` + +## Recommended `details` Shapes + +The `details` field is an open object. To prevent interoperability divergence, sellers SHOULD use these standard keys when populating `details` for common error codes: + +### `RATE_LIMITED` + +```json +{ + "code": "RATE_LIMITED", + "retry_after": 5, + "recovery": "transient", + "details": { + "limit": 100, + "remaining": 0, + "window_seconds": 60, + "scope": "account" + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `limit` | number | Maximum requests allowed in the window | +| `remaining` | number | Requests remaining in the current window | +| `window_seconds` | number | Duration of the rate-limit window | +| `scope` | string | What the limit applies to: `account`, `tool`, or `global` | + +### `BUDGET_TOO_LOW` + +```json +{ + "code": "BUDGET_TOO_LOW", + "recovery": "correctable", + "details": { + "minimum_budget": 500, + "currency": "USD" + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `minimum_budget` | number | Seller's minimum budget for this product | +| `currency` | string | ISO 4217 currency code | + +### `AUDIENCE_TOO_SMALL` + +```json +{ + "code": "AUDIENCE_TOO_SMALL", + "recovery": "correctable", + "details": { + "minimum_size": 10000, + "current_size": 2500 + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `minimum_size` | number | Minimum audience size required | +| `current_size` | number | Current audience size | + +### `ACCOUNT_SETUP_REQUIRED` + +```json +{ + "code": "ACCOUNT_SETUP_REQUIRED", + "recovery": "correctable", + "details": { + "setup_url": "https://seller.example.com/setup/acct_123", + "setup_steps": ["Accept terms of service", "Add payment method"] + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `setup_url` | string | URL where account setup can be completed | +| `setup_steps` | string[] | Steps remaining before the account is ready | + +### `CREATIVE_REJECTED` + +This code covers content-policy, brand-safety, and accessibility-review +failures. Policy failures may use the legacy policy detail keys below. +Accessibility failures SHOULD instead use the bounded experimental +[`accessibility-violation.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/error-details/accessibility-violation.json) +shape. + +```json +{ + "code": "CREATIVE_REJECTED", + "recovery": "correctable", + "suggestion": "Revise creative to comply with alcohol advertising policy", + "details": { + "policy_id": "alcohol-advertising-v2", + "policy_url": "https://seller.example.com/policies/alcohol-advertising", + "reasons": ["Contains health claims not permitted for alcohol products"] + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `policy_id` | string | Identifier for the violated policy | +| `policy_url` | string | URL where the full policy can be reviewed | +| `reasons` | string[] | Specific reasons the creative was rejected | + +Structured accessibility details are diagnostic data, not recovery commands. +Clients select the recovery class from `code` and `recovery` only. After schema +validation, they may resolve a violation pointer against an immutable copy of +the original request for UI highlighting or controlled repair, but only when it +targets an allowlisted creative asset location. They MUST NOT execute the +pointer as a dynamic mutation path, treat `/creative_id` as a nested asset path, +or pass raw remediation text to an LLM as instructions. + +### `POLICY_VIOLATION` + +```json +{ + "code": "POLICY_VIOLATION", + "recovery": "correctable", + "details": { + "policy_id": "targeting-restrictions-v3", + "policy_url": "https://seller.example.com/policies/targeting", + "violated_rules": ["No age-based targeting for financial products"] + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `policy_id` | string | Identifier for the violated policy | +| `policy_url` | string | URL where the full policy can be reviewed | +| `violated_rules` | string[] | Specific rules that were violated | + +### `CONFLICT` + +```json +{ + "code": "CONFLICT", + "recovery": "transient", + "message": "Resource was modified since last read", + "details": { + "resource_id": "mb_12345", + "expected_version": 3, + "current_version": 5 + } +} +``` + +| Key | Type | Description | +|-----|------|-------------| +| `resource_id` | string | Identifier of the conflicting resource | +| `expected_version` | number \| string | Version or ETag the client was operating against | +| `current_version` | number \| string | Current version or ETag on the server | + +### Size Guidance + +Sellers SHOULD keep `details` compact. Error responses flow through LLM context windows where every token has a cost — and transient errors that trigger retries can accumulate multiple error responses in a single conversation. As a guideline, keep `details` under 500 serialized JSON bytes (use `JSON.stringify(details).length` in UTF-8 — this matters for non-ASCII content). + +### `details` Schemas + +JSON Schemas for all recommended `details` shapes are published alongside the error code enum: + +- [`/schemas/3.2.0-beta.4/error-details/rate-limited.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/rate-limited.json) +- [`/schemas/3.2.0-beta.4/error-details/budget-too-low.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/budget-too-low.json) +- [`/schemas/3.2.0-beta.4/error-details/audience-too-small.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/audience-too-small.json) +{/* Using latest because account-moved.json is not yet released in any version. + Update to the correct version alias after the next release. */} +- [`/schemas/3.2.0-beta.0/error-details/account-moved.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/error-details/account-moved.json) +- [`/schemas/3.2.0-beta.4/error-details/account-setup-required.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/account-setup-required.json) +- [`/schemas/3.2.0-beta.4/error-details/creative-rejected.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/creative-rejected.json) +- [`/schemas/3.2.0-beta.0/error-details/accessibility-violation.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/error-details/accessibility-violation.json) (experimental `CREATIVE_REJECTED` details) +- [`/schemas/3.2.0-beta.4/error-details/policy-violation.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/policy-violation.json) +- [`/schemas/3.2.0-beta.4/error-details/conflict.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/conflict.json) + +Accessibility violation pointers follow the same request-rooted convention as +core error pointers: `/creative_manifest/assets/hero_image` for +`build_creative`, or `/creatives/0/assets/hero_image` for a batched +`sync_creatives` request. They are never relative to the nested manifest. +When a stored manifest is addressed only by `creative_id`, use `/creative_id`; +the request contains no valid nested asset path. + +These schemas are recommended unless the code's canonical definition explicitly requires a repair field. `ACCOUNT_MOVED`, for example, requires `details.current_account`; without it the caller cannot repair a tombstoned natural-key reference safely. For codes without such a requirement, sellers that omit `details` entirely are conformant and agents fall back to `code`, `message`, and `recovery` when details are absent or unexpected. + +## Seller-Specific Error Codes + +Sellers MAY use error codes not in the [standard vocabulary](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-code.json). To distinguish seller-specific codes from standard codes and avoid collisions between sellers: + +- Seller-specific codes MUST use the format `X_{VENDOR}_{CODE}` (e.g., `X_STREAMHAUS_FLOOR_NOT_MET`) +- `{VENDOR}` MUST be an uppercase alphanumeric identifier (matching `/^[A-Z][A-Z0-9]{1,19}$/`) registered in the vendor error code registry +- `{CODE}` MUST be uppercase alphanumeric with underscores (matching `/^[A-Z][A-Z0-9_]{1,39}$/`) +- Agents MUST handle unknown codes by falling back to the `recovery` classification +- If `recovery` is absent on an unknown code, treat as `terminal` +- Sellers SHOULD register their vendor prefix and codes in the [vendor error code registry](https://adcontextprotocol.org/schemas/3.2.0-beta.4/error-details/vendor-error-codes.json) by submitting a PR + +```javascript +function handleError(error) { + if (isStandardErrorCode(error.code)) { + // Handle per standard code semantics + return handleStandardError(error); + } + + // Unknown/vendor code: fall back to recovery classification + return handleByRecovery(error); +} +``` + +## Client Library Requirements + +Client libraries (like `@adcp/sdk`) that implement this spec MUST: + +1. **Extract structured errors automatically.** Consumers should receive a typed error object with `code`, `recovery`, `retryAfter`, `field`, `suggestion`, and `details` — not a generic error with a message string. + +2. **Implement the detection order.** Check all paths in order: `structuredContent`, artifacts, `status.message.parts`, `error.data`, text fallback. + +3. **Validate extracted errors.** Verify that `code` is a non-empty string (max 64 characters) and that the total serialized payload does not exceed 4096 bytes. Discard payloads that fail validation. + +4. **Guard text fallback with `isError`.** Only attempt JSON-based text extraction on MCP responses where `isError` is `true`. A successful response with JSON content MUST NOT be interpreted as an error. + +5. **Preserve recovery metadata.** The extracted error MUST carry `recovery` and `retry_after` so callers can implement retry logic without re-parsing. + +6. **Handle unknown recovery values.** Treat unknown `recovery` values as `terminal`. + +7. **Clamp `retry_after`.** Values below 1 become 1, values above 3600 become 3600. Non-finite values (`NaN`, `Infinity`) MUST be treated as absent. + +8. **Support text fallback.** Attempt `JSON.parse` on `content[].text` for MCP `isError` responses without `structuredContent`. This will be the primary extraction path until `structuredContent` adoption is widespread. + +Client libraries MAY additionally: + +- Auto-retry `transient` errors with exponential backoff when `retry_after` is present +- Expose a `retryPolicy` option for consumers to configure retry behavior +- Map standard error codes to typed error subclasses using the `STANDARD_ERROR_CODES` table + +## Test Vectors + +Machine-readable test vectors are available at [`/static/test-vectors/transport-error-mapping.json`](https://adcontextprotocol.org/test-vectors/transport-error-mapping.json). Each vector contains: + +- `transport`: `mcp` or `a2a` +- `path`: extraction path (`structuredContent`, `jsonrpc_error`, `text_fallback`, `artifact`) +- `response`: the transport-specific response envelope +- `expected_error`: the AdCP error that should be extracted (or `null` for legacy servers) +- `expected_action`: `retry`, `surface_to_caller`, `escalate_to_human`, or `generic_error` + +Client libraries SHOULD validate their extraction logic against these vectors. + +## Error Translation in Agent Chains + +When a seller agent calls upstream services (APIs, databases, other agents), upstream failures must be translated before returning to the caller. + +**Rule 1: Translate upstream errors into AdCP error codes.** Do not pass through raw upstream errors. An HTTP 429 from a seller's internal API becomes `RATE_LIMITED`. A database connection timeout becomes `SERVICE_UNAVAILABLE`. The buyer should never see error formats from systems it has no relationship with. + +**Rule 2: Classify recovery from the caller's perspective.** If the seller can fix the upstream issue without buyer action, the error is `transient` or `terminal` — not `correctable`. A `correctable` error means the *buyer* needs to change something. For example: if the seller's upstream creative review API rejects an ad, that is `correctable` (the buyer can revise the creative). But if the seller's internal billing system is down, that is `transient` (the buyer should retry) even though the upstream error might be a 500. + +**Rule 3: Intermediaries preserve or translate, never drop.** An orchestrator sitting between buyer and seller (e.g., an agency agent routing to multiple sellers) MUST either: +- **Pass through** the AdCP error unchanged if the upstream is already AdCP-conformant, or +- **Translate** the error into a valid AdCP error if the upstream uses a different format + +Intermediaries MUST NOT strip `recovery`, `retry_after`, or `details` from errors they pass through. An intermediary MAY aggregate errors from multiple upstream sellers into an `errors` array, with each error preserving its original `code` and `recovery`. + +```javascript +// Seller-side: translate upstream errors for the buyer +function translateUpstreamError(upstreamError) { + if (upstreamError.status === 429) { + return { + code: 'RATE_LIMITED', + message: 'Request rate exceeded', + recovery: 'transient', + retry_after: upstreamError.headers?.['retry-after'] || 10, + }; + } + if (upstreamError.status >= 500) { + return { + code: 'SERVICE_UNAVAILABLE', + message: 'Service temporarily unavailable', + recovery: 'transient', + }; + } + // Never expose upstream details to the buyer + return { + code: 'SERVICE_UNAVAILABLE', + message: 'An internal error occurred', + recovery: 'transient', + }; +} +``` + +## Security Considerations + +Error responses flow through LLM context. Every field is client-facing. + +### Seller Requirements + +**Implementations MUST NOT include:** +- Internal service names, hostnames, or IP addresses +- Database error text, SQL fragments, or query plans +- Stack traces or file paths +- Upstream API responses from internal services +- Credentials, tokens, or session identifiers + +**`suggestion` boundaries:** Provide generic correction guidance (e.g., "Increase budget to meet minimum") rather than revealing specific thresholds, valid identifiers, or resource existence. + +**`retry_after` consistency:** Return consistent values reflecting the caller's rate-limit state, not the target resource's properties, to avoid timing side channels. + +**Transport-level code granularity:** The reserved JSON-RPC codes (`-32029`, `-32028`, `-32027`) enable infrastructure error classification. Implementations that prefer to minimize endpoint fingerprinting MAY collapse these into a single code. + +### Buyer Agent Requirements + +**Prompt injection via error fields.** The `message`, `suggestion`, `field`, `details`, and all string values within them are seller-controlled content that enters buyer agent LLM context. A malicious or compromised seller can craft values containing instructions aimed at manipulating the buyer agent. + +Buyer agents MUST: +- **Route all recovery decisions through `code` and `recovery` only.** Never parse `message`, `suggestion`, or `details` values for actionable instructions. The `handleAdcpError` function above demonstrates this pattern — it switches on `recovery`, not on message content. +- **Use data boundaries for seller-provided strings.** When including error field values in LLM context, place them inside explicit data delimiters (e.g., structured tool response fields, XML-style tags) that the system prompt designates as untrusted seller data. Do not interpolate seller-provided strings into prose or instructions. +- **Enforce length limits** before including seller strings in LLM context: `message` (256 bytes), `suggestion` (512 bytes). Truncate silently. +- **Strip non-printable characters** from all string fields: control characters (U+0000–U+001F), zero-width characters (U+200B–U+200F), and bidirectional override characters (U+202A–U+202E). +- **Enforce a maximum payload size.** Clients MUST discard extracted `adcp_error` objects where `JSON.stringify(error).length` exceeds 4096 bytes. This prevents context window exhaustion from oversized `details` objects. +- **Never use `field` as a dynamic property path** in object mutation operations (e.g., `lodash.set`, bracket notation chains). The `field` value is for display and field-level UI highlighting only. +- **Never merge extracted error objects into application state** via `Object.assign`, spread operators, or shallow copy without filtering keys. Seller-controlled keys like `__proto__` or `constructor` can trigger prototype pollution in some runtimes. +- **Never include raw `details` objects** in system prompts or tool descriptions. + +**URL validation.** `details.setup_url` (in `ACCOUNT_SETUP_REQUIRED` errors) is a seller-provided URL that users or agents may follow to complete account setup. Clients MUST validate that `setup_url` uses the `https` scheme, contains no userinfo component (e.g., `https://user:pass@evil.com`), and that the domain matches the seller's known domain. Clients MUST reject URLs that fail any of these checks. + +`details.policy_url` (in `CREATIVE_REJECTED` and `POLICY_VIOLATION` errors) is informational. Clients SHOULD apply the same validation. All seller-provided URLs MUST be rejected if they use non-`https` schemes (`http`, `javascript`, `data`, `file`). + +## See Also + +- [Error Handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) — error schema, standard codes, recovery strategies +- [MCP Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide) — MCP transport integration +- [A2A Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide) — A2A transport integration +- [A2A Response Format](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format) — canonical A2A response structure diff --git a/dist/docs/3.2.0-beta.4/building/schemas-and-sdks.mdx b/dist/docs/3.2.0-beta.4/building/schemas-and-sdks.mdx new file mode 100644 index 0000000000..9c29210471 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/schemas-and-sdks.mdx @@ -0,0 +1,63 @@ +--- +title: Schemas & SDKs +sidebarTitle: Schemas & SDKs +description: "Quick-start reference for AdCP schemas and client SDKs: installation, schema URLs, version discovery, and where to go next." +"og:title": "AdCP — Schemas & SDKs" +--- + +This page orients you to the two foundational resources for building with AdCP: the JSON schemas that define every request and response, and the SDKs that turn those schemas into typed code. + +## SDKs + +AdCP ships official SDKs for TypeScript, Python, and Go. Each SDK absorbs the protocol layers (wire format, signing, auth, lifecycle semantics) so you write business logic only. + + + + `npm install @adcp/sdk` + + + `pip install adcp` + + + `go get github.com/adcontextprotocol/adcp-go` + + + +For the full coverage matrix (which layers each SDK ships today), version pinning guidance, and package export details, see [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk). + +For the layered model behind the SDKs — what L0 through L4 each contain and why SDKs matter more in AdCP than in simpler protocols — see the [SDK stack reference](/dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack). + +## Schema URLs + +AdCP schemas are published at `https://adcontextprotocol.org/schemas/` under the current major-version alias: + +| Pattern | Example | Use | +|---|---|---| +| **Current major** | `https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json` | Pin validators to the AdCP 3.x schema family | + +Schemas cover every task's request and response, shared enums, governance objects, creative formats, and signal definitions. Use the current major-version URL in production and CI so links stay stable across major releases. + +For how wire-level `adcp_protocol_version` relates to schema bundle versions, and why those are different things, see [Versioning & governance](/dist/docs/3.2.0-beta.4/reference/versioning). + +## Authorization in adagents.json + +Publishers declare their agent endpoints and authorization scopes in `adagents.json`. The schema supports six authorization types — `property_ids`, `property_tags`, `inline_properties`, `publisher_properties`, `signal_ids`, and `signal_tags` — each scoping which inventory the agent is authorized to act on. + +For the full authorization type reference and worked examples, see [Authorization Patterns](/dist/docs/3.2.0-beta.4/governance/property/adagents#authorization-patterns) in the governance docs. + +## Where to go next + + + + Coverage matrix, install commands, and version pinning for each language. + + + Skill files and step-by-step guide for building a seller agent. + + + Buyer-side reference for discovering capabilities and handling responses. + + + Run the compliance suite to verify your implementation. + + diff --git a/dist/docs/3.2.0-beta.4/building/verification/aao-verified.mdx b/dist/docs/3.2.0-beta.4/building/verification/aao-verified.mdx new file mode 100644 index 0000000000..e5ea99ed56 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/aao-verified.mdx @@ -0,0 +1,368 @@ +--- +title: AAO Verified +sidebarTitle: AAO Verified +description: "The public trust mark for AdCP agents. Two qualifiers — Verified (Spec) for wire-format conformance, Verified (Sandbox) for production-surface sandbox tolerance. Earn either or both." +"og:title": "AdCP — AAO Verified" +--- + +**Status**: Request for Comments +**Last Updated**: August 12, 2026 + +**AAO Verified** is the public trust mark for AdCP agents. It carries one of two qualifiers in parens — **(Spec)** or **(Sandbox)** — and may carry both. The qualifier names *which axis* of verification an agent has earned. + +It is two axes, not two tiers. The qualifiers answer different questions: + +- **Verified (Spec)** — your AdCP protocol implementation matches the spec. Storyboards pass somewhere — could be a test deployment, could be local dev. Wire format, task shape, error semantics, state-machine transitions all check out. Attests *wire-format conformance*, not production tolerance. +- **Verified (Sandbox)** — your **real production endpoint** correctly honors `account.sandbox: true`. AAO runs the full storyboard suite against your registered `agent_url` with sandbox-flagged traffic; your prod stack processes it with schema-valid responses, correct lifecycle transitions, proper error envelopes, and **no real-world side effects** (no real spend, no real persistence, no real platform calls). Attests *the production code path tolerates test traffic correctly*. + +An agent can earn either axis or both. A pure protocol wrapper around a stub ad server is honestly **Verified (Spec)** — that's what test agents and dev environments *are*. A real production seller whose prod URL handles sandbox traffic across the full storyboard suite earns **Verified (Spec + Sandbox)**, the strongest claim available. + +The two axes are **orthogonal** — neither is a prerequisite for the other. A seller without a separate test deployment (production-only platforms that have no test-mode surface) can earn **(Sandbox)** directly by exposing their prod URL to AAO's runner with sandbox flagging — no separate test endpoint needed. Conversely, a test agent that can never serve real impressions earns **(Spec)** as a complete claim. + +The badge surfaces whichever qualifiers are earned. + + +**TL;DR for sellers.** Both qualifiers run the same storyboards through the same AAO compliance heartbeat. The difference is *where* the runner targets and *what* the seller's stack does with sandbox-flagged traffic: + +- **(Spec)** runs storyboards against a test deployment / local dev / a sandbox endpoint. The agent's prod surface is not exercised. +- **(Sandbox)** runs storyboards against the seller's registered production `agent_url` with `account.sandbox: true` on every request. The seller's prod stack MUST honor the flag — return schema-valid responses, transition state correctly, surface errors properly, and have **zero real-world side effects** (no billing, no persistence beyond the sandbox account, no third-party platform calls). + +The seller-side sandbox gate is normative: every sandbox-flagged production request must resolve to a persisted sandbox account, not a live account wearing a `sandbox: true` claim. See [comply_test_controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) for the dev-side deterministic-testing affordance; Sandbox grading itself does not require or use the controller. + + +## What each axis certifies + +### Verified (Spec) + +| | | +|---|---| +| **Tested against** | Any endpoint the agent owner registers — test deployment, local dev, sandbox-only stack. The runner does not distinguish. | +| **What it proves** | AdCP wire format, task shape, error semantics, state-machine transitions, declared specialisms map to working tools, schema conformance, filter behavior, idempotency semantics — exercised in isolation from real-world production state. | +| **How** | Storyboards from the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) run against the registered agent URL on AAO's compliance heartbeat. | +| **Cadence** | ~1h heartbeat | +| **Eligibility** | Any agent that passes the storyboards for its declared specialisms + holds an active AAO membership with API-access tier | +| **Status** | **Available now** | + +### Verified (Sandbox) + +| | | +|---|---| +| **Tested against** | Your registered production `agent_url`, with `account.sandbox: true` on every request. | +| **What it proves** | Your production code path correctly honors sandbox flagging — same storyboards as (Spec), but exercised against the real prod stack buyers actually hit. Schema-valid responses, correct lifecycle transitions, proper error envelopes, **zero real-world side effects**. | +| **How** | Same storyboard suite as (Spec), driven against the seller's registered URL with sandbox-flagged traffic. No separate canonical-campaign infrastructure. | +| **Cadence** | Same ~1h heartbeat as (Spec) | +| **Eligibility** | Same as (Spec), PLUS the seller's prod surface accepts `account.sandbox: true` requests and processes them without persisting real state, calling third-party platforms, or billing | +| **Status** | **Foundation shipping** in [#4382](https://github.com/adcontextprotocol/adcp/pull/4382) (account.sandbox schema gate), [#4384](https://github.com/adcontextprotocol/adcp/pull/4384) (live-mode denial storyboard). Full grading framework following. | + +The (Sandbox) qualifier replaces the earlier draft's `Verified (Live)` framing. The change: instead of attesting "your real-money production code path delivers impressions correctly" (canonical campaigns running through your stack), (Sandbox) attests "your real production code path correctly handles sandbox-flagged traffic across the full storyboard suite." Both are real-prod-surface claims; the difference is what gets tested. (Sandbox) is universally achievable across specialisms with no new AAO operational infrastructure. See [#4379](https://github.com/adcontextprotocol/adcp/issues/4379) for the reframe verdict. + + +**Re: [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)**: the controller is a **dev/staging-only** affordance for adopters' own integration testing. AAO's (Sandbox) grading does not require or use it. Sellers MAY implement controller endpoints in their dev environment to support deterministic local testing, but the production stack does not need to expose `comply_test_controller` to earn (Sandbox). The seller-side sandbox gate is what (Sandbox) attests — schema and lifecycle correctness under flagged traffic, on real prod. How the dev-time test surface itself is stood up — DB-backed `seed_*` for state-local sellers vs the SDK's `TestControllerBridge` for upstream-proxy sellers — is covered in [Test surfaces and the storyboard loop](/dist/docs/3.2.0-beta.4/building/verification/conformance#test-surfaces-and-the-storyboard-loop). + + +## Naming history + +Earlier drafts (#3001) proposed "AdCP Conformant" and "AAO Verified" as two distinct mark names — one per axis. This page uses a **single brand mark with axis qualifiers in parens** instead. Same shape, different naming convention: + +| Earlier draft | Current | +|---|---| +| AdCP Conformant | AAO Verified (Spec) | +| AAO Verified | AAO Verified (Live) | +| AdCP Conformant + AAO Verified | AAO Verified (Spec + Live) | + +The reasoning behind the rename: a single brand word ("Verified") with composable qualifiers is cleaner for buyer messaging. Buyers don't have to learn two distinct marks; they read the qualifier inline. Test agents earning **Verified (Spec)** is a complete, dignified claim — they're test agents, that's the whole point — rather than a "junior" Conformant tier. The wire format reflects this: a single `verification_modes: string[]` array in the JWT and registry API, where an agent might have `["spec"]` or `["spec", "sandbox"]`. One badge URL per agent + role; the qualifier evolves as axes are earned, embedded badges automatically reflect the current state. + +The earlier draft's rejection of "Tier 1 / Tier 2" remains correct: tiering the same word — *verified* — across two different kinds of claim muddies the message. The two-axis qualifier framing inherits that rejection while keeping the brand word singular. + +## Coverage gaps are explicit + +Under the (Sandbox) framing, every applicable storyboard is attempted against the seller's production endpoint with sandbox-flagged traffic. There's no observability carve-out — universal storyboards (`signed_requests`, `pagination_integrity`, etc.) run as part of the standard suite. The registry keeps not-selected items separate from selected-but-skipped items: run-mode exclusions ("this was a sandbox-only run, so live-only probes were not selected"), declined optional capabilities ("the seller did not claim this feature"), and deterministic-test-surface gaps ("the production endpoint correctly omits [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)"). Those are different asks of the seller and MUST NOT be collapsed into one generic "skipped optional things" bucket. The (Sandbox) qualifier is a verification profile over that evidence: it defines which not-selected and skipped classes are acceptable for the Sandbox badge and which remain blockers. See [#4379](https://github.com/adcontextprotocol/adcp/issues/4379) for the framing decision that replaced the earlier (Live) observability model. + +## Reading a badge + +Badges render as a single shields.io-style image with the qualifiers in parens: + +| Display | Meaning | +|---|---| +| `AAO Verified Sales Agent (Spec)` | Storyboards pass for declared media-buy specialisms against a test deployment / dev / sandbox-only endpoint. Wire format and protocol semantics are correct; production-stack sandbox tolerance is not yet attested. Common for test agents and pre-production rollouts. | +| `AAO Verified Sales Agent (Spec + Sandbox)` | Both axes earned. The strongest claim. The agent's registered production URL handles the full storyboard suite under sandbox-flagged traffic with no real-world side effects. | +| `AAO Verified Sales Agent (Sandbox)` | Storyboards pass against the seller's registered production endpoint under `account.sandbox: true`. The seller's prod stack correctly honors the sandbox gate. Common for production-only sellers without a separate test deployment. | +| `AAO Verified — Not Verified` | No badge issued for this agent + role, or the badge has been revoked. | + +The badge URL is stable per agent + role. As an agent earns or loses an axis, the SVG content updates without changing the URL — embedded badges automatically reflect the current state. + +## Declare specialisms + +```json +// agent declares its claims in get_adcp_capabilities +{ + "supported_protocols": ["media_buy", "creative"], + "specialisms": [ + "sales-broadcast-tv", + "sales-guaranteed", + "creative-ad-server" + ] +} +``` + +`specialisms` is the badge-routing field. Omitting it means the agent still runs +the universal and protocol-baseline storyboards implied by `supported_protocols`, +but no specialism badge can be issued because the verification engine has no +narrow claim to evaluate. + +## How agents earn each axis + +The axes are verification profiles over storyboard evidence, not separate runner implementations. The runner records what passed, failed, or skipped and why; the Spec and Sandbox profiles decide whether that evidence is sufficient for the public qualifier. + +Buyer-specific requirements are separate. A buyer can require a public qualifier, a declared protocol or specialism, one or more optional capabilities, and a stricter position on skips. For example, a buyer that needs proposal workflows can reject an otherwise clean run where `media_buy.supports_proposals: false` caused proposal storyboards to skip. A buyer doing deterministic integration testing can ask for a dev/staging endpoint with [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) even though the production Sandbox qualifier does not require exposing that controller. + +### To earn Verified (Spec): + +1. Implement AdCP for your declared specialisms. +2. Pass the storyboards on your test-mode endpoint. (Run them locally first via `@adcp/sdk/testing` to see what's failing.) +3. Hold an active AAO membership at an API-access tier. + +The compliance heartbeat picks it up automatically — no manual enrollment needed beyond [registering your agent](/dist/docs/3.2.0-beta.4/building/index). + +### To earn Verified (Sandbox): + +A seller earns (Sandbox) by: + +1. Registering their **production `agent_url`** with AAO. This is the same registration that earns (Spec) — no separate "compliance account" or "test deployment" needed. +2. Implementing the **sandbox-account gate** in their production stack: when a request arrives with `account.sandbox: true`, the seller verifies the targeted account is a sandbox account in the persisted record (not trusting the field), and processes the request with full schema/lifecycle correctness while producing **zero real-world side effects** — no real spend, no real ad-server orders, no third-party platform calls, no production persistence beyond the sandbox account's bounded state. +3. Holding an active AAO membership at an API-access tier. + +That's it. The compliance heartbeat runs the same storyboards as (Spec), but targets the registered production URL with `account.sandbox: true` on every request. Pass → (Sandbox) qualifier issues. + +**Key requirement: sandbox-account isolation.** Sellers MUST persist a clear sandbox/live distinction at the account level. A request asserting `sandbox: true` against a live account MUST be refused with a structured error — see [#4028](https://github.com/adcontextprotocol/adcp/issues/4028) and the `comply-controller-mode-gate` storyboard for the canonical denial check. Cross-mode leakage is the failure mode (Sandbox) attests against. + +## Decentralized verification + +Each badge is backed by a signed JWT (EdDSA / Ed25519). AAO publishes its public key set at `/.well-known/jwks.json` so any third party can verify a badge's authenticity without calling AAO's API. + +The token claims: + +```json +{ + "iss": "https://aao.org", + "sub": "https://your-agent.example.com/mcp", + "aud": "aao-verification", + "jti": "", + "iat": 1745510400, + "exp": 1748102400, + "role": "media-buy", + "adcp_version": "3.0", + "verified_specialisms": ["sales-broadcast-tv", "sales-guaranteed"], + "verification_modes": ["spec"], + "protocol_version": "3.0.0" +} +``` + +`adcp_version` is the AdCP release this badge was issued against (`MAJOR.MINOR`). Pairs with the `(agent_url, role, adcp_version)` identity used by the badge URL routes. **Verifiers MUST check `adcp_version` against the AdCP version they care about** — a 3.0 token presented as proof of 3.1 conformance is not authoritative. The signed claim is shape-validated at signing time (`^[1-9][0-9]*\.[0-9]+$`); verifiers SHOULD apply the same regex defensively. + +`verification_modes` is the array of axes earned. `["spec"]` for test-deployment storyboard pass only; `["spec", "sandbox"]` for agents whose production endpoint also passes under sandbox-flagged traffic. `protocol_version` is the full semver of the spec build the badge was tested against — informational metadata for support and audits. + +Runner coverage is reported separately from badge mode. A production-path sandbox run can have zero failed assertions and still be `partial` when selected controller-dependent scenarios skip because the production endpoint correctly omits [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller). That is useful evidence, but badge issuance uses the registry's per-storyboard status, not-selected reasons, and skip reasons, not just the failed-step count. Expected sandbox-mode exclusions, optional-capability skips, and missing-required-surface skips remain visible as separate signals so buyers can tell "not part of this run" from "selected but not executed" from "not implemented by this seller." + +The registry API is authoritative for real-time status; the JWT is a 30-day cacheable proof. + +## Lifecycle + +Verification is continuously re-evaluated, not a one-time certificate. + +### (Spec) +- **Issued** — first heartbeat with all declared-specialism storyboards passing + active membership. +- **Active** — re-checked every heartbeat; JWT auto-renewed. +- **Degraded** — first storyboard regression starts a 48-hour grace; the badge continues to render (Spec) while the operator investigates. +- **Revoked** — 48h continuous failure → `(Spec)` qualifier drops from the badge. (Sandbox), if held, is unaffected — the axes are independent. +- **Recovery** — passing storyboards reissue (Spec) automatically. + +### (Sandbox) +- **Issued** — first heartbeat whose Sandbox verification profile passes against the registered production URL under `account.sandbox: true` + active membership. The profile requires all buyer-visible sandbox-path assertions to pass, treats production-forbidden controller phases as not-selected run-mode exclusions, and keeps optional-capability skips visible. +- **Active** — re-checked every heartbeat; JWT auto-renewed. +- **Degraded** — first Sandbox-profile regression starts a 48-hour grace; the badge continues to render (Sandbox) while the operator investigates. Cross-mode leakage (a sandbox request producing real-world side effects, or a live account accepting sandbox-flagged traffic) MAY skip the grace period and revoke immediately — that's the (Sandbox) attestation's whole point. +- **Revoked** — 48h continuous failure → `(Sandbox)` qualifier drops. (Spec), if held, is unaffected. +- **Recovery** — passing the Sandbox profile reissues (Sandbox). + +Membership lapse revokes the entire badge regardless of test results — public trust marks require active membership. + +### Registry visibility and compliance opt-out + +Registry visibility and badge verification are separate controls. `public`, +`members_only`, and `private` determine who can discover an agent in registry +listings. They do not change whether an already-known agent URL can be checked +for an earned badge. This keeps a trust mark verifiable by a buyer who already +has the URL without making a private agent discoverable. + +Compliance opt-out is different: it deliberately stops new evidence from +qualifying the public trust mark. Owners may still run and retain private +diagnostic tests while opted out, but those results cannot issue a badge. +Opting out immediately revokes every active and degraded badge across all +roles and AdCP versions. Public verification, +versioned and unversioned SVGs, embeds, registry summaries, and brand +enrichment then return the same unverified result as an unknown or +never-verified agent. There is no 48-hour grace period for an intentional +opt-out. Re-enabling monitoring does not restore an old badge; a new passing +full-suite run must earn it again. Partial storyboard reruns remain +non-qualifying until that fresh full-suite run completes. + +Badge SVGs use ETags but require revalidation before reuse, so embeds observe +the revocation on their next request. Signed JWTs are offline, expiring proofs +and cannot learn about a later revocation by themselves. A verifier that needs +current status must check the registry API; its JSON badge-state responses are +not cacheable and are the authoritative real-time source. + +## Mark semantics + +A seller MAY hold: + +- **(Spec) only** — storyboards pass on a test-mode endpoint; (Sandbox) not enrolled, or the production endpoint has not yet passed under sandbox-flagged traffic. Common for test agents, sandboxes, and pre-production rollouts. +- **(Sandbox) only** — storyboards pass against the registered production endpoint under `account.sandbox: true`. Common for production-only platforms with no separate test-mode surface. +- **(Spec + Sandbox)** — the strongest claim. Both axes verified independently. +- **Neither** + +The two axes are evaluated independently. A storyboard regression on the test endpoint revokes (Spec) without affecting (Sandbox); a sandbox-path regression on the production endpoint revokes (Sandbox) without affecting (Spec). Sellers can earn either in either order. + +## Per-version badges + +Each badge is identified by **(agent, role, AdCP version)** — a third axis on top of (Spec) and (Sandbox). An agent can hold parallel badges across AdCP releases. For example, a media-buy agent that ships an upgrade for AdCP 3.1 might hold both: + +- `AAO Verified Media Buy Agent 3.0 (Spec)` — earned earlier, still valid +- `AAO Verified Media Buy Agent 3.1 (Spec + Sandbox)` — earned after upgrading + +Each version is evaluated independently. A 3.0 storyboard regression revokes the 3.0 badge without touching 3.1, and vice versa. Membership lapse revokes every version of an agent's badges atomically (the trust mark is agent-level, not version-level). + +The badge label embeds the AdCP version inline between the role and the qualifier: `Media Buy Agent 3.1 (Spec + Sandbox)`. + +## Display + +### SVG badge + +Two URL shapes: + +``` +# Legacy: auto-upgrades to the highest active version +https://agenticadvertising.org/api/registry/agents/{url-encoded-agent-url}/badge/{role}.svg + +# Version-pinned: freezes on a specific AdCP release +https://agenticadvertising.org/api/registry/agents/{url-encoded-agent-url}/badge/{role}/{adcp-version}.svg +``` + +Buyers who want auto-upgrade behavior (the embedded image flips from `Media Buy Agent 3.0 (Spec)` to `Media Buy Agent 3.1 (Spec + Sandbox)` automatically when the agent earns 3.1) embed the legacy URL. Buyers who want to call out "verified for AdCP 3.0" specifically embed the version-pinned URL. + +Both return a shields.io-style SVG with `Content-Security-Policy: script-src 'none'` and ETag revalidation on every use. Renders teal when verified, grey when not. Unknown agents, opted-out agents, and revoked or never-earned badges return a successful `200` grey "Not Verified" SVG, including version-pinned URLs at versions the agent never earned. An unknown role instead returns `400` with the valid role slugs; a temporary status-store failure returns an uncached `503`. + +Valid badge role slugs are `media-buy`, `creative`, `signals`, `governance`, `brand`, and `sponsored-intelligence`. These URL slugs are kebab-case. Do not substitute compliance track identifiers such as `media_buy`, which are snake_case and describe test organization rather than badge identity. + +Because an unverified badge is still a successful `200` SVG response, an image `onerror` handler cannot hide it. If your site should show no mark until the exact role and version is verified, decide whether to include the snippet during a server-side render or static-site build: + +```javascript test=true integration=true +// Run on your server or during a static-site build, not in browser code. +const agentUrl = "https://seller.example.com/mcp"; +const role = "media-buy"; +const version = "3.0"; +const encodedUrl = encodeURIComponent(agentUrl); +const endpoint = `https://agenticadvertising.org/api/registry/agents/${encodedUrl}/badge/${role}/${version}/embed`; + +const response = await fetch(endpoint); +if (!response.ok) throw new Error("Could not check AgenticAdvertising.org verification"); + +const embed = await response.json(); +const badgeHtml = embed.verified ? embed.html : ""; + +export { badgeHtml }; +``` + +The versioned embed's `verified` value applies to that exact role and version. For bulk decisions, query `/api/registry/agents/{url-encoded-agent-url}/verification` and match both `role` and `adcp_version` in `badges[]`; do not gate on the top-level `verified` boolean alone. + +### Embed snippet + +```bash +# Legacy (auto-upgrading) +curl https://agenticadvertising.org/api/registry/agents/{url-encoded-agent-url}/badge/media-buy/embed + +# Version-pinned +curl https://agenticadvertising.org/api/registry/agents/{url-encoded-agent-url}/badge/media-buy/3.0/embed +``` + +Returns HTML and Markdown snippets that wrap the SVG in a link back to the agent's AgenticAdvertising.org registry listing. Safe for READMEs, docs, landing pages, and social profiles. As an agent's verification axes or AdCP versions change, the legacy embed automatically reflects the current state — no embed swap needed when (Sandbox) lights up or when the agent ships a new AdCP version. + +### Registry filter + +The agent registry surfaces filters on either axis independently: + +- **"Show me agents that implement AdCP correctly"** → filter by `verification_modes contains 'spec'` +- **"Show me production endpoints that pass under sandbox-flagged traffic"** → filter by `verification_modes contains 'sandbox'` +- **"Show me agents with both"** → filter by both + +Both queries are valid. Buyers comparing options use (Sandbox); orchestrator developers integrating new agents use (Spec). + +### brand.json enrichment + +When AgenticAdvertising.org serves brand.json data for a registered brand, agent entries get an `aao_verification` block with full per-version detail: + +```json +"aao_verification": { + "verified": true, + "verified_at": "2026-04-29T12:34:56.000Z", + "badges": [ + { "role": "media-buy", "adcp_version": "3.1", "verification_modes": ["spec", "sandbox"], "verified_at": "..." }, + { "role": "media-buy", "adcp_version": "3.0", "verification_modes": ["spec"], "verified_at": "..." } + ], + "roles": ["media-buy"], + "modes_by_role": { "media-buy": ["spec", "sandbox"] }, + "deprecation_notice": "roles[] and modes_by_role reflect the highest-version badge per role only. A buyer pinned to a specific AdCP version SHOULD read badges[] and filter by adcp_version. Both fields will be removed in AdCP 4.0." +} +``` + +`badges[]` is the canonical shape — one entry per `(role, adcp_version)`, ordered version-DESC. Buyers pinned to a specific AdCP version MUST filter by `adcp_version` rather than reading `modes_by_role` (which flattens to the highest-version entry per role and could mislead a 3.0 buyer into thinking the agent has Sandbox for them when only the 3.1 badge has Sandbox). + +`roles[]` and `modes_by_role` are kept as **deprecated aliases** for one release. **Removal target: AdCP 4.0.** + +## How to claim each qualifier + +### To claim **(Spec)** + +1. Hold an active AAO membership with API-access tier. +2. Declare your `supported_protocols` and `specialisms` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). +3. Pass the storyboards your declarations obligate (universal + protocol baselines + specialism baselines) at a specific AdCP major version. +4. The AAO compliance heartbeat issues **AAO Verified (Spec)** automatically and re-verifies on each heartbeat cycle. + +### To claim **(Sandbox)** + +(Sandbox) is **independent of (Spec)** — sellers without a separate test deployment can earn (Sandbox) directly by exposing their production endpoint to AgenticAdvertising.org's runner with sandbox flagging. + +1. Hold an active AAO membership with API-access tier. +2. Declare your `supported_protocols` and `specialisms` in `get_adcp_capabilities` (same as (Spec)). +3. Register your **production `agent_url`** with AgenticAdvertising.org. The compliance heartbeat will target it with `account.sandbox: true` on every storyboard request. +4. Implement the sandbox-account gate in your production stack: verify the targeted account is sandbox in your persisted records (not by trusting the field), and process the request with full schema/lifecycle correctness while producing **zero real-world side effects** — no real spend, no real ad-server orders, no third-party platform calls, no production persistence beyond the bounded sandbox account state. +5. Pass the Sandbox verification profile: buyer-visible sandbox-path storyboards must pass, not-selected run-mode exclusions are allowed, and optional-capability skips remain visible as scope choices. The production endpoint is not expected to expose [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller); selected controller-dependent deterministic phases are not a Sandbox-badge blocker when the controller is absent from production as required. +6. If you run a shared production surface that exposes `comply_test_controller` to sandbox principals, pass the [`comply-controller-mode-gate`](https://adcontextprotocol.org/compliance/latest/universal/comply-controller-mode-gate) check for that surface. Canonical two-deployment sellers satisfy the same isolation requirement by not advertising the controller on production at all. +7. The AgenticAdvertising.org compliance heartbeat issues **AAO Verified (Sandbox)** when the Sandbox profile passes against the registered URL with sandbox-flagged traffic. + +Same storyboards as (Spec). Same heartbeat cadence. Different attestation surface: prod, with sandbox flagging, instead of any-registered-endpoint. + +## What AAO Verified is not + +- **Not a regulatory or financial attestation.** SOC 2, ISO 27001, ISAE 3402 and similar frameworks address operational and financial-control posture — distinct questions, with their own audit paths. AAO Verified is wire-and-delivery correctness for AdCP. +- **Not hard ground-truth reconciliation.** (Sandbox) attests the production code path handles sandbox-flagged traffic correctly across the protocol surface. It does not reconcile real-money AdCP-reported numbers against the seller's internal ad-server dashboard under live traffic. Hard reconciliation is a separate kind of attestation tracked outside the (Sandbox) tier. +- **Not certification beyond AAO membership.** The [AgenticAdvertising.org certification program](/dist/docs/3.2.0-beta.4/learning/overview) composes with AAO Verified — verification is necessary input to certification, but verification is not certification itself. +- **Not a SLA.** AAO Verified does not guarantee uptime, latency, or commercial outcomes. It attests that the seller's AdCP surface continuously reflects real delivery; commercial reliability is between buyer and seller. +- **Not a substitute for due diligence.** Buyers SHOULD still vet sellers' contractual terms, billing posture, governance practices, and incident-response posture independently. AAO Verified is one input, not the whole picture. + +## Relationship to supporting specs + +AAO Verified (Sandbox) rests on a small set of normative AdCP spec elements: + +- **[`account.sandbox` schema gate (#3755 / #4382)](https://github.com/adcontextprotocol/adcp/issues/3755)** — pins sandbox intent on account references and gives the seller a protocol-level flag to verify against persisted account mode. The seller-side gate is the load-bearing control; the request flag is not trusted by itself. +- **[`comply-controller-mode-gate` storyboard (#4028 / #4384)](https://github.com/adcontextprotocol/adcp/issues/4028)** — verifies sellers correctly refuse controller dispatch against live-mode accounts when they choose a shared surface that exposes the controller to sandbox principals. Canonical production deployments satisfy this by not exposing the controller at all. +- **[UNKNOWN_SCENARIO grading (#4226 / #4228)](https://github.com/adcontextprotocol/adcp/issues/4226)** — sellers MAY implement controller scenarios selectively in dev/staging; the runner grades absent operations as coverage gaps rather than failures. Controller is dev-only per the (Sandbox) framing. + +The earlier (Live) framing's supporting issues (#2963, #2964, #2902 — `attestation_verifier` scope, [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) ownership, behavioral filter assertions on real data) are deferred. They remain relevant if AAO ever returns to a canonical-campaign model, but are not load-bearing under (Sandbox). + +## Relationship to other surfaces + +- [Conformance Specification](/dist/docs/3.2.0-beta.4/building/verification/conformance) — defines what *conformant* means via the storyboards. The (Spec) axis verifies your agent matches that specification. +- [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) — indexes the protocols and specialisms an agent can claim. Each declared specialism is what the verification engine tests, on whichever axes are eligible. +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — where the agent declares its `supported_protocols` and `specialisms`. The declarations are the input to verification. +- AAO membership — required for badge issuance. Membership lapse revokes the badge. diff --git a/dist/docs/3.2.0-beta.4/building/verification/addie-socket-mode.mdx b/dist/docs/3.2.0-beta.4/building/verification/addie-socket-mode.mdx new file mode 100644 index 0000000000..c6ca3cbc98 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/addie-socket-mode.mdx @@ -0,0 +1,196 @@ +--- +title: Pair-program with Addie (Socket Mode) +sidebarTitle: Pair with Addie +description: "Connect your dev/staging AdCP agent to Addie via outbound WebSocket so she can run storyboards against it conversationally. No public DNS, no ngrok, no inbound exposure." +"og:title": "AdCP — Pair-program with Addie" +--- + +**Status**: Available in preview behind `CONFORMANCE_SOCKET_ENABLED` +**Last updated**: May 4, 2026 + +When you're building an AdCP agent, the most useful loop is: run a storyboard against your in-progress server, see what fails, fix it, run again. Until now that meant standing up a public sandbox endpoint with TLS, DNS, auth, and firewall config — a real lift before you've written meaningful code, and a non-trivial security review at larger orgs. + +**Pair-programming with Addie via Socket Mode** collapses that to: install one library, paste a token, connect outbound. Addie sees your dev agent like any other AdCP server — no inbound exposure, no public surface — and can run any compliance storyboard against it in chat. + +## When to use Socket Mode (and when not to) + +| Use Socket Mode when… | Use the public-endpoint path when… | +|---|---| +| You're building or refactoring an agent and want fast feedback | You're ready for AAO's [(Spec) heartbeat](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) on a stable test endpoint | +| Your dev agent runs on `localhost`, a Codespace, or behind a firewall | Your platform exposes a public test endpoint anyway | +| You want Addie to run multiple storyboards interactively in chat | You want unattended, scheduled compliance runs | +| You're a small team without infra to expose a sandbox endpoint | You operate at scale and prefer batch CI | + +Socket Mode is **not** a replacement for AAO Verified. Once your agent is stable, expose a real test endpoint and let the AAO heartbeat run continuously — that's what earns the public **AAO Verified (Spec)** badge. Socket Mode is the dev-loop channel before you get there (and after, when you're iterating on changes). + + +**Dev/staging only by design.** Socket Mode is gated to non-production deployments, the same constraint as [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) per [adcp#3986](https://github.com/adcontextprotocol/adcp/issues/3986). Production agents do not expose this channel and AAO never enrolls production deployments via Socket Mode. + + +## What you need + +1. **An AdCP MCP server you're actively developing.** It can be incomplete — that's the point. The simplest case is a JS/TS process running on your laptop with the MCP SDK installed. +2. **An AAO account.** The conformance channel is bound to your WorkOS organization, so you need to be signed in to a member or trial org. Anonymous chat with Addie cannot use Socket Mode. +3. **`@adcp/sdk` ≥ 6.9** in your dev project. The `ConformanceClient` primitive ships from `@adcp/sdk/server`. +4. **Network egress to `addie.agenticadvertising.org` over WebSockets (port 443).** No inbound rules needed. + +That's it. No public DNS, no firewall changes, no ngrok, no certificate provisioning. + +## The five-minute setup + +### Step 1 — Ask Addie for a token + +In your Addie chat session, ask: + +> Give me a fresh conformance token + +Addie returns shell exports plus a copy-paste integration snippet: + +``` +**Conformance token issued.** Bound to your organization, expires in 1h. + +Paste these into your dev environment and start the conformance client: + +export ADCP_CONFORMANCE_URL=wss://addie.agenticadvertising.org/conformance/connect +export ADCP_CONFORMANCE_TOKEN=eyJ… + +Three-line integration with @adcp/sdk ≥ 6.9: … +``` + +Tokens expire in one hour. When yours runs out, just ask Addie for a new one — there's no refresh endpoint by design. + +### Step 2 — Wire `ConformanceClient` into your dev server + +Three lines added to your existing AdCP server bootstrap: + +```ts +import { ConformanceClient } from '@adcp/sdk/server'; +import { mcpServer } from './my-mcp-server'; + +const conformance = new ConformanceClient({ + url: process.env.ADCP_CONFORMANCE_URL!, + token: process.env.ADCP_CONFORMANCE_TOKEN!, + server: mcpServer, +}); + +await conformance.start(); +``` + +`mcpServer` is the same `Server` instance you'd connect to `StreamableHTTPServerTransport` for normal traffic — no separate setup, no parallel server. `ConformanceClient` exposes it bidirectionally over the outbound WebSocket; Addie sees a normal MCP server on the other end. + +If you don't have an AdCP server yet, fork the [`hello_seller_adapter_social` example](https://github.com/adcontextprotocol/adcp-client/blob/main/examples/hello_seller_adapter_social.ts) — it's a worked starting point with the SDK's `createAdcpServerFromPlatform` helper. + +### Step 3 — Confirm the connection + +Run your dev server with the token and URL exported. You should see a status line: + +``` +[conformance] status=connecting +[conformance] status=connected +``` + +Once `status=connected` lands, Addie has a live MCP client pointed at your dev server. The session stays open until you stop the process or your token expires. + +### Step 4 — Run a storyboard from chat + +Back in Addie chat: + +> Run [`media_buy_state_machine`](/compliance/latest/protocols/media-buy/state-machine.yaml) against my agent + +Addie dispatches the storyboard through the open socket and renders the result as a markdown report in chat: + +``` +### Conformance result — Media buy state machine lifecycle (media_buy_state_machine) + +**Overall:** ✅ PASSED +**Steps passed/failed/skipped:** 8 / 0 / 1 +**Duration:** 1240 ms + +#### ✓ Capability discovery +- ✓ passed — Check agent capabilities + +#### ✓ Create a media buy +- ✓ passed — Discover products for media buy +- ✓ passed — Create the test media buy + +#### ✓ Valid state transitions +- ✓ passed — Pause the media buy +- ✓ passed — Resume the media buy +- ✓ passed — Cancel the media buy +… +``` + +Failing steps include trimmed error text so you can fix in place and re-run without leaving the chat. Iterate until green. + +You can run any storyboard in the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) this way — sales, creative, signals, governance, signed requests, etc. Ask Addie what's available if you're not sure: *"What conformance storyboards apply to a sales agent?"* + +## What Addie can do once you're connected + +Beyond storyboard runs, the live MCP channel lets Addie: + +- **Diagnose failing steps interactively** — when a step fails, ask "why?" and Addie can re-call the same tool with different inputs to narrow the root cause +- **Validate capability declarations** — *"Does my [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) claim what I actually implement?"* +- **Walk lifecycle states** — if you've wired [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller), Addie can drive deterministic state transitions and observe the results +- **Suggest fixes against your real wire output** — *"Your `error_code` field is missing on this rejection — here's the fix"* — based on bytes she just saw, not generic advice + +## Privacy & safety + +The Socket Mode channel is built to keep the surface narrow: + +- **Dev/staging only.** Production deployments must not expose this channel — same deployment-scoped rule as [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) ([adcp#3986](https://github.com/adcontextprotocol/adcp/issues/3986)). +- **Outbound from you.** Your dev box opens the connection to Addie. Addie has no way to reach into your network. +- **Session-scoped.** You start the client; it runs until you stop the process. No persistent tunnel, no daemon. +- **Org-scoped.** The token's WorkOS org claim is the only tenant boundary. Other orgs cannot reach your agent over the channel. +- **Disconnect anytime.** Kill the client process and the socket closes; Addie's session for your org evicts immediately. +- **What Addie sees stays in your Addie context.** Same data-handling posture as anything else you tell her in chat. + +If you'd prefer to inspect the channel yourself, the wire format is plain JSON-RPC 2.0 frames (the same shape MCP already uses) over `wss://`. Run `wscat` against the URL with your token and you'll see exactly what Addie sees. + +## Troubleshooting + +### Addie says "you're not mapped to an organization" + +You're chatting with Addie anonymously or your account isn't bound to a WorkOS org yet. Sign in to your member or trial org and try again. + +### `status=error` on connect; the server logs `401 Unauthorized` + +Token expired (1h TTL) or wrong token. Ask Addie for a fresh one. If a new token also 401s, your AAO membership may not have the conformance entitlement enabled — check your org's plan. + +### Storyboard report shows step 1 failed with `unknown tool get_adcp_capabilities` + +Your dev MCP server doesn't yet implement [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). That's the discovery tool every AdCP agent must expose. Implement it before running any storyboard — see [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for the response shape. + +### Addie says "no conformance connection is live for your org" + +The socket isn't open. Either you haven't started the client yet, or it disconnected. Restart `ConformanceClient` and confirm `status=connected` before asking Addie to run anything. + +### Socket connects but every storyboard step skips + +Your `get_adcp_capabilities` response declares specialisms you haven't implemented. The runner skips steps that don't match the declared surface. Either implement the tools or trim the declaration. + +### How do I know what Addie is doing on the channel? + +The `onStatus` callback exposes every state transition (`connecting`, `connected`, `disconnected`, `error`). Pipe it to your dev logs: + +```ts +new ConformanceClient({ + url, token, server: mcpServer, + onStatus: (status, detail) => { + console.log(`[conformance] status=${status}`, + detail?.attempt ? `attempt=${detail.attempt}` : '', + detail?.error ? `error=${detail.error.message}` : ''); + }, +}); +``` + +For tool-level visibility, log inside your `setRequestHandler` callbacks — Addie's calls land there exactly like normal MCP traffic. + +## Reference + +- [`@adcp/sdk/server` `ConformanceClient`](https://github.com/adcontextprotocol/adcp-client/blob/main/src/lib/server/socket-mode/conformance-client.ts) — adopter-side primitive +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — the discovery tool every storyboard starts with +- [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) — full list of available storyboards +- [Get Test-Ready](/dist/docs/3.2.0-beta.4/building/verification/get-test-ready) — what your agent needs in place before any storyboard can pass +- [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) — the public trust mark you graduate to once your agent is stable +- Channel design: [adcp#3991](https://github.com/adcontextprotocol/adcp/issues/3991) +- Deployment-scoped controller rule: [adcp#3986](https://github.com/adcontextprotocol/adcp/issues/3986) diff --git a/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog.mdx b/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog.mdx new file mode 100644 index 0000000000..cfa61aa66c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog.mdx @@ -0,0 +1,342 @@ +--- +title: Compliance Catalog +sidebarTitle: Compliance Catalog +description: "Full index of AdCP protocols and specialisms an agent can claim — what each one means, which compliance storyboards run, and where to find the source YAML." +"og:title": "AdCP — Compliance Catalog" +--- + +import ComplianceErrorCodes from "/docs/snippets/compliance-error-codes.mdx"; +import ComplianceStoryboardInventory from "/docs/snippets/compliance-storyboard-inventory.mdx"; + +Every AdCP agent declares its `supported_protocols` and `specialisms` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). Each declaration maps to a compliance bundle at `/compliance/{version}/` that the storyboard runner executes to verify the claim. + + +**`supported_protocols` is not exhaustive.** The `accounts` surface ([`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts), [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts), [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance)) is a foundation implicit in every `media_buy`, `creative`, and `signals` agent and is intentionally not a `supported_protocols` value. See [Accounts tasks](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) for the full account surface. + + +This page is the human-readable index of that taxonomy. The machine-readable equivalent is `/compliance/{version}/index.json`. + +## Universal storyboards + +Every agent runs every graded storyboard in `/compliance/{version}/universal/` regardless of which protocols or specialisms it claims. A few are *capability-gated* — they only run when the agent advertises the relevant capability — but the storyboard is still universal in scope: any agent claiming the capability is graded by it. Failing a universal storyboard fails overall compliance. Non-executable schemas and support fixtures shipped in the universal bundle are not runner scenarios and do not appear in this table. + +{/* Generated from the compliance inventory; scripts/lint-universal-storyboard-doc-parity.cjs validates the literal slugs in the snippet. */} + + + +Capability-gated rows (`deterministic-testing`, `oauth-setup`, `signed-requests`) are skipped when the corresponding capability is absent or advertises `supported: false`; they cannot be claimed and partially implemented. Declaring `supported: true` and failing the storyboard is non-conformant — omit the capability or declare `false` rather than ship a partial implementation. The `billing-gate-dispatch` and `comply-controller-mode-gate` rows are precondition-gated rather than ordinary capability-gated rows: each phase grades `not_applicable` when its precondition is not met. Sellers wanting full coverage of the per-agent billing gate SHOULD ship a test kit with `commercial_relationship: passthrough_only` declared so the per-agent phases run. + +## Standard error codes + +The compliance suite verifies that standard errors use the recovery classifications and remediation guidance defined by the canonical [`error-code.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/enums/error-code.json) source taxonomy. The vocabulary remains open: agents must also handle unknown codes using the response's `recovery` value. + + + +## Protocols + +Top-level agent capability claims. An agent claims a protocol by listing it in `supported_protocols` and must pass the protocol's baseline storyboard plus every [universal](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent#storyboard-taxonomy) storyboard. + +`supported_protocols` uses snake_case; compliance paths and specialism IDs use kebab-case. See [Naming conventions](#naming-conventions) below for the full mapping. + +| `supported_protocols` value | Compliance path | Purpose | +|------------------------------|-----------------|---------| +| `media_buy` | `protocols/media-buy/` | Campaign creation, package management, delivery optimization, conversion tracking | +| `creative` | `protocols/creative/` | Creative asset management, format discovery, rendering | +| `signals` | `protocols/signals/` | Audience signal discovery and activation | +| `governance` | `protocols/governance/` | Property governance, brand standards, compliance | +| `brand` | `protocols/brand/` | Brand identity, rights discovery, rights acquisition *— small protocol today, growing with rights licensing work; see `brand-rights` specialism.* | +| `sponsored_intelligence` | `protocols/sponsored-intelligence/` | AI-mediated commerce and conversational sponsored experiences | +| `measurement` | Preview / no stable baseline | Experimental 3.1 metric-catalog discovery. Agents implementing it must list `measurement.core` in `experimental_features`. | + + +Support for the [compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) is declared via the `capabilities.compliance_testing` block on [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), not via `supported_protocols`. Compliance testing is an RPC surface for the test harness, not a functional protocol. + + + +An agent can claim multiple protocols — a full-stack media-buy platform might list `media_buy`, `creative`, and `signals`. The runner executes all matching baselines. + + +## Specialisms + +Specific capability claims. Each specialism lives under exactly one protocol. An agent claiming a specialism must pass the specialism's storyboard in addition to the parent protocol's baseline — e.g. claiming `sales-guaranteed` requires `media_buy` in `supported_protocols`. + +Specialisms carry a `status`: + +- **`stable`** — fully specified storyboard. Compliance runner executes every phase; `AAO Verified` means the agent demonstrably passed. +- **`preview`** — ID and scope are reserved; the storyboard is a placeholder while the underlying protocol surface stabilizes. Agents may claim these; the runner emits a result of `{ status: "preview", passed: null, reason: "storyboard not yet defined" }` instead of a verified pass/fail. AAO badges render preview specialisms with a distinct indicator. +- **`deprecated`** — retained for backward compatibility but scheduled for removal in a future major. Runner emits `{ status: "deprecated", passed: , reason: "..." }` — still executes the storyboard if one exists, but warns the claim should be migrated. + +Status is declared per-specialism in the YAML frontmatter and surfaced in `/compliance/{version}/index.json`. + +Specialisms are grouped below by parent protocol. + + +**What changed in 3.0.** `sponsored_intelligence` was promoted from a specialism to a full protocol (declare it in `supported_protocols`, not `specialisms`). `audience-sync` moved from `governance` to `media-buy` to match its tool family. `broadcast-platform` was renamed to `sales-broadcast-tv` and `social-platform` to `sales-social`. `property-governance` and `collection-governance` split into sibling `property-lists` and `collection-lists` specialisms. + + +### media-buy + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `sales-guaranteed` | stable | Guaranteed media buys with human IO approval | +| `sales-non-guaranteed` | stable | Non-guaranteed auction-based media buys | +| `sales-proposal-mode` | deprecated | **Deprecated in 3.1.** Drop this claim and replace with `sales-guaranteed` + `media_buy.supports_proposals: true`. See [#3823](https://github.com/adcontextprotocol/adcp/issues/3823). | +| `sales-catalog-driven` | stable | Catalog-driven commerce with conversion tracking | +| `sales-broadcast-tv` | stable | Broadcast linear TV with guaranteed inventory and FCC cancellation rules | +| `sales-social` | stable | Social media advertising platform with self-service flows | +| `governance-aware-seller` | stable | Seller composes with the buyer's campaign-governance agent after baseline registration — calls [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) and propagates approvals, conditions, and denials unchanged. Optional claim for the full governance-check loop. | +| `audience-sync` | stable | Syncs buyer-provided audience segments into a platform for activation (uses [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences), [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts)) | + + +**Coming in 3.1.** `sales-streaming-tv` (CTV / streaming), `sales-exchange` (programmatic SSP / exchange), and `sales-retail-media` (retail media network) are scheduled for 3.1. Sellers in those categories should claim `sales-guaranteed` or `sales-non-guaranteed` at 3.0 GA. + + + +`audience-sync` moved from the `governance` protocol to `media-buy` to match its tool family. If your agent claims `audience-sync` but only declares `governance` in `supported_protocols`, add `media_buy` to `supported_protocols` — the runner now expects the media-buy baseline to run alongside the audience-sync storyboard. + + +### creative + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `creative-ad-server` | stable | Creative ad server with tag-based delivery | +| `creative-generative` | stable | Generative creative agent producing assets on demand | +| `creative-template` | stable | Creative template and transformation agent | + +### signals + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `signal-owned` | stable | Owned signal agent exposing first-party segments through [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals); activation is not required for this claim | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data; requires `get_signals` and [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) | + +### governance + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `content-standards` | stable | Content standards enforcement (brand safety, policy compliance) | +| `property-lists` | stable | Property list governance — curated inclusion and exclusion lists for targeting and delivery compliance | +| `collection-lists` | stable | Collection list governance — curated inclusion and exclusion lists of content programs (shows, series, podcasts) for program-level brand safety | +| `governance-delivery-monitor` | stable | Campaign delivery monitoring with drift detection | +| `governance-spend-authority` | stable | Conditional spend approval and human-in-the-loop governance | + + +**Experimental in 3.1.** Measurement metric-catalog discovery is available through the experimental `measurement` capability block and `measurement.core` experimental feature. A stable `measurement-verification` specialism and baseline storyboard are deferred until the measurement task surface is frozen. + + +### brand + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `brand-rights` | stable | Brand identity and rights licensing (talent, music, stock media) | + +## Choosing a sales specialism + +The `sales-*` specialisms are not mutually exclusive — a hybrid platform with both a guaranteed direct desk and an auction floor should claim both `sales-guaranteed` and `sales-non-guaranteed`. Follow the steps below to resolve your claim. + + +**`sales-proposal-mode` is deprecated in 3.1.** Do not claim it for new agents. Existing agents that declare it must drop it entirely and replace it with `sales-guaranteed` + `media_buy.supports_proposals: true` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). See [#3823](https://github.com/adcontextprotocol/adcp/issues/3823). + + + + + + +Three specialisms apply to specific delivery channels and have their own storyboards. If you only sell one of these channel types, claim only the matching specialism. If you also sell general display or video inventory outside these channels, continue to Step 2. + +| If you operate… | Claim | +|---|---| +| Broadcast linear TV with FCC cancellation rules | `sales-broadcast-tv` | +| Catalog-driven dynamic ads (product listings, restaurant menus, hotel listings, local commerce) | `sales-catalog-driven` | +| Social platform with platform-managed creative | `sales-social` | + + + + + +| If you sell… | Claim | +|---|---| +| Guaranteed media (IO approval, fixed pricing) | `sales-guaranteed` → see Step 3 | +| Auction / PMP non-guaranteed | `sales-non-guaranteed` | +| Both guaranteed and non-guaranteed | `sales-guaranteed` + `sales-non-guaranteed` | + + + + + +`media_buy.supports_proposals` is a boolean in the `media_buy` capabilities block of your `get_adcp_capabilities` response. It gates whether the `proposal_finalize` compliance scenario runs. It is a conformance declaration, not the buyer's per-proposal routing signal: buyers decide whether a returned proposal can be bought from `proposal_status`. + +| If you… | Set | +|---|---| +| Accept RFPs, generate proposals, and finalize draft proposals to committed status before create | `media_buy.supports_proposals: true` | +| Sell direct-buy guaranteed only (auction PG, retail SKU, quoted-rate — no RFP flow) | `media_buy.supports_proposals: false` (or omit — default is `false`) | + +```jsonc +// Full-service guaranteed seller — proposal lifecycle graded +{ + "supported_protocols": ["media_buy"], + "specialisms": ["sales-guaranteed"], + "media_buy": { + "supports_proposals": true + } +} +``` + +```jsonc +// Direct-buy guaranteed seller — proposal scenario skipped as capability_unsupported +{ + "supported_protocols": ["media_buy"], + "specialisms": ["sales-guaranteed"], + "media_buy": { + "supports_proposals": false + } +} +``` + + + + + +### creative + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `creative-ad-server` | stable | Creative ad server with tag-based delivery | +| `creative-generative` | stable | Generative creative agent producing assets on demand | +| `creative-template` | stable | Creative template and transformation agent | + +### signals + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `signal-owned` | stable | Owned signal agent exposing first-party segments through [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals); activation is not required for this claim | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data; requires `get_signals` and [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) | + +### governance + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `content-standards` | stable | Content standards enforcement (brand safety, policy compliance) | +| `property-lists` | stable | Property list governance — curated inclusion and exclusion lists for targeting and delivery compliance | +| `collection-lists` | stable | Collection list governance — curated inclusion and exclusion lists of content programs (shows, series, podcasts) for program-level brand safety | +| `governance-delivery-monitor` | stable | Campaign delivery monitoring with drift detection | +| `governance-spend-authority` | stable | Conditional spend approval and human-in-the-loop governance | + + +**Experimental in 3.1.** Measurement metric-catalog discovery is available through the experimental `measurement` capability block and `measurement.core` experimental feature. A stable `measurement-verification` specialism and baseline storyboard are deferred until the measurement task surface is frozen. + + +### brand + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `brand-rights` | stable | Brand identity and rights licensing (talent, music, stock media) | + +### sponsored-intelligence + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `sponsored-intelligence` | preview | Agent claim for SDKs that dispatch on specialism ID. The graded storyboard is the `sponsored-intelligence` protocol baseline; this specialism reserves the wire ID and promotes to `stable` when the SI tools graduate from `x-status: experimental`. | + +## Cross-resource invariants + +In addition to per-step validations, specialisms declare cross-step and cross-resource **invariants** the runner observes across the full storyboard run. These catch state inconsistencies that no single response shape would surface. + +| Invariant | Scope | Specialisms | +|-----------|-------|-------------| +| `status.monotonic` | Single-resource — rejects status transitions observed across steps that aren't on the spec lifecycle graph. | All specialisms with a stateful resource lifecycle. | +| `impairment.coherence` | Cross-resource — verifies that `media_buy.impairments[]` stays in sync with referenced resources. **Forward**: every entry references a currently-offline resource. **Inverse**: any offline resource referenced by a non-terminal buy appears in `impairments[]`. **Health-iff**: on a non-terminal buy, `health == "impaired"` iff `impairments[]` is non-empty (strict iff — stale drift fails). Out of scope: all three rules relax on terminal-status buys (sellers MAY leave `impairments[]` and `health` in whatever state held at the terminal transition); materiality is schema-enforced via `package_ids: minItems: 1`. | `audience-sync`, `creative-ad-server`, `creative-template`, `creative-generative`, `sales-catalog-driven`. Driven by the [`media_buy_seller/dependency_impairment`](/compliance/latest/protocols/media-buy/scenarios/dependency_impairment.yaml) scenario (creative-track via `force_creative_status`); audience-track and catalog-track follow once the compliance test controller adds `force_audience_status` / `force_catalog_item_status`. Grades `not_applicable` on storyboards that don't observe both a resource transition and a media-buy snapshot read. | + +Invariants are declared in the specialism YAML's `invariants:` array and documented inline with the rule they enforce. See [media-buy lifecycle § Compliance](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle#compliance) for the full `impairment.coherence` contract. + +## How to claim + +Declare your protocols and specialisms in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities): + +```json +{ + "supported_protocols": ["media_buy", "creative"], + "specialisms": ["sales-guaranteed", "creative-template"] +} +``` + +The storyboard runner: + +1. Runs every storyboard in `/compliance/{version}/universal/` +2. For each protocol in `supported_protocols`, runs the baseline at `/compliance/{version}/protocols/{protocol}/` (snake_case → kebab-case) +3. Runs each claimed specialism's storyboard at `/compliance/{version}/specialisms/{id}/` +4. For `preview` specialisms, emits a warning instead of a pass/fail verdict — AAO Verified badges render preview specialisms with a distinct indicator + + +**Implement the tools AND claim the specialism.** An agent that wires all of a specialism's required tools but omits the kebab-case ID from `capabilities.specialisms[]` will be graded **"No applicable tracks found"** by the runner — `tracks_passed = 0, tracks_failed = 0, tracks_skipped = 1`. This is a silent pass at the step level and a silent fail at the track level. The fix is to add the specialism ID (e.g., `"creative-generative"`) to your `get_adcp_capabilities` response. + + +If any `stable` storyboard fails, your agent is not compliant for that claim. See [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for how to run the suite locally. For a detailed walkthrough of how the runner resolves specialism manifests into graded scenarios — including how capability flags like `media_buy.supports_proposals` gate individual scenarios — see [How grading works](/dist/docs/3.2.0-beta.4/building/verification/how-grading-works). + +## Naming conventions + +Four casings coexist in the taxonomy. Which one applies depends on where the identifier is read: + +| Casing | Layer | Example | Where it appears | +|--------|-------|---------|------------------| +| `snake_case` | Wire enums (`supported_protocols`, `delivery_type`, channel IDs, `signal_type`) | `media_buy`, `non_guaranteed`, `ctv`, `custom` | [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response, JSON payloads, generated schemas | +| `kebab-case` | Specialism IDs and compliance URLs | `sales-broadcast-tv`, `property-lists`, `audience-sync` | `get_adcp_capabilities.specialisms`, `/compliance/.../specialisms/{id}/` paths | +| `snake_case` | Storyboard `id:` and `category:` fields | `sales_broadcast_tv`, `audience_sync` | Compliance YAML frontmatter, runner output, test reports | +| Prose / hyphenated | Titles and narrative | "Streaming TV", "non-guaranteed" | Catalog pages, narrative copy | + +The kebab↔snake swap between wire specialism IDs and storyboard categories is mechanical identity — hyphens become underscores, nothing more. Variant scenarios within a specialism use `{category}/{variant}` path form. + +| Specialism ID (wire) | Channel / tool family | Storyboard category | Variant scenarios | +|----------------------|-----------------------|---------------------|-------------------| +| `sales-broadcast-tv` | `channels: ['linear_tv']` | [`sales_broadcast_tv`](/compliance/latest/specialisms/sales-broadcast-tv/index.yaml) | — | +| `sales-social` | `channels: ['social']` | [`sales_social`](/compliance/latest/specialisms/sales-social/index.yaml) | — | +| `audience-sync` | [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) tool | [`audience_sync`](/compliance/latest/specialisms/audience-sync/index.yaml) | — | +| `property-lists` | `property_list` tools | [`property_lists`](/compliance/latest/specialisms/property-lists/index.yaml) | — | +| `collection-lists` | `collection_list` tools | [`collection_lists`](/compliance/latest/specialisms/collection-lists/index.yaml) | — | +| `governance-spend-authority` | [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance), [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) | [`governance_spend_authority`](/compliance/latest/specialisms/governance-spend-authority/index.yaml) | [`governance_spend_authority/denied`](/compliance/latest/specialisms/governance-spend-authority/denied.yaml) | +| `creative-generative` | [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) | [`creative_generative`](/compliance/latest/specialisms/creative-generative/index.yaml) | [`creative_generative/seller`](/compliance/latest/specialisms/creative-generative/generative-seller.yaml) | +| `brand-rights` | [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity), [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) | [`brand_rights`](/compliance/latest/specialisms/brand-rights/index.yaml) | [`brand_rights/governance_denied`](/compliance/latest/specialisms/brand-rights/scenarios/governance_denied.yaml) | + +The case split is deliberate: `supported_protocols` is a pre-existing 3.0 field already shipped to production agents, while specialism IDs are new and URL-first (each is a directory name under `/compliance/.../specialisms/{id}/`). The runner handles the mapping transparently. + +### Specialism ↔ tool family mapping + +The protocol an agent claims does not always match the tool family name a specialism uses: + +- `audience-sync` lives under the `media-buy` protocol because `sync_audiences` is a media-buy tool. +- `property-lists` (specialism ID, kebab-case) maps to the `property_list` tool family ([`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list), [`validate_property_delivery`](/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery)) and storyboard category `property_lists`. +- `sales-broadcast-tv` declares `channels: ['linear_tv']` — "Broadcast TV" is the prose name; `linear_tv` is the wire value. + +`/compliance/{version}/index.json` surfaces each specialism's `required_tools` so agents can discover the tool families without reading the full storyboard YAML. + +### Wire enum vs prose + +Wire enum values are always `snake_case` (`non_guaranteed`, `pmax_platform`, `ctv`). Prose renders the same concept with hyphens or spaces ("non-guaranteed auction inventory", "Connected TV"). When populating a payload, always use the wire form — hyphenated or spaced spellings are editorial only and will fail schema validation. + +### `signal_type` values + +The `signal_type` enum in signal responses has three values: + +- `marketplace` — the signal agent is reselling segments published by a third-party data provider (Experian, Peer39, etc.). Buyers can verify authorization via the provider's `/.well-known/adagents.json`. +- `owned` — the signal agent exposes its own first-party segments derived from directly owned data (retailer purchase data, publisher behavioral data, telco location data). +- `custom` — the signal source builds the segment on demand from models, composites, or buyer-supplied inputs. Use this when no `adagents.json` authorization chain applies — the segment is source-native, not attributable to a standing upstream provider. + +## Source of truth + +The machine index is published alongside schemas: + +| Path | Contents | +|------|----------| +| `/compliance/{version}/index.json` | Enumerated protocols + specialisms + universal storyboards + per-specialism `status` | +| `/schemas/{version}/enums/specialism.json` | Specialism enum used by `get_adcp_capabilities.specialisms` | +| `/schemas/{version}/enums/adcp-protocol.json` | Task-classification enum referenced by `tasks-list-request` and webhook payloads. Same axis as `supported_protocols` (kebab-case here, snake_case on the wire). | + +The build pipeline verifies the specialism filesystem ↔ enum parity and that every specialism's parent protocol exists in the compliance tree. Drift fails the build. + + +The catalog on this page is maintained by hand to give human context. The authoritative enumeration is always `/compliance/{version}/index.json`. + + + +**Building an agent that wraps an upstream platform?** Storyboards in this catalog grade the AdCP wire contract; they cannot detect adapters that return shape-valid responses without integrating with the upstream. See **[Validate adapter agents with mock upstream fixtures](/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures)** for the complementary pre-staging gate. + diff --git a/dist/docs/3.2.0-beta.4/building/verification/conformance.mdx b/dist/docs/3.2.0-beta.4/building/verification/conformance.mdx new file mode 100644 index 0000000000..0656abfb8a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/conformance.mdx @@ -0,0 +1,284 @@ +--- +title: Conformance Specification +sidebarTitle: Conformance Specification +description: "What 'AdCP-conformant' means, defined by the storyboards that verify it. Conformance is what the spec requires; verified is what the suite attests." +"og:title": "AdCP — Conformance Specification" +--- + +**Status**: Request for Comments +**Last Updated**: April 19, 2026 + +## Two words, not three + +AdCP conformance has two load-bearing terms. A third (one you'll hear in the wild) is a trap. + +- **Conformant** — the agent meets the normative rules. Defined by the storyboards this document indexes. +- **Verified** — AAO has tested the agent recently and issued a signed attestation. Gated on active membership and a live heartbeat. The [AAO Verified badge](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) carries one of two qualifiers: **(Spec)** for storyboard-conformance against a test deployment or dev endpoint, **(Sandbox)** for storyboard-conformance against the seller's real production endpoint under `account.sandbox: true` flagging. An agent can earn either or both. +- **"Compliant"** — self-attested, unverified, no external check. Don't claim it; don't design for it. This document uses *conformant* and *verified* exclusively. + +Put differently: + +- Conformance is a property of the agent's wire behavior. +- Verification is a time-bounded third-party attestation. **(Spec)** attests wire-format conformance against any registered endpoint; **(Sandbox)** attests the same storyboard suite passes against the seller's real production endpoint under sandbox-flagged traffic. Same storyboards, different attestation surface. +- The two axes are independent: a seller without a separate test deployment can earn **(Sandbox)** directly on production; a test agent that can never serve real impressions earns **(Spec)** as a complete claim. + +## Storyboard conformance vs. AAO Verified + +This page indexes **storyboard conformance** — the property an agent's wire behavior has when it matches the spec, verified by storyboards running against seeded test data. Storyboard passing earns the **AAO Verified (Spec)** or **AAO Verified (Sandbox)** qualifier (or both) on an agent's badge, depending on where the runner targeted. + +A second axis — **AAO Verified (Sandbox)** — verifies the seller's real production endpoint correctly handles the full storyboard suite under `account.sandbox: true` flagging. (Sandbox) is the stronger claim: a seller can pass (Spec) on a test deployment while their production stack has a broken sandbox gate (real-world side effects under flagged traffic, missing account-mode verification, etc.) — (Sandbox) closes that gap. + +The two qualifiers share one brand mark — **AAO Verified** — and an agent can earn either or both. **(Spec) and (Sandbox) are independent**: each independently demonstrates conformance through different evidence. (Spec) attests wire-format conformance against any registered endpoint; (Sandbox) attests the production code path correctly tolerates sandbox-flagged traffic. See [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) for the qualifier model and the [Sandbox framing verdict](https://github.com/adcontextprotocol/adcp/issues/4379); the rest of this page indexes the storyboards that back both qualifiers. + +## Test surfaces and the storyboard loop + +Every seller exposes a *test surface* — the mechanism that lets a storyboard runner exercise the seller's tools deterministically without triggering real-world side effects. The test surface is what (Spec) is graded against. How a seller stands up that surface depends on where their state-of-record lives; the implementation differs, the goal does not: + +| Where state-of-record lives | How the test loop closes | +|---|---| +| Local DB only (typically SSPs, creative agents) | The storyboard runner writes fixtures via `comply_test_controller.seed_*`; the seller's read handlers consume the same store. The seed → read loop closes naturally. | +| Upstream system the seller does not control (DSPs proxying to platforms, retail-media networks reading retailer catalogs, signals brokers) | Seeded writes are dead to the read handler. The TypeScript SDK ships a `TestControllerBridge` that runs the real adapter call first (so a broken upstream call still fails the gate), then merges seeded fixtures into the response. | +| Platform catalog with seller-issued or derived identifiers | For storyboards that declare `fixture_resolution`, the runner discovers qualifying entities through the seller's normal AdCP read surface, pins the seller-issued IDs to run-scoped fixture handles, and exercises the normal booking path. Requirements the sandbox catalog cannot satisfy remain visible as `fixture_unsatisfied` coverage gaps. | +| Mixed (some tools local, some upstream) | Both, per tool. | + +All three paths can earn `(Spec)` — each proves the seller's wire behavior against the storyboards, and the run report identifies which fixture strategy supplied the evidence. The bridge is **one implementation** of the test-surface pattern, not a separate seller category. Discovery is not a blanket opt-out from controlled setup: a seller still needs the `force_*` and `simulate_*` scenarios required to prove lifecycle behavior, and an unsatisfied catalog requirement reduces reported coverage rather than passing the test. Neither category is what `(Sandbox)` attests; `(Sandbox)` is the separate axis covering whether the seller's production stack honors `account.sandbox: true` without real-world side effects. + +### Fixture handles and catalog resolution + +In AdCP 3.2, fixture IDs are run-scoped handles. Existing storyboards and +sellers retain literal `seed_*` injection by default. A storyboard opts a +fixture into catalog resolution through explicit `fixture_resolution` match +rules; the runner never guesses that an arbitrary fixture object is a generic +subset predicate. + +For product discovery, the runner reads the fully paginated wholesale catalog +for the resolved sandbox account, validates the response normally, selects a +qualifying entity deterministically, and binds the authored handle to the +seller's `product_id`. Product pricing options bind as the scoped pair +`(product_id, pricing_option_id)`. The binding stays fixed for the run and is +substituted only into request fields carrying the corresponding `x-entity` +annotation. + +The grading boundary is important: + +- No qualifying entity after every declared strategy is + `fixture_unsatisfied`: an explicit, reported coverage gap. +- A rejected, malformed, incomplete, or transport-failed discovery call is a + conformance failure. +- Once a supported setup operation begins, its failure is a conformance + failure; the runner cannot fall back to another strategy to conceal it. + +The normative authoring and output contracts live in +[`storyboard-schema.yaml`](https://adcontextprotocol.org/compliance/latest/universal/storyboard-schema) +and +[`runner-output-contract.yaml`](https://adcontextprotocol.org/compliance/latest/universal/runner-output-contract). + +### Distinguishing fixture-merged from upstream-derived responses + +When a response passes through the SDK's `TestControllerBridge`, the SDK stamps a `_bridge: { callback, tool, merged_count }` marker on the response. Marker presence on a step means the response content was merged from a seeded fixture after the seller's handler returned; marker absence means the response came from the seller's adapter end-to-end (or from a local DB the runner seeded directly). The marker is advisory metadata for runners and downstream leaderboards — it is **not** part of the wire contract. Sellers MUST NOT emit it, and conformance checks ignore it. The leading underscore marks the field as SDK/runner-stamped metadata reserved for testing tooling; future fields with the same prefix follow the same rule. + +Marker design: [`adcp-client#1775`](https://github.com/adcontextprotocol/adcp-client/issues/1775). Shipped: [`adcp-client#1786`](https://github.com/adcontextprotocol/adcp-client/pull/1786). Leaderboard policy that consumes the marker: [`adcp-client#1782`](https://github.com/adcontextprotocol/adcp-client/issues/1782). + +### Three signals — don't conflate them + +Adopters often read these three controls as the same thing. They answer different questions: + +| Signal | Question it answers | +|---|---| +| Test controller availability ([`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) in `tools/list`) | "Has the seller exposed deterministic-mode forces?" | +| Sandbox flag (`account.sandbox` on requests) | "Is the targeted account a sandbox account, with no real-world side effects?" | +| Bridge participation (`_bridge` marker on a response) | "Did this response come from the adapter's upstream call, or from a fixture the SDK merged in?" | + +These are **runtime controls** on individual storyboard steps — distinct from the `(Spec)` and `(Sandbox)` verification qualifiers, which describe what a storyboard pass *attests* over time. A storyboard pass can carry any combination of the three signals. + +## Storyboards are the truth + +Rather than restate every MUST in prose — which would inevitably drift from the executable suite — **the storyboards ARE the conformance specification.** This document is a navigational index to them, grouped by the declaration that obligates the storyboard to run. + +Every normative rule in the suite has exactly one home: the storyboard YAML at [`/compliance/latest/`](https://adcontextprotocol.org/compliance/latest/). Changes to what "conformant" means happen there, in a versioned release, tested against real agents. If a rule isn't in a storyboard, it's not part of conformance. + +This is deliberate. A separate prose spec that restates storyboard rules creates two sources of truth. Two sources of truth drift. We pick one: the suite. + + +The `@adcp/sdk` package also ships TypeScript files under `testing/scenarios/` that pre-date storyboard-driven `comply()`. They are **not** the conformance spec — see [Storyboards vs. scenarios](/dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios) for which is which. + + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the referenced storyboards and prose sections below are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +## Conformance is layered + +Every agent satisfies the universal layer. Each `supported_protocols` claim adds a protocol baseline. Each `specialisms` claim adds a specialism baseline. + +| Layer | Obligation | Path | +|-------|------------|------| +| **Universal** | Every AdCP agent | [`/compliance/latest/universal/`](https://adcontextprotocol.org/compliance/latest/universal/) | +| **Protocol** | Agent claiming a `supported_protocols` value | [`/compliance/latest/protocols/{protocol}/`](https://adcontextprotocol.org/compliance/latest/protocols/) | +| **Specialism** | Agent claiming a `specialisms` value | [`/compliance/latest/specialisms/{id}/`](https://adcontextprotocol.org/compliance/latest/specialisms/) | + +Agents MUST NOT declare a capability whose storyboards they do not pass. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy and [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for how to run the suite locally. + +The non-executable [cross-role governance index](/compliance/latest/universal/governance.yaml) +maps the shared governance contract to capability-gated media-buy, signals, +rights, and creative proofs. It is discoverability metadata, not an additional +universal storyboard; only an agent's exact +`adcp.governance_enforcement.tasks[]` claims select those role-specific tests. + +## Universal conformance + +Every agent MUST pass every storyboard below. + +{/* Lint: scripts/lint-universal-storyboard-doc-parity.cjs keeps this table in sync with static/compliance/source/universal/. Add a row (snake_case YAML id) when you add a graded storyboard; remove the row when one is deleted. The build fails on drift. */} + +| Storyboard | What it verifies | +|------------|------------------| +| [`capability_discovery`](/compliance/latest/universal/capability-discovery.yaml) | [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) shape, protocol/specialism declarations, version advertising | +| [`comply_controller_mode_gate`](/compliance/latest/universal/comply-controller-mode-gate.yaml) | Sandbox/live isolation for sellers that expose [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) on a shared endpoint — live-mode principals must be refused before scenario dispatch | +| [`schema_validation`](/compliance/latest/universal/schema-validation.yaml) | Request and response schema conformance, ISO 8601 timestamps, temporal invariants | +| [`schema_validation_signals`](/compliance/latest/universal/schema-validation-signals.yaml) | Response schema compliance for signals — required fields on every signal; gated on [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) | +| [`version_negotiation`](/compliance/latest/universal/version-negotiation.yaml) | Release-precision `adcp.supported_versions` advertisement and response-envelope `adcp_version` echo; advisory in 3.1, promoted in later cuts | +| [`v3_envelope_integrity`](/compliance/latest/universal/v3-envelope-integrity.yaml) | v3 protocol envelopes MUST NOT carry the v2 legacy `task_status` or `response_status` fields — `status` is the single canonical lifecycle field in v3 | +| [`error_compliance`](/compliance/latest/universal/error-compliance.yaml) | Structured error shape, published error codes, transport binding, no existence leaks across tenants | +| [`error_compliance_signals`](/compliance/latest/universal/error-compliance-signals.yaml) | Error handling for signals protocol — nonexistent signal IDs, missing fields, VERSION_UNSUPPORTED, transport binding; discovery phases are gated on `get_signals`; activation phases run only for agents that claim activation support such as `signal-marketplace` | +| [`stale_response_advisory`](/compliance/latest/universal/stale-response-advisory.yaml) | [`STALE_RESPONSE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-stale-response) wire placement — advisory rides in `errors[]` on a populated success response with transport success preserved; stale-cache forcing steps gated on `comply_test_controller` with `force_upstream_unavailable` | +| [`idempotency`](/compliance/latest/universal/idempotency.yaml) | `idempotency_key` scoping, replay semantics, [`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict), `replayed: true`, declared TTL | +| [`read_tool_idempotency`](/compliance/latest/universal/read-tool-idempotency.yaml) | Read-only task wrappers and the 3.x [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) compatibility facade accept an optional `idempotency_key`; verifies the keyless capabilities bootstrap | +| [`canonical_format_validate_input`](/compliance/latest/universal/canonical-format-validate-input.yaml) | Canonical-format [`validate_input`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/validate-input-request.json) result semantics: structural pass/fail across required slots and `unvalidatable_nondeterministic` for seeded product declarations. Gated on agents that advertise `validate_input`; the seeded-product branch also requires `comply_test_controller` seeding support. | +| [`security_baseline`](/compliance/latest/universal/security.yaml) | Unauth rejection, static-credential enforcement (Bearer API key or HTTP Basic), OAuth discovery + RFC 9728 audience binding | +| [`oauth_setup`](/compliance/latest/universal/oauth-setup.yaml) | Complete RFC 9728/RFC 8414 discovery graph, issuer/resource consistency, and passive endpoint reachability — skipped unless `oauth.supported: true` | +| [`trusted_match_publisher_authentication`](/compliance/latest/universal/trusted-match-publisher-authentication.yaml) | TMP router deployment authentication — selected only for agents declaring `trusted_match.core` in `experimental_features`; a credential-profile-neutral runner sends schema-valid Context Match and Identity Match requests with absent and invalid credentials and requires HTTP `401` with `WWW-Authenticate`; a selected deployment with unavailable probe configuration produces `requirement_unmet` | +| [`webhook_emission`](/compliance/latest/universal/webhook-emission.yaml) | Outbound webhook conformance — stable `idempotency_key` across retries, RFC 9421 webhook signing (or opt-in HMAC fallback) on every delivery. Runs for any agent accepting `push_notification_config`. | +| [`webhook_receiver_envelope`](/compliance/latest/universal/webhook-receiver-envelope.yaml) | Buyer receiver replay conformance: accepts full MCP webhook envelopes, rejects bare delivery-result payloads, verifies signatures over raw body bytes, and dedupes retries by `idempotency_key`. | +| [`agent_notification_configs`](/compliance/latest/universal/agent-notification-configs.yaml) | Agent-level `capabilities.changed` registration: revision-fenced capability declaration, NO_AUTH rejection, and dry-run clear semantics for [`sync_agent_notification_configs`](/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs) | +| [`notification_config_event_scope`](/compliance/latest/universal/notification-config-event-scope.yaml) | `sync_accounts.accounts[].notification_configs[]` semantic validation — account-level subscribers reject media-buy-anchored notification types even though those values are valid in the shared enum | +| [`account_identity_reconciliation`](/compliance/latest/universal/account-identity-reconciliation.yaml) | Capability-gated account identity lifecycle: mandatory revision fences, stale-write atomicity, in-place operator-unit rekeying, collision rollback, preserved account IDs, and authorized former-key [`ACCOUNT_MOVED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-moved) recovery | +| [`notification_config_lifecycle`](/compliance/latest/universal/notification-config-lifecycle.yaml) | Account-level `notification_configs[]` lifecycle on [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts): paused registration, durable [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) echo, subscriber-keyed replacement, and clear-all semantics | +| [`notification_config_rejections`](/compliance/latest/universal/notification-config-rejections.yaml) | Semantic `notification_configs[]` request rejection path for duplicate `subscriber_id` values | +| [`wholesale_feed_products`](/compliance/latest/universal/wholesale-feed-products.yaml) | Product wholesale feed versioning: bootstrap responses carry `wholesale_feed_version`/`cache_scope`, and matching `if_wholesale_feed_version` probes return `unchanged` without product rows | +| [`wholesale_feed_signals`](/compliance/latest/universal/wholesale-feed-signals.yaml) | Signals wholesale feed versioning: bootstrap responses carry `wholesale_feed_version`/`cache_scope`, and matching `if_wholesale_feed_version` probes return `unchanged` without signal rows | +| [`wholesale_feed_products_scope_isolation`](/compliance/latest/universal/wholesale-feed-products-scope-isolation.yaml) | Product wholesale feed cache-scope isolation: a `wholesale_feed_version` minted under one `cache_scope` must not short-circuit (`unchanged: true`) a request the seller resolves to a different `cache_scope` | +| [`wholesale_feed_signals_scope_isolation`](/compliance/latest/universal/wholesale-feed-signals-scope-isolation.yaml) | Signals wholesale feed cache-scope isolation: a `wholesale_feed_version` minted under one `cache_scope` must not short-circuit (`unchanged: true`) a request the agent resolves to a different `cache_scope` | +| [`wholesale_feed_product_webhooks`](/compliance/latest/universal/wholesale-feed-product-webhooks.yaml) | Account-level `notification_configs[]` registration for agents that advertise product wholesale feed webhook events | +| [`wholesale_feed_signal_webhooks`](/compliance/latest/universal/wholesale-feed-signal-webhooks.yaml) | Account-level `notification_configs[]` registration for agents that advertise signal wholesale feed webhook events | +| [`wholesale_feed_bulk_webhooks`](/compliance/latest/universal/wholesale-feed-bulk-webhooks.yaml) | Account-level `notification_configs[]` registration for agents that advertise `wholesale_feed.bulk_change` | +| [`pagination_integrity`](/compliance/latest/universal/pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) responses, walked from a continuation page through to a terminal page | +| [`get_products_pagination_integrity`](/compliance/latest/universal/get-products-pagination-integrity.yaml) | [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) wholesale pagination semantics: walks a seeded product feed from continuation to terminal while preserving brief/refine as capped curated/refined answers, not feed enumeration | +| [`get_signals_pagination_integrity`](/compliance/latest/universal/get-signals-pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated `get_signals` responses under a broad query, with first-page non-terminal assertion against any non-trivial signal set | +| [`pagination_integrity_list_accounts`](/compliance/latest/universal/pagination-integrity-list-accounts.yaml) | Continuation-side pagination integrity on `list_accounts` responses; storyboard bootstraps three sandbox accounts via `sync_accounts`, requires `has_more=true` with a usable cursor on the first page, and follows that cursor once | +| [`pagination_integrity_creative_formats`](/compliance/latest/universal/pagination-integrity-creative-formats.yaml) | Deprecated named-format compatibility check: `cursor` ↔ `has_more` invariant when an agent still exposes [`list_creative_formats`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats) | +| [`get_media_buys_pagination_integrity`](/compliance/latest/universal/get-media-buys-pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) responses; storyboard seeds three media buys via `seed_media_buy` and walks from a continuation page to a terminal page | +| [`pagination_integrity_content_standards`](/compliance/latest/universal/content-standards-pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated [`list_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards) responses; storyboard bootstraps three content standards configurations via [`create_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards) and walks from a continuation page to a terminal page | +| [`pagination_integrity_collection_lists`](/compliance/latest/universal/collection-lists-pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated [`list_collection_lists`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#list_collection_lists) responses; storyboard bootstraps three collection lists via [`create_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#create_collection_list) and walks from a continuation page to a terminal page | +| [`pagination_integrity_property_lists`](/compliance/latest/universal/property-lists-pagination-integrity.yaml) | `cursor` ↔ `has_more` invariant on paginated [`list_property_lists`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#list_property_lists) responses; storyboard bootstraps three property lists via [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list) and walks from a continuation page to a terminal page | +| [`deterministic_testing`](/compliance/latest/universal/deterministic-testing.yaml) | `comply_test_controller` state machine — skipped if `capabilities.compliance_testing.supported: false` | +| [`signed_requests`](/compliance/latest/universal/signed-requests.yaml) | RFC 9421 transport-layer request-signing verification — skipped if `request_signing.supported: false`. | +| [`billing_gate_dispatch`](/compliance/latest/universal/billing-gate-dispatch.yaml) | Two-gate dispatch on `sync_accounts.billing` rejection: seller-wide capability gate ([`BILLING_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-supported) with `error.details.scope`) vs per-buyer-agent commercial-relationship gate ([`BILLING_NOT_PERMITTED_FOR_AGENT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-not-permitted-for-agent) with the clamped `rejected_billing` + optional `suggested_billing` shape). Capability phase skipped when the seller supports all three `billing` values; per-agent phases skipped when the test kit does not declare `commercial_relationship: passthrough_only`. | + +Agents that declare `capabilities.compliance_testing.supported: true` MUST implement the full [test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller); a partial controller is non-conformant, so declare `false` rather than ship one. + +Agents that declare `request_signing.supported: true` MUST implement the full RFC 9421 verifier per the [request-signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer); a partial verifier is non-conformant, so declare `false` rather than ship one. + +Agents that declare `oauth.supported: true` MUST serve a consistent public OAuth discovery graph. The baseline grade is passive: it does not register a client, issue credentials, or perform an authorization flow. + +## Protocol conformance + +A `supported_protocols` claim obligates the protocol's baseline storyboard. + +| `supported_protocols` | Storyboard | +|-----------------------|------------| +| `media_buy` | [`media_buy_seller`](/compliance/latest/protocols/media-buy/index.yaml) + [`media_buy_state_machine`](/compliance/latest/protocols/media-buy/state-machine.yaml) | +| `creative` | [`creative_lifecycle`](/compliance/latest/protocols/creative/index.yaml) | +| `signals` | [`signals_baseline`](/compliance/latest/protocols/signals/index.yaml) | +| `governance` | [`media_buy_governance_escalation`](/compliance/latest/protocols/governance/index.yaml) | +| `brand` | [`brand_baseline`](/compliance/latest/protocols/brand/index.yaml) | +| `sponsored_intelligence` | [`si_baseline`](/compliance/latest/protocols/sponsored-intelligence/index.yaml) | + +## Specialism conformance + +A `specialisms` claim obligates the specialism's storyboard in addition to its parent protocol baseline. The catalog lives at [`/compliance/latest/index.json`](https://adcontextprotocol.org/compliance/latest/index.json); the human-readable index is the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). + +Specialisms carry a `status` — `stable` (verified pass/fail), `preview` (storyboard not yet defined; runner emits `passed: null`), `deprecated` (scheduled for removal). Agents MAY claim preview specialisms, but preview claims do not yield a pass/fail verdict. + +## Outside the wire + +Some requirements can't be verified by a storyboard because they're operator-level, not wire-level. They remain part of running a conformant agent, but the suite can't attest to them. Operators MUST self-assess against these; third-party frameworks (SOC 2, ISO 27001) are the usual attestation path. + +- **Secret storage** — credentials SHOULD live in a KMS or equivalent. The wire shows only whether auth succeeds, not where the key was stored. +- **Credential rotation and revocation** — the operator MUST have a documented path to revoke a compromised credential in under an hour. The wire can't observe the runbook. +- **Personnel and physical security** — who can touch production, break-glass custody, employee offboarding. Entirely outside the protocol. +- **Governance agent due diligence** — when the operator relies on a third-party governance agent, the buyer SHOULD treat it as a processor with multi-customer blast radius and assess its posture. The storyboards verify correct JWS handling by the seller but cannot vouch for the governance agent itself. +- **LLM subprocessor posture** — if the agent uses an LLM provider, the DPA with that provider governs whether prompts, brand assets, or creative metadata may be retained. The protocol can't see upstream DPA terms. +- **Incident response** — AdCP emits the signals worth watching ([`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict) spikes, failed governance verifications, SSRF rejections); detection, alert routing, and response are operator concerns. +- **Data residency configuration** — whether and how EU / UK data is kept in-region is typically declared in the agent's capabilities or contract; the wire records the declaration, not the underlying infrastructure. + +Full operator checklist: [Security Model § What to verify before going live](/dist/docs/3.2.0-beta.4/building/concepts/security-model#what-to-verify-before-going-live). + +## Conformance vs external assurance + +Conformance is wire-level correctness. SOC 2, ISO 27001, and NIST CSF are operational assurance. They answer different questions and neither substitutes for the other. + +| External control area | Storyboard evidence | Gap to external assurance | +|------------------------|---------------------|----------------------------| +| Access control (SOC 2 CC6, ISO 27001 A.5.15) | [`security_baseline`](/compliance/latest/universal/security.yaml) (identity) + isolation checks in protocol storyboards | Personnel access reviews, least-privilege admin, offboarding | +| Change management (SOC 2 CC8) | [`idempotency`](/compliance/latest/universal/idempotency.yaml) proves duplicate state changes are prevented on the wire | Deployment approvals, release gates, rollback procedures | +| System monitoring (SOC 2 CC7, ISO 27001 A.8.16) | Error taxonomy produces a monitorable surface | Detection engineering, alert routing, on-call runbooks | +| Cryptography (ISO 27001 A.8.24) | TLS, RFC 9421 signing, JWS governance tokens | KMS selection, rotation cadence, cert lifecycle | +| Audit logging (SOC 2 CC7) | Governance storyboards verify signed-record issuance | Log retention, legal hold, integrity monitoring | +| Data handling (SOC 2 Privacy, GDPR, ISO 27701) | TMP two-call separation, audience hashing, signal access control | Data subject rights, DPA management, cross-border transfer | +| Vendor and subprocessor risk (SOC 2 CC9) | `adagents.json` / brand.json discovery, JWKS publication | Third-party risk assessment, LLM provider review | +| Incident response (SOC 2 CC7, NIST CSF RS) | Signals observable; response not mandated | Runbooks, tabletop exercises, breach notification | +| Business continuity (ISO 27001 A.5.30) | Cross-instance state storyboard checks | RPO/RTO targets, DR testing | + +Two practical consequences: + +1. Storyboard pass evidence MAY support specific external control objectives. It is not a substitute for an audit. +2. External certification does not imply AdCP conformance. SOC 2 Type II says nothing about whether [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) responses validate. + +## How to claim conformance + +1. Declare `supported_protocols` and `specialisms` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). +2. Pass every storyboard the declaration obligates — universal + protocol baselines + specialism baselines — at a specific AdCP major version. +3. Keep declaration and behavior in sync. An undeclared capability the suite happens to test is separate from a declared capability that fails. Both are non-conformant. + +Conformance is per-version; the suite is per-version. A 3.0-conformant agent is not thereby 3.1-conformant. + +**For third-party attestation**, run the heartbeat against AAO and earn an [AAO Verified badge](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). The badge is a signed claim that AAO tested the agent recently and the pass still holds. Buyers filtering on *verified* get a smaller set than *conformant* — fewer agents, fresher attestation, a named party on the hook. + +## What this document does not do + +- **Define individual MUSTs.** The storyboards do. If a rule isn't in a storyboard, it isn't part of conformance. +- **Grant or revoke certification.** The [AgenticAdvertising.org certification program](/dist/docs/3.2.0-beta.4/learning/overview) runs on top of this; conformance is necessary but not sufficient. +- **Publish reference test vectors beyond those already in the suite.** The [Reference Test Vectors index](/dist/docs/3.2.0-beta.4/reference/test-vectors) catalogs the vector sets that ship today; broader task-level corpus lands incrementally between 3.0 GA and 3.1, scoped in [#2383](https://github.com/adcontextprotocol/adcp/issues/2383). + +## When a storyboard fails + +When a failure surfaces a disagreement between the spec, the mock, and an SDK, the section below gives the triage order. For symptom-to-cause lookup, see the links at the end of this section. + +### Mock-server authority and failure triage + +The `adcp mock-server` is the reference wire implementation for stable surfaces. Use this triage order when a storyboard failure implicates the mock or an SDK: + +**Triage order: spec → mock → SDK.** The storyboards (and the schemas they reference) are canonical. The mock interprets the storyboards. The SDK consumes the protocol via the mock. + +| Condition | Default verdict | Next step | +|---|---|---| +| SDK wire shape **differs** from the mock's | SDK is wrong | File a bug against the SDK | +| SDK wire shape **matches** the mock's, but a storyboard still fails | Mock is wrong | File an issue against `adcontextprotocol/adcp` to fix the mock | +| Storyboard assertion conflicts with an otherwise-passing wire shape | Storyboard is wrong | File an issue against `adcontextprotocol/adcp` to fix the storyboard | +| Spec text (storyboard prose or schema) explicitly contradicts the mock | Spec wins; mock is the bug | File an issue against `adcontextprotocol/adcp` to fix the mock | + +**Scope.** This triage order applies to stable surfaces only. Experimental surfaces (see [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status)) are under active revision; mock behavior there is not yet authoritative. + +**Spec ambiguity vs. spec silence.** When spec text exists but is ambiguous, the mock's behavior pins the authoritative interpretation — that pinning is normative even if the prose has not yet been tightened. When the spec is entirely silent on a point and the mock has no behavior for it, the chain breaks; open a [known-ambiguities issue](/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities) instead of treating the mock as authoritative. + +- **[Storyboard troubleshooting](/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting)** — Error pattern → root cause → fix for the most common storyboard failures +- **[Known spec ambiguities](/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities)** — Open spec gaps with workarounds and issue links; entries are removed as underlying issues close + +## Further reading + +- **[AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified)** — Continuous-observability verification of the seller's live ad-server integration +- **[Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog)** — Full taxonomy of protocols and specialisms with storyboard IDs +- **[Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — How to run the suite +- **[Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model)** — Strategic framing for the five defense layers that the security storyboards enforce +- **[Security (implementation reference)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security)** — Normative rules cited by the storyboards +- **[Versioning](/dist/docs/3.2.0-beta.4/reference/versioning)** — Major-version support windows +- **[Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations)** — Visible edges of the specification diff --git a/dist/docs/3.2.0-beta.4/building/verification/get-test-ready.mdx b/dist/docs/3.2.0-beta.4/building/verification/get-test-ready.mdx new file mode 100644 index 0000000000..b606cda6a3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/get-test-ready.mdx @@ -0,0 +1,224 @@ +--- +title: Get Test-Ready +sidebarTitle: Get Test-Ready +description: "What a sales agent operator must have in place before running storyboards — capabilities, sandbox accounts, and the compliance test controller." +"og:title": "AdCP — Get Test-Ready" +--- + +Storyboards are the versioned buyer-simulation suite that decides whether your agent is published as **conformant**. Buyer agents filter on that status — overclaiming or failing storyboards is a public, permanent signal, not a CI warning. This page is the checklist between "I built an agent" and "I can run `npx @adcp/sdk@latest storyboard run`." + +## The three surfaces the runner needs + +The runner drives your agent through the same public tools a buyer would call, plus one sandbox-only tool for fixture setup. Three surfaces must be in place: + +| Surface | What it tells the runner | Where it lives | +|---------|--------------------------|----------------| +| [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | Which protocols and specialisms you claim, and that you support sandbox | Your agent's capability response | +| [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) (or [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts)) | How to obtain a sandbox account to run tests against | Your agent's account tool | +| [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) | How to force seller-side transitions deterministically and, when supported, inject fixtures | Your agent, sandbox-only | + +You ship these three surfaces. The runner owns storyboard selection, fixture ordering, and response comparison. + +## Step 1 — Declare capabilities honestly + +[`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) is how the runner picks which storyboards apply to you. It is also the [conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance) contract: you are promising to pass every storyboard that matches what you declare. + +The example below is for a full-service guaranteed seller (proposal lifecycle enabled). A direct-buy guaranteed seller would set `media_buy.supports_proposals: false` (or omit it). A broadcast-TV seller would claim `sales-broadcast-tv`; a creative-only agent would claim the `creative` protocol with `creative-ad-server` or `creative-generative` specialisms; a signals provider would claim `signals`. The pattern is the same: declare only what you actually implement. + +```json +{ + "supported_protocols": ["media_buy", "creative"], + "specialisms": ["sales-guaranteed"], + "media_buy": { + "supports_proposals": true + }, + "account": { + "sandbox": true, + "require_operator_auth": false + } +} +``` + +- **`supported_protocols`** — Pulls in the matching protocol storyboards from `/compliance/{version}/protocols/`. +- **`specialisms`** — Pulls in opt-in specialism storyboards (see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full enumeration). +- **`account.sandbox: true`** — Signals that you honor sandbox semantics (no real spend, no production side effects). +- **`account.require_operator_auth`** — Determines your sandbox bootstrap path (step 2). + + +Claiming `sales-guaranteed` when you only run RTB ships you into storyboards you will fail on record. Conformance status is part of the [Verified](/dist/docs/3.2.0-beta.4/building/verification/conformance) badge buyer agents use to filter sellers — overclaim once, lose inclusion everywhere. + + +## Step 2 — Pick your sandbox bootstrap path + +The runner must obtain a sandbox account before it can do anything. Your `require_operator_auth` flag chooses the path: + +**Buyer-declared accounts (`require_operator_auth: false`).** Your agent accepts [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) from any authenticated buyer. The runner calls `sync_accounts` with `sandbox: true` to mint a test account on demand. Most new sales agents start here. + +**Account-id namespaces (`require_operator_auth: true`).** Accounts must be pre-provisioned by a human on your side or by an upstream platform. The runner calls [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) with a sandbox filter to discover pre-existing test accounts. If your credential is bound to exactly one sandbox account, return that singleton. Publish a short note telling operators how to request one — include the contact, the expected turnaround, and what credentials they'll receive. + + +When your response includes the `account` capability block, its `require_operator_auth` flag — not the presence of `list_accounts` — selects the account model. Keep the flag `false` (or omit the flag, since `false` is its schema default) for buyer-declared natural-key accounts even if your agent also exposes `list_accounts`. Do not omit the entire `account` block: without account capability data, runners may retain a legacy `list_accounts` discovery heuristic. Set the flag to `true` only when callers must use seller-assigned account IDs. In that mode, the sandbox credential must expose one unambiguous account for the storyboard brand; if it exposes a roster, make sure exactly one row matches the test kit's `brand.house.domain`. Do not advertise `false` merely to bypass an ambiguous roster — that tells buyers the wrong account model. + + +Full details and examples: [Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox). + +## Step 3 — Implement the compliance test controller + +Without a compliance test controller, the runner tests only buyer-initiated flows (**observational mode**) — schema conformance, auth rejection, happy-path buyer calls. That is enough for early integration work and production-path sandbox smoke tests, but it produces **partial coverage** whenever controller-seeded or controller-forced scenarios are in scope. [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance) treats **deterministic mode** — full lifecycle walks enabled by the controller — as the bar for complete specialism coverage. + +In practice, sellers usually run both: + +| Run | Endpoint | Expected result | +|-----|----------|-----------------| +| Observational sandbox run | Production endpoint with sandbox accounts, no controller exposed | `steps_failed = 0`; live-only probes appear as not selected, and selected controller-dependent scenarios may make the summary `partial` with `missing_test_controller` skips | +| Deterministic run | Dev/staging or sandbox-only endpoint with [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) | `steps_failed = 0` and no controller-dependent coverage skips | + +The first run answers "does the production buyer-visible path tolerate sandbox traffic?" The second answers "can the runner prove every lifecycle path for the declared specialisms?" Do not collapse those into one signal. A zero-failure partial run is useful, but buyers need the skip list to know exactly which lifecycle assertions were not graded. + +`comply_test_controller` is a single sandbox-only tool with a `scenario` parameter covering three families: + +| Scenario family | What it does | When you need it | +|-----------------|--------------|------------------| +| `seed_*` | Create fixtures (products, pricing options, creatives, plans, media buys) with caller-supplied IDs | Seed-only storyboards and fixture-store sellers; 3.2 storyboards may instead resolve explicitly declared requirements through normal discovery or construction | +| `force_*` | Drive entities through state transitions that are normally seller-initiated | Any storyboard that tests a state machine (creative approval, account suspension, etc.) | +| `simulate_*` | Inject delivery data or budget spend | Reporting and budgeting storyboards | + +See the [Compliance test controller reference](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) for scenario-by-scenario parameters and response shapes, and the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for which scenarios each specialism requires. + +If your products come from a publisher-owned catalog and use seller-issued or +derived IDs, do not add a test-only alias layer merely to accept storyboard +literals. For storyboards that publish `fixture_resolution` rules, provision +representative inventory through your normal platform path and let the runner +discover and bind it. The run will report any requirement your sandbox catalog +cannot satisfy as `fixture_unsatisfied`. Storyboards that have not yet migrated +remain seed-only, so inspect the coverage report rather than assuming discovery +applies suite-wide. + +### Wiring the SDK scaffold + +`@adcp/sdk` (6.x is the production GA on AdCP 3.0) ships `createComplyController` so you wire your data layer to the controller without reimplementing tool registration, param validation, error envelopes, or re-seed idempotency. + +```bash +npm install @adcp/sdk +``` + + +The scaffold is TypeScript/JavaScript. Python, Go, and Java sellers implement the tool directly against the [schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/compliance/comply-test-controller-request.json) — the contract below (adapters, error codes, idempotency semantics) applies the same way. SDKs for other languages are tracked in [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk). + + +```ts +import { createComplyController, TestControllerError } from '@adcp/sdk/testing'; +// `server` is your AdcpServer or MCP server instance — see `createAdcpServer` in +// `@adcp/sdk/server` if you need a reference setup. + +const controller = createComplyController({ + seed: { + product: async ({ product_id, fixture }) => { + await productRepo.upsert(product_id, fixture); + }, + creative: async ({ creative_id, fixture }) => { + await creativeRepo.upsert(creative_id, fixture); + }, + // Add pricing_option, plan, media_buy as your claimed storyboards require. + }, + + force: { + creative_status: async ({ creative_id, status, rejection_reason }) => { + const previous = await creativeRepo.getStatus(creative_id); + if (previous == null) { + throw new TestControllerError('NOT_FOUND', `creative ${creative_id} not found`); + } + const result = await creativeRepo.transition(creative_id, status, rejection_reason); + if (result.kind === 'invalid_transition') { + throw new TestControllerError('INVALID_TRANSITION', result.message, previous); + } + return { success: true, previous_state: previous, current_state: result.status }; + }, + // Add account_status, media_buy_status, session_status as needed. + }, + + // simulate: { delivery, budget_spend } — add if you claim reporting/budget specialisms. +}); + +// Primary gate: register the tool only in sandbox deployments, so it never +// appears in production `tools/list`. +if (process.env.ADCP_SANDBOX === '1') { + controller.register(server); +} +``` + +What the scaffold handles for you: + +- **Tool registration and schema.** `controller.toolDefinition` stays in sync with the published spec version. +- **Dispatch and [`UNKNOWN_SCENARIO`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes).** Scenarios you do not register return `UNKNOWN_SCENARIO` automatically — never a schema error. +- **Param validation.** Invalid params produce [`INVALID_PARAMS`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) with a readable `error_detail` without reaching your adapter. +- **Seed idempotency.** Calling `seed_product` twice with the same `product_id` and an equivalent `fixture` returns `previous_state: "existing"`; a divergent `fixture` returns `INVALID_PARAMS`. Your adapter is only invoked on the first seed. +- **Typed error envelopes.** Throw `TestControllerError(code, message, currentState?)` with `code` from the controller error-code table. Common adapter codes are `'INVALID_TRANSITION' | 'NOT_FOUND' | 'FORBIDDEN' | 'INVALID_PARAMS'`; digest-mode `query_upstream_traffic` implementations may also return [`JCS_NON_FINITE_NUMBER`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) when RFC 8785/JCS canonicalization encounters a non-finite numeric value. + +The scaffold does **not** own the state machine. Transition rules live in your adapters, so compliance testing and production share one source of truth — the mechanic the [anti-teach-to-test section](#avoiding-the-teach-to-test-trap) depends on. + +### Two layers of sandbox gating + +The scaffold supports two gates. Ship both in any deployment that serves both sandbox and production traffic from the same process: + +1. **Registration gate (primary).** Wrap `controller.register(server)` in an environment check. This is what keeps `comply_test_controller` out of production `tools/list` entirely. Without it, a leaked sandbox credential on a production endpoint exposes seller-side state-forcing. +2. **Per-request gate (defense-in-depth).** Pass a `sandboxGate: (input) => boolean` to `createComplyController`. The scaffold calls it on every request and returns [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) when it returns `false`. Use this on shared-process deployments where the tool IS registered but some requests might still reference a production account. + +`sandboxGate` receives the raw tool input (`Record`). The SDK does not plumb auth context onto it — you decide what to inspect. A typical pattern is to pull the referenced entity ID out of `params` and verify it belongs to a sandbox account in your own data layer: + +```ts +sandboxGate: async (input) => { + const params = input.params as { account_id?: string; media_buy_id?: string } | undefined; + const accountRef = params?.account_id + ?? (params?.media_buy_id && await mediaBuyRepo.getAccountId(params.media_buy_id)); + return typeof accountRef === 'string' && await accountRepo.isSandbox(accountRef); +} +``` + + +For custom MCP wrappers — AsyncLocalStorage for per-request auth, transport-level sandbox gating, session-backed stores — compose the lower-level `handleTestControllerRequest`, `toMcpResponse`, and `TOOL_INPUT_SHAPE` from `@adcp/sdk/server` directly. + + +## Step 4 — Run the storyboard runner + +Once the three surfaces are in place, the runner takes over: + +```bash +npx @adcp/sdk@latest --save-auth my-agent http://localhost:3001/mcp +npx @adcp/sdk@latest storyboard run my-agent +``` + +The runner discovers your capabilities, obtains a sandbox account, seeds fixtures via the controller, and walks each matching storyboard. See [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for the full CLI, debug flags, and Addie workflows. + +## Avoiding the teach-to-test trap + +Storyboards hardcode fixture IDs — `"test-product"`, `"campaign_hero_video"`, `"acmeoutdoor.example"`. A controller that special-cases those strings passes the suite while silently failing on every real buyer. That is the exact industry cost conformance is trying to prevent: every post-conformance integration failure burns seller reputation, inflates buyer agent skepticism, and slows protocol adoption. + +The SDK scaffold already points you in the right direction: adapters receive `product_id`, `creative_id`, etc. as values, not as conditions. If your adapter contains a switch on `product_id === "test-product"`, you have regressed. + +Two rules of thumb: + +1. **Implement seed scenarios generically.** `seed_product` accepts any `product_id` and persists a product with that ID in your sandbox data layer. Your adapter is a thin wrapper over a real upsert against your sandbox store. +2. **The `fixture` object is the contract, the ID is not.** Storyboard authors set `fixture` to the minimum shape the test needs. Everything beyond that — discovery, filtering, authorization — is your normal code path, exercised on fixture-seeded data the same way it runs on production data. + +To check: swap a storyboard's fixture IDs for random UUIDs and rerun. If the run still passes, your controller is correct. If it breaks, you have hardcoded behavior to fix. + +## Readiness checklist + +Before your first full storyboard sweep: + +- [ ] [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) returns only protocols and specialisms you actually implement +- [ ] `account.sandbox: true` is declared and honored — sandbox requests produce no real spend, no production platform calls, no persisted production state +- [ ] [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) (implicit) or [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) (explicit) handles sandbox requests per step 2 +- [ ] [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) is absent from `tools/list` on any production endpoint +- [ ] Requests that reference a non-sandbox account are rejected with [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) +- [ ] Every seed scenario your claimed storyboards depend on persists fixtures generically, with no ID special-cases +- [ ] Every force scenario uses the same state-transition rules as production, returning typed errors on invalid transitions +- [ ] A full storyboard sweep still passes when fixture IDs are swapped for random UUIDs + +## What's next + +- **[Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — CLI, Addie workflows, and multi-instance verification +- **[Compliance test controller reference](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)** — Full scenario-by-scenario spec +- **[Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox)** — The two account model paths in depth +- **[Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance)** — What "conformant" and "verified" mean once your runs pass diff --git a/dist/docs/3.2.0-beta.4/building/verification/grading.mdx b/dist/docs/3.2.0-beta.4/building/verification/grading.mdx new file mode 100644 index 0000000000..63ba75e7db --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/grading.mdx @@ -0,0 +1,87 @@ +--- +title: Auth Graders +sidebarTitle: Auth Graders +description: "AdCP CLI graders for RFC 9421 request-signing conformance, OAuth handshake diagnosis, and Ed25519/P-256 signing key generation and verification." +"og:title": "AdCP — Auth Graders" +--- + +`@adcp/sdk` 5.21+ ships CLI graders for authentication conformance. They are separate from the [compliance storyboards](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) — storyboards test protocol behavior end-to-end; these graders test the authentication and signing layer specifically, giving per-vector diagnostics and hypothesis-ranked failure analysis. + + +All commands below use `npx @adcp/sdk@latest`. If you have `@adcp/sdk` installed globally (`npm install -g @adcp/sdk`) you can drop the `npx @adcp/sdk@latest` prefix and use `adcp` directly. + + +## Request-signing grader + +Validates RFC 9421 conformance against your agent end-to-end. Runs every signing vector and reports per-vector results so you can trace exactly which canonicalization rule or header coverage check is failing. + +```bash +npx @adcp/sdk@latest grade request-signing +``` + +**What it checks:** +- Signature base canonicalization (method, target-uri, authority, content-type, content-digest) +- Covered-component completeness and ordering +- `alg` and `kid` fields present and valid +- Timestamp window (±60 s) and nonce uniqueness +- Replay detection (if the agent advertises it) +- Negative-vector rejection — each malformed request MUST produce the expected error code + +**When to use it:** before flipping any operation to `required_for` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities); when a counterparty reports signature verification failures; when upgrading key algorithms (Ed25519 → P-256 or the reverse). + +## OAuth handshake diagnoser + +Probes an agent's OAuth discovery documents (RFC 9728 protected-resource metadata, RFC 8414 authorization-server metadata), performs the authorization code + PKCE flow, decodes the resulting JWT, and ranks hypotheses about what is wrong. + +```bash +npx @adcp/sdk@latest diagnose-auth +``` + +The `` form uses a saved alias from `~/.adcp/config.json` (set via `npx @adcp/sdk@latest --save-auth `). + +**What it probes:** +- `/.well-known/oauth-protected-resource` — presence, `authorization_servers` list, HTTPS enforcement +- `/.well-known/oauth-authorization-server` — issuer match, `token_endpoint`, `code_challenge_methods_supported` +- Token endpoint response — token type, expiry, scope coverage +- JWT claims — `iss`, `sub`, `aud`, `exp`, `iat` presence and validity +- Cross-origin `authorization_servers` issuer pinning (flags if the resource metadata's AS URL doesn't match out-of-band config) + +**Output:** ranked hypothesis list, e.g., `1. token_endpoint not reachable (connection refused) — likely cause`, `2. issuer mismatch — AS URL returned by protected-resource does not match adagents.json`. Each hypothesis links to the relevant spec section. + +**When to use it:** when [`AUTH_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-required) errors persist after bearer token configuration; when dynamic client registration returns unexpected responses; when a new seller's OAuth setup fails silently. + +## Key generation + +Generate an Ed25519 or P-256 keypair formatted for publication at your agent's `jwks_uri`. + +```bash +npx @adcp/sdk@latest signing generate-key +``` + +Outputs: +- A private key file (PEM, for your agent's signing config) +- A JWK with `"kid"`, `"use": "sig"`, `"key_ops": ["verify"]`, `"adcp_use": "request-signing"`, and `"alg": "EdDSA"` (or `"ES256"` for P-256) ready to paste into your JWKS endpoint + +**When to use it:** initial signing setup; key rotation (generate new, publish alongside old, drain in-flight requests, retire old). + +## Vector verifier + +Verify a single signing vector without running the full grader. Useful for debugging a specific canonicalization case during implementation. + +```bash +npx @adcp/sdk@latest signing verify-vector \ + --vector /path/to/vector.json \ + --keys /path/to/keys.json +``` + +Reads the local vector and key-set JSON files and runs the SDK reference verifier. For a self-contained negative vector, compare the reported rejection code with the fixture's `expected_outcome.error_code`; the CLI does not grade that comparison for you and exits with status 1 for an expected rejection. Shell scripts and CI jobs must therefore compare the output rather than treating every nonzero exit as an unexpected tool failure. + +Some negative fixtures declare `test_harness_state` and are not self-contained. For example, `016-replayed-nonce.json` requires the verifier harness to preload a replay-cache entry. A local white-box harness can apply the fixture's declared state; live black-box certification uses the full grader's coordinated repeat-request contract. See the request-signing guide's [downloadable vector example](/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing#conformance-vectors) for a copyable CDN flow. + +**When to use it:** while implementing or debugging a verifier to isolate canonicalization and validation rules before testing end-to-end. + +## Related + +- [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) — storyboard-based protocol compliance testing +- [Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication) — auth model overview, bearer tokens, RFC 9421 introduction +- [Security implementation reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) — full RFC 9421 profile, verifier checklist, key publication rules diff --git a/dist/docs/3.2.0-beta.4/building/verification/how-grading-works.mdx b/dist/docs/3.2.0-beta.4/building/verification/how-grading-works.mdx new file mode 100644 index 0000000000..6b3cf67c0c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/how-grading-works.mdx @@ -0,0 +1,202 @@ +--- +title: How grading works +sidebarTitle: How grading works +description: "How the AdCP compliance runner translates specialism declarations into a concrete set of graded storyboards — and how capability flags alter that set." +"og:title": "AdCP — How compliance grading works" +--- + +The [Conformance Specification](/dist/docs/3.2.0-beta.4/building/verification/conformance#conformance-is-layered) defines three obligation layers: Universal, Protocol, and Specialism. This page explains what happens inside the Specialism layer: how a specialism manifest resolves to a set of graded scenarios, and how per-scenario capability gates can narrow or expand that set. + +## From declaration to graded scenarios + +When your agent declares a specialism in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), the runner: + +1. Fetches the specialism manifest at `/compliance/{version}/specialisms/{id}/`. +2. Reads the manifest's `requires_scenarios` list — an ordered set of scenario IDs the runner must grade. +3. For each scenario, checks whether the scenario declares a `requires_capability` gate. +4. If a gate is present, reads the named path from your `get_adcp_capabilities` response to decide whether to run or skip the scenario. + +The manifest drives the full scenario list; capability gates apply per-scenario on top of it. + +## Runner evidence vs. verification policy + +The storyboard runner does not decide whether an agent earns a badge or satisfies a particular buyer. It produces evidence: executed assertions, failures, selected-but-skipped steps, not-selected steps, skip reasons, and the endpoint/run mode used. A verification policy consumes that evidence and decides which gaps are acceptable for a named outcome. + +| Question | Decided by | Evidence used | +|----------|------------|---------------| +| "Did this step match the storyboard?" | Storyboard runner | Step validations and response schemas | +| "Does this agent earn **Verified (Spec)**?" | AgenticAdvertising.org verification policy | Runner evidence against the registered spec/test endpoint, plus membership and declaration checks | +| "Does this agent earn **Verified (Sandbox)**?" | AgenticAdvertising.org verification policy | Runner evidence against the production endpoint under `account.sandbox: true`, plus sandbox-isolation checks | +| "Is this good enough for a specific buyer?" | That buyer's requirement profile | Verified mode, declared protocols/specialisms, optional capabilities they require, and any business or integration requirements outside AdCP | + +This is why runner classification matters. "Not selected because this is a sandbox-only run" is a suite-selection fact, not a seller capability gap. "Skipped because the seller did not claim an optional feature" may be acceptable for the badge but unacceptable to a buyer that requires that feature. "Skipped because a declared required tool is missing" is a seller implementation problem. + +## Requirement profiles + +To answer "what do I need to pass?", start with the profile you are trying to satisfy: + +| Target | Minimum question the profile answers | +|--------|--------------------------------------| +| **Verified (Spec)** | Does the declared AdCP surface pass the required storyboards on the registered spec/test endpoint, with no blocking missing tools or failed assertions? | +| **Verified (Sandbox)** | Does the registered production endpoint pass the sandbox verification profile under `account.sandbox: true`, with sandbox isolation enforced and only Sandbox-acceptable skips present? | +| **Specific buyer requirement** | Which verified modes, protocols, specialisms, optional capabilities, operational behaviors, and skip classes does this buyer require? | + +A buyer requirement profile can be stricter than the public badge. For example, the public Sandbox profile can accept a capability-gated proposal storyboard being skipped when `media_buy.supports_proposals: false`; a buyer that requires proposal workflows can treat the same skip as a blocker. Conversely, a production endpoint omitting [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) can be acceptable for the Sandbox badge, while a buyer doing deterministic integration testing may ask for a separate dev/staging endpoint that exposes it. + +The storyboard runner should not encode those buyer decisions. It should emit typed evidence that a verification policy or buyer profile can evaluate consistently. + +## Specialism manifests + +Each specialism's `requires_scenarios` field lists the scenarios the runner will grade. Example — the `sales-guaranteed` manifest declares eight required scenarios: + +```yaml +# /compliance/{version}/specialisms/sales-guaranteed/ (source: static/compliance/source/specialisms/sales-guaranteed/index.yaml) +id: sales_guaranteed +requires_scenarios: + - media_buy_seller/refine_products + - media_buy_seller/delivery_reporting + - media_buy_seller/measurement_terms_rejected + - media_buy_seller/pending_creatives_to_start + - media_buy_seller/inventory_list_targeting + - media_buy_seller/inventory_list_no_match + - media_buy_seller/invalid_transitions + - media_buy_seller/proposal_finalize # ← capability-gated +``` + +Seven of these run unconditionally for any `sales-guaranteed` agent. The eighth — `proposal_finalize` — carries a capability gate. + +## Capability gates + +A scenario or phase can declare a `requires_capability` block. The runner reads the named path from your [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response and checks it against the expected value. If the check fails (the capability is absent or false), the scenario or phase is skipped — the `skip` block will appear in runner output with `reason: not_applicable` — and does not contribute to `steps_failed`. + +```yaml +# /compliance/{version}/protocols/media-buy/scenarios/proposal_finalize/ (source: static/compliance/source/protocols/media-buy/scenarios/proposal_finalize.yaml) +id: media_buy_seller/proposal_finalize +requires_capability: + path: media_buy.supports_proposals + equals: true +``` + +The gate is evaluated against your agent's live `get_adcp_capabilities` response at run time — the same call the runner makes during the universal [`capability_discovery`](/compliance/latest/universal/capability-discovery.yaml) storyboard. + +Phase-level gates use the same shape and scope only the phase that declares the block. Universal storyboards use this for protocol-specific phase families, for example deterministic testing skips its SI session phase when an agent does not declare `sponsored_intelligence` while still running media-buy or creative phases the agent does declare. + +## Worked example + +**Scenario:** Priya's StreamHaus platform claims `sales-guaranteed` and declares `media_buy.supports_proposals: true`. + +```json +{ + "supported_protocols": ["media_buy"], + "specialisms": ["sales-guaranteed"], + "media_buy": { + "supports_proposals": true + } +} +``` + +**Runner behavior:** all eight `requires_scenarios` run, including `proposal_finalize`. Priya's platform is graded on the full proposal lifecycle — brief with proposals, refine, finalize, and execute via [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). + +--- + +**Scenario:** StreamHaus Direct is an auction-based PG platform — no proposal abstraction. It claims `sales-guaranteed` and declares `media_buy.supports_proposals: false`. + +```json +{ + "supported_protocols": ["media_buy"], + "specialisms": ["sales-guaranteed"], + "media_buy": { + "supports_proposals": false + } +} +``` + +**Runner behavior:** seven scenarios run; `proposal_finalize` is skipped. The `skip` block in runner output is the authoritative signal: + +```json +{ + "storyboard_id": "media_buy_seller/proposal_finalize", + "skip": { + "reason": "not_applicable", + "detail": "requires_capability check: media_buy.supports_proposals must equal true — agent declared false" + } +} +``` + +When the `skip` block is present, the step was not graded and does not count against `steps_failed`. The `skip.detail` string identifies the specific cause (capability gate, missing specialism declaration, or missing tool). + + +**Absent = false.** The `supports_proposals` field has `"default": false` in the capabilities schema. Omitting it from your response is equivalent to declaring `false` — the runner skips capability-gated proposal scenarios. Declare `true` explicitly to opt in to grading. + +This flag is only the grading gate. Buyer agents should not use it to decide whether a specific proposal is executable. If a seller returns a proposal, `proposal_status` is the source of truth: `draft` requires finalization before create, `committed` can be executed before `expires_at`, and absent status is legacy ready-to-buy. + + +## Grading verdicts at a glance + +| Outcome | Output field | Meaning | +|---------|--------------|---------| +| Scenario passed | Step result with no `skip`; `passed: true` | All validations passed | +| Scenario failed | Step result with no `skip`; `passed: false` | One or more required validations failed; see `validations[]` for the failing field and `json_pointer` | +| Scenario not selected | `summary.not_selected[].reason`, counted in `summary.steps_not_selected` | The caller's selected suite, run mode, version, or verification profile excluded this scenario before execution | +| Scenario skipped | `skip.reason: not_applicable` | Scenario was selected, but an applicability gate evaluated false, such as an optional capability the seller did not claim | +| Required tool missing | `skip.reason: missing_tool` | Scenario was selected and the agent declared the specialism, but did not expose a tool listed in `required_tools` | +| Raw storyboard assertion failed | `StoryboardResult.assertions[]` entry with `passed: false` | A storyboard invariant failed; a storyboard-scoped failure can fail the storyboard even when every individual step passed | + +In a raw `StoryboardResult`, `overall_passed` combines executed-step results with [storyboard invariants](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#cross-resource-invariants). A storyboard-scoped assertion can set `overall_passed: false` even when `failed_count` — and the aggregate `summary.steps_failed` count — is zero. Inspect `assertions[]` for its `assertion_id`, `scope`, optional `step_id`, and `error` or structured `hint`. Step-scoped assertion failures also appear in that step's `validations[]` with `check: "assertion"`. + +As of `@adcp/sdk@13.0.0-rc.17`, the compliance aggregate preserves storyboard-scoped assertion failures as structured error observations and represents the failed invariant as a storyboard-level scenario. The containing track cannot report `pass`, while `summary.steps_failed` remains a truthful step counter and can stay zero when no individual step failed. Consumers should inspect the structured observation or storyboard-level scenario for the failed `assertion_id`; do not fabricate a failed step for an `onEnd`-only invariant. + +Skipped steps (`skip` block present) and not-selected items (`summary.not_selected[]` entries) do not contribute to `summary.steps_failed`, but they mean different things. `summary.steps_not_selected` says the runner deliberately excluded those scenarios from this run. `summary.steps_skipped` says the runner selected those scenarios but could not execute them; use `summary.skipped_by_reason` and `skip.detail` to distinguish optional capability choices from missing required surfaces. For ordinary step validation failures, see [Storyboard troubleshooting](/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting). + +A sandbox-only run should therefore look like this when the only excluded work is outside the selected mode: + +```json +{ + "summary": { + "steps_passed": 84, + "steps_failed": 0, + "steps_skipped": 0, + "steps_not_selected": 80, + "not_selected_by_reason": { + "run_mode_excluded": 80 + } + } +} +``` + +If those 80 items instead appear under `steps_skipped`, they were selected and then skipped; that is a different signal and needs `skipped_by_reason`. + +## Pass vs partial coverage + +Runner summaries distinguish **failure** from **coverage**: + +| Run shape | What it means | Seller action | +|-----------|---------------|---------------| +| `summary.steps_failed > 0` | One or more executed steps failed a required validation, including a step-scoped assertion | Fix the agent before claiming the corresponding protocol or specialism | +| `summary.steps_failed = 0`, no coverage-gap skips, and every raw `StoryboardResult.overall_passed` is `true` | Full pass for the declared scope | The declared protocols, specialisms, and capability flags were graded cleanly | +| `summary.steps_failed = 0` with a failed `StoryboardResult.assertions[]` entry | The raw storyboard failed despite passing step counters; the rc15 aggregate does not preserve this verdict | Fix the invariant failure and treat the run as failed; do not rely on the aggregate status | +| `summary.steps_failed = 0`, with `summary.steps_not_selected > 0` only | The requested suite or run mode intentionally excluded some probes, such as live-only checks during a sandbox-only run | No implementation ask; label the run mode clearly | +| `summary.steps_failed = 0`, with only capability-gate `not_applicable` skips | Narrower declared scope, not a failure | The agent honestly declined an optional capability, such as `media_buy.supports_proposals: false` | +| `summary.steps_failed = 0`, with `missing_test_controller` skips | Deterministic-test-surface coverage gap | Run a dev/staging deterministic pass or publish the skipped lifecycle coverage explicitly | +| Any `missing_tool`, `requirement_unmet`, or `unsatisfied_contract` skip for a declared protocol or specialism | The seller declared a claim the runner could not fully test | Fix the missing surface or narrow the declaration | + +This distinction matters for production-path sandbox runs. A seller can run the storyboard suite against the real production endpoint under sandbox-flagged traffic and get **zero failures** while still seeing a `partial` summary because the production endpoint correctly does not expose [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller). After confirming that the raw storyboard results contain no failed storyboard-scoped assertions, that result says: "the buyer-visible sandbox path passed every assertion the runner could grade, but controller-seeded lifecycle scenarios were skipped." It is useful evidence for sandbox readiness, but it is not the same as full deterministic specialism coverage. + +For full coverage, run the same declared scope against a dev or staging endpoint that exposes the controller, or pre-seed the required state and configure the runner to assert seeded-state coverage. For a production-only seller, publish the skipped coverage list alongside the zero-failure result so buyers can see exactly what was and was not graded. + +## Where each piece lives + +| Artifact | URL path | Source | +|----------|----------|--------| +| Specialism manifest | `/compliance/{version}/specialisms/{id}/` | `static/compliance/source/specialisms/{id}/index.yaml` | +| Scenario YAML | `/compliance/{version}/protocols/{protocol}/scenarios/{name}/` | `static/compliance/source/protocols/{protocol}/scenarios/{name}.yaml` | +| Universal storyboards | `/compliance/{version}/universal/` | `static/compliance/source/universal/` | +| Capabilities schema | `/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json` | `static/schemas/source/protocol/get-adcp-capabilities-response.json` | + +The full specialism-to-scenario index is at [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). The runner output contract defining every skip reason and verdict shape is at `static/compliance/source/universal/runner-output-contract.yaml`. + +## Related + +- [Conformance Specification](/dist/docs/3.2.0-beta.4/building/verification/conformance) — the three-layer obligation model and the normative storyboard index +- [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) — full taxonomy of protocols, specialisms, and universal storyboards +- [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) — running the suite locally with `@adcp/sdk` diff --git a/dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios.mdx b/dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios.mdx new file mode 100644 index 0000000000..4a23892d64 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios.mdx @@ -0,0 +1,85 @@ +--- +title: Storyboards vs. scenarios — which is which +sidebarTitle: Storyboards vs. Scenarios +description: "Three things in AdCP share the word 'scenarios' and they aren't the same. Here's how to tell them apart." +"og:title": "AdCP — Storyboards vs. scenarios" +--- + +If you're trying to figure out *how* to test an AdCP agent, three things in this ecosystem share overlapping vocabulary. They are not the same. Confusing them produces wrong conclusions — including the kind that get reported as protocol gaps that aren't actually gaps. + +## TL;DR + +| | What it is | Where it lives | Normative? | +|---|---|---|---| +| **Storyboards** | YAML files defining a workflow end-to-end + every wire-shape assertion. **The conformance specification.** | `/compliance/{version}/universal/*.yaml`, `protocols/*/*.yaml`, `specialisms/*/index.yaml` | ✅ Yes | +| **[`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) scenarios** | Protocol-level tool operations a seller exposes (`force_*`, `simulate_*`, `seed_*`) so storyboards can drive deterministic state. | The `scenario` parameter of the seller's `comply_test_controller` MCP tool. | ✅ Yes | +| **`@adcp/sdk/testing/scenarios/*.ts`** | Legacy TypeScript test runners predating storyboard-driven `comply()`. | `node_modules/@adcp/sdk/dist/lib/testing/scenarios/*.js` | ❌ **No** | + +If you're reading a file at `node_modules/@adcp/sdk/dist/lib/testing/scenarios/media-buy.js` and trying to figure out what AdCP requires — **stop**. That's not the spec. Read [the storyboards](/dist/docs/3.2.0-beta.4/building/verification/conformance) instead. + +## Storyboards (normative) + +Storyboards are the conformance specification. Each one defines: +- A workflow (e.g. *sales-guaranteed proposal/refine/finalize lifecycle*) +- The exact tool calls a buyer agent makes +- Every wire-shape assertion the seller's responses must satisfy +- The [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) operations the runner uses to seed deterministic state + +[`conformance.mdx`](/dist/docs/3.2.0-beta.4/building/verification/conformance) calls these *"the truth"* — and means it. These YAML files are the basis for **AgenticAdvertising.org Verified (Spec)**; AgenticAdvertising.org issues that qualifier when its compliance heartbeat runs the applicable storyboards and every assertion passes. + +You'll see storyboards at: +- `/compliance/{version}/universal/*.yaml` — every AdCP agent must pass +- `/compliance/{version}/protocols/{protocol}/index.yaml` — anyone claiming the protocol +- `/compliance/{version}/specialisms/{id}/index.yaml` — opt-in claims + +Run them via `npx @adcp/sdk@latest storyboard run ` or interactively through [Addie](https://agenticadvertising.org). + +### Source authority and rollout + +The authored source of truth for storyboards is `static/compliance/source/` in the `adcontextprotocol/adcp` repo. `scripts/build-compliance.cjs` builds `dist/compliance/latest/` during development and stamps `dist/compliance/{version}/` on release, adding only generated distribution artifacts such as `index.json` and the legacy `domains/` alias. SDKs may bundle a snapshot so runners work offline and remain version-pinned, but that snapshot is a distribution copy, not the authority. + +During the current migration, `@adcp/sdk` still loads its bundled cache by default. Spec repo CI overlays `static/compliance/source/` onto that cache before running the training-agent storyboards so pull requests are graded against the candidate source without switching runtime authority in the same step. SDK release work should separately prove its bundled cache matches the spec bundle it claims to ship. + +Breaking or materially stricter storyboard changes must roll out in this order: + +```text +spec storyboard change -> reference implementations update -> @adcp/sdk runner release -> downstream consumers update +``` + +That order prevents the release deadlock where a new runner expects stricter scenarios before repo-owned reference implementations have a tagged implementation that can pass them. + +## `comply_test_controller` scenarios (normative — but different) + +The word "scenario" also appears in the [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) MCP tool that sellers expose to support deterministic testing. Storyboards call this tool with `scenario: ` to drive seller state without waiting for real time to pass: e.g. `force_task_completion` to finish a pending async media buy, `simulate_delivery` to inject impressions, `seed_product` to install a fixture. + +These are **protocol operations**, not test runners. They're documented at [comply_test_controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller). Sellers MUST implement them to be testable; the storyboards MUST use them to stay deterministic. + +So when you hear "the seller doesn't support that scenario," it usually means: "the seller's `comply_test_controller` doesn't expose `force_X` yet." Not "no storyboard tests X." + +## `@adcp/sdk/testing/scenarios/*.ts` (NON-normative legacy) + +The SDK ships TypeScript files under `testing/scenarios/` — `media-buy.ts`, `signals.ts`, `creative.ts`, and a dozen siblings. These predate the storyboard-driven `comply()` engine. They are: + +- **Not the conformance spec.** Reading them to learn what AdCP requires will produce wrong answers. +- **Not maintained in lockstep with storyboards.** A scenario file may hard-code parameters that the storyboard equivalent has long since corrected. *Example: `scenarios/media-buy.ts` hard-codes `buying_mode: 'brief'` at four call sites; the YAML storyboard for `sales-guaranteed` exercises `buying_mode: 'refine'` + `action: 'finalize'` via the `proposal_finalize` storyboard. Both are valid `buying_mode` values; the scenario file just doesn't cover the lifecycle.* +- **Callable, but for different purposes.** Internal smoke tests in the SDK, integration-test fixtures for downstream tooling, and some legacy paths still use these. They are not what AgenticAdvertising.org Verified (Spec) runs against. + +If you find yourself grepping `testing/scenarios/*.ts` to understand AdCP, you've taken a wrong turn. The right path: + +1. Find the storyboard that matches your declared specialism: `npx @adcp/sdk@latest storyboard list` +2. Read the YAML: `npx @adcp/sdk@latest storyboard show ` +3. Run it: `npx @adcp/sdk@latest storyboard run --agent-url ` + +## Three-line decoder + +If you see… | …you're looking at | Trust as spec? +---|---|--- +A `.yaml` under `/compliance/{version}/...` | A storyboard | ✅ Yes +A seller responding to [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) with a `scenario` parameter | A protocol-level test-control operation | ✅ Yes (the contract is normative; the seller MAY refuse with [`UNKNOWN_SCENARIO`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes)) +A `.ts` or `.js` under `@adcp/sdk/dist/lib/testing/scenarios/` | A legacy SDK test runner | ❌ No + +## Cross-repo + +The disambiguation work in the SDK itself — marking the legacy scenarios as `@deprecated`, mirroring the storyboard CLI verbs, or removing the export entirely — lives in [`adcp-client`](https://github.com/adcontextprotocol/adcp-client). The decision on whether `testing/scenarios/*` stays public-but-deprecated or becomes internal-only is tracked in [#4035](https://github.com/adcontextprotocol/adcp/issues/4035). + +For now: if you want to test an AdCP agent, the answer is storyboards. The other two things named "scenario" have their place, but they aren't it. diff --git a/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures.mdx b/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures.mdx new file mode 100644 index 0000000000..8f29a523e9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures.mdx @@ -0,0 +1,138 @@ +--- +title: Validate adapter agents with mock upstream fixtures +sidebarTitle: Mock Upstream Fixtures +description: "Pre-staging gate for AdCP adapter agents — published mock upstreams plus traffic counters surface integration gaps before staging tests." +"og:title": "AdCP — Validate adapter agents with mock fixtures" +--- + + +**Non-normative.** This page describes a complementary harness pattern, not a compliance tier. The recipe builds on top of the storyboard runner ([Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)) — it does not replace storyboards or staging integration tests, and is not a certification gate. The mock-fixture conventions described here (`/_lookup/`, `/_debug/traffic`) are reference implementations in `@adcp/sdk`; alternative SDK implementations may diverge. Treat as harness convention, not protocol contract. + + +Most AdCP agents that wrap an external platform (a DSP, SSP, retail data warehouse, creative server, signal marketplace) ship façade bugs that storyboards alone cannot detect: handlers return shape-valid AdCP responses without actually integrating with the upstream. The recipe on this page closes that gap as a **pre-staging gate** — cheap, fast, runs in CI, surfaces façades and contract drift before code reaches a staging tenant. + +If your agent does not wrap an upstream — for example, a pure decisioning service that owns its own data — the storyboard runner alone is sufficient. See [Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent). + +## The four-step recipe + +```bash +# 1. Boot a mock upstream for your specialism +npx @adcp/sdk@latest mock-server sales-social --port 4250 & + +# 2. Run your AdCP agent, configured to use http://localhost:4250 as its upstream +./your-agent.sh # Python / Go / Rust / TS — language-agnostic + +# 3. Grade your agent against the matching storyboard +npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp sales_social \ + --auth $TOKEN --json > grader.json + +# 4. Assert your agent actually called the upstream +curl -s http://localhost:4250/_debug/traffic +# {"traffic": {"POST /oauth/token": 1, "POST /event/track": 6, ...}} +``` + +Step 3 catches AdCP wire bugs (response shape, error codes, idempotency, missing required fields). Step 4 catches **integration gaps** — agents whose handlers return shape-valid AdCP responses without exercising the upstream's headline endpoints. Both signals matter; one without the other is incomplete. + + +The mock-server CLI shown above ships in `@adcp/sdk` (TypeScript). If your CI runs in another language, the simplest pattern is to run the TS CLI as a sidecar (e.g. a Docker service container in GitHub Actions, or a separate Node process) — the agent under test stays in its native language, only the mock + storyboard runner are TS. A Python or Go SDK shipping its own mock-server would re-implement the conventions described below; until that lands, the TS CLI is the reference. + + +## Why traffic counters + +Storyboards check the AdCP wire contract: did the response match the schema, did the agent advertise the right tools, did context echo. They do not assert what happened *behind* the wire. The CLAUDE.md guidance for this repo puts it directly: **storyboards are assertions, not ground truth.** + +Adapters that look correct under shape-only validation but skip the upstream entirely have shipped to staging more than once. Common shapes: + +- Handler short-circuits before the upstream call when the input doesn't match a non-spec branch (e.g. empty `members[]` on [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) → returns shape-valid empty response, never POSTs). +- OAuth client is wired but never invoked from any handler; tree-shaking is defeated with a `void fetchUpstreamToken;` literal. +- Synthetic placeholder data is injected to satisfy the upstream's required-field schema, masking real-data shape mismatches. + +A traffic counter on the mock upstream catches the first two cases unconditionally and the third case if the storyboard exercises the relevant payload variety. Position this in your CI as a **pre-staging gate**: cheap, deterministic, complements your existing staging tests rather than replacing them. + +## What's available + +The reference TS implementation (`@adcp/sdk`) ships four mock-server specialisms covering distinct upstream surface shapes. These are not exhaustive — they exist to exercise representative auth/tenancy/payload patterns, and other specialisms reuse the closest match. + +| Specialism | Mimics | Auth | Multi-tenant scope | +|---|---|---|---| +| `signal-marketplace` | LiveRamp / Lotame / data marketplace | Static Bearer | Header (`X-Operator-Id`) | +| `creative-template` | Celtra / Innovid creative-management platform | Static Bearer | Path (`/v3/workspaces/{ws}/…`) | +| `sales-social` | TikTok / Meta-shaped social ads platform | OAuth 2.0 client_credentials with refresh | Path (`/v1.3/advertiser/{advertiser_id}/…`) | +| `sales-guaranteed` | GAM / FreeWheel guaranteed-sales platform | Static Bearer | Header (`X-Network-Code`) | + +The auth shapes and tenancy patterns are realistic; the specific account-field names the adapter receives (e.g. `account.advertiser`, `account.operator`) are SDK conventions for binding AdCP requests to upstream tenants, not normative AdCP terms. See the `@adcp/sdk` source for the canonical mapping. + +Each mock exposes: + +- **The upstream's domain endpoints** — shaped to match the real platform's public contract. +- **`GET /_lookup/?=`** — runtime resolution from AdCP-side identifiers to upstream tenant IDs. *Harness convention.* +- **`GET /_debug/traffic`** — hit counters keyed by ` `, no auth, harness-only. *Harness convention.* Read after the storyboard run; assert each headline route is hit at least once. + +OpenAPI specs for each mock ship as part of the SDK package. Reference your adapter against the spec, not against any specific seed data — seeds vary and are not part of the contract. + +## CI integration + +Reference shape for a GitHub Actions job, language-agnostic: + +```yaml +jobs: + validate-adapter: + runs-on: ubuntu-latest + services: + mock-upstream: + image: node:20 + ports: ['4250:4250'] + # Use a bootstrap script that runs `npx @adcp/sdk@latest mock-server `. + steps: + - uses: actions/checkout@v4 + - run: ./scripts/start-agent.sh & # Your agent in your language + - run: ./scripts/wait-for-port.sh 3001 + - run: | + npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp \ + --auth $TOKEN --json > grader.json + - run: | + # Assert each expected upstream route was hit at least once + curl -s http://localhost:4250/_debug/traffic | \ + jq -e '.traffic["POST /oauth/token"] >= 1 and .traffic["POST /event/track"] >= 1' +``` + +**Threshold guidance.** The minimum useful assertion is `≥ 1` per headline route — that proves the handler reached the upstream. Stronger assertions (per-route counts, distinct-payload verification) require encoding storyboard-payload expectations and aren't worth the maintenance burden in a pre-staging gate. If your storyboard exercises 3 audience uploads, expect 3 hits to `custom_audience/upload`; if it doesn't, the storyboard's payload coverage is the lever to pull, not the gate's threshold. + +For agents claiming multiple specialisms, run one CI job per specialism in parallel; each gets its own mock-server port pair (agent + upstream). Jobs are independent. + +## Iteration loop + +Realistically your first run will not pass both gates. Common shapes and how to debug: + +- **Storyboard `passing` but traffic gate fails on N endpoints** — classic façade. The handlers for those routes either short-circuited or never got exercised by the storyboard's input. +- **Storyboard `partial` with cascade skips** — an early step ([`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products), [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals)) returned a shape-valid response missing fields that the runner extracts state from. Downstream steps skip with `unresolved context variables`. Fix the early step's response shape and most cascade skips clear. +- **Storyboard `failing` on a single step + traffic gate clean** — usually a one-line shape bug (wrong field name, missing required field, status mismatch). The per-step `details` names the field via JSON pointer. +- **Traffic gate empty (0 hits everywhere) + agent appears to start** — agent boot threw a recoverable error after listening on port. Check the agent's stderr. + +Fastest debug loop: use `npx @adcp/sdk@latest storyboard step ` to isolate the failing step. Skips the cascade, runs a single tool call, sub-second feedback. Don't run the full storyboard until the isolated step passes — saves minutes per iteration. + +## Limitations + +Be honest with your team about what these gates do and don't catch: + +### Storyboard limitations + +- **Storyboards under-cover payload variety.** A storyboard step may pass shape with an empty input where a real adapter never gets exercised on the variant that matters. Tracked at [adcontextprotocol/adcp#3785](https://github.com/adcontextprotocol/adcp/issues/3785). + +### Runner / tooling caveats + +- **Storyboard cascade skips silently** when an early step's response is shape-valid but missing fields the runner extracts state from. The error you see is on the *downstream* step, not the early one — investigate "skipped" steps before "failed". Tracked at [adcontextprotocol/adcp#3796](https://github.com/adcontextprotocol/adcp/issues/3796) (runner-side). +- **Mock seed data may not match storyboard fixture inputs.** If you see 404s on `_lookup/`, the storyboard's payloads may reference IDs the mock doesn't seed. Either widen the mock's seed or seed scenario state at runtime via the [compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller). + +### Traffic gate limitations + +- **Necessary, not sufficient.** A handler can call upstream with synthetic placeholder data and still satisfy the hit-count assertion. For agents in regulated channels (audience uploads, conversion tracking, signed requests), additional integration tests against the real upstream's payload validation are still required before production. +- **Idempotency replay is not exercised by traffic counters.** A façade that ignores `idempotency_key` and doubles upstream writes will pass the hit-count gate. Use the storyboard's idempotency-replay scenarios + a separate counter check (same `idempotency_key` → same hit count) if your platform has at-most-once semantics. +- **Outbound webhook delivery is not exercised by upstream traffic counters.** Traffic counters live on the upstream the agent calls *into*; agent → buyer webhook signing/delivery is graded by the storyboard runner's `--webhook-receiver` flag, separately. Both gates apply for adapters that emit webhooks. + +## What's next + +- **[Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — the broader storyboard-runner-driven validation checklist (fuzz, multi-instance, request-signing, webhook conformance). +- **[Compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)** — seed scenario state at runtime when storyboards need fixtures the mock doesn't provide. +- **[Build an agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent)** — the language-agnostic guide to building an AdCP agent. +- **[Compliance catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog)** — the full taxonomy of universal / protocol / specialism storyboards. diff --git a/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent.mdx b/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent.mdx new file mode 100644 index 0000000000..d94441d169 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent.mdx @@ -0,0 +1,302 @@ +--- +title: Validate your agent using storyboards +sidebarTitle: Validate Your Agent +description: "Test your AdCP agent with storyboards — from the CLI or through Addie." +"og:title": "AdCP — Validate your agent using storyboards" +--- + +Once your agent is running, validate it before going live. Storyboards exercise a specific workflow end-to-end — media buy creation, creative sync, signals discovery. Each storyboard defines the exact tool call sequence a buyer agent makes and validates every response shape. + +Storyboards are available from the command line and interactively through [Addie](https://agenticadvertising.org). They are also published alongside schemas at `/compliance/{version}/` and bundled into the per-version protocol tarball at `/protocol/{version}.tgz` — see [Schemas and SDKs](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas#one-shot-protocol-bundle) for how to fetch them offline. + + +The `@adcp/sdk` package also exports legacy TypeScript test runners under `testing/scenarios/*` (e.g. `media-buy.ts`, `signals.ts`). These predate `comply()` and are **not** the conformance specification. If you find yourself grepping those files to learn what AdCP requires, see [Storyboards vs. scenarios](/dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios) for which surface is normative. + + + +**Wrapping an upstream platform** (DSP, SSP, retail data warehouse, creative server, signal marketplace)? Storyboards check your AdCP wire contract; they cannot tell whether the adapter behind the wire actually integrates with the upstream or returns shape-valid responses with synthetic data. See [Validate adapter agents with mock upstream fixtures](/dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures) — published mock fixtures plus traffic counters give you façade-resistant compliance for adapters in any language. + + +## Storyboard taxonomy + +Storyboards are organized into three layers so agents declare only what they actually support: + +| Layer | Path | Who must pass it | +|-------|------|------------------| +| **Universal** | `/compliance/{version}/universal/` | Every AdCP agent (capability discovery, error handling, schema validation) | +| **Protocol** | `/compliance/{version}/protocols/{protocol}/` | Any agent claiming a protocol (`media-buy`, `creative`, `signals`, `governance`, `brand`) | +| **Specialism** | `/compliance/{version}/specialisms/{id}/` | Opt-in claims (e.g. `sales-guaranteed`, `sales-broadcast-tv`, `creative-generative`) — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) | + +Declare your `supported_protocols` and `specialisms` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — the runner picks the matching storyboards automatically. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +## Setup + +Save your agent as a named alias so you can reference it by name: + +```bash +npx @adcp/sdk@latest --save-auth my-agent http://localhost:3001/mcp +``` + +This stores the alias in `~/.adcp/config.json`. You only need to do this once. Built-in aliases `test-mcp` and `test-a2a` point to the public test agents — no setup needed. + + +You can also pass a URL directly instead of an alias: `npx @adcp/sdk@latest storyboard run http://localhost:3001/mcp media_buy_seller` + + +## Run a storyboard + +### 1. List available storyboards + +```bash +npx @adcp/sdk@latest storyboard list +``` + +Each storyboard targets a specific agent type. The [Build an Agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) page maps skills to their matching storyboards. + +### 2. Preview what a storyboard tests + +```bash +npx @adcp/sdk@latest storyboard show media_buy_seller +``` + +This shows the phases, steps, and validations without running anything. + +### 3. Run the storyboard + +```bash +npx @adcp/sdk@latest storyboard run my-agent media_buy_seller +``` + +Output shows each step with pass/fail: + +``` +media_buy_seller (9 steps) + ✓ get_adcp_capabilities + ✓ sync_accounts + ✓ get_products + ✓ create_media_buy + ✓ canonical format declarations + ✓ sync_creatives + ✓ list_creatives + ✓ get_media_buy_delivery + ✓ provide_performance_feedback + 9/9 passed +``` + +Pass `--json` for machine-readable results. Pass `--debug` to see full request/response payloads for each step. + +### 4. Debug a failing step + +If a step fails, run it individually: + +```bash +npx @adcp/sdk@latest storyboard step my-agent media_buy_seller create_media_buy --json --debug +``` + +Pass `--context` to provide state from earlier steps (account IDs, product IDs): + +```bash +npx @adcp/sdk@latest storyboard step my-agent media_buy_seller get_products \ + --context '{"account_id":"acct-123"}' --json +``` + +### 5. Run all storyboards + +Run without a storyboard ID to test everything. The CLI discovers your agent's tools via `tools/list` and selects matching storyboards automatically: + +```bash +npx @adcp/sdk@latest storyboard run my-agent +``` + +Add `--json` for structured output. + +### Select a compliance cache and test kit + +`--compliance-version` selects a cache bundled with the SDK. For an extracted cache, pass its versioned directory to `--compliance-dir`; `--test-kit` takes a YAML file from the `test-kits/` directory below that same cache root. After extracting the `@adcp/sdk` 13.0.0-rc.18 npm tarball in the current directory, use its versioned cache root like this: + +```bash +npx @adcp/sdk@13.0.0-rc.18 storyboard run my-agent \ + --compliance-dir ./package/compliance/cache/3.1.13 \ + --test-kit ./package/compliance/cache/3.1.13/test-kits/acme-outdoor.yaml +``` + + +`@adcp/sdk` 13.0.0-rc.18 infers the compliance line from test-kit metadata and rejects mixed or ambiguous `--test-kit`, `--compliance-version`, and `--compliance-dir` selections before contacting the agent. Keep the test kit and storyboard files under the same versioned cache root. + + +The storyboard runner operates in two modes depending on whether your agent implements the optional [compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller): + +| Mode | When | What it tests | +|------|------|---------------| +| **Observational** | No test controller | Response schemas and buyer-initiated flows | +| **Deterministic** | Test controller present | Full lifecycle state machines, error codes, operation gates | + +### Reading `partial` + +`partial` is a coverage result, not automatically a failure. The runner uses it when one or more selected scenarios could not be graded even though no executed assertion failed. The most common cause is intentional: production endpoints MUST NOT expose [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller), so controller-seeded or controller-forced phases skip with `missing_test_controller`. + +Read `steps_not_selected` separately from `steps_skipped`. Not-selected scenarios were outside the suite or run mode you asked for. Skipped scenarios were inside the selected suite, but the runner could not execute them because of an applicability gate, missing test surface, missing tool, or prerequisite. + +Use the summary counters and skip reasons to decide what the result means: + +| Summary | Interpretation | +|---------|----------------| +| `0 failed`, `steps_not_selected > 0`, `steps_skipped = 0` | Expected for the selected run mode, such as sandbox-only testing that excludes live-only probes | +| `0 failed`, only capability-gate `not_applicable` skips | Clean pass for the capability scope the seller declared | +| `0 failed`, `missing_test_controller` skips | Buyer-visible path passed, but deterministic lifecycle coverage was not graded | +| Any `missing_tool` skip for a declared protocol or specialism | The seller overclaimed or forgot to expose a required tool | +| Any failed step | Not conformant for the declared scope until fixed | + +For production-path sandbox validation, a result like `84 passed, 0 failed, 0 skipped, 80 not selected` is a clean sandbox-only selection result: the excluded probes were never part of that run. A result like `84 passed, 0 failed, 80 skipped` needs the skip breakdown before it means anything. Skips because an optional capability was not claimed are selected-scope skips. Skips with `missing_test_controller` are deterministic coverage gaps: the suite tested the public sandbox path and reported that controller-seeded lifecycle scenarios were not graded. To get full green on those, run against a dev/staging endpoint that exposes the controller, pre-seed the required state and tell the runner to assert seeded-state coverage, or accept and publish the skipped coverage list as an explicit limitation. + +## Validate through Addie + +[Addie](https://agenticadvertising.org) provides interactive testing without any CLI setup. Paste your agent URL in any conversation to get started. + +### Connectivity check + +Ask Addie to check your agent. She'll verify it's online, list its advertised tools, and confirm the transport protocol (MCP or A2A). This is the quickest way to confirm your agent is reachable before running any tests. + +### Storyboard coaching + +Addie runs the same storyboards as the CLI but walks you through each step interactively. When a step fails, she explains what went wrong, shows the expected vs actual response, and suggests specific code changes. This is the fastest way to iterate when you're building. + +### RFP testing + +Share a real RFP or campaign brief with Addie. She'll parse it, call your agent's [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with the buyer's actual requirements, and compare results against what your sales team would normally propose. This tests whether your agent can handle real buyer demand — not just synthetic briefs derived from your own inventory description. + +### IO execution testing + +Share an insertion order with Addie. She'll extract the line items, match them against your agent's product catalog, and test whether [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) can execute the deal. The output shows line-by-line matching quality (exact, close, weak, unmapped) and rate comparisons so you can see exactly where execution would break down. + +### Recommended testing sequence + +1. **Connectivity** — Is the agent online? +2. **Storyboards** — Does it pass protocol compliance? +3. **RFP testing** — Can it respond to real buyer demand? +4. **IO execution** — Can it close real deals? + +Each step builds confidence. Storyboards prove protocol compliance. RFP and IO testing prove business readiness. + +## Sandbox mode + +All storyboard runs use sandbox mode by default. The storyboard runner sets `sandbox: true` on every account reference, so your agent processes requests without real platform calls or spend. + +Your agent should declare sandbox support in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities): + +```json +{ + "account": { + "sandbox": true + } +} +``` + +When a request references a sandbox account, your agent MUST NOT persist production state or cause real-world side effects — no real orders, no real billing, no real ad platform API calls. Return realistic response shapes with simulated data and include `sandbox: true` in success responses. + +See [Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox) for full implementation details and the two account model paths (implicit vs explicit). + +## Verifying cross-instance state + +The protocol requires that `(brand, account)`-scoped state [survive across agent process instances](/dist/docs/3.2.0-beta.4/protocol/architecture#state-persistence-and-horizontal-scaling) — a media buy created on one replica must be readable from any other. Single-instance storyboard success does not by itself prove that invariant. Choose a verification approach that fits your deployment. + +**Verify by architecture.** If you run on a managed serverless platform with a shared datastore — Lambda + DynamoDB, Cloudflare Workers + D1, Cloud Run + Firestore, Vercel + Neon — the invariant holds by construction. Storyboards that pass against your deployed endpoint are sufficient. Document your storage pattern so it's discoverable. + +**Verify by multi-instance testing.** If you deploy long-running processes (containers, VMs, a classic app server behind a load balancer), put ≥2 replicas behind round-robin routing and run storyboards against the shared endpoint: + +```bash +npx @adcp/sdk@latest --save-auth my-agent https://my-agent.example/mcp +npx @adcp/sdk@latest storyboard run my-agent +``` + +The compliance runner rotates requests across replicas for any storyboard that contains a step marked `stateful: true` — the write→read sequences most likely to catch in-process state. Stateless probes (capability discovery, auth rejection, schema validation) are unaffected. + +A typical failure looks like: + +``` +✗ get_media_buy MEDIA_BUY_NOT_FOUND + create_media_buy on replica A returned media_buy_id=mb_abc123 (status: active) + get_media_buy on replica B returned MEDIA_BUY_NOT_FOUND for the same id + → Brand-scoped state is not shared across replicas. +``` + +**Verify by your own testing.** Property-based tests against a real datastore, chaos fault injection between replicas, or production observability that correlates writes and reads across instances are all valid. The protocol cares about the invariant, not the methodology. + +Insertion-order approval records, governance tokens, signal activations, and sponsored-intelligence sessions all fall under the same rule. Any state you write that a later call can read back must live in a shared store — not a per-process `Map` or module-level variable. + +## Preparing to test uniform error responses + +The [uniform-response MUST](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#standard-error-codes) requires byte-equivalent responses for "the id exists but the caller lacks access" and "the id does not exist" across every observable channel — error body, transport status, headers, side effects, and telemetry. Verifying this needs a paired-probe runner (`adcp fuzz`) that compares two responses per tool. The runner has two modes, and you need to plan tenant setup before you can exercise the strong one. + +**Baseline mode — single tenant.** One auth token, two fresh UUIDs probed per tool. Catches id-echo in error bodies, header divergence outside the allowlist, MCP `isError` / A2A `task.status.state` divergence, and gross latency deltas. Cannot catch cross-tenant existence leaks, because neither probe resolves to a real resource. + +**Cross-tenant mode — two tenants.** Tenant A seeds a resource (e.g., a property list, content standard, media buy, creative); tenant B probes against the seeded id plus a fresh UUID. Catches the full MUST, because it exercises the `(exists, unauthorized)` vs `(does not exist)` pair that baseline cannot construct. + +Both modes exercise spec MUSTs. Only the cross-tenant path verifies the whole invariant. + +### Minimum tenant setup + +Provision two isolated test accounts against your agent: + +- **Tenant A** — can create resources the invariant seeds (property lists, content standards, media buys, creatives). Sandbox-mode accounts are fine. +- **Tenant B** — read-only against shared discovery surfaces. MUST NOT share any per-tenant state with A beyond what your platform makes globally visible (e.g., published product catalogs). + +Anything else the two tenants share — audit shards, rate-limit buckets keyed by resource type, cache tags — is a potential side channel the invariant is designed to catch. Share only what you'd share in production. + +### Runner invocation + +```bash +# Cross-tenant (full MUST) +npx @adcp/sdk@latest fuzz my-agent \ + --auth-token $TENANT_A_TOKEN \ + --auth-token-cross-tenant $TENANT_B_TOKEN + +# Baseline (partial coverage) +npx @adcp/sdk@latest fuzz my-agent --auth-token $TOKEN +``` + +Tokens may also be supplied via `ADCP_AUTH_TOKEN` and `ADCP_AUTH_TOKEN_CROSS_TENANT`. See the [`@adcp/sdk` uniform-error-response invariant guide](https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/VALIDATE-YOUR-AGENT.md#uniform-error-response-invariant-paired-probe) for the full flag list, the header allowlist, and the list of tools currently probed. + +### Testing with only one tenant + +If you haven't provisioned a second tenant yet, run baseline anyway — it still catches a meaningful class of leaks, and the CLI flags the run as baseline-only so operators can see coverage is partial. Treat single-tenant fuzz as a pre-check, not a conformance signal: a clean baseline run does not prove the MUST holds. Add the cross-tenant leg before you claim uniform-response conformance. + +## The build-validate-fix loop + +The typical development workflow: + +1. **Build** — Point a coding agent at a [skill file](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) to generate your agent +2. **Run** — Start the agent locally (`npx tsx agent.ts`) +3. **Validate** — Run the matching storyboard (`npx @adcp/sdk@latest storyboard run my-agent media_buy_seller`) +4. **Fix** — Address any failures (missing fields, wrong status values, invalid transitions) +5. **Repeat** — Run the storyboard again until all steps pass +6. **Full check** — Run `npx @adcp/sdk@latest storyboard run my-agent` (no storyboard ID) for a full assessment before going live + + +For [Practitioner certification](https://agenticadvertising.org/certification), passing storyboard validation is the capstone — it proves your agent handles the complete protocol workflow for your chosen role track. + + +## CLI reference + +| Command | Description | +|---------|-------------| +| `npx @adcp/sdk@latest storyboard list` | List all available storyboards | +| `npx @adcp/sdk@latest storyboard show ` | Preview storyboard structure | +| `npx @adcp/sdk@latest storyboard run [id]` | Run one storyboard, or all matching if no ID given | +| `npx @adcp/sdk@latest storyboard step ` | Run a single step | +| `npx @adcp/sdk@latest [tool] [payload]` | Call any tool directly | +| `npx @adcp/sdk@latest --save-auth ` | Save agent alias | +| `npx @adcp/sdk@latest --list-agents` | List saved aliases | + +All commands support `--json`, `--debug`, `--auth TOKEN`, and `--protocol mcp|a2a`. + +## When a storyboard fails + +- **[Storyboard troubleshooting](/dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting)** — Error patterns mapped to root causes and fixes (missing fixtures, signature challenges, envelope drift, context echo, capability mismatches) +- **[Known spec ambiguities](/dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities)** — Open spec gaps that affect conformance, with workarounds and issue links + +## What's next + +- **[Compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller)** — Implement deterministic testing for full lifecycle coverage +- **[Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.2.0-beta.4/community/joining-slack.mdx b/dist/docs/3.2.0-beta.4/community/joining-slack.mdx new file mode 100644 index 0000000000..d55126dd31 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/community/joining-slack.mdx @@ -0,0 +1,40 @@ +--- +title: Joining the Community Slack +description: "How to join the AgenticAdvertising.org Slack community — public invite link, domain allowlist policy, and what to do if the link doesn't work." +"og:title": "AdCP — Joining the Community Slack" +--- + +The AdCP community Slack is where protocol development happens — working group discussions, implementation questions, and real-time collaboration across publishers, agencies, and developers. + +## Join with the public invite + +**[→ Join the AdCP Community on Slack](https://join.slack.com/t/agenticads/shared_invite/zt-3h15gj6c0-FRTrD_y4HqmeXDKBl2TDEA)** + +The invite link is public. Click it and follow the Slack prompts to join. + +## If the link doesn't work + +The Slack workspace has a domain allowlist. If your email uses Gmail, a personal email address, or a domain not yet on the allowlist, Slack will silently decline the invite — the link appears to work, but you won't receive an email or get access. + +**This is not a broken link.** It's a domain restriction. + +### What to do + +1. **Ask Addie directly** — open the chat at [agenticadvertising.org/chat](https://agenticadvertising.org/chat) and say "I'm trying to join the Slack but the invite link didn't work." Addie will ask for your email and escalate it to the admin team for a direct invite. + +2. **Email the team** — send a note to [community@agenticadvertising.org](mailto:community@agenticadvertising.org) with your email address and a line about your role. The team typically processes direct invites within one business day. + +## Domain allowlist policy + + +The current allowlist policy is under review. A decision is pending on whether to drop the allowlist in favor of post-join moderation, or to keep it with a lightweight self-serve invite request form. This page will be updated when the decision is made. + + +Currently, the allowlist covers company and organizational domains associated with known publishers, agencies, ad tech vendors, and AgenticAdvertising.org member organizations. Personal email domains (Gmail, Outlook, Yahoo, etc.) require a direct invite. + +If you represent an organization whose domain isn't on the allowlist, the fastest path is to ask Addie or email the team. Allowlist additions are typically processed within one business day. + +## See also + +- [Working Group](/dist/docs/3.2.0-beta.4/community/working-group) — what the community works on and how to participate +- [Membership](/dist/docs/3.2.0-beta.4/aao/users) — join AgenticAdvertising.org for full access (working groups, certification, Slack) diff --git a/dist/docs/3.2.0-beta.4/community/working-group.mdx b/dist/docs/3.2.0-beta.4/community/working-group.mdx new file mode 100644 index 0000000000..9715276cbd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/community/working-group.mdx @@ -0,0 +1,48 @@ +--- +title: Working Group +description: "AdCP working group: join the open community of platforms, agencies, and developers shaping the Ad Context Protocol. Collaborate on Slack and GitHub." +"og:title": "AdCP — Working Group" +--- + + +The working group is where AgenticAdvertising.org's mission happens in practice — builders and thinkers developing agentic solutions that pair the scale of AI with the power of human judgment. + +The Ad Context Protocol Working Group is an open community of platform providers, advertisers, agencies, and developers working together to shape the future of AI-powered advertising. + +## Join the Discussion + +Our primary collaboration happens through Slack: + +**[→ Join the AdCP community on Slack](/dist/docs/3.2.0-beta.4/community/joining-slack)** — the guide includes the public invite and the direct-invite recovery path for restricted domains. + +## What We Discuss + +- **Protocol Development**: Propose and discuss new features and improvements +- **Implementation Questions**: Get help implementing AdCP in your platform +- **Use Cases**: Share how you're using AdCP in real-world scenarios +- **Best Practices**: Learn from others' experiences and share your own +- **Future Direction**: Help shape the roadmap for AdCP + +## How to Participate + +1. **Start a Discussion**: Share ideas, ask questions, or propose changes +2. **Join Conversations**: Comment on existing discussions +3. **Share Experiences**: Tell us about your implementation journey +4. **Help Others**: Answer questions and share your expertise + +## Stay Updated + +- **Join Slack Channels**: Participate in topic-specific discussions +- **Follow Announcements**: Important updates are posted in the #announcements channel +- **Star the Project**: Show your support on GitHub and stay connected + +## Other Ways to Connect + +- **Email**: For private inquiries, reach out to hello@adcontextprotocol.org +- **GitHub Issues**: Report bugs or request features in the [issue tracker](https://github.com/adcontextprotocol/adcp/issues) + +We look forward to collaborating with you! + +## Governance + +The WG's operational procedures — quorum, voting thresholds, recusal policy, and escalation path — are published in the [Working group charter](/dist/docs/3.2.0-beta.4/governance/working-group-charter). diff --git a/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring.md b/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring.md new file mode 100644 index 0000000000..743b7b8d67 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/contributing/storyboard-authoring.md @@ -0,0 +1,367 @@ +--- +title: Storyboard authoring +description: "How to author AdCP compliance storyboards: the canonical account shape, session scoping lint, sync_plans plan-level identity, and cross-tenant probe opt-out." +"og:title": "AdCP — Storyboard authoring" +--- + +# Storyboard authoring — scoping rules + +Compliance storyboards live under `static/compliance/source/`, the canonical authored source for the compliance bundle. Do not add generated cache artifacts such as `domains/` or `index.json` there; `scripts/build-compliance.cjs` creates them in `dist/compliance/latest/` during development and stamps `dist/compliance/{version}/` on release. + +Each step that invokes a training-agent task that scopes session state by tenant **must** carry brand or account identity in `sample_request`. Otherwise the call lands in `open:default`, and a follow-up step that *does* carry identity writes to `open:` — giving you `MEDIA_BUY_NOT_FOUND` against your own just-created media buy. + +This rule is enforced at build time by `scripts/lint-storyboard-scoping.cjs`, which runs as part of `npm run build:compliance`. + +## Canonical identity shape + +Use `account { brand, operator }`. The `AccountRef` schema requires `operator` whenever the natural-key form (`brand`) is used — there is no "just a brand" shape at the spec level. + +```yaml +sample_request: + account: + brand: + domain: "acmeoutdoor.example" + operator: "pinnacle-agency.example" + # ... +``` + +Explicit-account form (when the seller issued an `account_id` via `list_accounts`): + +```yaml +sample_request: + account: + account_id: "acc_acme_001" + # ... +``` + +For `sync_plans`, identity lives inside each plan entry. The `sync-plans-request` schema defines `brand` on each plan item and forbids `account` there — do not use the wrapper form inside `plans[]`: + +```yaml +sample_request: + plans: + - plan_id: "plan-001" + brand: + domain: "acmeoutdoor.example" + # ... +``` + +## What about top-level `brand`? + +Some AdCP requests (`create_media_buy`, `get_products`, `build_creative`) have a top-level `brand` field. That is **the campaign's brand**, a separate schema field — not an identity shorthand. `create_media_buy` requires both `account` and `brand`; one does not substitute for the other. + +The lint still accepts a bare top-level `brand.domain` as a fallback because the training agent's `sessionKeyFromArgs` reads it — but that is a training-agent routing detail, not a spec-canonical shape. New storyboards should use `account { brand, operator }`. + +## Which tasks are session-scoped? + +The authoritative list lives in `scripts/lint-storyboard-scoping.cjs` as `TENANT_SCOPED_TASKS`. A parity test (`tests/lint-storyboard-scoping.test.cjs`) asserts every task registered in the training agent's `HANDLER_MAP` appears in either `TENANT_SCOPED_TASKS` or `EXEMPT_FROM_LINT`. If you add a new tool to the dispatch table and forget to classify it, the parity test fails — you won't get silent drift. + +Rule of thumb: if the task's **request schema has a required globally-unique scope-ID** (`plan_id`, `rights_id`, `standards_id`, `list_id`, `event_source_id`, or proposal IDs inside `refinements`/`declines`), the seller can resolve the tenant from that ID alone — envelope identity is redundant and the lint does not require it (see `EXEMPT_FROM_LINT` bucket (c)). + +Everything else falls into `TENANT_SCOPED_TASKS`: create/update mutations without a scope-ID, list/get operations that don't carry a single resource ID, resource-standards calls without `standards_id` in schema, etc. These must carry envelope `account { brand, operator }`. + +## Identity fields that flow through `$context` + +When a step captures a value into `$context` via `context_outputs` and a later step consumes it as `$context.`, the *entity type* at both ends must match. If the value captured from a field annotated `advertiser_brand` is consumed as a field annotated `rights_holder_brand`, the lint will flag it (that's the #2627 bug: same field name, different entity). See `docs/contributing/x-entity-annotation.md` for the list of entity types and how schema authors annotate fields. + +Other exempt categories: payload-array-keyed sync tasks (`sync_accounts`, `sync_governance`, `sync_catalogs`, `sync_event_sources`), global discovery (`get_adcp_capabilities`, plus deprecated `list_creative_formats` compatibility tests), global catalog reads (`get_brand_identity`, `get_rights`, `update_rights`), and the `comply_test_controller` sandbox primitive. + +### Why ID-scoped tasks are exempt + +`check_governance`, `report_plan_outcome`, `acquire_rights`, `log_event`, `calibrate_content`, `validate_content_delivery`, `validate_property_delivery`, `refine_proposals`, and `decline_proposals` all require one or more globally-unique IDs that were previously provisioned with brand context. At the spec level, a real seller resolves each ID → tenant via its own lookup; the envelope doesn't need to repeat the identity. + +Most legacy ID-scoped storyboards still carry envelope identity because the training agent's `sessionKeyFromArgs` uses it for sandbox routing. The split proposal-lifecycle schemas deliberately forbid `account` on `refine_proposals` and `decline_proposals`; for those tools, the training agent reverse-resolves the proposal IDs to the originating account scope. + +The remaining envelope identity is a sandbox routing convention, not a spec claim. Production sellers resolve tenant from the authenticated principal (bearer/OAuth/HMAC), not from envelope payload — see [Tenant resolution](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication#tenant-resolution). They don't need envelope identity on ID-scoped tasks and wouldn't rely on it if present. + +## Intentionally cross-tenant probes + +If your step is *supposed* to probe a session-scoped task without tenant identity — e.g. a negative test that verifies the seller rejects the bare request, or a capability-discovery probe — annotate the step: + +```yaml +- id: probe_without_brand + task: get_media_buys + scoping: global + sample_request: + # ... no brand/account here by design +``` + +Use sparingly. When in doubt, carry brand identity — nearly all real-world calls do. + +## Fixtures and cross-step captures + +Storyboards that need prerequisite state (a qualifying product, a creative already in `approved` status, a plan the governance flow can reference) have three ways to obtain it: **declarative `fixtures:` at the storyboard root** for state that exists *before* the test runs, optional **`fixture_resolution:` rules** when a seller-owned entity may satisfy that state, and **step `context_outputs:` captures** for IDs *generated during* the run. + +### When to use which + +| Fixture origin | Pattern | Authored as | +|---|---|---| +| Exists before the storyboard and must be injected literally | `fixtures:` at storyboard root | Declarative block; seed-only compatibility default | +| Exists in the seller's sandbox catalog | `fixtures:` plus explicit `fixture_resolution:` | Runner seeds or discovers according to the declared strategy order and binds the seller-issued ID | +| Generated by an earlier step in this run | `context_outputs:` on the generating step, `$context.` on later steps | Captured at runtime; stays inside this run | +| Runner-supplied (webhook URLs, etc.) | `{{runner.webhook_url:}}` | Substitution variable | + +**Never hardcode a literal ID in `sample_request` if you can avoid it.** A literal like `media_buy_id: "mb_acme_q2_2026_auction"` only works if the agent happens to generate (or accept) that exact ID. Spec-compliant agents auto-generate IDs — the literal won't match and your storyboard will fail for an implementer who did nothing wrong. + +### Pattern A — prerequisite fixtures via `fixtures:` + `comply_test_controller` + +Declare fixtures at the storyboard root. Set `prerequisites.controller_seeding: true` to tell the runner to auto-inject a fixtures phase before the main phases. + +```yaml +id: sales_non_guaranteed +prerequisites: + controller_seeding: true + description: "Requires a seeded product and approved creative." + +fixtures: + products: + - product_id: "test-product" + delivery_type: "non_guaranteed" + pricing_options: + - pricing_option_id: "test-pricing" + pricing_model: "cpm" + currency: "USD" + creatives: + - creative_id: "campaign_hero_video" + status: "approved" + format_kind: "video_hosted" + +phases: + - id: place_buy + steps: + - id: create_buy + task: create_media_buy + sample_request: + packages: + - product_id: "test-product" # ← seeded above + pricing_option_id: "test-pricing" # ← seeded above +``` + +The runner injects a fixtures phase that calls `comply_test_controller` with `scenario: seed_product`, `scenario: seed_pricing_option`, and `scenario: seed_creative` (in foreign-key order) before running `place_buy`. An agent that implements the seed scenarios passes out of the box; an agent that returns `UNKNOWN_SCENARIO` on the seeds causes the storyboard to grade as `not_applicable`, not failed — implementers don't get penalized for missing sandbox-only surface. + +When a vendor-metric storyboard needs a deterministic external `measurement.metrics[]` snapshot, add an explicit `comply_test_controller` step with `scenario: seed_measurement_catalog`. Use `measurement_catalogs[]` inside a product fixture only as a compatibility fallback when the same storyboard also needs to carry the seller's product-level capability fields. + +See the full list of seed scenarios and their params in [Compliance test controller — Scenarios](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#scenarios). + +### Pattern B — seller-catalog fixtures via `fixture_resolution:` + +Keep the seed exemplar in `fixtures:` and add runner-only matching rules in a +separate root block. An older runner continues to seed the literal. A 3.2 runner +tries the declared strategies in order and may bind the handle to a seller ID. + +```yaml +fixtures: + products: + - product_id: "test-product" + delivery_type: "non_guaranteed" + channels: ["display"] + +fixture_resolution: + products: + - handle: "test-product" + strategies: [seed, discover] + match: + - path: /delivery_type + operator: equals + value: non_guaranteed + - path: /channels + operator: contains_all + value: [display] +``` + +Do not add `discover` by copying every fixture field into equality clauses. +Declare only properties material to the storyboard's assertions. Presentation +copy, sample prices, and other illustrative values should not become accidental +eligibility gates. Conversely, a currency-filter storyboard must keep currency +as a requirement because changing it changes the behavior under test. + +Discovery rules are explicit because fixture objects are not generic subset +predicates. The source lint rejects malformed strategies, dangling handles, +unknown operators, and ambiguous product-scoped pricing handles. See the +normative `fixture_resolution` section in `storyboard-schema.yaml` for all +operators and grading behavior. + +### Pattern C — flow-derived captures via `context_outputs:` + `$context.` + +Capture the ID the generating step returned, then reference it by `$context.` on downstream steps. + +```yaml +steps: + - id: create_buy + task: create_media_buy + sample_request: + packages: [...] + context_outputs: + - name: media_buy_id + path: "media_buy_id" # JSON path against this step's response + + - id: check_buy + task: get_media_buys + sample_request: + media_buy_ids: ["$context.media_buy_id"] # ← resolved at run time +``` + +The runner captures `media_buy_id` from `create_buy`'s response (after its validations pass), stores it in the run-scoped context accumulator, then substitutes the literal string `$context.media_buy_id` in `check_buy.sample_request` before sending. Agents see the actual ID — never the literal `$context.foo` token. + +Capture failures grade the *generating* step, not the reader: if the response doesn't contain `media_buy_id` at the declared path, `create_buy` fails with `capture_path_not_resolvable`. This is deliberate — the contract the storyboard declared ("this step produces a `media_buy_id`") is what failed, not the step that tried to use it. + +### Context block and the echo contract + +Storyboards that assert on response `context` MUST send a `context:` block on the sample_request: + +```yaml +sample_request: + packages: [...] + context: + correlation_id: "sales_non_guaranteed--create_buy" +validations: + - check: field_value + path: "context.correlation_id" + value: "sales_non_guaranteed--create_buy" + description: "Agent echoes context verbatim" +``` + +The runner does NOT auto-inject `context:` on sample_requests that omit it. Storyboards whose validator expects `context.correlation_id` in the response but whose sample_request lacks `context:` are authoring bugs — the agent is allowed (and required) to omit context when the caller sent none. + +See [Context and sessions — Normative echo contract](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#normative-echo-contract) for the agent-side rules. + +## Asserting on errors + +AdCP surfaces errors in two layers (see [Error handling — envelope vs. payload](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#envelope-vs-payload-errors-the-two-layer-model)). Storyboards MUST assert error shape in a way that works regardless of which layer a conformant agent surfaced the error on. + +**Use `check: error_code` — not `check: field_present, path: "errors"`.** + +```yaml +# ✅ Shape-agnostic — resolves from either adcp_error (envelope) or errors[] (payload) +validations: + - check: error_code + value: "BUDGET_TOO_LOW" + description: "Budget validation rejected with BUDGET_TOO_LOW" + +# ✅ Multiple acceptable codes +validations: + - check: error_code + allowed_values: ["VALIDATION_ERROR", "INVALID_REQUEST", "BUDGET_TOO_LOW"] + +# ❌ Pins to the payload `errors[]` shape — fails against agents that surface +# errors only via the transport envelope (MCP `adcp_error`, A2A DataPart) +validations: + - check: field_present + path: "errors" +``` + +Every code used in `value:` or `allowed_values:` MUST exist in the canonical error-code enum at `static/schemas/source/enums/error-code.json`. The `lint:error-codes` script (wired into `npm run test`) walks every storyboard and rejects references to codes that aren't in the enum — a build failure before any test runs. + +When a rename is required, register the old code in `scripts/error-code-aliases.json`. The file is pure data (it lives next to the lint script that reads it, not in the schema tree) and ships with an empty `aliases` map by default: + +```json +{ + "aliases": { + "OLD_CODE": "NEW_CODE" + } +} +``` + +Aliased codes pass the lint as **warnings** during the deprecation window, giving authors time to migrate storyboards. Once the alias is removed from the file, references to the old code become lint errors. This is how renames land without breaking storyboard authorship across versions. + +## Asserting on branchable behaviors + +Some spec requirements allow multiple conformant agent behaviors — e.g. an operation may return immediate success OR `pending_review` depending on seller policy. A single-assertion validator that asserts only one branch forces a conformant agent that picked the other branch to silently fail. + +When the spec allows a branchable outcome, split the storyboard into parallel optional phases and resolve via `assert_contribution`: + +```yaml +phases: + - id: reject_path + optional: true + steps: + - id: probe_reject + expect_error: true + contributes_to: behavior_handled + validations: + - check: error_code + value: "INVALID_REQUEST" + + - id: adjust_path + optional: true + steps: + - id: probe_adjust + contributes_to: behavior_handled + validations: + - check: response_schema + - check: field_present + path: "media_buy_id" + + - id: enforcement + steps: + - id: require_either + task: assert_contribution + validations: + - check: any_of + allowed_values: ["behavior_handled"] + description: "Agent must exhibit one of the conformant branches." +``` + +Failures inside an `optional: true` phase do NOT fail the storyboard — only the synthetic `assert_contribution` in the final phase does, and only when no branch contributed. Conformant agents pass exactly one branch and fail the other by design. + +The non-chosen branch's failing steps MUST be reported by the runner with skip reason `peer_branch_taken`, not `failed`. This keeps runner summaries accurate for conformant agents (the other-branch failures were not real failures) and keeps dashboard coverage signals clean (`peer_branch_taken` is runtime routing; `not_applicable` is for protocol coverage gaps). See `universal/storyboard-schema.yaml` § "Per-step grading in any_of branch patterns" and `universal/runner-output-contract.yaml` > `skip_result.reasons.peer_branch_taken` for the normative rule. + +Use this shape for any spec `MAY` / `any_of` where observable outcomes differ across branches. Do not use it for `create_media_buy.start_time` in the past; that case is now reject-only with `INVALID_REQUEST`. + +Single-code `check: error_code` is still correct when the spec mandates a canonical code for a scenario (e.g. `GOVERNANCE_DENIED` on a governance-denied outcome, `NOT_CANCELLABLE` on re-cancel). The split-phase pattern applies only when the spec itself leaves the outcome branchable. + +### When NOT to use this pattern + +The parallel-optional-phases + `assert_contribution` shape is only appropriate when the **spec text itself** permits multiple observable outcomes (look for explicit `MAY`/`OR` in the normative prose, or an enum of acceptable statuses). It is **not** a tool for softening a vector because an agent's behavior drifted from the spec. Do not apply this pattern to: + +- **Idempotency semantics.** `idempotency_key` must be rejected when missing on mutating tasks; replay must return the cached response; conflict must surface `IDEMPOTENCY_CONFLICT`. The spec mandates single behaviors — any other outcome is non-conformant, not a valid branch. +- **Context echo.** Responses MUST echo `context:` verbatim when the caller sent it. There is no conformant branch that omits the echo. +- **Error-code vocabulary.** Canonical codes enumerated in `static/schemas/source/enums/error-code.json` are single-value per scenario. If a storyboard asserts `GOVERNANCE_DENIED` on a governance-denied outcome, that is the code — not one option among several. +- **Webhook signing correctness.** RFC 9421 signing with AdCP's covered-components profile is a single verification shape; there is no alternate branch. + +If you find yourself reaching for the split-phase pattern to get past a failing vector, first verify the spec actually permits the branch you want to accept. If it doesn't, the fix is in the agent (or in the spec), not in the vector. + +## Adding a catalog-substitution-safety phase to a new specialism + +If you are adding a specialism that renders catalog-item macros into URLs +(catalog-driven sales, generative sellers, retail-media, etc.), your storyboard +SHOULD include a substitution-safety phase covering the rule set at +[`docs/creative/universal-macros.mdx#substitution-safety-catalog-item-macros`](../creative/universal-macros.mdx#substitution-safety-catalog-item-macros). + +**Start from the template, don't copy-paste from a sibling specialism.** The +canonical three-step phase (`sync_*_probe_catalog` → `build_*_probe_creative` +→ `expect_substitution_safe`) lives as a `phase_template:` comment block in +[`static/compliance/source/test-kits/substitution-observer-runner.yaml`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-kits/substitution-observer-runner.yaml). +The block uses `<>` tokens for the specialism-specific bits +(brand domain, catalog_id prefix, idempotency prefix) so you can materialize a +new phase by doing a simple text substitution against those tokens. + +Copying a near-clone from `sales-catalog-driven` or `creative-generative` +works in principle, but the DX reviewer on [#2654](https://github.com/adcontextprotocol/adcp/issues/2654) +flagged that three consumers is the inflection point where trivial drift +starts (misspelled `item_id`, missing `require_every_binding_observed: true`). +The template is the drift-avoidance surface; the `lint:substitution-vector-names` +script ([#2655](https://github.com/adcontextprotocol/adcp/issues/2655)) +catches typos in the vector_name references. + +## Running the lint locally + +```bash +npm run build:compliance # includes the lint +node scripts/lint-storyboard-scoping.cjs # lint only +npm run test:storyboard-scoping # parity test +``` + +Typical failure output: + +``` +✗ storyboard scoping lint: 1 violation(s) + + protocols/media-buy/scenarios/invalid_transitions.yaml:setup/create_buy (create_media_buy) — sample_request missing brand/account + +Fix: add `account { brand, operator }` to sample_request, e.g. + sample_request: + account: + brand: + domain: "acmeoutdoor.example" + operator: "pinnacle-agency.example" +``` diff --git a/dist/docs/3.2.0-beta.4/contributing/testable-examples-demo.md b/dist/docs/3.2.0-beta.4/contributing/testable-examples-demo.md new file mode 100644 index 0000000000..1360e80525 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/contributing/testable-examples-demo.md @@ -0,0 +1,87 @@ +--- +title: Testable examples demo +description: "AdCP testable documentation demo: validated JSON schemas and executable JavaScript code blocks that run against a live test agent." +"og:title": "AdCP — Testable examples demo" +testable: true +--- + +# Testable Documentation Examples + +This page demonstrates the testable documentation feature with complete, working code examples that execute against the live test agent. + +## JavaScript Example + +### Discover Creative Capabilities + +```javascript +import { testAgent } from '@adcp/sdk/testing'; + +const result = await testAgent.getAdcpCapabilities({}); + +console.log(`✓ Found ${result.data?.creative?.supported_formats?.length || 0} creative capabilities`); +``` + +## Python Example + +### Discover Creative Capabilities + +```python +import asyncio +from adcp.testing import test_agent + +async def list_formats(): + result = await test_agent.simple.get_adcp_capabilities() + print(f"✓ Found {len(result.creative.supported_formats)} creative capabilities") + +asyncio.run(list_formats()) +``` + +## CLI Example + +### Using uvx (Python CLI) + +```bash requires-env=ADCP_AUTH_TOKEN +uvx adcp \ + https://test-agent.adcontextprotocol.org/creative/mcp \ + get_adcp_capabilities \ + '{}' \ + --auth $ADCP_AUTH_TOKEN +``` + +## How Testable Documentation Works + +When `testable: true` is set in the frontmatter, ALL code blocks on this page are extracted and executed during testing. + +### Running Tests + +```bash +# Run all tests including snippet validation +npm run test:all +``` + +### Requirements for Testable Pages + +Every code block must: +- Be complete and self-contained +- Import all required dependencies +- Execute without errors +- Produce output confirming success + +### When to Mark Pages as Testable + +Mark a page `testable: true` ONLY when: +- ALL code blocks are complete working examples +- No code fragments or incomplete snippets +- All examples use test agent credentials +- Dependencies are installed (`@adcp/sdk`, `adcp`) + +### When NOT to Mark Pages as Testable + +Do NOT mark pages testable that contain: +- Code fragments showing patterns +- Incomplete examples +- Conceptual pseudocode +- Examples requiring production credentials +- Mixed testable and non-testable content + +See [Testable Snippets Guide](./testable-snippets.md) for complete documentation. diff --git a/dist/docs/3.2.0-beta.4/contributing/testable-snippets.md b/dist/docs/3.2.0-beta.4/contributing/testable-snippets.md new file mode 100644 index 0000000000..731ff7e7d6 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/contributing/testable-snippets.md @@ -0,0 +1,419 @@ +--- +title: Testable snippets +description: "How to write testable AdCP documentation: frontmatter flags, JSON schema validation, executable code blocks, and CI checks for keeping examples accurate." +"og:title": "AdCP — Testable snippets" +--- + +# Writing Testable Documentation Snippets + +This guide explains how to write code examples in AdCP documentation that are automatically tested for correctness. + +## Why Test Documentation Snippets? + +Automated testing of documentation examples ensures: +- Examples stay up-to-date with the latest API +- Code snippets actually work as shown +- Breaking changes are caught immediately +- Users can trust the documentation + +**Important**: The test infrastructure validates code blocks **directly in the documentation files** (`.md` and `.mdx`). When you mark a page with `testable: true` in the frontmatter, ALL code blocks on that page are extracted and executed. + +## Marking Pages for Testing + +To mark an entire page as testable, add `testable: true` to the frontmatter: + +```markdown +--- +title: get_products +testable: true +--- + +# get_products + +...all code examples here will be tested... +``` + +**Key principle**: Pages should be EITHER fully testable OR not testable at all. We don't support partially testable pages (mixing testable and non-testable code blocks on the same page). + +### Example Code Blocks + +Once a page is marked `testable: true`, all code blocks are executed: + +````markdown +```javascript +import { testAgent } from '@adcp/sdk/testing'; + +const products = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442068', + buying_mode: 'brief', + brief: 'Premium athletic footwear with innovative cushioning', + brand: { + domain: 'nike.com' + } +}); + +console.log(`Found ${products.products.length} products`); +``` +```` + +### Snippet Metadata + +Use snippet metadata for examples that need local preconditions: + +````markdown +```bash requires-env=ADCP_AUTH_TOKEN +uvx adcp https://test-agent.adcontextprotocol.org/sales/mcp get_products '{"idempotency_key":"550e8400-e29b-41d4-a716-446655442069","buying_mode":"brief","brief":"Premium CTV inventory"}' --auth $ADCP_AUTH_TOKEN +``` + +```javascript integration=true +// Runs only when snippet integration tests are enabled. +``` +```` + +`requires-env=NAME` skips the snippet when the named environment variable is not set. `integration=true` skips the snippet in the default local run; execute those examples with `node tests/snippet-validation.test.cjs --integration` or `SNIPPET_INTEGRATION=true`. + +### Using Test Helpers + +For simpler examples, use the built-in test helpers from client libraries: + +**JavaScript:** +```javascript +import { testAgent, testAgentNoAuth } from '@adcp/sdk/testing'; + +// Authenticated access +const fullCatalog = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442056', + buying_mode: 'brief', + brief: 'Premium CTV inventory' +}); + +// Unauthenticated access +const publicCatalog = await testAgentNoAuth.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442057', + buying_mode: 'brief', + brief: 'Premium CTV inventory' +}); +``` + +**Python:** +```python +import asyncio +from adcp.testing import test_agent, test_agent_no_auth + +async def example(): + # Authenticated access + full_catalog = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655442058', + buying_mode='brief', + brief='Premium CTV inventory' + ) + + # Unauthenticated access + public_catalog = await test_agent_no_auth.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655442059', + buying_mode='brief', + brief='Premium CTV inventory' + ) + +asyncio.run(example()) +``` + +## Best Practices + +### 1. Use Test Agent Credentials + +Always use the public test agent for examples: + +- **Test Agent URL**: `https://test-agent.adcontextprotocol.org` +- **MCP Token**: Your AAO API key (set as `$ADCP_AUTH_TOKEN`) +- **A2A Token**: `L4UCklW_V_40eTdWuQYF6HD5GWeKkgV8U6xxK-jwNO8` + +### 2. Make Examples Self-Contained + +Each testable snippet should: +- Import all required dependencies +- Initialize connections +- Execute a complete operation +- Produce visible output (console.log, etc.) + +**Good Example:** +```javascript +// Example of a complete, testable snippet +import { AdcpClient } from '@adcp/sdk'; + +const client = new AdcpClient({ + agentUrl: 'https://test-agent.adcontextprotocol.org/sales/mcp', + protocol: 'mcp', + bearerToken: 'sk_your_api_key_here' +}); + +const products = await client.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442060', + buying_mode: 'brief', + brief: 'Nike Air Max 2024' +}); + +console.log('Success:', products.products.length > 0); +``` + +**Bad Example (incomplete — no imports, no client setup, no output):** +```javascript +const products = await client.getProducts({ + brief: 'Premium CTV inventory' +}); +``` + +### 3. Use sandbox accounts + +When demonstrating operations that modify state (create, update, delete), use a sandbox account reference: + +```javascript +// Example using sandbox account — no real campaign created +const mediaBuy = await client.createMediaBuy({ + account: { + brand: { domain: 'acme-corp.com' }, + operator: 'acme-corp.com', + sandbox: true + }, + product_id: 'prod_123', + budget: 10000, + start_date: '2025-11-01', + end_date: '2025-11-30' +}); + +console.log('Sandbox media buy created:', mediaBuy.media_buy_id); +``` + +### 4. Handle Async Operations + +JavaScript/TypeScript examples should use `await` or `.then()`: + +```javascript +// Using await (recommended) +const products = await client.getProducts({...}); + +// Or using .then() +client.getProducts({...}).then(products => { + console.log('Products:', products.products.length); +}); +``` + +### 5. Keep Examples Focused + +Each testable snippet should demonstrate ONE concept: + +```javascript +// Good: Demonstrates authentication +import { AdcpClient } from '@adcp/sdk'; + +const client = new AdcpClient({ + agentUrl: 'https://test-agent.adcontextprotocol.org/sales/mcp', + protocol: 'mcp', + bearerToken: 'sk_your_api_key_here' +}); + +console.log('Authenticated:', client.isAuthenticated); +``` + +## When NOT to Mark Pages as Testable + +Some documentation pages should NOT have `testable: true`: + +### 1. Pages with Pseudo-code or Conceptual Examples + +If your page includes conceptual examples that aren't meant to execute: + +```javascript +// Conceptual workflow - not actual code +const result = await magicFunction(); // ✗ Not a real function +``` + +### 2. Pages with Incomplete Code Fragments + +Pages showing partial code snippets for illustration: + +```javascript +// Incomplete fragment showing field structure +budget: 10000, +start_date: '2025-11-01' +``` + +### 3. Pages with Configuration/Schema Examples + +Documentation showing JSON schemas or configuration structures: + +```json +{ + "product_id": "example", + "name": "Example Product" +} +``` + +### 4. Pages with Response Examples + +Pages showing example API responses (not requests): + +```json +{ + "products": [ + {"product_id": "prod_123", "name": "Premium Display"} + ] +} +``` + +### 5. Pages with Mixed Testable and Non-Testable Code + +If your page has SOME runnable code but SOME conceptual code, split into separate pages: +- One page marked `testable: true` with complete, runnable examples +- Another page without the flag for conceptual/partial examples + +**Remember**: Every code block on a testable page will be executed. If any block can't run, don't mark the page as testable. + +## Running Snippet Tests + +### Locally + +Test all documentation snippets: + +```bash +npm test +``` + +Or specifically run the snippet tests: + +```bash +node tests/snippet-validation.test.cjs +``` + +This will: +1. Scan all `.md` and `.mdx` files in `docs/` +2. Find pages with `testable: true` in frontmatter +3. Extract ALL code blocks from those pages +4. Execute each snippet and report results +5. Exit with error if any tests fail + +Integration-only snippets are skipped unless `--integration` is passed or `SNIPPET_INTEGRATION=true` is set. + +### Coverage Reporting + +Use the docs example coverage report to see where schema-backed JSON examples +and runnable snippets are concentrated: + +```bash test=false +npm run docs:example-coverage +``` + +The report scans `docs/` and shows: + +- JSON blocks that include `$schema` and are therefore covered by `npm run test:json-schema` +- complete JSON blocks without `$schema` +- runnable JavaScript, TypeScript, Python, and shell snippets that are covered by `npm run test:snippets` +- top files with the largest unvalidated JSON or untested runnable-snippet gaps + +For CI dashboards or saved baselines, emit machine-readable output: + +```bash test=false +npm run --silent docs:example-coverage -- --json +``` + +For GitHub job summaries, emit Markdown: + +```bash test=false +npm run --silent docs:example-coverage -- --markdown +``` + +Schema validation accepts extension fields where the wire protocol is +extensible. To audit schema-backed docs examples for unknown public-looking +fields, run: + +```bash test=false +npm run docs:json-field-audit +``` + +The field audit is advisory by default. Use `--check` only when intentionally +ratcheting against `scripts/docs-json-field-audit-baseline.json`: + +```bash test=false +npm run docs:json-field-audit -- --check +``` + +When you intentionally clean up findings, refresh the baseline in the same +change: + +```bash test=false +npm run docs:json-field-audit -- --update-baseline +``` + +### In CI/CD + +The full test suite (including snippet tests) can be run with: + +```bash +npm run test:all +``` + +This includes: +- Schema validation +- Example validation +- Snippet validation +- TypeScript type checking + +## Supported Languages + +Currently supported languages for testing: + +- **JavaScript** (`.js`, `javascript`, `js`) +- **TypeScript** (`.ts`, `typescript`, `ts`) - compiled to JS +- **Bash** (`.sh`, `bash`, `shell`) - only `curl` commands +- **Python** (`.py`, `python`) - requires Python 3 installed + +### Limitations + +**Package Dependencies**: Snippets that import external packages (like `@adcp/sdk` or `adcp`) will only work if: +1. The package is installed in the repository's `node_modules` +2. Or the package is listed in `devDependencies` + +For examples requiring the client library, you have options: +- **Option 1**: Add the library to `devDependencies` so tests can import it +- **Option 2**: Don't mark those snippets as testable; document them as conceptual examples instead +- **Option 3**: Use curl/HTTP examples for testable documentation (no package dependencies) + +## Debugging Failed Tests + +When a snippet test fails: + +1. **Check the error message** - The test output shows which file and line number failed +2. **Run the snippet manually** - Copy the code and run it locally +3. **Verify test agent is accessible** - Check https://test-agent.adcontextprotocol.org +4. **Check dependencies** - Ensure all imports are available +5. **Review the snippet** - Make sure it's self-contained + +Example error output: + +``` +Testing: quickstart.mdx:272 (javascript block #6) + ✗ FAILED + Error: Cannot find module '@adcp/sdk' +``` + +This indicates the `@adcp/sdk` package needs to be installed. + +## Contributing Guidelines + +When adding new documentation: + +1. ✅ **DO** mark entire pages as `testable: true` if ALL code blocks are runnable +2. ✅ **DO** use test helpers from client libraries for simpler examples +3. ✅ **DO** test snippets locally before committing (`npm test`) +4. ✅ **DO** keep examples self-contained and complete +5. ✅ **DO** use test agent credentials in examples +6. ❌ **DON'T** mark pages with ANY incomplete fragments as testable +7. ❌ **DON'T** mark pages with pseudo-code as testable +8. ❌ **DON'T** mix testable and non-testable code on the same page +9. ❌ **DON'T** use production credentials in examples + +## Questions? + +- Check existing testable examples in `docs/quickstart.mdx` +- Review the test suite: `tests/snippet-validation.test.js` +- Ask in the [Slack community](/dist/docs/3.2.0-beta.4/community/joining-slack) diff --git a/dist/docs/3.2.0-beta.4/contributing/x-entity-annotation.md b/dist/docs/3.2.0-beta.4/contributing/x-entity-annotation.md new file mode 100644 index 0000000000..9393e0164d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/contributing/x-entity-annotation.md @@ -0,0 +1,150 @@ +--- +title: x-entity schema annotations +description: "How to annotate AdCP schema fields that carry entity identity, so the cross-storyboard context-entity lint can catch conflation bugs like the #2627 brand_id advertiser-vs-rights-holder case." +"og:title": "AdCP — x-entity schema annotations" +--- + +# `x-entity` schema annotations + +## TL;DR for schema authors + +You're editing a schema and the field you're adding (or reviewing) is an id, slug, or stable reference: + +1. **Does the value ever cross storyboard steps?** (captured via `context_outputs`, consumed as `$context.`, or echoed between request and response.) If no, don't annotate. +2. **Pick the entity type** from the table below. If none fits, read the full registry at `static/schemas/source/core/x-entity-types.json` — if still nothing, PR the registry to add one. +3. **Add `x-entity: `** next to `type` on the leaf property. For `$ref`'d shared types, annotate the shared type, not the use site. For a domain sweep with many known id fields, run `node scripts/add-x-entity-annotations.mjs [--overlay ]` — base map at `scripts/x-entity-field-map.json`, per-domain overlays resolve ambiguous names (`list_id`, `plan_id`, `pricing_option_id`). The script validates all values against the registry before writing, so typos hard-fail. +4. If your field is a pass-through **echo** of a value from the request, annotate it with the **same** entity type on both sides. + +The lint is silent on fields without `x-entity`, so partial rollout is safe. + +## Why this exists + +Some AdCP schemas use a single field name — `brand_id`, `list_id`, `plan_id` — for values that refer to **different kinds of entities** in different contexts. The most-cited example: `brand_id` can mean "the advertiser's brand" (from `get_brand_identity`) or "the rights-holder / talent brand" (inside `get_rights`). Same JSON shape, different entity. Both locally valid. The mismatch only surfaces when a storyboard captures a value of one kind into `$context` and a later step consumes it expecting the other — as tracked in [issue #2627](https://github.com/adcontextprotocol/adcp/issues/2627). + +`x-entity` is a non-validating JSON Schema annotation that tags each identity-bearing field with the *entity type* the value resolves against. The context-entity lint (`scripts/lint-storyboard-context-entity.cjs`) walks storyboard `context_outputs` capture sites and `$context.` consume sites, reads `x-entity` at both ends, and flags mismatches. + +## When to add it + +Add `x-entity` to a field if and only if: + +1. The field's value is an id, slug, or stable reference to a business entity, **and** +2. A storyboard could plausibly capture or consume that value across steps (via `context_outputs` or `$context.`). + +Request fields and response fields both take the annotation. Shared types referenced by `$ref` (e.g., `core/brand-id.json`) carry the annotation once; it applies at every use site. + +**Echo fields** (response fields that pass through a value the client sent in the request) *should* be annotated, with the same entity type as the request side. The lint treats capture and consume symmetrically — an annotated echo catches when a storyboard re-captures it into `$context` and forwards it under a misleading name. + +**Do not** annotate: + +- Transient request-scoped values (`idempotency_key`, `request_id`, `correlation_id`). +- Purely descriptive fields (display names, URLs, free-text). +- Fields that don't cross storyboard step boundaries. +- Enum values (`right_type`, `audience_type`) — those are tags, not entity references. + +## Placement + +On the leaf property definition, next to `type` / `description`: + +```json +{ + "properties": { + "brand_id": { + "type": "string", + "description": "Brand identifier from the agent's roster", + "x-entity": "rights_holder_brand" + } + } +} +``` + +For arrays of entities, annotate the item schema: + +```json +{ + "rights": { + "type": "array", + "items": { + "properties": { + "rights_id": { + "type": "string", + "x-entity": "rights_contract" + } + } + } + } +} +``` + +For shared `$ref` types (e.g., `core/brand-id.json`), annotate the shared type. Every use site inherits the entity type: + +```json +{ + "$id": "/schemas/core/brand-id.json", + "type": "string", + "x-entity": "advertiser_brand" +} +``` + +**Shared-type invariant:** once a shared type carries `x-entity`, every `$ref` to it asserts that entity scope. `core/brand-id.json` is tagged `advertiser_brand`, so a rights-holder / talent-roster brand id cannot reuse that type — create a separate shared type (e.g., `core/rights-holder-brand-id.json`) even if the string shape is identical. The lint treats the shared type as the source of truth; silently re-using it across scopes is the bug we're catching. + +If a shared type is used ambiguously across contexts, *split the type* rather than omitting the annotation — ambiguity is the problem the lint exists to catch. + +### Shared types with `oneOf` / `anyOf` / `allOf` variants + +If a shared type's root is a composite (`oneOf` / `anyOf` / `allOf`) and every branch resolves to the same entity, annotate once at the root — the lint reads root-level `x-entity` before descending into variants, so a whole-object capture (e.g., `$context.signal_id` for `core/signal-id.json`) resolves cleanly without duplicating `x-entity` on each variant. `core/signal-id.json` follows this pattern: root-level `x-entity: signal`, and the variant-local `id` fields are deliberately left un-annotated because the `id` is only unique within its variant's namespace (`data_provider_domain` or `agent_url`). Annotating the inner `id` would make two different-namespace ids look interchangeable to the lint. + +If variants resolve to *different* entities, **split the type**. The registry lint flags root+variant disagreement (`composite_entity_disagreement` rule) because the walker's root-level check wins at the empty path and would silently drop the variant value. + +## Registered entity types + +The authoritative list lives at `static/schemas/source/core/x-entity-types.json`. The lint rejects unknown values — extending the registry is intentional and requires a PR. + +High-level groupings (see the registry for full descriptions). *Categories below are editorial grouping for orientation only; the registry at `static/schemas/source/core/x-entity-types.json` is the authoritative list.* + +| Category | Values | +|---|---| +| Brand & rights | `advertiser_brand`, `rights_holder_brand`, `rights_grant` | +| Account & party | `account`, `operator` | +| Media buy | `media_buy`, `package`, `product`, `proposal`, `product_pricing_option`, `spot_airing` | +| Creative | `creative`, `creative_format` | +| Data & targeting | `audience`, `audience_evidence`, `audience_evidence_snapshot`, `signal`, `signal_activation_id`, `demographic_interval_id`, `event_source` | +| Lists & catalogs | `collection_list`, `property_list`, `catalog`, `catalog_generation`, `catalog_item`, `property` | +| Plans & governance | `media_plan`, `governance_plan`, `governance_registry_policy`, `governance_inline_policy`, `governance_check`, `governance_delivery_statement`, `governance_delivery_observation`, `governance_outcome`, `governance_adjustment`, `governance_adjustment_evidence`, `seller_adjustment`, `content_standards`, `task`, `attestation_credential` | +| Vendor services | `vendor_pricing_option`, `vendor_metric` | +| SI | `si_session`, `offering` | + +**Plan vs. policy vs. check:** `governance_plan` identifies the plan container (answers *"which plan?"*); `governance_registry_policy` / `governance_inline_policy` identify a rule inside or referenced by a plan (*"which rule?"*); `governance_check` identifies a specific evaluation of a plan against its policies (*"which check?"* — round-trips between `check_governance` and `report_plan_outcome`). Pick by the question the captured value answers. + +**Outcome vs. adjustment:** `governance_outcome` identifies the governance agent's settled commitment record; `governance_adjustment` identifies the governance agent's append-only adjustment record; `seller_adjustment` identifies the seller's source record and is scoped to that authenticated seller. + +**Registry vs. inline policy:** Use `governance_registry_policy` when the field holds a globally-unique registry id (e.g., `uk_hfss`, `us_coppa`, `garm:brand_safety:violence`). Use `governance_inline_policy` when the field holds a plan-scoped bespoke id authored via `policy-entry.json`. Every `$ref` to `policy-entry.json` in an AdCP task schema is inline by definition — registry entries are served by a separate out-of-band API. If the field can legitimately hold either at runtime (the two ambiguous sites: `check-governance-response::findings[].policy_id`, `get-plan-audit-logs-response` audit entries, plus reserved `creative/creative-feature-result.json::policy_id` and `core/feature-requirement.json::policy_id`), leave it un-annotated and add a `$comment` starting with `"x-entity deliberately omitted"` — the gap lister recognises that phrase and skips the leaf. + +The registry file is the source of truth. To see every annotated field across the repo: `git grep -l x-entity static/schemas/source`. + +### Adding a new entity type + +When a schema change introduces an id that doesn't fit any registered value: + +1. Add the new value to the `enum` array in `static/schemas/source/core/x-entity-types.json`. +2. Add a one-paragraph definition under `x-entity-definitions` in the same file. Describe what the id identifies, the schemas that use it, and any known caveats (e.g., namespace scope). +3. Add the new value to the category table above, in the most appropriate row. +4. If the new value neighbors an existing one (e.g., plan vs. policy vs. check), add a one-sentence disambiguation under the table. +5. If the value will be applied by the patch script in a future domain sweep, add it to `scripts/x-entity-field-map.json` with the canonical field name → entity value mapping. If the same field name splits by domain (like `plan_id` or `list_id`), use the `__scope_specific__` / `__ambiguous__` sentinels and document the overlay pattern the per-domain PR should supply. + +## How the lint reads annotations + +The cross-storyboard walk (`scripts/lint-storyboard-context-entity.cjs`) runs at `npm run build:compliance` and as `npm run test:storyboard-context-entity`: + +1. For each storyboard step's `context_outputs[].path`, walk the step's `response_schema_ref` to the referenced location and read `x-entity` there. Record `(capture_name → entity_type)`. +2. For each storyboard step's `sample_request` field whose value is `$context.`, walk the step's `schema_ref` (request schema) to the referenced field and read `x-entity` there. Look up the name in the capture table. +3. If both ends have `x-entity` and they don't match, flag a violation. + +The lint is **silent on missing annotations** — partial rollout is safe. Missing annotations are treated as "we don't know what entity this is," not as "these must match." This lets the annotation pass proceed domain by domain without generating false positives. To check which domains have been annotated, run `git grep -l x-entity static/schemas/source`. + +## Related + +- Registry: `static/schemas/source/core/x-entity-types.json` +- Lint: `scripts/lint-storyboard-context-entity.cjs` +- Tests: `tests/lint-storyboard-context-entity.test.cjs` +- Canonical case: [#2627 brand_rights storyboard conflates advertiser brand_id with talent brand_id](https://github.com/adcontextprotocol/adcp/issues/2627) +- Tracking issue: [#2660 Storyboard field-entity-context lint](https://github.com/adcontextprotocol/adcp/issues/2660) diff --git a/dist/docs/3.2.0-beta.4/creative/accessibility.mdx b/dist/docs/3.2.0-beta.4/creative/accessibility.mdx new file mode 100644 index 0000000000..2223fb6863 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/accessibility.mdx @@ -0,0 +1,243 @@ +--- +title: Accessibility +description: "AdCP accessibility support lets formats declare WCAG conformance levels and requires accessible assets like alt text and captions." +"og:title": "AdCP — Accessibility" +--- + + +AdCP supports accessibility at two levels: formats declare the conformance level of their rendered output, and assets carry the metadata needed to achieve it. + +## How It Works + +Accessibility in advertising creatives depends on who controls the rendering: + +- **Format-rendered creatives** (image + headline + CTA): The format controls the output. It can guarantee contrast ratios, keyboard navigation, and ARIA landmarks — it just needs the right inputs from the creative (alt text for images, captions for video, etc.). + +- **Opaque creatives** (HTML bundles, JavaScript tags): The format can't inspect or modify the content. The asset must self-declare its accessibility properties. + +AdCP handles both cases through the format's `accessibility` object and per-asset-type accessibility metadata. + +## Format Accessibility + +Formats declare their accessibility posture through the `accessibility` object: + +### `accessibility.wcag_level` + +The WCAG conformance level that creatives produced by this format will meet. Values: `A`, `AA`, `AAA`. + +For format-rendered creatives, this is a guarantee from the format. For opaque creatives, this reflects the level the format requires assets to self-certify to. + +### `accessibility.requires_accessible_assets` + +When `true`, all assets with accessibility-relevant fields must include those fields. This is the enforcement mechanism — it tells validation to treat optional accessibility fields as required. + +```json +{ + "format_kind": "image", + "params": { + "width": 300, + "height": 250, + "accessibility": { "wcag_level": "AA", "requires_accessible_assets": true }, + "slots": [ + { "asset_group_id": "image_main", "asset_type": "image", "required": true }, + { "asset_group_id": "headline", "asset_type": "text", "required": true } + ] + } +} +``` + +This format guarantees WCAG AA output and requires `alt_text` on the image asset (because `alt_text` is marked as an accessibility field on the image asset type). + +## Asset Accessibility Fields + +Each asset type defines which of its fields are accessibility-relevant using the `x-accessibility` schema marker. These fields are always optional by default, but become required when the format sets `accessibility.requires_accessible_assets: true`. + +### Inspectable Assets + +These assets provide structured data that the format uses to render accessibly. + +| Asset Type | Accessibility Fields | Purpose | +|---|---|---| +| **Image** | `alt_text` | Alternative text for screen readers | +| **Video** | `captions_url` | URL to captions file (WebVTT, SRT) | +| | `transcript_url` | URL to text transcript | +| | `audio_description_url` | URL to audio description track | +| **Audio** | `transcript_url` | URL to text transcript | + +**Example** — video asset in a manifest for an accessible format: + +```json +{ + "creative_id": "brand_video_001", + "format_kind": "video_hosted", + "assets": { + "video_file": { + "url": "https://cdn.example.com/video.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000, + "captions_url": "https://cdn.example.com/video.vtt", + "transcript_url": "https://cdn.example.com/video-transcript.txt", + "audio_description_url": "https://cdn.example.com/video-ad.mp3" + } + } +} +``` + +### Opaque Assets + +HTML and JavaScript assets are black boxes — the format can't inspect their rendering. These assets carry an `accessibility` object with self-declared properties. + +| Field | Type | Description | +|---|---|---| +| `alt_text` | string | Text alternative describing the creative content | +| `keyboard_navigable` | boolean | Creative can be fully operated via keyboard | +| `motion_control` | boolean | Respects `prefers-reduced-motion` or provides pause/stop controls | +| `screen_reader_tested` | boolean | Creative has been tested with screen readers | + +**Example** — HTML creative with accessibility declarations: + +```json +{ + "creative_id": "rich_media_001", + "format_kind": "html5", + "assets": { + "creative_html": { + "content": "
...
", + "version": "HTML5", + "accessibility": { + "alt_text": "Interactive product carousel showing summer collection", + "keyboard_navigable": true, + "motion_control": true, + "screen_reader_tested": true + } + } + } +} +``` + +Self-declared accessibility is a trust claim. Platforms may independently validate these properties — that is outside the scope of the protocol. + +## Structured Rejection Details + +When a creative agent or seller performs an accessibility check and rejects a +creative, it uses the existing `CREATIVE_REJECTED` code with +`recovery: "correctable"`. For backward compatibility, the top-level `field` +identifies the first failing asset in JSONPath-lite form. The optional +`error.details` object may conform to the experimental +[`accessibility-violation.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/error-details/accessibility-violation.json) +shape and batch every failure in `violations[]`: + +```json +{ + "code": "CREATIVE_REJECTED", + "message": "Creative fails the required accessibility level", + "field": "creative_manifest.assets.hero_image", + "recovery": "correctable", + "details": { + "violations": [ + { + "pointer": "/creative_manifest/assets/hero_image", + "criterion": "1.4.3", + "criterion_source": "WCAG21", + "required_level": "AA", + "failure_kind": "contrast_ratio_insufficient", + "remediation": "For normal-sized text, increase contrast to at least 4.5:1; evaluate WCAG exceptions separately." + } + ] + } +} +``` + +`criterion` and `criterion_source` identify the external requirement without +freezing an AdCP-owned WCAG corpus. Portable consumers use that pair after +validating the details schema. `failure_kind` is a bounded diagnostic vocabulary; +vendor extensions use an `x_` prefix. `remediation` remains untrusted advisory +text. This shape does not activate an accessibility policy by itself and is +distinct from `error.issues[]`, which is reserved for JSON Schema validation +output. + +To stay within the transport error safety limit, producers include at most four +complete violations and keep the complete serialized error at or below 4096 +bytes. When additional failures or remediation text are omitted, they set +`details.truncated: true`. Producers omit whole extra violations or remediation +text rather than truncating an RFC 6901 pointer token. + +Pointers use RFC 6901 and are always rooted at the complete task request, like +the protocol's core error pointers. They are not rooted at the nested creative +manifest. Thus `build_creative` uses paths such as +`/creative_manifest/assets/hero_image`, while a batched `sync_creatives` request +uses paths such as `/creatives/0/assets/hero_image`. The top-level `error.field` +projects the first violation into the same request-rooted path using JSONPath-lite +notation (for example `creative_manifest.assets.hero_image`). + +When `build_creative` receives only `creative_id` and resolves the manifest from +the creative library, the failing asset has no request path. In that case each +violation uses `/creative_id` and top-level `error.field` is `creative_id`. +Criterion and remediation fields preserve diagnostic detail, but the +request-rooted pointer intentionally cannot identify a nested stored asset. +`/creative_id` is attribution only and MUST NOT be interpreted as a nested +mutation path. + +### Third-Party Tags + +VAST and DAAST assets wrap video and audio delivered by third parties. They carry accessibility fields alongside their existing tag properties. + +| Asset Type | Accessibility Fields | +|---|---| +| **VAST** | `captions_url`, `audio_description_url` | +| **DAAST** | `transcript_url` | + +### Assets Without Accessibility Fields + +Some asset types don't produce standalone rendered content and have no accessibility fields. When a format sets `accessibility.requires_accessible_assets: true`, these are effectively no-ops: + +- **Text** — rendered by the format +- **Markdown** — rendered by the format +- **CSS** — styles, not content +- **URL** — links, not rendered content +- **Webhook** — server-side + +## Discovering Accessible Formats + +Buyers inspect canonical declarations returned in product `format_options[]` or creative-agent `supported_formats[]` and filter them client-side by declared accessibility constraints: + +```json +const accessible = product.format_options.filter(option => + ["AA", "AAA"].includes(option.params.accessibility?.wcag_level) && + option.params.slots.some(slot => slot.asset_type === "image") +); +``` + +This selects formats that claim at least WCAG AA conformance and include an image slot. Accessibility claims remain declaration-specific and should be substantiated by the renderer or required asset metadata. + +## Implementation Notes + +**Enforcement is application-level.** The `x-accessibility` marker is a JSON Schema extension keyword. Standard JSON Schema validators ignore it — enforcement of `accessibility.requires_accessible_assets` must be implemented in application code that scans asset schemas for `x-accessibility: true` fields and validates their presence. + +**For format implementers:** +- Set `accessibility.wcag_level` only when you can substantiate the claim — through your own rendering guarantees or by requiring accessible assets +- If your format renders from structured inputs, ensure your rendering pipeline meets the declared WCAG level (contrast, keyboard nav, ARIA) +- If your format wraps opaque assets, `accessibility.requires_accessible_assets: true` ensures the inputs carry the right declarations + +**For creative producers:** +- When submitting to a format with `accessibility.requires_accessible_assets: true`, include all accessibility fields for your asset types +- For opaque assets, test accessibility properties before declaring them +- Provide captions and transcripts as separate hosted files, not embedded in the asset +- Select the recovery class only from `code` and `recovery`. After validating + `details` against `accessibility-violation.json`, portable tooling may group + diagnostics by (`criterion_source`, `criterion`); `failure_kind` refines the + display but does not select the recovery class. +- Treat pointers as untrusted references into an immutable copy of the original + request. Resolve them without mutation, require an allowlisted creative asset + location, and present the validated criterion to controlled repair logic or a + human. Never execute a pointer directly as a property-write path, never treat + `/creative_id` as an asset path, and never pass raw details or remediation text + to an LLM as instructions. + +## Related Documentation + +- [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats) — Format structure and requirements +- [Asset Types](/dist/docs/3.2.0-beta.4/creative/asset-types) — Asset specifications and payload schemas +- [Creative Manifests](/dist/docs/3.2.0-beta.4/creative/creative-manifests) — Pairing assets with formats +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — Creative-agent capability discovery diff --git a/dist/docs/3.2.0-beta.4/creative/ai-creative-overview.mdx b/dist/docs/3.2.0-beta.4/creative/ai-creative-overview.mdx new file mode 100644 index 0000000000..41304ed6a0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/ai-creative-overview.mdx @@ -0,0 +1,104 @@ +--- +title: AI creative for campaign teams +description: "AI creative in AdCP lets campaign teams write a brief and get production-ready ads generated across formats without learning the protocol." +"og:title": "AdCP — AI creative for campaign teams" +--- + +AI creative in AdCP means you write a brief and an AI agent handles production. It generates ads from your direction, adapts them across formats, and can personalize them at serve time. You stay in control of the brand. The AI does the heavy lifting. + +This page explains how it works in terms you already use. + +## How it works + +The workflow mirrors what you do with a production team, except the team is an AI agent. + +### 1. Write the brief + +You describe what you want in plain language, the same way you'd brief a creative team. + +*"Create a holiday promotion for our outdoor gear line. Earth tones, active lifestyle imagery. Headline should emphasize the limited-time offer."* + +The brief can include a message (what to say), brand identity assets (logos, colors, fonts), and constraints (tone of voice, topics to avoid). The more specific you are, the better the output. + +### 2. Review concepts + +The AI generates options. You see previews — rough concepts for direction, or polished versions for stakeholder review. Browse them the way you'd review comps from a production studio. + +You control the quality level: + +- **Draft mode** gives you fast, rough concepts for exploration. Think tissue session. +- **Production mode** gives you polished, client-ready output. Think final comps. + +### 3. Iterate + +Give feedback in the language you'd use with any creative team. + +*"Make the headline more urgent."* +*"Try a warmer color palette."* +*"Keep the layout but swap in the lifestyle photo instead of the product shot."* + +The AI revises and returns updated previews. + +### 4. Approve and traffic + +Lock in the final creative. It gets synced to your campaigns — assigned to media buys, matched to placements, ready to serve. + +### 5. Monitor what actually ran + +After launch, review what the AI served. Every variant, every context. Full audit trail. If the AI personalized headlines per audience, you can see each version and how it performed. + +## Quality control + +AI creative has two separate quality dimensions. Understanding both prevents surprises. + +**Concept quality** is about the creative itself. Draft mode produces fast, rough ideas — useful when you're exploring directions and don't need pixel-perfect output. Production mode produces finished work suitable for client review and launch. You choose which mode based on where you are in the process. + +**Preview quality** is about how you view the output. Quick thumbnails let you scan many options fast. Full-fidelity renders show exactly how the ad will look at final size and resolution. These are independent of concept quality — you can get a high-fidelity render of a draft concept, or a quick thumbnail of a production-ready piece. + +Think of it as the difference between a tissue session (rough concepts, fast iteration) and a final presentation (polished work, high-res mockups). + +## Brand safety + +Four layers keep your brand protected throughout the process. + +**The brief itself.** Your creative direction sets the boundaries. Specify tone, topics to include, topics to avoid, and any do's and don'ts. The AI works within these constraints. + +**Brand identity.** Logos, color palettes, typography, and brand guidelines are provided as structured assets. The AI references them during generation, not just as suggestions but as requirements. + +**Pre-launch review.** Before anything goes live, preview what the AI will generate. Review concepts, test edge cases, and approve the system before it serves a single impression. + +**Post-launch audit.** After launch, see every variant that was actually served. Not a summary — the actual creative outputs, with context about when and where each ran. + +## What to expect + +AI-generated ads work differently from traditional production in a few important ways. + +**Previews are representative, not exact.** Because the AI can generate per-impression (adapting to context, audience, or placement), a pre-launch preview shows you what the AI *will* generate, not the one fixed ad it will serve. The preview is accurate to the brief and brand identity, but the live campaign may produce variations. + +**Conversational formats need guardrail testing.** If your ad includes an interactive chatbot or conversational element, test the boundaries. What happens when someone asks about a competitor? What if they ask an off-topic question? Pre-launch review should include these scenarios. + +**You approve the system, not every individual ad.** With traditional creative, you approve each finished ad. With AI creative, you approve the combination of brief, brand identity, and guardrails that the AI uses to generate ads. This is what makes personalization at scale possible — and why getting the brief and guardrails right matters more than reviewing every output. + +## Protocol terms in agency language + +| What you call it | What AdCP calls it | +|---|---| +| Creative brief | `message` or `assets.brief` in `build_creative` | +| Comp / mockup | Preview from `preview_creative` | +| Ad unit spec sheet | Creative manifest | +| Production studio | Creative agent | +| Placement size | Format (e.g., `display_300x250`) | +| Trafficking | `sync_creatives` or inline attachment on `create_media_buy` | +| Campaign report (variant-level) | `get_creative_delivery` | + +## Next steps + +When you're ready to go deeper: + +- **See it in action** -- The [Creative protocol overview](/dist/docs/3.2.0-beta.4/creative) follows a strategist from brief to delivery across CTV, display, and social +- **Technical workflow** -- [Generative creative](/dist/docs/3.2.0-beta.4/creative/generative-creative) walks through the API step by step +- **Library management** -- [Creative libraries and concepts](/dist/docs/3.2.0-beta.4/creative/creative-libraries) covers organizing and syncing assets +- **CTV and video** -- [CTV and connected TV](/dist/docs/3.2.0-beta.4/creative/channels/ctv) covers SSAI/CSAI delivery, companion ads, and VAST tags +- **Multi-agent orchestration** -- [Multi-agent creative orchestration](/dist/docs/3.2.0-beta.4/creative/multi-agent-orchestration) covers distributing creatives across sellers +- **Brand safety details** -- [Sales agent creative capabilities](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities) explains guardrails and inline creative management +- **Learning** -- The [certification program](/dist/docs/3.2.0-beta.4/learning/overview) teaches AdCP through interactive modules with Addie diff --git a/dist/docs/3.2.0-beta.4/creative/asset-types.mdx b/dist/docs/3.2.0-beta.4/creative/asset-types.mdx new file mode 100644 index 0000000000..d8ca556e71 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/asset-types.mdx @@ -0,0 +1,660 @@ +--- +title: Asset Types +description: "AdCP asset types define standardized properties for images, video, text, audio, tags, and tracking URLs used in creative formats." +"og:title": "AdCP — Asset Types" +--- + +> **Canonical-formats readers**: this page describes asset types and their payload shapes — the same in v1 and the canonical-formats path. For how assets map to canonical-format slots via `asset_group_id`, see [canonical-formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) and the [migration guide](/dist/docs/3.2.0-beta.4/creative/canonical-formats-migration). v1 uses `asset_id` + `asset_role`; canonical formats use `asset_group_id` referencing the canonical vocabulary registry. Both paths use the same asset payload schemas — only the slot-key vocabulary differs. + +Creative formats in AdCP use standardized asset types with well-defined properties. Assets are the discrete, typed building blocks used by formats to define requirements and by manifests to supply concrete values. + +Standardizing asset types ensures consistency across formats and makes requirements easier for buyers and systems to understand. + +## Asset types in v2 + +The full set of asset types valid in a v2 format `slots` declaration's `asset_type` field: + +| asset_type | What it carries | Where defined | +|---|---|---| +| `image` | Image file (jpg/png/gif/webp/svg) | `/schemas/core/assets/image-asset.json` | +| `video` | Video file (mp4/webm/mov) | `/schemas/core/assets/video-asset.json` | +| `audio` | Audio file (mp3/aac/wav) | `/schemas/core/assets/audio-asset.json` | +| `text` | Plain text (headline, body, script) | `/schemas/core/assets/text-asset.json` | +| `markdown` | Markdown text | `/schemas/core/assets/markdown-asset.json` | +| `url` | URL with `url_type` discriminator (clickthrough, tracker_pixel, third-party tag) | `/schemas/core/assets/url-asset.json` | +| `html` | Inline HTML | `/schemas/core/assets/html-asset.json` | +| `css` | CSS rules | `/schemas/core/assets/css-asset.json` | +| `javascript` | JavaScript | `/schemas/core/assets/javascript-asset.json` | +| `vast` | VAST tag (URL or inline XML), VAST 2.x-4.x | `/schemas/core/assets/vast-asset.json` | +| `daast` | DAAST tag (URL or inline XML), 1.0-1.1 | `/schemas/core/assets/daast-asset.json` | +| `webhook` | Webhook URL for async creative production | `/schemas/core/assets/webhook-asset.json` | +| `brief` | Free-text creative brief (input to generative production) | `/schemas/core/assets/brief-asset.json` | +| `catalog` | Reference to a synced catalog (sponsored_placement) | `/schemas/core/assets/catalog-asset.json` | +| `published_post` | Reference to an already-published post that the seller resolves after authorization/review | `/schemas/core/assets/published-post-asset.json` | +| `zip` | Zip archive (HTML5 banner bundle) | `/schemas/core/assets/zip-asset.json` | +| `vast_tracker` | Single VAST `Tracking` event URL (decomposed) | `/schemas/core/assets/vast-tracker-asset.json` | +| `daast_tracker` | Single DAAST `Tracking` event URL (decomposed) | `/schemas/core/assets/daast-tracker-asset.json` | +| `pixel_tracker` | Renderer-fired HTTP tracker (image pixel or JS include) for any web-rendered canonical. `event` (impression / viewable_mrc_* / viewable_video_50 / audible_video_complete / click / custom) × `method` (img / js). Maps to IAB OpenRTB Native 1.2 `imptrackers[]` / `jstracker` / `eventtrackers[]` / `link.clicktrackers[]` event-type registry (types 1, 2, 3, 4, 500) | `/schemas/core/assets/pixel-tracker-asset.json` | +| `object` | Structured object (image_carousel `cards`, `video_brief` for generative video) — sub-shape declared by the canonical | (no standalone schema; per-canonical sub-shape) | + +In a v2 manifest's `assets` map, the **slot key** is the canonical's `asset_group_id` (e.g., `image_main`, `video_main`, `script`, `cards`, `landing_page_url`) and the **value** carries the matching asset payload with its `asset_type` discriminator. The format declaration's `slots[].asset_type` tells the validator which payload schema applies. + +Published-post references use the same rule: a product that accepts existing posts declares a `published_post` slot, and the manifest value carries `asset_type: "published_post"` with a `post_url` or `platform_post_id`. + +## Important: Payload vs Requirements + +For payload schemas (the structure of the actual asset data supplied in creative manifests), see: +- [Asset Type Registry](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/asset-types/index.json) - Links to all payload schemas +- Core Asset Schemas at `/schemas/3.2.0-beta.4/core/assets/` - Individual asset payload definitions + +**Key distinction:** + +**Format requirements** (this document) define constraints such as: +- Whether an asset is required or optional +- Acceptable file or container formats +- Duration, dimension, or aspect ratio limits +- File size and bitrate limits +- Allowed or restricted features (for tag-based assets) + +**Payload schemas** (core schemas) define the supplied values, such as: +- `url` +- `content` (for inline text or inline tag markup) +- `width` / `height` (when declared) +- `duration_ms` (when applicable) +- `format` (declared container type) + +## Asset Type Schema + +The official JSON schema for asset types is available at: +- **Production**: https://adcontextprotocol.org/schemas/asset-types-v1.json +- **GitHub**: https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/asset-types-v1.json + +## Core Asset Types + +### Video Asset + +Video assets represent video files with specific technical requirements. + +```json +{ + "asset_type": "video", + "required": true, + "duration_seconds": 15, + "acceptable_formats": ["mp4"], + "acceptable_codecs": ["h264"], + "acceptable_resolutions": ["1920x1080", "1280x720"], + "aspect_ratio": "16:9", + "max_file_size_mb": 30, + "min_bitrate_mbps": 8, + "max_bitrate_mbps": 10 +} +``` + +**Properties:** +- `duration_seconds`: Expected video duration +- `min_duration_seconds` / `max_duration_seconds`: Duration range (if flexible) +- `acceptable_formats`: Container formats (mp4, webm, mov) +- `acceptable_codecs`: Video codecs (h264, h265, vp8, vp9, av1) +- `acceptable_resolutions`: List of width x height strings +- `aspect_ratio`: Required aspect ratio (16:9, 9:16, 1:1, etc.) +- `max_file_size_mb`: Maximum file size in megabytes +- `min_bitrate_mbps` / `max_bitrate_mbps`: Bitrate range in Mbps +- `features`: Additional requirements (e.g., ["non-skippable", "sound on"]) + +### Image Asset + +Static image assets for banners, logos, and visual content. + +```json +{ + "asset_type": "image", + "required": true, + "width": 300, + "height": 250, + "acceptable_formats": ["jpg", "png", "gif"], + "max_file_size_kb": 200, + "animation_allowed": true +} +``` + +**Properties:** +- `width` / `height`: Dimensions in pixels +- `pixel_ratio`: Optional intrinsic pixels per logical render pixel (for example, `2` for a 600×500 asset rendered into a logical 300×250 slot). SDKs infer it when the target format's dimensions are sufficient. +- `min_width` / `min_height`: Minimum dimensions (px; typically used by responsive/sizeless formats) +- `aspect_ratio`: Required aspect ratio +- `acceptable_formats`: Image formats (jpg, png, gif, webp, svg) +- `max_file_size_kb`: Maximum file size in kilobytes +- `transparency`: Whether transparency is required/supported +- `animation_allowed`: Whether animated GIFs are accepted +- `notes`: Additional requirements (e.g., "Must be free of text") + +**Use Cases:** +- High-density delivery in any canonical: declare accepted densities with `slots[].pixel_ratios`; use top-level `params.pixel_ratios` for the `image` canonical's `image_main` slot. +- Multi-rendition delivery: add `slots[].required_pixel_ratios` and provide that image slot as an array with one rendition per required density. Accepted densities outside the required subset remain optional. +- Fixed layout: provide `width` and `height`. Do not include `min_width`, `min_height`, or `aspect_ratio`. +- Responsive (fixed image aspect ratio): provide `min_width`, `min_height` and `aspect_ratio`. Do not include `width` or `height`. +- Responsive (any image aspect ratio): provide `min_width` and `min_height` only. Do not include `width`, `height`, or `aspect_ratio`. + +**Note**: In fixed layouts, the image slot is an exact pixel box, so specify `width` and `height`. In responsive layouts, the renderer will resize the image; use `min_width`/`min_height` to ensure there are enough pixels for a sharp result after scaling. Use `aspect_ratio` only when the image asset itself must be a specific shape (e.g., 16:9); omit it if any image aspect ratio is acceptable + +### Text Asset + +Text content for headlines, descriptions, CTAs, etc. + +```json +{ + "asset_type": "text", + "required": true, + "text_type": "headline", + "max_length": 90, + "min_length": 10 +} +``` + +**Properties:** +- `text_type`: Specific type (title, headline, description, body, cta, advertiser_name, disclaimer) +- `max_length`: Maximum character count +- `min_length`: Minimum character count +- `default`: Default value if not provided +- `allowed_characters`: Regex pattern for validation +- `format`: Expected format (plain, currency, percentage) + +### URL Asset + +Links for clickthroughs, tracking, and landing pages. Two related but distinct fields describe a URL asset: + +- **`url_type`** (on the manifest asset) — the **mechanism** the receiver uses to invoke this URL. +- **`url-asset-requirements.role`** (on the format) — the **purpose** this URL slot serves in the creative. + +A slot can be `click_tracker` (purpose) and accept a `tracker_pixel` (mechanism) URL — those describe different things. + +#### Manifest-side: `url_type` (mechanism) + +Senders **SHOULD** include `url_type` on every URL asset. The valid values are: + +| Value | Mechanism | +|---|---| +| `clickthrough` | User-click destination (landing page or ad-tech redirector) | +| `tracker_pixel` | Fires HTTP GET, expects 1×1 pixel or 204 response (impression / event / 3P trackers) | +| `tracker_script` | Loads as a `" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://acmecorp.example.com/holiday-sale?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +The `CLICK_URL` macro was substituted with the provided value; `CACHEBUSTER` remains as a placeholder for the sales agent to resolve at serve time. + +Do not use `recipe_hash` to deduplicate ad tags, prove legal/disclosure equivalence, or join build results to served delivery data. Use `build_variant_id` and the promoted `creative_id` for lineage and reporting. + + +**Cross-agent workflow**: When creative generation and media buying are handled by different agents, use `build_creative` on the creative agent to produce a manifest with tags, then [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) on the sales agent to upload it. When the sales agent implements both protocols, this happens on a single endpoint — see [Creative capabilities on sales agents](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities). + + +### Multi-format generation + +Generate creatives for multiple formats in a single call using `target_capability_ids`. The agent produces one manifest per format from the same source assets and brief: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "d4e5f6a7-b8c9-4012-d345-6789abcdef01", + "message": "Create display banners for our spring campaign", + "target_capability_ids": [ + "display_image_300x250", + "display_image_728x90", + "display_image_320x50" + ], + "brand": { + "domain": "acmecorp.com" + }, + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.acmecorp.com/spring-hero.png", + "width": 1200, + "height": 628 + }, + "headline": { + "asset_type": "text", + "content": "Spring Collection Now Available" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://acmecorp.example.com/spring?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +The response uses `creative_manifests` instead of singular `creative_manifest`. Each result is a complete canonical manifest, ready for `sync_creatives` or [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative): + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "creative_manifests": [ + { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/generated/spring_300x250.png", + "width": 300, + "height": 250 + }, + "headline": { "asset_type": "text", "content": "Spring Collection Now Available" }, + "clickthrough_url": { "asset_type": "url", "url": "https://acmecorp.example.com/spring?campaign={MEDIA_BUY_ID}" } + } + }, + { + "format_kind": "image", + "assets": { /* same structure, adapted for 728x90 */ } + }, + { + "format_kind": "image", + "assets": { /* same structure, adapted for 320x50 */ } + } + ] +} +``` + +Multi-capability requests are atomic — if any capability fails, the entire request fails. Response order matches `target_capability_ids`; each manifest's `format_kind` describes the resulting canonical contract. + +### Multi-format workflow + +After a multi-format build, preview all results using `preview_creative` batch mode. Each element of `creative_manifests` in the build response becomes a `creative_manifest` in the batch preview request: + +```json +{ + "request_type": "batch", + "quality": "draft", + "requests": [ + { "target_capability_id": "preview_image_300x250", "creative_manifest": { /* 300x250 manifest from build response */ } }, + { "target_capability_id": "preview_image_728x90", "creative_manifest": { /* 728x90 manifest from build response */ } }, + { "target_capability_id": "preview_image_320x50", "creative_manifest": { /* 320x50 manifest from build response */ } } + ] +} +``` + +Resolve each preview route from a `creative.supported_formats[]` entry whose `operations` contains `preview` and whose canonical declaration satisfies that manifest. Build and preview capability IDs may differ, even on the same agent. + +To refine a single format from a multi-format build, call `build_creative` again with `target_capability_id` (singular) and pass back that format's manifest. You don't need to rebuild all formats — just iterate on the one that needs work. + + +Multi-format requests with `include_preview: true` generate one default preview per format. Custom `preview_inputs` are only supported with single-format requests. For multi-format builds where you need context-specific previews (device variants, different contexts), use a separate `preview_creative` batch call after building. + + +### Transformers & variants + +Select a transformer (discovered via [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers)) with `transformer_id`, supply a typed `config` keyed to its params, and ask for alternatives with `max_variants`. The agent returns the [variant response](#variant-response): `creatives[]`, each holding a `variants[]` array. Read `recommended` / `rank` to surface the agent's best-of-N pick; traffic the variant(s) you want by their `build_variant_id`. + +Resolutions and quality tiers go on `target_capability_ids` (or `quality`), not on `variant_axis` — variants are alternatives for the *same* format. + + + +```javascript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { BuildCreativeResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.buildCreative({ + account: { account_id: 'acct_acme' }, + transformer_id: 'audiostack_voiceover', + config: { voice: 'isaac', speaking_rate: 1.1, mastering_preset: 'podcast' }, + target_capability_id: 'audio_vo', + creative_manifest: { + format_kind: 'audio_hosted', + assets: { script: { asset_type: 'text', content: 'Discover the new winter collection.' } }, + }, + max_variants: 3, + variant_axis: { dimension: 'best_of_n', label: 'Read takes' }, + keep_mode: 'keep_one', + idempotency_key: '0c1d2e3f-4a5b-6c7d-8e9f-a0b1c2d3e4f5', +}); + +const parsed = BuildCreativeResponseSchema.parse(result); +for (const creative of parsed.creatives ?? []) { + for (const variant of creative.variants) { + console.log(variant.build_variant_id, variant.rank, variant.recommended, variant.vendor_cost); + } +} +``` + +```python test=false +import asyncio +from adcp.testing import test_agent +from adcp import BuildCreativeResponse + +async def main(): + result = await test_agent.build_creative( + account={"account_id": "acct_acme"}, + transformer_id="audiostack_voiceover", + config={"voice": "isaac", "speaking_rate": 1.1, "mastering_preset": "podcast"}, + target_capability_id="audio_vo", + creative_manifest={ + "format_kind": "audio_hosted", + "assets": {"script": {"asset_type": "text", "content": "Discover the new winter collection."}}, + }, + max_variants=3, + variant_axis={"dimension": "best_of_n", "label": "Read takes"}, + keep_mode="keep_one", + idempotency_key="0c1d2e3f-4a5b-6c7d-8e9f-a0b1c2d3e4f5", + ) + parsed = BuildCreativeResponse.model_validate(result) + for creative in parsed.creatives or []: + for variant in creative.variants: + print(variant.build_variant_id, variant.rank, variant.recommended, variant.vendor_cost) + +asyncio.run(main()) +``` + + + +You pay for all three takes (`per_unit` × 3); `keep_mode` is advisory. Keeping is a separate trafficking step on the chosen `build_variant_id` — use that id as the `creative_id` when promoting the produced manifest through [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives). The kept variant then lazily earns a creative record whose `creative_id` is the build leaf id and flows to [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) and delivery reporting. + +### Paid build with pricing + +When the creative agent charges and `account` is provided, the response includes pricing fields. The agent selects the applicable pricing option server-side based on the account's rate card and the work performed — the buyer does not pass `pricing_option_id` in the request. + +**Per-unit pricing (transformation agent)**: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "e5f6a7b8-c9d0-4123-e456-789abcdef012", + "account": { "account_id": "acct_acme_creative" }, + "creative_id": "cr_hero_banner", + "target_capability_id": "display_728x90" +} +``` + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "image", + "assets": { + "ad_tag": { + "content": "
...
" + } + } + }, + "pricing_option_id": "po_standard_per_format", + "vendor_cost": 2.00, + "currency": "USD", + "consumption": { + "renders": 1 + } +} +``` + +The `pricing_option_id` corresponds to one of the options from [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives#pricing). The buyer passes it in [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) for reconciliation. + +**CPM pricing (ad server)** — `vendor_cost` is 0 at build time because cost accrues when impressions are served: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { "..." : "..." }, + "pricing_option_id": "po_video_cpm", + "vendor_cost": 0, + "currency": "USD" +} +``` + +## Response format + +### Single-format response + +When the request uses `target_capability_id`, the response contains a single creative manifest: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "recipe_hash": "rh_winter_300x250_4c2a", + "creative_manifest": { + "format_kind": "image", + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "catalog_id": "winter-sale" + }, + "banner_image": { + "asset_type": "image", + "url": "https://cdn.example.com/generated-banner.png", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "50% Off Winter Sale" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/winter-sale?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +### Multi-format response + +When the request uses `target_capability_ids`, the response contains an array of creative manifests: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "creative_manifests": [ + { + "format_kind": "image", + "assets": { /* ... */ } + }, + { + "format_kind": "image", + "assets": { /* ... */ } + } + ] +} +``` + +### Variant response + +When the request uses `max_creatives`, `max_variants` > 1, `variant_axis`, or `refine_from_build_variant_id`, the agent returns the `BuildCreativeVariantSuccess` shape — the third success shape (`oneOf` member 3 of 6) alongside the single- and multi-format responses, which are unchanged and still used when you build one creative with one variant. + + +**No fallback.** If you send any of `max_creatives`, `max_variants > 1`, `variant_axis`, or `refine_from_build_variant_id`, you **must** handle `creatives[]` — you will not get `creative_manifest`/`creative_manifests` back. There is no automatic downgrade to the single/multi shapes. + + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creatives": [ + { + "build_creative_id": "bc_card_01", + "catalog_item_ref": { "catalog_type": "product", "item_id": "sku_winter_parka" }, + "variants": [ + { + "build_variant_id": "bv_card01_a", + "recipe_hash": "rh_card01_bestofn_7b91", + "creative_manifest": { "format_kind": "image", "assets": { "...": "..." } }, + "variant_axis_value": "take_1", + "recommended": true, + "rank": 1, + "pricing_option_id": "po_per_image", + "vendor_cost": 0.40, + "currency": "USD", + "consumption": { "images_generated": 1 } + }, + { + "build_variant_id": "bv_card01_b", + "recipe_hash": "rh_card01_bestofn_7b91", + "creative_manifest": { "format_kind": "image", "assets": { "...": "..." } }, + "variant_axis_value": "take_2", + "recommended": false, + "rank": 2, + "pricing_option_id": "po_per_image", + "vendor_cost": 0.40, + "currency": "USD", + "consumption": { "images_generated": 1 } + } + ] + } + ], + "items_total": 150, + "items_returned": 5, + "vendor_cost": 4.00, + "currency": "USD" +} +``` + +_The `creatives[]` array above is abbreviated to one of the 5 returned groups; the aggregate `vendor_cost` of $4.00 covers all 5 groups × 2 variants × $0.40 — it equals the sum of every produced leaf's `vendor_cost`, not just the leaves shown._ + +- **creatives[]**: One entry per built creative group. With `max_creatives`, there is one entry per sampled catalog item (`catalog_item_ref` identifies which item); without catalog fan-out there is a single entry. Treat this as the produced group set; choose among alternatives inside each group's `variants[]`. +- **creatives[].build_creative_id**: Identifies a built creative within this response. +- **creatives[].catalog_item_ref**: Present on catalog fan-out — an object identifying the source catalog item via `item_id` (plus optional `catalog_type`). +- **creatives[].signal_condition**: Present on signal fan-out — the SignalTargeting condition this creative group is FOR (e.g. weather=rain). Shares `signal_ref` identity with sales-side package targeting so the sales agent can match and reject incompatible assignments. +- **creatives[].errors[]**: Present only on a *failed* catalog item — catalog fan-out is non-atomic, so a failed item is returned as a `creatives[]` entry carrying `errors[]` and no `variants[]`, without failing the batch. +- **creatives[].variants[]**: The choose-among alternatives produced for this creative group. Length is at most `max_variants`. Each variant carries its own complete `creative_manifest`. +- **variants[].build_variant_id**: Identifies a single variant — the leaf-level **lineage anchor**. This is its **own namespace** — never reuse a `preview_id` (a [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) render) or a served `variant_id` (a delivery-time identifier) here. You traffic a chosen build by passing its `build_variant_id`. +- **variants[].recipe_hash**: Optional ETag-style identity for the build-determining inputs that produced the leaf. It is agent-computed, opaque, and comparable only within the same agent. Best-of-N leaves from the same source recipe SHOULD share a value. It is useful for cache transparency, cost-avoidance hints, and recipe-level grouping, but it is not output equality, not legal/disclosure equivalence, and not the build-to-delivery join. +- **variants[].parent_build_variant_id**: Present only on a refined variant ([Refinement](#refinement)) — the `build_variant_id` of the source it was refined from. Absent for first-generation builds. +- **variants[].variant_axis_value**: The value of the `variant_axis` dimension this variant represents (e.g. a voice, a theme). +- **variants[].recommended** / **variants[].rank**: Best-of-N signals — `recommended` flags the agent's top pick; `rank` orders the variants. These plus `variant_axis` and `keep_mode` are how best-of-N is expressed. +- **variants[].eval**: Present only when the request supplied an advisory [`evaluator`](#request-parameters) and the agent advertises `creative.supports_evaluator`. The rank-side of the [`get_creative_features`](/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features) feature oracle. `eval.features[]` is **`creative-feature-result[]`** — the same shape `get_creative_features.results[]` returns (e.g. a `creative_quality_score` number, an `on_brief` categorical, a calibrated `predicted_performance`); the wrapper is open, each feature item is closed. The agent runs a **gate-then-rank** pipeline over its best-of-N: it evaluates each leaf, drops leaves failing the hard `evaluator.feature_requirement[]` gate from its recommended survivors, then orders survivors by `evaluator.rank_by` (`[{feature_id, direction}]`) — which is what `recommended`/`rank` reflect. The gate is **internal pruning** of which leaves the agent recommends from its own exploration, not an AdCP-layer block: what is produced and billed is governed by `max_variants`/`max_creatives`/`max_spend`, so this block appears only on returned (billed) leaves. Feature discovery uses `get_adcp_capabilities.governance.creative_features`; `evaluator_id` is an account-scoped preset that emits values over that feature vocabulary, not a discovered feature ID and not a separate evaluator feature catalog. The exemplars form calibrates one `predicted_performance` feature in [0,1]; a pass/warn/fail verdict is a categorical string feature value gated via `feature_requirement.allowed_values` — `eval.features[]` is a feature measurement, never a stored verdict. When the evaluator names an external agent, it must be on the seller's `creative_policy.accepted_verifiers[]` (off-list → [`EVALUATOR_AGENT_NOT_ACCEPTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-evaluator-agent-not-accepted)); the producing agent authenticates its outbound call on the transport, not inside the evaluator payload. Sellers SHOULD populate `eval.calls_used` / `eval.seconds_used` when `agent_url` was used and an `eval_budget` was supplied. +- **variants[] pricing receipt**: Each variant carries a per-leaf receipt (`pricing_option_id`, `vendor_cost`, `currency`, `consumption`) for the work that produced it. Whenever the build reports cost (the aggregate `vendor_cost` is present), every produced leaf MUST carry its own `vendor_cost` + `currency` (schema-enforced) — leaves are the billing source of truth, and an untrafficked leaf is reconciled from this receipt alone. A CPM-deferred leaf reports `vendor_cost: 0`. +- **items_total** / **items_returned**: For catalog fan-out, the total eligible catalog items and how many creatives were returned (e.g. "5 of 150"). +- **leaves_total** / **leaves_returned**: Leaf-granular counts — total leaves the request would produce vs. how many were actually produced/billed. When `budget_status` is `capped`, `leaves_returned` < `leaves_total` is the shortfall (works even for variant-only fan-out with no catalog). +- **vendor_cost** / **currency**: Aggregate cost across all produced variants in the response. +- **keep_mode_applied**: Echoes the `keep_mode` the agent applied (present when the request set it). `keep_mode` is advisory and doesn't change what's produced or billed, so this is your confirmation the hint was received — the audit trail for a "I asked for keep_one but was billed for N" dispute. +- **selection_strategy_applied**: Echoes the `selection_strategy` the agent applied (when `max_creatives` sampling occurred). The ranking itself shows in `rank`/`recommended` on the leaves. +- **budget_status**: `complete` (default; absent == complete) or `capped` — a `max_spend` ceiling stopped production early (a successful partial build, not a failure). See [Spend controls](#spend-controls). +- **errors[]**: Advisory (non-terminal) entries on an otherwise-successful build — e.g. a [`BUDGET_CAP_REACHED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-cap-reached) notice when `budget_status` is `capped`. + + +You pay for **every produced variant** (`per_unit` × N), not just the ones you keep. Keeping is a separate client act of trafficking the chosen `build_variant_id`(s), typically by using each kept leaf as `creative_id` on [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives). A kept variant lazily earns a creative record when it is added to the library or first trafficked; that `creative_id` is what flows to [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) and delivery reporting. An unkept variant is still billed but never earns a `creative_id`. + + + +**Atomicity differs by axis.** Variant production *per format* is atomic — if one variant for a format fails, that format's build fails. Catalog fan-out (`max_creatives`, per item) is **non-atomic**: individual `creatives[]` entries may succeed while others fail. A failed item is returned as a `creatives[]` entry carrying `errors[]` (and no `variants[]`); the batch still succeeds. + +**Build-time variants are not delivery variants.** The `build_variant_id` here is a pre-delivery handle for an alternative you produced. It is a different namespace from the served `variant_id` in [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery), which identifies a creative *execution that was delivered*. A build-time variant becomes a delivery variant only once you keep and traffic it. + +**Resolutions and quality tiers are not variants.** Multiple sizes or quality levels belong on the format axis — pass them as `target_capability_ids` (or `quality`), not as `variant_axis` values. Variants are alternatives *for the same format* (different voice, theme, or best-of-N take). + + +### Refinement + +Conversational refinement re-builds a prior variant with free-form direction — "make it warmer", "tighten the CTA". The typed `config` surface is closed by design, so free-form intent rides the **open** surface that already exists: the `message` field (whose description is already *"For refinement, this describes the desired changes"*). Refinement is therefore not a new task — it's `build_creative` with one extra input: + +- Pass `refine_from_build_variant_id` (a prior leaf's `build_variant_id`) plus your instruction in `message` and any `config` delta. +- The agent re-builds from that leaf and returns **new** variants, each with `parent_build_variant_id` set to the source. A refinement is **never a mutation** — the parent leaf is unchanged, and the new leaf earns its own `build_variant_id` (and, on trafficking, its own `creative_id`). +- `transformer_id` and the target format(s) are **inherited** from the parent; you don't repeat them. Passing a `transformer_id` or target format that differs from the parent's is an [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request). `config` is applied as a **delta** over the parent's config. +- Composes with `max_variants` / `variant_axis` (e.g. "three warmer takes" → three refined leaves), but **not** with `max_creatives` / catalog fan-out — you refine one produced creative, not a catalog. +- Requires the agent to advertise `creative.supports_refinement: true` (it retains produced leaves for an agent-defined window). Agents that retain nothing return [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature); refine a buyer-held manifest instead via the transform path (`creative_manifest` + `message`). An unknown or no-longer-retained ref returns [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) with `error.field` set to `refine_from_build_variant_id`. + +Any build can be refined, not just variant builds: a single-format `BuildCreativeSuccess` carries an optional `build_variant_id` (present when the agent supports refinement) that you pass as `refine_from_build_variant_id`. Multi-format builds that need per-output refinable leaves should request the variant shape (`max_variants`), since the bare `creative_manifests[]` array carries no leaf ids. + +AI-derivative attribution rides the manifest's existing `provenance`; `parent_build_variant_id` carries only the lineage edge (refinements chain into a tree). + +```json test=false +{ + "refine_from_build_variant_id": "bv_card01_a", + "message": "Warmer lighting, and move the logo to the lower-right.", + "max_variants": 3, + "account": { "account_id": "acct_acme" }, + "idempotency_key": "7f2a1b3c-4d5e-6f70-8192-a3b4c5d6e7f8" +} +``` + +### Spend controls + +Fan-out and refinement can produce many independently-billed leaves (`max_creatives` × `max_variants`), and `per_unit` pricing gives a *rate* but not the *unit count* in advance (a 6-second voiceover and a 60-second one cost 10× at the same rate). Two opt-in controls, both gated by `creative.supports_spend_controls`: + +- **Estimate first (`mode: "estimate"`).** A dry run: the agent produces and bills nothing and returns a `BuildCreativeEstimate` with a `cost_low`/`cost_high` band (and `basis`: `fixed` = exact, `estimated_units` = generative projection, `cpm_deferred` = cost accrues at serve). The band is the load-bearing piece — the seller derives it from your actual inputs, so you don't have to guess unit counts. +- **Cap the call (`max_spend: { amount, currency }`).** A hard stop: the agent produces leaves until the next would push aggregate `vendor_cost` over `amount`, then returns the partial `BuildCreativeVariantSuccess` with `budget_status: "capped"` and an advisory `BUDGET_CAP_REACHED` in `errors[]` — every returned leaf is real and billed, nothing produced is discarded. The leaf-granular shortfall is `leaves_returned` < `leaves_total` (not `items_returned`/`items_total`, which count catalog items and don't capture a variant-only or mid-item cap); the `BUDGET_CAP_REACHED` advisory is the authoritative cap signal. If even the first leaf would exceed the cap, the call fails with a terminal `BUDGET_CAP_REACHED`. `currency` must match the rate card (no FX) or the request is rejected `INVALID_REQUEST` (`error.field: max_spend.currency`). `max_spend` bounds only **build-time** `vendor_cost` — CPM-priced builds (`basis: cpm_deferred`) are 0 at build time and accrue at serve, so the cap never engages; bound a CPM fan-out with `max_creatives` instead. + +They compose: estimate to get `cost_high`, then execute with `max_spend` = `cost_high` × a safety margin (CPM builds excepted — their `cost_high` is 0 at build time). `max_spend` caps a **single call**; to bound an autonomous **refinement loop**, track aggregate `vendor_cost` across calls and stop issuing them (a buyer responsibility in this revision — a protocol-level session budget is deferred to the working group). + + +`max_spend` and `mode: "estimate"` require the agent to advertise `creative.supports_spend_controls`; otherwise they're rejected with `UNSUPPORTED_FEATURE`. They're only meaningful with `bills_through_adcp: true` (an out-of-band biller has no AdCP cost to cap against). + +**Governance applicability.** A creative service advertising `adcp.governance_enforcement` for `build_creative` requires an approved `governance_context` only when the execution incurs positive vendor cost. Estimate-only calls and zero-cost retrieval are exempt. A creative ad server that never commits or meters spend through AdCP does not acquire a [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) obligation merely by trafficking creative; if it later exposes an AdCP-billed mutation, that commitment-bearing task must be declared and governed explicitly. + + +### Estimate response + +A `mode: "estimate"` request returns the `BuildCreativeEstimate` shape (`oneOf` member 4 of 6) — produced and billed nothing, just a projected cost band: + +```json test=false +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "mode": "estimate", + "estimate": { + "items_total": 150, + "items_to_produce": 5, + "variants_per_item": 3, + "leaves_total": 15, + "currency": "USD", + "cost_low": 6.00, + "cost_high": 9.00, + "cost_expected": 7.50, + "basis": "estimated_units" + }, + "expires_at": "2026-06-01T00:00:00Z" +} +``` + +- **estimate.leaves_total** = `items_to_produce` × `variants_per_item` (× `conditions_total` when `signal_conditions` was sent) — the number of billable leaves `mode: "execute"` would produce. +- **estimate.cost_low / cost_high / cost_expected**: the projected aggregate cost band. The seller derives it from your actual inputs. +- **estimate.basis**: `fixed` (per-format flat — `cost_low == cost_high`, exact), `estimated_units` (generative `per_unit`; the band reflects unit-count uncertainty), or `cpm_deferred` (CPM — build-time cost 0, accrues at serve, so the band is 0). +- **estimate.per_leaf** (optional): per-leaf breakdown. +- Estimates are **advisory / non-binding** in this revision (binding quotes are deferred to the working group). + +### Field descriptions + +- **creative_manifest**: (single-format) The complete creative manifest ready for use with `sync_creatives` or `preview_creative` +- **creative_manifests**: (multi-capability) Array of portable canonical creative manifests, one per requested capability and in request order. Each contains its own `format_kind` and, when needed, `format_option_ref`. +- **format_kind**: The canonical format produced by the selected capability +- **assets**: Map of asset keys to asset content — includes creative content (images, text, URLs), catalogs, briefs, and anything else the format requires +- **expires_at**: Optional ISO 8601 timestamp when generated asset URLs in the manifest expire. Set to the earliest expiration across all generated assets. Re-build the creative after this time to get fresh URLs. Not present when the manifest contains no expiring URLs (e.g., pure text generation or assembly-only transforms). +- **preview**: Optional. Present when `include_preview` was true in the request and the agent supports inline preview. Contains the same content fields as a `preview_creative` single response (`previews`, `interactive_url`, `expires_at`) minus the `response_type` discriminator, so clients can reuse the same preview rendering logic. Preview URLs follow the same durability contract as `preview_creative`: they remain dereferenceable until `expires_at`, or until explicit out-of-band revocation when no expiration is present. For single-capability responses, each entry in `previews[]` corresponds to an input set from `preview_inputs`. For multi-capability responses, each entry includes a `capability_id` and corresponds to one requested capability (one default preview per capability; `preview_inputs` is ignored). +- **preview_error**: Optional. Standard error object (`code`, `message`, `recovery`) present when `include_preview` was true but preview generation failed. The `recovery` field indicates whether the failure is `transient` (retry later), `correctable`, or `terminal`. Distinguishes "agent doesn't support inline preview" (field absent, no error) from "preview generation failed" (field present with structured error). + +### Compliance errors + +If the manifest includes a brief asset with `compliance` requirements that the creative agent cannot satisfy, the agent MUST return an error — not a partial success. Unsatisfied disclosures are a hard failure. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "failed", + "errors": [ + { + "code": "COMPLIANCE_UNSATISFIED", + "message": "Required disclosure cannot be rendered in this format", + "field": "creative_manifest.assets.brief.compliance.required_disclosures[0]", + "details": { + "disclosure_text": "Past performance is not indicative of future results.", + "position": "footer", + "reason": "Format display_mobile_320x50 does not support footer position" + }, + "suggestion": "Use a format that supports footer disclosures, or change position to 'overlay'" + } + ] +} +``` + +Creative agents MUST validate that all `required_disclosures` can be satisfied in the target format before generating the creative. If any disclosure cannot be placed as specified, the entire request fails. This ensures regulated creatives are never served without required legal text. + +## Response timing + +How the creative agent responds depends on how long the operation will take: + +| Expected duration | Status | Caller experience | +|---|---|---| +| Under 30 seconds | `completed` | Result returned directly — synchronous | +| Over 30 seconds, server actively processing | `working` | Out-of-band status updates while the server continues processing. Caller holds the connection — still synchronous from their perspective | +| Blocked on external dependency (human review, approval) | `submitted` | Truly async — caller should configure a webhook via `push_notification_config` and move on | + +The creative agent decides which path to take based on the work involved. Library retrieval is instant. Simple transformations take seconds. AI generation varies — a quick banner might complete in 10 seconds, a complex video composition might take minutes. + +### `working` is a progress signal, not a polling trigger + +When the server expects to take more than 30 seconds but is actively processing, it sends `working` as an out-of-band MCP status update. This keeps the client informed ("I'm on it") without requiring the caller to switch to a polling or webhook pattern. The connection stays open and the result arrives when it's ready. + +### When to go async + +`submitted` means the operation is blocked on something outside the server's control: + +- **Human creative review** — brand guidelines require approval before returning +- **External approval workflows** — third-party compliance or legal review + +For these cases, configure a webhook via `push_notification_config` to receive the result. See [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) and [Push Notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). + +### Human-in-the-loop + +The agent may return `status: "input-required"` when it needs human input — for example, when brand guidelines require creative approval or when the agent needs clarification on creative direction: + +```json +{ + "reason": "CREATIVE_DIRECTION_NEEDED" +} +``` + +**Reason codes:** +- `APPROVAL_REQUIRED` — Creative needs human approval before finalizing +- `CREATIVE_DIRECTION_NEEDED` — Agent needs clarification on creative brief or direction +- `ASSET_SELECTION_NEEDED` — Agent needs the caller to choose between asset options + +## Workflow integration + +### Typical generation workflow + +1. **Build**: Use `build_creative` to generate/transform the manifest +2. **Preview**: Use [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) to see how it renders (see [preview_creative](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative)) +3. **Sync**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) to traffic the finalized creative + +You can combine steps 1 and 2 by setting `include_preview: true` on the build request. If the agent supports it, the response includes a `preview` object alongside the manifest — same content fields as `preview_creative`, no extra round trip. If the agent doesn't support inline preview, the field is simply absent and you fall back to a separate `preview_creative` call. Always check for the presence of `preview` rather than assuming it will be there when requested. + +Use `preview_quality` to control render fidelity independently from build quality. For example, build at `quality: "draft"` (fast concept generation) but preview at `preview_quality: "production"` (full-fidelity render to show stakeholders the layout). If `preview_quality` is omitted, the agent uses its own default. + +```json +// Build at draft quality, but preview at production quality for stakeholder review +{ + "message": "Create a display banner for our winter sale", + "target_capability_id": "display_300x250_generative", + "brand": { "domain": "mybrand.com" }, + "quality": "draft", + "include_preview": true, + "preview_quality": "production", + "creative_manifest": { + "format_kind": "image", + "assets": { + "product_catalog": { + "type": "product", + "catalog_id": "winter-products" + } + } + } +} + +// Or: Build first, preview separately +// Step 1: Build +{ + "message": "Create a display banner for our winter sale", + "target_capability_id": "display_300x250_generative", + "brand": { "domain": "mybrand.com" }, + "creative_manifest": { + "format_kind": "image", + "assets": { + "product_catalog": { + "type": "product", + "catalog_id": "winter-products" + } + } + } +} + +// Step 2: Preview (using the output manifest from step 1) +{ + "request_type": "single", + "format_kind": "image", + "creative_manifest": { + /* output from build_creative - includes all assets */ + }, + "inputs": [{"name": "Desktop view"}, {"name": "Mobile view"}] +} + +// Step 3: Sync (if preview looks good) +{ + "creative_manifests": [{ /* approved manifest from build_creative */ }] +} +``` + +**Key insight**: The manifest carries everything. Briefs, catalogs, images, text — all live in the assets map and flow through from input to output. No need to pass them separately at each step. + +## Examples + +### Example 1: Pure generation (generative format) + +Generate a creative from scratch using a generative format: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "f6a7b8c9-d0e1-4234-f567-89abcdef0123", + "message": "Create a display banner for our winter sale. Use warm colors and emphasize the 50% discount", + "target_capability_id": "display_300x250_generative", + "brand": { + "domain": "mybrand.com" + }, + "creative_manifest": { + "format_kind": "image", + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "items": [ + { + "offering_id": "winter-sale", + "name": "Winter Sale Collection", + "description": "50% off all winter items" + } + ] + } + } + } +} +``` + +**Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "image", + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "catalog_id": "winter-sale" + }, + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/generated/banner_12345.png", + "width": 300, + "height": 250 + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/winter-sale?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +### Example 2: Format transformation + +Transform an existing 728x90 leaderboard to a 300x250 banner: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "a7b8c9d0-e1f2-4345-a678-9abcdef01234", + "message": "Adapt this leaderboard creative to a 300x250 banner format", + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.mybrand.com/leaderboard.png", + "width": 728, + "height": 90 + }, + "headline": { + "asset_type": "text", + "content": "Spring Sale - 30% Off Everything" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/spring?campaign={MEDIA_BUY_ID}" + } + } + }, + "target_capability_id": "display_300x250" +} +``` + +**Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/resized/banner_67890.png", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Spring Sale - 30% Off" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/spring?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +### Example 3: Transformation with specific instructions + +Adapt a creative for mobile with specific design changes: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "b8c9d0e1-f2a3-4456-b789-abcdef012345", + "message": "Make this mobile-friendly: increase text size, simplify the layout, and make the CTA button more prominent", + "creative_manifest": { + "format_kind": "image", + "assets": { + "background_image": { + "asset_type": "image", + "url": "https://cdn.mybrand.com/bg.jpg", + "width": 300, + "height": 600 + }, + "headline": { + "asset_type": "text", + "content": "Discover Our New Collection" + }, + "body_text": { + "asset_type": "text", + "content": "Shop the latest styles with free shipping on orders over $50" + }, + "cta_text": { + "asset_type": "text", + "content": "Shop Now" + } + } + }, + "target_capability_id": "display_mobile_320x50" +} +``` + +**Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/mobile/banner_mobile_123.png", + "width": 320, + "height": 50 + }, + "headline": { + "asset_type": "text", + "content": "New Collection - Shop Now" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/new?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +### Example 4: Generation with creative brief + +Generate a creative using structured campaign context via `brand` and a brief asset on the manifest: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "c9d0e1f2-a3b4-4567-c890-bcdef0123456", + "message": "Create a display banner for the holiday campaign targeting gift shoppers", + "target_capability_id": "display_300x250_generative", + "brand": { + "domain": "acmecorp.com" + }, + "creative_manifest": { + "format_kind": "image", + "assets": { + "brief": { + "asset_type": "brief", + "name": "Holiday Sale 2025", + "objective": "conversion", + "audience": "Holiday gift shoppers aged 25-55", + "territory": "festive savings", + "messaging": { + "headline": "Holiday Deals Are Here", + "cta": "Shop Now", + "key_messages": [ + "Up to 50% off select items", + "Free shipping on orders over $50" + ] + }, + "reference_assets": [ + { + "url": "https://cdn.acmecorp.com/holiday-mood-board.pdf", + "role": "mood_board", + "description": "Holiday campaign mood board with festive color palette" + } + ] + }, + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "items": [ + { + "offering_id": "holiday-sale", + "name": "Holiday Sale Collection", + "description": "Up to 50% off select holiday items" + } + ] + } + } + } +} +``` + +### Example 5: Generation with compliance requirements + +Generate a financial services creative with regulatory disclosures and prohibited claims: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "d0e1f2a3-b4c5-4678-d901-cdef01234567", + "message": "Create a display banner promoting retirement planning advisory services", + "target_capability_id": "display_300x250_generative", + "brand": { + "domain": "pinnaclewealth.com" + }, + "creative_manifest": { + "format_kind": "image", + "assets": { + "brief": { + "asset_type": "brief", + "name": "Retirement Advisory Q1 2026", + "objective": "consideration", + "audience": "Pre-retirees aged 50-65 with investable assets", + "territory": "trusted financial guidance", + "messaging": { + "headline": "Plan Your Retirement with Confidence", + "cta": "Schedule a Consultation", + "key_messages": [ + "Personalized retirement planning", + "Tax-efficient investment strategies" + ] + }, + "compliance": { + "required_disclosures": [ + { + "text": "Past performance is not indicative of future results.", + "position": "footer", + "jurisdictions": ["US"], + "regulation": "SEC Rule 156" + }, + { + "text": "Securities offered through Pinnacle Wealth Securities, LLC. Member FINRA/SIPC.", + "position": "footer", + "jurisdictions": ["US"], + "regulation": "FINRA Rule 2210" + }, + { + "text": "Capital at risk. The value of investments can go down as well as up.", + "position": "prominent", + "jurisdictions": ["GB"], + "regulation": "FCA COBS 4.5" + }, + { + "text": "Pinnacle Wealth Advisors is a registered investment adviser.", + "position": "footer" + } + ], + "prohibited_claims": [ + "guaranteed returns", + "risk-free investment", + "outperform the market" + ] + } + } + } + } +} +``` + +Compliance requirements differ by jurisdiction: the US requires SEC-mandated disclosures while the UK requires FCA-mandated risk warnings. The third disclosure (no `jurisdictions`) applies globally. The `prohibited_claims` array tells the creative agent which claims to avoid in generated copy. + +### Example 6: Commerce media with brief and product catalog + +Generate a sponsored product carousel with campaign context, compliance disclosures, and a synced product catalog: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "e1f2a3b4-c5d6-4789-e012-def012345678", + "message": "Create a product carousel highlighting the top 4 sale items", + "target_capability_id": "sponsored_product_carousel", + "brand": { + "domain": "novabrands.com" + }, + "creative_manifest": { + "format_kind": "sponsored_placement", + "assets": { + "brief": { + "asset_type": "brief", + "name": "Spring Sale 2026", + "objective": "conversion", + "audience": "Value-conscious shoppers aged 25-45", + "messaging": { + "headline": "Spring Sale — Up to 40% Off", + "cta": "Shop Now" + }, + "compliance": { + "required_disclosures": [ + { + "text": "Sponsored", + "position": "prominent" + }, + { + "text": "Prices may vary by location. See store for details.", + "position": "footer" + } + ] + } + }, + "product_catalog": { + "asset_type": "catalog", + "type": "product", + "catalog_id": "spring_sale_2026" + } + } + } +} +``` + +The brief and product catalog travel together in the manifest's `assets` map. The selected `creative.supported_formats[]` declaration exposes both `brief` and `catalog` slots, so the buying agent can sync the required catalog before submitting. + +### Example 7: Build with inline preview + +Build a creative and get preview renders in the same response: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "f2a3b4c5-d6e7-4890-f123-ef0123456789", + "message": "Create a banner for our spring campaign", + "target_capability_id": "display_300x250_generative", + "brand": { + "domain": "novabrands.com" + }, + "include_preview": true, + "preview_inputs": [ + { "name": "Default" }, + { "name": "Dark mode", "macros": { "COLOR_SCHEME": "dark" } } + ], + "creative_manifest": { + "format_kind": "image", + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "items": [ + { + "offering_id": "spring-promo", + "name": "Spring Collection", + "description": "30% off new arrivals" + } + ] + } + } + } +} +``` + +**Response** (when the agent supports inline preview): +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "image", + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "catalog_id": "spring-promo" + }, + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/generated/spring_abc123.png", + "width": 300, + "height": 250 + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://novabrands.com/spring" + } + } + }, + "preview": { + "previews": [ + { + "preview_id": "prev_default", + "renders": [ + { + "render_id": "r1", + "output_format": "url", + "preview_url": "https://preview.creative-agent.com/abc123/default", + "role": "primary", + "dimensions": { "width": 300, "height": 250 } + } + ], + "input": { "name": "Default" } + }, + { + "preview_id": "prev_dark", + "renders": [ + { + "render_id": "r2", + "output_format": "url", + "preview_url": "https://preview.creative-agent.com/abc123/dark", + "role": "primary", + "dimensions": { "width": 300, "height": 250 } + } + ], + "input": { "name": "Dark mode", "macros": { "COLOR_SCHEME": "dark" } } + } + ], + "expires_at": "2026-03-13T06:00:00Z" + }, + "expires_at": "2026-03-13T06:00:00Z" +} +``` + +The `preview` object contains the same content fields as a [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) single response (`previews`, `interactive_url`, `expires_at`). If the agent does not support inline preview, this field is absent — the buyer agent falls back to a separate `preview_creative` call. If preview generation fails, the response includes `preview_error` with a standard error object (`code`, `message`, `recovery`) instead. + +### Example 8: Draft generation with item limit + +Generate a draft-quality creative from a large catalog, capping the number of items: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "a3b4c5d6-e7f8-4901-a234-f01234567890", + "message": "Create hero images for our top sale items", + "target_capability_id": "sponsored_product_carousel", + "brand": { + "domain": "novabrands.com" + }, + "quality": "draft", + "item_limit": 4, + "creative_manifest": { + "format_kind": "sponsored_placement", + "assets": { + "product_catalog": { + "asset_type": "catalog", + "type": "product", + "catalog_id": "spring_sale_2026" + } + } + } +} +``` + +The catalog may contain hundreds of products, but `item_limit: 4` ensures only 4 hero images are generated. `quality: "draft"` produces fast, lower-fidelity output for review. + +**Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-response.json", + "status": "completed", + "creative_manifest": { + "format_kind": "sponsored_placement", + "assets": { + "product_catalog": { + "asset_type": "catalog", + "type": "product", + "catalog_id": "spring_sale_2026" + }, + "card_1_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/draft/card1_abc123.jpg", + "width": 400, + "height": 400 + }, + "card_2_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/draft/card2_def456.jpg", + "width": 400, + "height": 400 + }, + "card_3_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/draft/card3_ghi789.jpg", + "width": 400, + "height": 400 + }, + "card_4_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/draft/card4_jkl012.jpg", + "width": 400, + "height": 400 + } + } + }, + "expires_at": "2026-03-02T06:00:00Z" +} +``` + +The `expires_at` field signals when the generated CDN URLs expire. Re-build after this time to get fresh URLs. Once the direction is approved, re-submit the output manifest with `quality: "production"` for final renders. + +## Key concepts + +### Brand vs creative brief + +| | Brand | Creative Brief | +|---|---|---| +| **Scope** | Brand identity | Campaign context | +| **Lifespan** | Stable across campaigns | Specific to a campaign or flight | +| **Contains** | Colors, logos, fonts, tone | Audience, territory, messaging, compliance, reference assets | +| **Legal** | Brand-level disclaimers (always-on) | Campaign-specific regulatory disclosures (regional, product-based) | +| **Source** | Brand registry / `/.well-known/brand.json` | Agency or brand team | +| **Lives on** | Resolved via domain lookup | The manifest's assets map (`assets.brief`) | + +Both are optional. `brand` provides stable brand identity (colors, logos, tone) resolved via the domain's `/.well-known/brand.json`. The brief is an asset on the manifest (`assets.brief`), so it travels with the creative through regeneration, resizing, and auditing. The `message` field provides per-request natural language instructions. + +**Precedence**: The `brand` parameter is the authoritative source for creative rendering context (colors, logos, tone). + +**Layering**: The brief asset on the manifest provides structured direction; `message` on the request provides per-request natural language overrides. When both provide conflicting direction, `message` takes precedence as the most specific instruction. + +### Transformation model + +`build_creative` follows a **manifest-in, manifest-out** model: +- Input: Creative manifest (can be minimal or complete -- everything lives in assets) +- Process: Transform/generate based on `message` and manifest content +- Output: Target creative manifest ready for preview or sync (brief carries forward) + +### Pure generation vs transformation + +- **Pure Generation**: Provide `target_capability_id`, any catalog or seed assets required by that capability, and `message`. The creative agent generates a canonical output manifest from scratch. +- **Transformation**: Provide complete `creative_manifest` with all existing assets. The creative agent adapts existing assets to the target format, optionally following guidance in `message`. + +### Integration with other tasks + +1. **build_creative** → Generates manifest (optionally with inline preview via `include_preview`) +2. **preview_creative** → Renders the manifest separately (see [preview_creative](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative)) +3. **sync_creatives** → Traffics the finalized manifest + +Use `include_preview: true` to combine build and preview into one call. If the agent doesn't support it, the response simply omits the `preview` field — fall back to a separate [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) call. Either way, the preview content fields (`previews`, `interactive_url`, `expires_at`) are the same. + +This separation allows you to: +- Build once, preview multiple times with different contexts +- Iterate on build without re-syncing +- Preview before committing to traffic + +### Iterative refinement + +`build_creative` supports multi-turn iteration without a mode flag. The presence and combination of fields determines the operation: + +- **Generation**: `message` + minimal `creative_manifest` (empty or seed assets) + `target_capability_id` +- **Transformation**: full `creative_manifest` + `message` + `target_capability_id` +- **Library retrieval**: `creative_id` + `target_capability_id` + optional `macro_values` +- **Refinement**: previous output as `creative_manifest` + `message` with changes + +To refine, pass the previous response's `creative_manifest` back as input with a new `message`. Alternatively, update the brief asset (`assets.brief`) to change the creative direction — the brief is the buyer-owned source of truth for what the creative should be. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "b4c5d6e7-f8a9-4012-b345-012345678901", + "message": "Make the headline bolder and increase the contrast on the CTA button", + "target_capability_id": "display_300x250_generative", + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.creative-agent.com/generated/banner_12345.png", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "50% Off Winter Sale" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://mybrand.example.com/winter-sale?campaign={MEDIA_BUY_ID}" + } + } + } +} +``` + +## Error codes + +| Code | Description | +|------|-------------| +| [`FORMAT_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-format-not-supported) | The `target_capability_id` (or `target_capability_ids[N]`) is not advertised by this creative agent. Refresh `get_adcp_capabilities.creative.supported_formats[]` and retry with a supported capability. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | The `creative_manifest` is malformed or missing required assets for the target format | +| [`CREATIVE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-not-found) | The `creative_id` does not exist in the agent's library (or in the specified `concept_id`) | +| [`CREATIVE_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-rejected) | The creative failed content-policy, brand-safety, or accessibility review. Accessibility failures SHOULD use `error-details/accessibility-violation.json`. | +| [`COMPLIANCE_UNSATISFIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-compliance-unsatisfied) | A required disclosure from the brief cannot be rendered in the target format (e.g., format does not support the required disclosure position) | diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery.mdx new file mode 100644 index 0000000000..97bfd98ec4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery.mdx @@ -0,0 +1,445 @@ +--- +title: get_creative_delivery +description: "get_creative_delivery retrieves variant-level delivery data with manifests and performance metrics for generative and static creatives in AdCP." +"og:title": "AdCP — get_creative_delivery" +--- + + +Retrieve creative delivery data including variant-level breakdowns with manifests and metrics. This task returns what variants were created from your creatives, what they looked like (via manifests), and how they performed. + +This is a Creative Protocol task. Call it on any agent that declares `"creative"` in `supported_protocols` and exposes the `get_creative_delivery` tool — whether that's a dedicated creative service or a [sales agent implementing the Creative Protocol](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities). + +**Request Schema**: [`/schemas/3.2.0-beta.4/creative/get-creative-delivery-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/get-creative-delivery-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/creative/get-creative-delivery-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/get-creative-delivery-response.json) + +## Request Parameters + +At least one scoping filter (`media_buy_ids` or `creative_ids`) is required. + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. Limits results to creatives within this account. | +| `media_buy_ids` | string[] | Yes* | Filter to specific media buys by publisher ID | +| `creative_ids` | string[] | Yes* | Filter to specific creatives by ID | +| `start_date` | string | No | Start date for delivery period (YYYY-MM-DD, interpreted in the platform's reporting timezone) | +| `end_date` | string | No | End date for delivery period (YYYY-MM-DD, interpreted in the platform's reporting timezone) | +| `max_variants` | integer | No | Maximum variants to return per creative. Useful for generative creatives with large variant counts. | +| `pagination` | object | No | Cursor-based pagination parameters (`max_results`, `cursor`) for the creatives array. When omitted, all matching creatives are returned. | + +\* At least one of `media_buy_ids` or `creative_ids` must be provided. + +## Response + +| Field | Description | +|-------|-------------| +| `account_id` | Account identifier (present when scoped to a specific account) | +| `media_buy_id` | Seller's media buy identifier (present when request was scoped to a single buy) | +| `currency` | ISO 4217 currency code for monetary values (e.g., 'USD', 'EUR') | +| `reporting_period` | Date range with start/end timestamps and `timezone` (IANA identifier — platforms report in their native timezone) | +| `creatives` | Array of creative delivery data with variant breakdowns | +| `pagination` | (Optional) Pagination info with `max_results`, `cursor`, and `has_more`. Present when the request included pagination parameters. | + +### Creative Object + +| Field | Description | +|-------|-------------| +| `creative_id` | Creative identifier | +| `media_buy_id` | Seller's media buy identifier (present when the request spanned multiple media buys) | +| `format_kind` | Canonical format of this creative | +| `totals` | Aggregate delivery metrics across all variants — see [Delivery metrics fields](#delivery-metrics-fields) below | +| `variant_count` | Total number of variants (may exceed `variants` array length when `max_variants` is used) | +| `variants` | Array of variant-level delivery data (empty if creative has no variants yet) | + +### Delivery metrics fields + +Fields available on both `creative.totals` and each `variant` entry. Commonly-used subset — see the [delivery-metrics schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/delivery-metrics.json) for the full list including incrementality, brand lift, and broadcast metrics. + +| Field | Description | +|-------|-------------| +| `impressions` | Impressions delivered | +| `spend` | Amount spent (in `currency`) | +| `clicks` | Total clicks | +| `ctr` | Click-through rate (clicks/impressions) | +| `cpm` | Cost per thousand impressions ((spend/impressions) × 1000) | +| `cost_per_click` | Cost per click (spend/clicks) | +| `views` | Billable views — threshold varies by format and pricing model | +| `completed_views` | Video/audio completions | +| `completion_rate` | Completion rate (completed_views/impressions); `null` when not applicable (e.g. a non-video buy) | +| `quartile_data` | Audio/video quartile completion data — object with `q1_views`, `q2_views`, `q3_views`, `q4_views`; `null` when not applicable (e.g. a non-video buy) | +| `reach` | Unique reach in units specified by `reach_unit`. Measurement window declared via `reach_window`; without it, do not sum across rows | +| `reach_unit` | Unit of measurement for `reach`; required when `reach` is present | +| `reach_window` | Window semantics for reach/frequency — object with `kind` (`cumulative` for uniques since campaign start, `period` for non-overlapping snapshot, `rolling` for trailing window) and `period` (Duration, required for `period` and `rolling`). Optional but strongly recommended whenever `reach` is present | +| `frequency` | Average frequency per `reach_unit`, measured over `reach_window` | +| `grps` | Gross Rating Points delivered (for CPP) | +| `conversions` | Total attributed conversions; equals the sum of `by_event_type[].count` when present | +| `conversion_value` | Total monetary value of attributed conversions | +| `roas` | Return on ad spend (conversion_value/spend) — see note below | +| `cost_per_acquisition` | Cost per conversion (spend/conversions) — see note below | +| `new_to_brand_rate` | Fraction of conversions from first-time brand buyers (0–1) | +| `leads` | Leads generated (convenience alias for `by_event_type` where `event_type='lead'`) | +| `by_event_type` | Conversions by event type — array of `{ event_type, count, value?, event_source_id? }` | +| `by_action_source` | Conversions by action source (website, app, in_store) — array of `{ action_source, count, value?, event_source_id? }` | +| `dooh_metrics` | DOOH-specific data — object with `loop_plays`, `screens_used`, `screen_time_seconds`, `sov_achieved`, `venue_breakdown` | +| `viewability` | Viewability data — object with `vendor`, `measurable_impressions`, `viewable_impressions`, `viewable_rate`, `viewed_seconds` (average in-view duration per measurable impression — pairs with the `viewed_seconds` optimization goal), and `standard`. `standard` SHOULD be present whenever measured viewability values are reported | +| `engagements` | Total ad engagements beyond viewing (platform-specific) | +| `follows` | New followers or subscriptions attributed to delivery | +| `saves` | Saves, bookmarks, or pins attributed to delivery | +| `profile_visits` | In-platform page visits attributed to delivery | +| `engagement_rate` | Platform-specific engagement rate (engagements/impressions) | +| `vendor_metric_values` | Vendor-attested metrics (viewability, attention, etc.) — one entry per vendor and metric identifier | + +> **Spend-derived metrics.** Sellers should not populate `roas` and `cost_per_acquisition` on individual `variant` objects — spend cannot be attributed per-variant since it applies to the creative as a whole. These fields are meaningful only on `creative.totals`. `by_event_type` entries carry `count` and `value` per event type, but not spend-derived rates. + +> **Platform-conditional fields.** `dooh_metrics` is present only for DOOH campaigns. Engagement fields (`engagements`, `follows`, `saves`, `profile_visits`, `engagement_rate`) are platform-specific; not all sellers emit them on standardized fields — some use `variant.ext` for engagement data instead. + +### Variant Object + +Each variant represents a specific execution: a fixed creative (Tier 1), an asset combination the platform selected (Tier 2), or a generated variant (Tier 3). For catalog-driven packages, each catalog item rendered as a distinct ad execution is a variant — the variant's manifest includes the catalog reference with the specific item rendered. + +| Field | Description | +|-------|-------------| +| `variant_id` | Platform-assigned variant identifier | +| `locale_variant_id` | Buyer-assigned localized variant that supplied the served assets. Required for delivered variants of a localized creative, including default fallback; omitted for unlocalized creatives. | +| `manifest` | (Optional) The rendered canonical creative manifest—the actual output served, with `format_kind` and resolved assets. | +| `generation_context` | (Optional, Tier 3) Input signals that triggered generation — e.g., page topic, conversation theme, query category. Platforms provide summarized/anonymized signals, not raw user input. When content context is managed through AdCP content standards, includes an `artifact` reference linking to the specific content artifact. Supports `ext` for vendor-specific context structures. | +| `ext` | (Optional) Platform-specific data. Social platforms use this for engagement metrics (upvotes, comments, shares) that vary by platform. | +| Standard metrics | All [Delivery metrics fields](#delivery-metrics-fields) — same shape as `creative.totals` | + +`creative_id` and `variant_id` are separate namespaces. The canonical build-to-delivery join is `build_creative.variants[].build_variant_id` → promoted `creative_id` → delivery `creative_id`. `variant_id` remains the platform's served execution variant id. + +### Localized delivery attribution + +For a localized creative, every returned execution MUST include +`locale_variant_id` and that value MUST exist in the creative's authoritative +`list_creatives.localization.variants[]` set. This identifies the assets that +actually served after strict RFC 4647 Lookup, an explicit locale fallback, or +the default action and is required for every such path. When the selected +product format carries `locale_policy`, this value MUST also identify a variant +eligible under its accepted language ranges; buyer fallbacks and defaults never +bypass that seller constraint. `variant_id` remains the seller execution identity; +`locale_variant_id` is the buyer's stable locale identity. + +Derived metrics like `ctr`, `completion_rate`, `roas`, and `cost_per_click` are platform-calculated and may not equal naive division of their component fields due to rounding, attribution windows, or filtered impressions. + +## Tier Behavior + +### Tier 1: Standard Creatives + +One creative maps 1:1 to one variant. The variant metrics match the creative totals. + +```json +{ + "media_buy_id": "mb_12345", + "currency": "USD", + "reporting_period": { + "start": "2026-01-20T00:00:00-05:00", + "end": "2026-01-27T23:59:59-05:00", + "timezone": "America/New_York" + }, + "creatives": [ + { + "creative_id": "hero_video_30s", + "totals": { + "impressions": 150000, + "spend": 7500, + "clicks": 4500, + "ctr": 0.03, + "completion_rate": 0.72 + }, + "variants": [ + { + "variant_id": "hero_video_30s", + "impressions": 150000, + "spend": 7500, + "clicks": 4500, + "ctr": 0.03, + "completion_rate": 0.72 + } + ] + } + ] +} +``` + +### Platform engagement metrics + +Social and feed-native platforms include engagement data in the `ext` field on each variant, since engagement types vary by platform: + +```json +{ + "variant_id": "promoted_post_running_community", + "impressions": 85000, + "spend": 4250, + "clicks": 2550, + "ctr": 0.03, + "ext": { + "upvotes": 1240, + "comments": 87, + "shares": 34, + "saves": 156, + "comment_sentiment": "positive" + } +} +``` + +The `ext` field is not standardized across platforms — each platform defines its own engagement schema. Buyers aggregating across social platforms should map platform-specific fields to a common model. + +### Tier 2: Asset Group Optimization + +Buyer provides multiple asset alternatives using a format with `selection_mode: "optimize"`. Platform tests combinations and returns the manifest for each variant showing which assets were selected. + +```json +{ + "media_buy_id": "mb_12345", + "currency": "USD", + "reporting_period": { + "start": "2026-01-20T00:00:00-05:00", + "end": "2026-01-27T23:59:59-05:00", + "timezone": "America/New_York" + }, + "creatives": [ + { + "creative_id": "summer_campaign_assets", + "totals": { + "impressions": 200000, + "spend": 10000, + "clicks": 8000, + "ctr": 0.04 + }, + "variants": [ + { + "variant_id": "var_headline_a_image_c", + "manifest": { + "format_kind": "image", + "assets": { + "headline_0_text": { + "asset_type": "text", + "content": "Summer Sale - 50% Off" + }, + "image_0_url": { + "asset_type": "image", + "url": "https://cdn.brand.com/beach_hero.jpg", + "width": 300, + "height": 250 + } + } + }, + "impressions": 120000, + "spend": 6000, + "clicks": 6000, + "ctr": 0.05 + }, + { + "variant_id": "var_headline_b_image_d", + "manifest": { + "format_kind": "image", + "assets": { + "headline_0_text": { + "asset_type": "text", + "content": "Shop Summer Styles" + }, + "image_0_url": { + "asset_type": "image", + "url": "https://cdn.brand.com/sunset_hero.jpg", + "width": 300, + "height": 250 + } + } + }, + "impressions": 80000, + "spend": 4000, + "clicks": 2000, + "ctr": 0.025 + } + ] + } + ] +} +``` + +### Tier 3: Generative Creative + +Platform generates variants from brand manifest and input contexts. The `manifest` contains the generated assets — which may differ entirely from what the buyer submitted. + +When the publisher uses AdCP content standards, `generation_context` can include an `artifact` reference linking the variant to the specific content (article, video, etc.) that triggered generation. Platforms can also use `ext` for vendor-specific context structures. + +```json +{ + "media_buy_id": "mb_12345", + "currency": "USD", + "reporting_period": { + "start": "2026-01-20T00:00:00-05:00", + "end": "2026-01-27T23:59:59-05:00", + "timezone": "America/New_York" + }, + "creatives": [ + { + "creative_id": "generative_banner", + "totals": { + "impressions": 300000, + "spend": 15000, + "clicks": 12000, + "ctr": 0.04 + }, + "variants": [ + { + "variant_id": "gen_mobile_morning", + "generation_context": { + "context_type": "web_page", + "artifact": { + "property_id": { "type": "domain", "value": "techreview.example.com" }, + "artifact_id": "article_semiconductor_trends_2026" + }, + "topic": "technology, semiconductors", + "device_class": "mobile" + }, + "manifest": { + "format_kind": "image", + "assets": { + "hero_image": { + "asset_type": "image", + "url": "https://cdn.creative.example.com/generated/mobile_morning_v1.jpg", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Start Your Summer Right" + } + } + }, + "impressions": 180000, + "spend": 9000, + "clicks": 9000, + "ctr": 0.05 + }, + { + "variant_id": "gen_desktop_evening", + "generation_context": { + "context_type": "web_page", + "topic": "lifestyle, evening entertainment", + "device_class": "desktop" + }, + "manifest": { + "format_kind": "image", + "assets": { + "hero_image": { + "asset_type": "image", + "url": "https://cdn.creative.example.com/generated/desktop_evening_v1.jpg", + "width": 728, + "height": 90 + }, + "headline": { + "asset_type": "text", + "content": "Evening Deals Await" + } + } + }, + "impressions": 120000, + "spend": 6000, + "clicks": 3000, + "ctr": 0.025 + } + ] + } + ] +} +``` + +## Previewing Variants + +Use [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) with `request_type: "variant"` to see what a specific variant looked like when served: + +```json +{ + "request_type": "variant", + "variant_id": "gen_mobile_morning" +} +``` + +Since each variant includes its full `manifest`, you can also pass the manifest directly to `preview_creative` as a standard single request to re-render it. + +## Relationship to delivery reporting + +| Task | Protocol | What it provides | +|---|---|---| +| [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | Media Buy | WHERE and HOW MUCH: impressions, spend, placement data, optional `by_creative` breakdown | +| `get_creative_delivery` | Creative | WHAT RAN and HOW: variant manifests and variant-level metrics | + +Use `media_buy_id` + `creative_id` as join keys to correlate data across both responses. + +When a sales agent implements both protocols, both tasks are available on the same agent URL. See [Creative capabilities on sales agents](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities) for the full pattern. + +## Cross-agent aggregation + +When running campaigns across multiple sellers, call `get_creative_delivery` on each agent separately and correlate results: + +- **Join key**: Use `creative_id` (buyer-assigned) to correlate the same creative across agents. If you used `concept_id` during upload, filter by concept to group related creatives. +- **`variant_id` scope**: Variant IDs are unique within an agent and creative, not globally. Two agents may generate variants with the same `variant_id` value. Prefix with the agent URL when building aggregated dashboards. +- **Timezone handling**: Each agent may report in its own timezone via `reporting_period.timezone`. Normalize to a common timezone before aggregating metrics. +- **`max_variants` selection**: Agents choose which variants to return when `max_variants` limits the result set. Most agents prioritize by impression volume (most-served first). For representative sampling, make multiple calls with different time ranges rather than relying on a single large `max_variants` value. + +## Building a cross-agent dashboard + +When aggregating delivery data from multiple agents into a unified view, follow this sequence: + +1. **Collect**: Call `get_creative_delivery` on each agent in parallel, using the same `creative_ids` filter. + +2. **Normalize timezones**: Convert each agent's `reporting_period` to a common timezone before summing. + +3. **Merge by `creative_id`**: Group results by `creative_id` across agents. Sum `totals` (impressions, spend, clicks). Do not average derived metrics like `ctr` — recompute them from the summed components. + +4. **Prefix `variant_id`**: Create globally unique variant keys by combining `agent_url + variant_id` (e.g., `https://sales.pinnaclemedia-example.com/var_a1b2c3`). This prevents collisions when two agents assign the same variant ID independently. + +5. **Group by `concept_id`**: For campaign-level roll-ups, use `concept_id` to group related creatives across sizes and sellers. Pull the concept-to-creative mapping from [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) on each agent. + +```javascript +// Pseudocode: aggregate delivery from 3 sellers +const agents = [pinnacle, novaSports, streamhaus]; +const results = await Promise.all( + agents.map(agent => + agent.getCreativeDelivery({ + creative_ids: ['acme_holiday_300x250'], + start_date: '2026-11-01', + end_date: '2026-11-15', + }) + ) +); + +const merged = {}; +for (const [i, result] of results.entries()) { + if (result.errors) continue; // skip failed agents, retry later + for (const creative of result.creatives) { + const key = creative.creative_id; + if (!merged[key]) merged[key] = { impressions: 0, spend: 0, clicks: 0, variants: [] }; + merged[key].impressions += creative.totals.impressions; + merged[key].spend += creative.totals.spend; + merged[key].clicks += creative.totals.clicks || 0; + for (const v of creative.variants || []) { + merged[key].variants.push({ + ...v, + variant_id: `${agents[i].url}/${v.variant_id}`, // globally unique + }); + } + } +} +// Recompute derived metrics +for (const c of Object.values(merged)) { + c.ctr = c.impressions > 0 ? c.clicks / c.impressions : 0; +} +``` + +## Capability declaration + +Agents that support this task expose `get_creative_delivery` in their tool surface and declare Creative Protocol support through [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities): + +```json +{ + "supported_protocols": ["creative"], + "creative": { + "has_creative_library": true + } +} +``` + +Buyers discover candidate creative agents through the registry, then confirm the live endpoint's tool and `get_adcp_capabilities` surfaces. This applies to any endpoint implementing the Creative Protocol, including a sales agent with creative capabilities. diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats.mdx new file mode 100644 index 0000000000..50ad52f491 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats.mdx @@ -0,0 +1,78 @@ +--- +title: list_creative_formats (deprecated) +description: "Deprecated AdCP 3.x named-format discovery task and its canonical 3.2 replacements." +"og:title": "AdCP — list_creative_formats (deprecated)" +testable: true +--- + +`list_creative_formats` is deprecated in AdCP 3.2. It combined three different questions into one agent-global list and therefore could not accurately describe publisher acceptance, product deliverability, and creative production at the same time. + +Existing 3.x agents MAY continue serving the task for compatibility. New implementations MUST use the canonical surfaces below and SHOULD derive any legacy response mechanically from canonical declarations rather than maintaining a second catalog. The task follows its own compatibility schedule; removal of exact plural `format_ids` fields in AdCP 4.0 does not itself remove this task. + +## Use the surface that owns the fact + +| Question | Canonical source | +|---|---| +| What formats does a publisher declare? | The publisher's `/.well-known/adagents.json` `formats[]`, with AgenticAdvertising.org community-mirror fallback when the publisher has not adopted | +| What formats can this sales agent deliver for a product? | [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) → `Product.format_options[]` | +| What can this creative agent build, validate, or preview? | [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) → `creative.supported_formats[]` | + +Sales agents MUST NOT use an agent-global format list as a purchasability promise. Product `format_options[]` is the closed sellable set, and placement declarations may narrow it. + +Creative agents advertise stable build routing separately from publisher/product format identity: + +```json +{ + "creative": { + "supported_formats": [ + { + "capability_id": "streamhaus_vertical_video", + "operations": ["build", "validate", "preview"], + "format": { + "publisher_domain": "shorts.streamhaus.example", + "format_option_id": "vertical_video", + "format_kind": "video_hosted", + "params": { + "aspect_ratio": "9:16", + "duration_ms_range": [3000, 60000] + } + } + } + ], + "preview": { + "routes": [{ + "capability_id": "streamhaus_vertical_video", + "rendering_origin": "agent_approximation" + }] + } + } +} +``` + +The buyer passes `streamhaus_vertical_video` as `target_capability_id` to [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). The returned manifest carries canonical `format_kind: "video_hosted"`; capability IDs never appear on products or manifests. + +## Registry reverse discovery + +The AgenticAdvertising.org registry indexes canonical creative capabilities. To find creative agents that claim they can build an exact publisher format: + +```http +GET /api/registry/agents?publisher_domain=shorts.streamhaus.example&format_option_id=vertical_video&creative_operation=build +``` + +Generic agents can advertise a canonical parameter envelope without publisher identity. A match is valid only when the capability can satisfy every target constraint—not merely because both declarations share the same `format_kind`. + +## Compatibility behavior + +The deprecated request and response schemas remain available at: + +- [`/schemas/3.2.0-beta.4/media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/list-creative-formats-request.json) +- [`/schemas/3.2.0-beta.4/media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/list-creative-formats-response.json) + +Compatibility implementations SHOULD: + +1. Keep canonical declarations as the only authored source. +2. Project named formats only for a peer that still requires them. +3. Never infer a publisher catalog from one seller's products. +4. Never return publisher-declared formats as if every format were deliverable by the responding sales agent. + +See [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) for the complete matching and ownership model. diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives.mdx new file mode 100644 index 0000000000..8432a575b9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives.mdx @@ -0,0 +1,533 @@ +--- +title: list_creatives +description: "list_creatives browses and filters creatives in an AdCP library by asset type, format, status, concept, and tags with cursor-based pagination." +"og:title": "AdCP — list_creatives" +--- + + +Browse and filter creatives in a creative library. Supports filtering by asset type, format, status, concept, tags, date range, and dynamic variables, with pagination and optional field enrichment. + +Implemented by any agent that hosts a creative library — creative agents (ad servers, creative management platforms) and sales agents that manage creatives. + +**Response time**: ~1 second (simple database lookup) + +## Overview + +**Key features:** +- Filter by asset type, format, status, tags, dates, assignments, concepts, and variables +- Sort by creation date, update date, name, status, or assignment count +- Cursor-based pagination for large libraries +- Optionally include assignments, delivery snapshots, items, and dynamic creative optimization (DCO) variables +- Return only specific fields to reduce response size +- Filter by creative concept (groups of related creatives across sizes/formats) +- Find DCO creatives and inspect their dynamic content slots +- Find creatives with seller indicators such as package-scoped creative fatigue + +## Request parameters + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} +**Schema**: [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-creatives-request.json) + +### Core parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `filters` | object | No | Filter criteria — see [filtering options](#filtering-options) below | +| `sort` | object | No | Sorting parameters | +| `pagination` | object | No | Pagination controls | + +### Data inclusion options + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `include_assignments` | boolean | No | Include package assignment information (default: true) | +| `assignment_projection` | string | No | `all` (default) returns active assignments; `matching` returns only assignments matching `filters.indicator_types` and requires that filter. | +| `assignment_limit` | integer | No | Maximum nested assignment rows per creative (default: 50, maximum: 200). | +| `include_snapshot` | boolean | No | Include a lightweight delivery snapshot — lifetime impressions and last-served date (default: false). For detailed analytics, use [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery). | +| `include_items` | boolean | No | Include items for multi-asset formats like carousels and native ads (default: false) | +| `include_variables` | boolean | No | Include dynamic content variable definitions (default: false) | +| `include_pricing` | boolean | No | Include `pricing_options` on each creative (default: false). Requires `account`. | +| `include_purged` | boolean | No | Include soft-purged creative tombstones (default: false). See [Purged tombstones](#purged-tombstones). | +| `include_webhook_activity` | boolean | No | Include recent webhook fires per creative (default: false). See [Webhook activity](#webhook-activity). | +| `webhook_activity_limit` | integer | No | Maximum `webhook_activity[]` records per creative when `include_webhook_activity: true` (default: 50, range 1–200). | +| `account` | [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference for pricing. When provided with `include_pricing`, the agent returns `pricing_options` from this account's rate card on each creative. | +| `fields` | array | No | Specific optional fields to return (omit for all fields). Every row still includes the released base envelope: `creative_id`, `name`, `status`, `created_date`, `updated_date`, and exactly one of `format_id` or `format_kind`. Optional selections include `"assignments"`, `"assets"`, `"pricing_options"`, and `"rights"` / `"rights_attestation_evaluations"`; selecting rights evaluations automatically includes `rights`. | + +## Filtering options + +The `filters` object supports these optional, composable filters: + +| Filter | Type | Description | +|--------|------|-------------| +| `accounts` | [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references)[] | Filter by owning accounts | +| `format_kinds` | CanonicalFormatKind[] | Filter by canonical format kinds | +| `format_ids` | FormatID[] | Deprecated named-format compatibility filter | +| `asset_types` | AssetContentType[] | Filter by asset types directly assigned to top-level creative asset slots; values within the array use OR logic | +| `statuses` | [CreativeStatus](/dist/docs/3.2.0-beta.4/creative/specification#creative-status-lifecycle)[] | Filter by approval status | +| `tags` | string[] | Filter by tags (all must match) | +| `tags_any` | string[] | Filter by tags (any must match) | +| `name_contains` | string | Case-insensitive name search | +| `creative_ids` | string[] | Filter by specific creative IDs (max 100) | +| `concept_ids` | string[] | Filter by concept groupings | +| `has_variables` | boolean | Filter for DCO creatives with dynamic variables | +| `created_after` / `created_before` | date-time | Filter by creation date range | +| `updated_after` / `updated_before` | date-time | Filter by last-modified date range | +| `assigned_to_packages` | string[] | Filter by package assignments * | +| `media_buy_ids` | string[] | Filter by media buy assignments * | +| `unassigned` | boolean | Filter for unassigned creatives * | +| `has_served` | boolean | Filter for creatives that have served at least one impression * | +| `indicator_types` | `IndicatorType[]` | Filter for creatives with at least one package assignment carrying any requested current indicator type. See the [standard indicator catalog](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators#standard-indicator-types). * | + +\* Assignment-related filters are specific to sales agents. Standalone creative agents ignore these. + +### Asset-type matching + +`asset_types` matches a creative when at least one direct object value in the top-level `creative.assets` map has an exact `asset_type` value in the requested set. Multiple requested values use **OR logic**. Array-valued slots are not inspected, and matching does not recurse into nested asset fields such as `cards[].media`; broader traversal is deferred. + +All active filter fields compose with **AND logic**. For example, the following request returns published-post creatives that also match the requested canonical format kind; a creative satisfying only one condition is excluded: + +```json +{ + "filters": { + "asset_types": ["published_post"], + "format_kinds": ["native_in_feed"] + } +} +``` + +For deterministic status and assignment filters, every returned creative MUST +satisfy the supplied predicates: `status` MUST be a member of `statuses`, and a +sales agent applying `media_buy_ids` MUST return only creatives with an +assignment to at least one requested media buy. These predicates remain in force +across every page and compose with each other and with all other active filters. +A seller MUST NOT accept them and return the unfiltered library. + +A filtered request can validly return the same rows as an unfiltered request +when every visible creative already matches. Conformance is established from +status and assignment membership—not by requiring the two response payloads to +differ. Standalone creative agents retain the documented exception for +sales-agent-specific assignment filters. + +Use `asset_types: ["published_post"]` to find existing-published-post reference creatives across sellers without enumerating publisher-specific format options, or `asset_types: ["zip"]` to find HTML5 bundle archives. Values such as `url`, `text`, and `image` are common companion assets, so they often produce broad result sets when used alone. + +Agents that do not implement `asset_types` MUST ignore that field and apply all other active filters. They must not reject the request solely because the filter is unsupported. Because unsupported agents deliberately over-return, buyers that require an exact filtered result MUST retain a local fallback: request `assets` (or omit `fields`), traverse every page until `pagination.has_more` is false, and locally inspect the returned top-level asset objects. When a seller returns `query_summary.filters_applied`, buyers can verify that it includes `asset_types`; absence means the local fallback is required. + + +**Archived creatives are excluded by default.** To include archived creatives in results, explicitly include `"archived"` in the `statuses` array. Suspended creatives are not archived; include `"suspended"` when you specifically want recoverably offline creatives such as published-post references with expired authorization. + + + +For published-post reference products, `list_creatives` is limited to the downstream publisher identities the seller is authorized to inspect. If a product requires a second platform connection such as `publisher_identity` and it is missing, the seller should return [`AUTHORIZATION_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-authorization-required) with `error.details.missing_connections[]`. It should not present `list_creatives` as global platform post search. + + + +## Sorting options + +Sort results by various fields with ascending or descending order: + +```json +{ + "sort": { + "field": "created_date", + "direction": "desc" + } +} +``` + +**Available sort fields:** +- `created_date` - When the creative was created (default) +- `updated_date` - When creative was last modified +- `name` - Creative name (alphabetical) +- `status` - Approval status +- `assignment_count` - Number of package assignments + +## Pagination + +Control result set size with cursor-based pagination: + +```json +{ + "pagination": { + "max_results": 50, + "cursor": "eyJjcmVhdGVkX2RhdGUiOi4uLn0" + } +} +``` + +## Response format + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} +**Schema**: [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-creatives-response.json) + +The response provides creative data with optional enrichment: + +```json +{ + "query_summary": { + "total_matching": 1, + "returned": 1, + "filters_applied": ["status=approved"] + }, + "pagination": { + "has_more": false, + "total_count": 1 + }, + "creatives": [ + { + "creative_id": "ft_88201", + "name": "Holiday Sale - Medium Rectangle", + "format_kind": "image", + "status": "approved", + "created_date": "2026-01-15T10:30:00Z", + "updated_date": "2026-01-15T14:20:00Z", + "concept_id": "concept_holiday_2026", + "concept_name": "Holiday 2026 Campaign", + "variables": [ + { + "variable_id": "headline_text", + "name": "Headline", + "variable_type": "text", + "default_value": "Holiday Sale - 50% Off", + "required": true + } + ] + } + ], + "format_summary": { + "display_static_300x250": 1 + }, + "status_summary": { + "approved": 1 + } +} +``` + +### Per-creative fields + +| Field | Type | Description | +|-------|------|-------------| +| `creative_id` | string | Unique creative identifier | +| `name` | string | Human-readable name | +| `format_kind` | string | Canonical format kind | +| `format_option_ref` | object | Optional exact publisher/product option reference | +| `format_id` | object | Deprecated 3.x named-format compatibility field | +| `status` | string | Approval status | +| `created_date` | string | Creation timestamp | +| `updated_date` | string | Last modified timestamp | +| `assets` | object | Creative assets (images, text, URLs, etc.) | +| `localization` | object | Exact materialized locale assets, buyer-assigned variant identities, and default/unmatched policy for localized creatives. | +| `localization_unavailable` | object | Fail-closed per-item errors and retryability when exact localization readback cannot be constructed. Mutually exclusive with `localization`. | +| `tags` | string[] | Tags for categorization | +| `rights` | array | Exact retained rights constraints and portable references. Presentation only; not proof of seller verification. | +| `rights_attestation_evaluations` | array | Seller-produced, freshness-bounded grant evaluations. Each reference must exactly match one reference in the returned `rights` array. | +| `concept_id` | string | Creative concept ID | +| `concept_name` | string | Human-readable concept name | +| `variables` | array | DCO variable definitions (when `include_variables=true`) | +| `assignments` | object | Package assignments (when `include_assignments=true`) | +| `snapshot` | object | Delivery snapshot (when `include_snapshot=true`) | +| `snapshot_unavailable_reason` | string | Why snapshot is missing — `SNAPSHOT_UNSUPPORTED`, `SNAPSHOT_TEMPORARILY_UNAVAILABLE`, or `SNAPSHOT_PERMISSION_DENIED` | +| `items` | array | Items for multi-asset formats (when `include_items=true`) | +| `pricing_options` | [VendorPricingOption](/dist/docs/3.2.0-beta.4/creative/specification#pricing)[] | Pricing options for this creative (when `include_pricing=true` and `account` provided). Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). Same pattern as [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) and [`list_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards). | + +### Assignment indicators + +Creative-library sellers that advertise `list_creatives` in `media_buy.relationship_notifications.projection_tasks` attach evaluated indicator state to `assignments.assigned_packages[]` and include `media_buy_id` plus `approval_status` on every row, including unknown rows. These fields mirror [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) for the same relationship. A mixed publisher/placement outcome uses `approval_status: "partially_approved"` plus complete `approval_scopes[]`; the assignment webhook remains a compact invalidation and buyers reread these scopes. Each evaluated row includes `indicator_types_evaluated`, `indicators_as_of`, and `indicators[]`; omitted types remain unknown. + +```json +{ + "include_assignments": true, + "filters": { + "indicator_types": ["creative_fatigue"] + }, + "fields": ["creative_id", "assignments"], + "assignment_projection": "matching", + "assignment_limit": 50, + "pagination": { + "max_results": 100 + } +} +``` + +This request limits optional payload to assignments while retaining each row's released base envelope (`creative_id`, `name`, `status`, dates, and one format identity). `assignment_count` remains the total active relationship count; `returned_assignment_count`, optional `matching_assignment_count`, and `assignments_truncated` describe the bounded nested projection. When truncated, use `get_media_buys` as the complete repair path. + +The standard indicator shape intentionally contains no indicator ID, source envelope, lifecycle status, or sub-version. The responding seller is the source; AdCP defines the broad meaning of the type for the negotiated protocol release. Seller-specific scores, methodology, evaluation windows, and upstream attribution belong in `ext`. + +Omitted `indicators` means unknown. An empty array is evaluated-clear only for `indicator_types_evaluated` and declared coverage. Do not infer clearing from filtered/paginated disappearance; directly reread without `indicator_types`. See [Indicators and Warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators). + +### Rights attestation readback + +Selecting `fields: ["rights_attestation_evaluations"]` automatically includes `creative_id` and `rights`. Every evaluation's `{rights_id, content_digest, reference}` must select exactly one retained constraint and one byte-for-byte equal `attestation_refs` entry. The evaluation array is complete rather than independently truncated: because `rights` has no item ceiling, neither does its evaluation readback. A `verified` result is reusable only when the seller retrieves the byte-identical result from its own local evaluation store keyed by `(evaluated_by, reference_digest)`, for that exact unchanged grant, and only until `valid_until`. The `evaluated_by` string alone is not provenance; buyer-authored and foreign-seller readback fails closed. The result is not a serving authorization and does not replace use, country, time, package, or impression-cap checks. When the seller advertises `media_buy.rights_attestations.requirement: "required"`, every applicable constraint on a serving-eligible creative needs at least one current verified result. + +### Localized creative readback + +For a localized creative, top-level `creative_id` identifies the creative and +`localization` is the authoritative locale-topology round trip. The localization +object lists exactly one source plus every materialized target variant; +source-only monolingual topology therefore contains one variant. It preserves +the originating request's exact source ID/locale, target ID/locale set, default +ID, unmatched action, and any explicit locale fallback rules. Each entry +returns complete resolved assets under its buyer-assigned `locale_variant_id`; no seller- or +platform-assigned variant ID is required. The top-level creative `status` is the +single review lifecycle for the complete locale set. + +Verifiers enforce unique locale and buyer locale-variant ID values, exactly one +source role, a default ID that references one variant, unique fallback language +ranges whose IDs reference stored variants, and +equality between source readback assets and top-level creative assets. +These rules are machine-readable in `x-adcp-validation` because draft-07 +`uniqueItems` compares whole objects and cannot express uniqueness or reference +integrity by property. + +This object is atomic. If the seller omits a requested locale, normalizes it +to a different locale, or loses an asset or identity, the seller returns +`localization_unavailable` instead of a partial `localization` object. The item +remains in the current page and counts toward `query_summary.returned` and +pagination. Buyers may use its base metadata but MUST NOT infer locale +eligibility. Selecting `fields: ["localization"]` automatically includes the +creative ID, status, assets, format identity, and unavailable state +needed to interpret this result. + +At delivery, sellers apply strict RFC 4647 Lookup: progressively truncate the +requested range and match only an equal seller-eligible canonical tag. A +selected product or placement `locale_policy` first filters this readback with +RFC 4647 Basic Filtering; it never mutates or removes the globally stored +variants. When no variant matches for a preference, sellers apply the most-specific explicit +`locale_fallbacks` rule for that preference before moving to the next one. When +all preferences miss both paths, they follow `unmatched_locale_action`: serve +`default_locale_variant_id` or do not serve. +The ordered preference list itself comes from the seller's serving environment; +AdCP neither carries it here nor defines how browser, content, geography, user, +app, or platform signals produce it or their precedence. +The chosen `locale_variant_id` is reported by [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery). + +### Pricing + +When `include_pricing=true` and `account` is provided, each creative includes `pricing_options` from the account's rate card: + +```json +{ + "pricing_options": [ + { + "pricing_option_id": "po_video_cpm", + "model": "cpm", + "cpm": 0.50, + "currency": "USD" + } + ] +} +``` + +The buyer passes the applied `pricing_option_id` (from the [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) response) in [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) for billing verification. Vendors may offer multiple options — volume/commitment tiers, context-specific rates (premium vs. standard placements), or entirely different pricing models for different product lines. This is the same pattern used by [signals](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) and [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). + +### Delivery snapshot + +When `include_snapshot=true`, each creative includes a lightweight delivery snapshot for operational questions like "is this creative active?" or "when did it last serve?" This is not analytics — for detailed performance data, use [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery). + +```json +{ + "snapshot": { + "as_of": "2026-03-08T14:30:00Z", + "staleness_seconds": 3600, + "impressions": 145200, + "last_served": "2026-03-07T22:15:00Z" + } +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `as_of` | date-time | Yes | When this snapshot was captured | +| `staleness_seconds` | integer | Yes | Maximum age of data in seconds | +| `impressions` | integer | Yes | Lifetime impressions (not scoped to any date range) | +| `last_served` | date-time | No | Last time this creative served. Absent when it has never served. | + +### Purged tombstones + +When a creative is destroyed via [`creative.purged`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/creative-purged-webhook.json) with `purge_kind: soft`, the seller retains a tombstone for 30 days from the purge timestamp. The tombstone surfaces on `list_creatives` only when the request sets `include_purged: true`: + +```json +{ + "creative_id": "ft_87100", + "name": "Holiday Sale - Leaderboard (purged)", + "status": "approved", + "purge": { + "kind": "soft", + "at": "2026-05-18T02:59:48Z", + "reason_code": "retention_expired" + } +} +``` + +The `status` field on a tombstone is **frozen at its pre-purge value** (in the example above, `"approved"` is what the creative was right before purge — not a current claim). Buyers MUST treat the creative as gone: assignments, serving operations, and delivery reads no longer apply. The presence of the `purge` block is the unambiguous signal. + +Hard-purged creatives (`purge_kind: hard`, used for legal erasure under GDPR Article 17 / CCPA / equivalent) retain no tombstone; the [`creative.purged`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/creative-purged-webhook.json) webhook is the only signal. See the [snapshot-and-log conforming-pairs catalog](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log#current-conforming-pairs) for the recovery exclusion. + +### Webhook activity + +When `include_webhook_activity: true`, each returned creative carries a `webhook_activity[]` array of the most recent fires scoped to that creative — `creative.status_changed`, `creative.purged`, `creative.assignment_changed`, and assignment-level `indicators.changed` deliveries. This is the buyer's debug surface for "did the publisher fire? did my endpoint receive it? was the retry trail clean?" — the same shape and contract as `webhook_activity[]` on [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). See [Webhook activity log pattern](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log#webhook-activity-log-pattern) for the full normative contract (retention, three-state presence, request-field conventions). + +**To subscribe** when the seller declares `media_buy.relationship_notifications`, register a [`notification_configs[]`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts#account-level-webhook-subscriptions) entry on the account via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts). The seller fires per-subscriber against each entry whose `event_types[]` includes the type. Indicator support itself may be poll-only; push-capable sellers may advertise `indicators.changed` and independently advertise `creative.assignment_changed`. Subscriptions are prospective, so establish a complete all-status or known-ID baseline through `get_media_buys` after activation. Dedupe later invalidations and reread `get_media_buys` rather than applying payload state; `webhook_activity[]` on this read is a bounded reverse projection and debug log, not proof of complete repair. + +Three-state presence applies: + +- **Field omitted** — seller does not surface webhook activity on this read. +- **`[]`** — seller surfaces the field but no fires fall in the retention window for this creative. +- **Non-empty** — actual records, most recent first, capped at `webhook_activity_limit` (max 200). + +Correlate to your endpoint logs by `idempotency_key`. Each record's `notification_type` discriminates the fire kind: + +```json +{ + "webhook_activity": [ + { + "idempotency_key": "whk_01HW9D2T3VXQ5M7K9N1P3R5S7U", + "notification_id": "cs_ft88201_2026_05_18a", + "subscriber_id": "buyer-primary", + "fired_at": "2026-05-18T14:20:00Z", + "completed_at": "2026-05-18T14:20:00Z", + "notification_type": "creative.status_changed", + "attempt": 1, + "status": "success", + "url": "https://buyer.example/webhooks/adcp/creative", + "http_status_code": 200, + "response_time_ms": 142, + "payload_size_bytes": 612, + "error_message": null + } + ] +} +``` + +Buyers diagnose "no fires arrived" by combining: (a) subscriber registration state on `list_accounts.accounts[].notification_configs[]` — is the right URL active with the right `event_types[]`? — and (b) seller capability declaration via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — does the seller support the event types I subscribed to? Field omission on `webhook_activity` alone does not distinguish "seller doesn't surface the log" from "no fires occurred." + +### Buyer handler (end-to-end) + +A buyer's webhook handler for `creative.status_changed` correlates each fire with library state via `creative_id`, dedupes on `idempotency_key`, and re-reads `list_creatives` for the authoritative snapshot (per [snapshot-and-log Rule 3](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log#the-five-rules)): + +```javascript +// POST /webhooks/adcp/creative +async function handleCreativeWebhook(req, res) { + // 1. Verify signature per the registered scheme (RFC 9421 by default). + if (!verifyWebhookSignature(req)) return res.status(401).end(); + + const fire = req.body; // creative-status-changed-webhook or creative-purged-webhook + const { notification_type, idempotency_key, creative_id, account_id } = fire; + + // 2. Dedupe at-least-once delivery. + if (await alreadyProcessed(idempotency_key)) return res.status(200).end(); + + // 3. Re-read snapshot for authoritative state. Push is signal; snapshot is truth. + const snapshot = await testAgent.listCreatives({ + filters: { creative_ids: [creative_id] }, + include_purged: notification_type === "creative.purged" + }); + + // 4. Apply local effects from the snapshot, not the webhook payload. + await reconcileCreative(snapshot.creatives[0]); + + await markProcessed(idempotency_key); + return res.status(200).end(); +} +``` + +Two pitfalls this handler avoids: (1) applying state from the webhook payload directly (ordering and re-emission make the payload non-authoritative); (2) skipping dedup (sellers retry on non-2xx and re-emit on missed-events warnings). + +## Account requirements + + +Creative agents that host a library should implement the [accounts protocol](/dist/docs/3.2.0-beta.4/accounts/overview) ([`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) / [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts)) so buyers can establish access before querying creatives. This is the same accounts protocol used by sales agents for media buys — there is no separate version. Sales agents that already implement the accounts protocol for media buys do not need to do anything additional. + + +## Examples + +### Concept-scoped query with variables + +List all approved creatives in a specific concept, including DCO variable definitions: + +```json +{ + "filters": { + "concept_ids": ["concept_holiday_2026"], + "statuses": ["approved"] + }, + "include_variables": true, + "sort": { + "field": "created_date", + "direction": "desc" + } +} +``` + +### Format-specific query + +Find canonical image creatives across concepts: + +```json +{ + "filters": { + "format_kinds": ["image"], + "statuses": ["approved"] + } +} +``` + +### Find DCO creatives + +Find creatives with dynamic content variables for personalized campaigns: + +```json +{ + "filters": { + "has_variables": true, + "statuses": ["approved"] + }, + "include_variables": true +} +``` + +### Field-limited query + +Get minimal creative data for a selection dropdown: + +```json +{ + "fields": ["creative_id", "name", "format_kind", "status"], + "include_assignments": false, + "filters": { + "statuses": ["approved"] + }, + "sort": { + "field": "name", + "direction": "asc" + } +} +``` + +### Library health check + +Find active creatives with delivery snapshots to identify stale or dormant assets: + +```json +{ + "filters": { + "media_buy_ids": ["mb_summer_2026", "mb_spring_2026"], + "statuses": ["approved"] + }, + "include_assignments": true, + "include_snapshot": true, + "sort": { + "field": "updated_date", + "direction": "desc" + } +} +``` + +## Related tasks + +- [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery) - Detailed performance analytics with date ranges, variant breakdowns, and full delivery metrics +- [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) - Build manifests from library creatives or generate from scratch +- [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) - Upload and manage creative assets on any agent hosting a creative library +- [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) - Discover product, publisher, and creative-agent format declarations +- [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) - Generate previews of creative manifests diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers.mdx new file mode 100644 index 0000000000..fd7c6a5fb2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers.mdx @@ -0,0 +1,141 @@ +--- +title: list_transformers +description: "list_transformers discovers account-scoped creative transformers — the agent-offered, selectable units of build capability (voices, models, styles) used by build_creative." +"og:title": "AdCP — list_transformers" +testable: true +--- + + +Discover the **transformers** a creative agent offers for your account. A transformer is the creative analog of a media-buy product: an agent-offered, account-scoped, selectable unit of build capability (a voice, a model, a style, a director) with a typed configuration surface and per-account pricing. You discover transformers here, then select one with `transformer_id` in [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). + +**Response Time**: ~1 second (account-scoped lookup) + +**Authentication**: Account-scoped. Transformers, their enumerable option values, and pricing are resolved for the calling credential — including custom values you configured (e.g. cloned voices) that exist only for your account. + +**Request Schema**: [`/schemas/3.2.0-beta.4/creative/list-transformers-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-transformers-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/creative/list-transformers-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-transformers-response.json) + +Offered only by agents that set `creative.supports_transformers: true` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). + +## Why transformers + +The set of render knobs a creative agent exposes — and their legal values — is **account-specific and dynamic**. Your configured voices aren't a global enum or a list you hold; the *agent* knows them, and the set changes when you add one. So discovery flows agent → buyer, the same way [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) surfaces account-scoped inventory. `list_transformers` is that discovery surface for creative build capability. + +The agent chooses granularity: a distinct voice or model may be its own transformer, or a single transformer may expose `voice`/`model` as an enumerable `config` param. Either way you use the same call — list transformers, expand a param if you want its values. + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `transformer_ids` | string[] | No | Return only these specific transformer IDs | +| `input_format_kinds` | string[] | No | Filter to transformers accepting any of these canonical format kinds | +| `output_capability_ids` | string[] | No | Filter to transformers that can produce any of these `creative.supported_formats[].capability_id` values | +| `name_search` | string | No | Search transformers by name (case-insensitive partial match) | +| `brief` | string | No | Natural-language brief to rank/filter transformers and their option values (e.g. "warm female Spanish-language voiceover"). Curates to intent rather than returning the full set. | +| `expand_params` | string[] | No | Param `field` names for which to return the **first page** of account-scoped option **values** inline on `params[].options[]`. Omit for the lean default (descriptors only). | +| `expand_pagination` | object[] | No | Fetch the **next page** of a specific param's options, scoped per `{ transformer_id, field, options_cursor }` (cursor from a prior response's `params[].options_cursor`). Use once you hold a cursor, instead of `expand_params`. | +| `include_pricing` | boolean | No | Include `pricing_options` on each transformer. Requires `account`. | +| `account` | AccountRef | Conditional | Required when `include_pricing` is true. Transformers are account-scoped regardless. | +| `pagination` | object | No | `max_results` and `cursor` (opaque cursor from previous response) | + +### The `expand` mode + +By default the response returns each transformer's param **schemas** with small closed enums inlined (e.g. `mastering_preset`). To get the **values** of an account-scoped enumerable param (e.g. your voices), name it in `expand_params` — that returns the **first page** on `params[].options[]`. When a param's values are truncated, its `params[].options_cursor` is set; fetch the next page by passing `{ transformer_id, field, options_cursor }` in **`expand_pagination`** (each `(transformer, param)` pages independently). Values are brief-filtered — "warm Spanish female voice" narrows a 300-voice catalog to a handful instead of dumping all of them. There is no separate options endpoint; value enumeration (and its pagination) is a mode of this one tool. + +## Response + +| Field | Description | +|-------|-------------| +| `transformers` | Array of transformer descriptors (see below) | +| `errors` | Optional array of task-specific errors and warnings | +| `pagination` | Pagination cursor when more transformers are available | + +Each transformer carries: + +| Field | Description | +|-------|-------------| +| `transformer_id` | Stable id; pass to [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) `transformer_id` | +| `name` | Human-readable name | +| `input_formats` / `output_capability_ids` | Canonical declarations it accepts and creative capabilities it produces. A `build_creative` target MUST be a subset of `output_capability_ids`. Omitted `input_formats` means it builds from a brief or raw assets. | +| `params` | Config knobs (see [Transformer Param](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/transformer-param.json)): `field`, `type`, `value_source` (`inline`/`range`/`enumerable`/`free_text`), `allowed_values`/`minimum`/`maximum`, `options[]`+`options_cursor` (when expanded), `max_length` (for `free_text`), `default`. `free_text` is an open buyer-authored string (e.g. a `negative_prompt`); a param MUST NOT be a generation-count knob — count rides `max_variants`/`max_creatives`. | +| `pricing_options` | Per-account rate card. `applies_to_output_capability_ids` may price different canonical outputs differently; an unscoped option is the default. | + +See [Transformer schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/transformer.json) for the complete object. + +## Common Scenarios + +### Discover voices for a brief, with values + + + +```javascript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { ListTransformersResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.listTransformers({ + account: { account_id: 'acct_acme' }, + brief: 'warm female Spanish-language voiceover', + output_capability_ids: ['audio_vo'], + expand_params: ['voice'], + include_pricing: true, +}); + +const parsed = ListTransformersResponseSchema.parse(result); +for (const t of parsed.transformers) { + console.log(t.transformer_id, t.name); + const voice = t.params?.find((p) => p.field === 'voice'); + for (const opt of voice?.options ?? []) console.log(' voice:', opt.value, opt.metadata); +} +``` + +```python test=false +import asyncio +from adcp.testing import test_agent +from adcp import ListTransformersResponse + +async def main(): + result = await test_agent.list_transformers( + account={"account_id": "acct_acme"}, + brief="warm female Spanish-language voiceover", + output_capability_ids=["audio_vo"], + expand_params=["voice"], + include_pricing=True, + ) + parsed = ListTransformersResponse.model_validate(result) + for t in parsed.transformers: + print(t.transformer_id, t.name) + +asyncio.run(main()) +``` + + + +### Then build with the selected transformer + +Pass the chosen `transformer_id` and a typed `config` (keyed by each param's `field`) to [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative): + +```json test=false +{ + "transformer_id": "audiostack_voiceover", + "config": { "voice": "isaac", "speaking_rate": 1.1, "mastering_preset": "podcast" }, + "creative_manifest": { "format_kind": "audio_hosted", "assets": { "script": { "asset_type": "text", "content": "Discover the new winter collection." } } }, + "target_capability_id": "audio_vo", + "account": { "account_id": "acct_acme" }, + "idempotency_key": "0c1d2e3f-4a5b-6c7d-8e9f-a0b1c2d3e4f5" +} +``` + +## Error Handling + +| Code | Meaning | Recovery | +|------|---------|----------| +| [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) | `include_pricing` requested without a resolvable account | Supply `account` / authenticate | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | Malformed filter or pagination cursor | Correct the request | + +Unknown `expand_params` (a `field` no transformer exposes) are ignored, not an error — the param simply returns no `options`. + +## Learn More + +- [build_creative](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) — select a transformer and produce creatives (incl. variants) +- [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — `creative.supports_transformers` discriminator +- [Vendor pricing](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/vendor-pricing-option.json) — the `per_unit` rate model diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced.mdx new file mode 100644 index 0000000000..452173196c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced.mdx @@ -0,0 +1,325 @@ +--- +title: preview_creative (Advanced) +description: "Advanced AdCP preview patterns including format showcase pages, caching strategies, and batch preview workflows for creative agents." +"og:title": "AdCP — preview_creative (Advanced)" +--- + + +Advanced patterns for creative preview integration including workflows, caching strategies, and implementation notes. + +For basic usage, see [preview_creative](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative). + +## Common Workflows + +### Format Showcase Pages + +Build a browsable catalog of available formats: + +```typescript +// 1. List all formats from creative agent +const capabilities = await creative_agent.get_adcp_capabilities({ protocols: ["creative"] }); +const formats = capabilities.creative.supported_formats; + +// 2. Generate format card previews (batch + HTML) +const formatPreviews = await creative_agent.preview_creative({ + request_type: "batch", + output_format: "html", + requests: formats.map(capability => ({ + creative_manifest: createExampleManifest(capability.format) + })) +}); + +// 3. Render in a grid +function FormatCatalog({ formatPreviews }) { + return ( +
+ {formatPreviews.results.map((result, idx) => ( + result.success && ( +
+ ) + ))} +
+ ); +} +``` + +### Campaign Review Grid + +Review all creatives before launch: + +```typescript +const campaignCreatives = await getCreativesForCampaign(campaignId); + +const previews = await creative_agent.preview_creative({ + request_type: "batch", + output_format: "html", + requests: campaignCreatives.map(c => ({ creative_manifest: c.manifest })) +}); + +function CampaignReview({ previews }) { + return ( +
+ {previews.results.map((result, idx) => ( +
+
+ + +
+ ))} +
+ ); +} +``` + +### Web Component Integration + +For production applications with lazy loading: + +```html + + +
+ + +
+``` + +**Benefits:** +- Shadow DOM for CSS isolation +- Lazy loading (only loads when visible) +- Framework agnostic + +## Choosing Output Format + +**Use `output_format: "url"` (default) when:** +- Security is paramount (third-party creatives) +- Building interactive preview tools +- Need iframe isolation + +**Use `output_format: "html"` when:** +- Building format catalogs (10+ formats) +- Creating campaign review grids (20+ creatives) +- Server-side rendering +- Working with trusted creative agents only + +## Caching Strategy + +Cache individual preview results by canonical format identity (`format_kind` plus optional `format_option_ref`) + manifest hash: + +```typescript +function cachePreviewResults(results, formatIds, manifests) { + results.forEach((result, idx) => { + if (result.success) { + const cacheKey = `${formatIds[idx]}:${hashManifest(manifests[idx])}`; + cache.set(cacheKey, result.response, result.response.expires_at); + } + }); +} + +async function getPreviewsWithCache(formatIds, manifests) { + const cached = []; + const toFetch = []; + + formatIds.forEach((id, idx) => { + const cacheKey = `${id}:${hashManifest(manifests[idx])}`; + const cachedResult = cache.get(cacheKey); + + if (cachedResult && !isExpired(cachedResult.expires_at)) { + cached[idx] = cachedResult; + } else { + toFetch.push({ idx, id, manifest: manifests[idx] }); + } + }); + + // Batch fetch only missing previews + if (toFetch.length > 0) { + const fetched = await client.preview_creative({ + request_type: "batch", + output_format: "html", + requests: toFetch.map(f => ({ creative_manifest: f.manifest })) + }); + + fetched.results.forEach((result, i) => { + cached[toFetch[i].idx] = result.response; + }); + } + + return cached; +} +``` + +**Key points:** +- Cache by canonical format identity + manifest hash (not the entire batch) +- Request [A,B,C] → cache each separately +- Later request [B,C,D] → only fetch D +- Always check `expires_at` before using cached previews + +## Preview URL Storage + +Preview URLs are review resources, not just transport conveniences. A buyer, browser, or MCPUI host may fetch a `preview_url` after the original [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) call returns, after a pod restart, or from a different pod than the one that created the render. + +For production agents, persist enough preview state to resolve every `preview_url` through its advertised lifetime: + +- If `expires_at` is present, keep the render available until that timestamp. +- If `expires_at` is omitted, treat the URL as non-expiring at the protocol layer and keep it available until explicit out-of-band revocation or purge. +- Use shared storage for multi-process or multi-pod deployments: database metadata plus object storage, a shared cache tier, or an authenticated preview route that can recover the render from durable session state. +- Limit process-local `Map` or LRU storage to single-process demos, local development, or URLs whose advertised lifetime is shorter than the process lifetime you can actually guarantee. + +## Error Handling + +```typescript +const response = await client.preview_creative({ + request_type: "batch", + requests: formatRequests +}); + +const succeeded = response.results.filter(r => r.success); +const failed = response.results.filter(r => !r.success); + +if (failed.length > 0) { + console.log(`${failed.length} previews failed`); + failed.forEach((result) => { + console.error(` - ${result.error.code}: ${result.error.message}`); + }); +} + +// Display successful previews, show error states for failures +function displayPreviews(results) { + return results.map((result, idx) => { + if (result.success) { + return ; + } else { + return retryPreview(idx)} + />; + } + }); +} +``` + +## Migration from Single to Batch + +**Before (Sequential):** +```python +previews = [] +for format in formats: + preview = await client.preview_creative( + request_type="single", + creative_manifest=format.format_card.manifest + ) + previews.append(preview) +# Total time: N × 250ms = 5000ms for 20 formats +``` + +**After (Batch):** +```python +response = await client.preview_creative( + request_type="batch", + output_format="html", + requests=[ + {"creative_manifest": fmt.format_card.manifest} + for fmt in formats + ] +) +# Total time: ~500ms for 20 formats +``` + +## Use Case Patterns + +### Device Variants +```json +{ + "inputs": [ + { "name": "Desktop", "macros": { "DEVICE_TYPE": "desktop" } }, + { "name": "Mobile", "macros": { "DEVICE_TYPE": "mobile" } }, + { "name": "CTV", "macros": { "DEVICE_TYPE": "ctv" } } + ] +} +``` + +### Geographic Variants +```json +{ + "inputs": [ + { "name": "NYC", "macros": { "CITY": "New York", "DMA": "501" } }, + { "name": "LA", "macros": { "CITY": "Los Angeles", "DMA": "803" } } + ] +} +``` + +### Privacy Compliance Testing +```json +{ + "inputs": [ + { "name": "Full consent", "macros": { "GDPR": "1", "GDPR_CONSENT": "CPc7TgP..." } }, + { "name": "No consent", "macros": { "GDPR": "1", "GDPR_CONSENT": "" } }, + { "name": "LAT enabled", "macros": { "LIMIT_AD_TRACKING": "1" } } + ] +} +``` + +### AI Content Variants +```json +{ + "inputs": [ + { "name": "Morning commute", "context_description": "User commuting to work" }, + { "name": "Evening relaxation", "context_description": "User relaxing at home" } + ] +} +``` + +## Implementation Notes + +### For Creative Agents + +**Required:** +1. Return complete HTML pages from `preview_url` +2. Handle all media types (images, video, audio, interactive) +3. Echo input parameters in response +4. Validate manifest before rendering +5. Apply macro values (or use defaults) +6. Back preview URLs with storage that survives load balancing and restarts for the URL's advertised lifetime +7. Implement security sandboxing +8. Set reasonable expiration (24-48 hours) for previews that should not be retained indefinitely + +**Optional enhancements:** +- Provide `hints` object (media type, dimensions, duration) +- Provide `embedding` metadata (sandbox policy, CSP) +- Support responsive design +- Include accessibility features + +### For Buyers + +1. Just iframe the `preview_url` - no special rendering needed +2. Use `inputs` array for specific scenarios +3. Check `input` field to confirm macros applied +4. Share preview URLs with clients for approval +5. Use `interactive_url` for advanced testing + +### For Publishers + +1. Return consistent HTML from preview URLs +2. Implement responsive preview pages +3. Document supported macros via `supported_macros` in formats +4. Clarify preview vs production differences +5. Consider providing `interactive_url` for testing + +## Related Documentation + +- [preview_creative](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) - Basic usage and parameters +- [Creative Manifests](/dist/docs/3.2.0-beta.4/creative/creative-manifests) - Manifest structure +- [Universal Macros](/dist/docs/3.2.0-beta.4/creative/universal-macros) - Available macro values diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative.mdx new file mode 100644 index 0000000000..e366c2e784 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative.mdx @@ -0,0 +1,483 @@ +--- +title: preview_creative +description: "preview_creative renders an existing creative manifest into viewable output in AdCP, in single or batch mode, returning URL, image, or HTML output." +"og:title": "AdCP — preview_creative" +--- + + +`preview_creative` renders an existing creative manifest into viewable output. It does not generate or modify the input manifest — use [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) for that. Supports both single creative preview and batch preview (5-10x faster for multiple creatives). + +**Request Schema**: [`/schemas/3.2.0-beta.4/creative/preview-creative-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/preview-creative-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/creative/preview-creative-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/preview-creative-response.json) + +## Quick Start + +### Single Creative Preview + +```json +{ + "request_type": "single", + "target_capability_id": "preview_image_300x250", + "creative_manifest": { /* includes format_kind, assets */ } +} +``` + +Response: + +```json +{ + "response_type": "single", + "previews": [ + { + "preview_id": "prev_001", + "renders": [ + { + "render_id": "render_1", + "output_format": "url", + "preview_url": "https://creative-agent.example.com/preview/abc123", + "role": "primary" + } + ], + "input": { "name": "Default", "macros": {} } + } + ], + "expires_at": "2027-02-15T18:00:00Z" +} +``` + +Embed the primary render in an iframe: + +```html + +``` + +### Direct HTML Embedding + +For faster rendering without iframe overhead, request HTML directly: + +```json +{ + "request_type": "single", + "target_capability_id": "preview_image_300x250", + "creative_manifest": { /* includes format_kind, assets */ }, + "output_format": "html" +} +``` + +Response contains raw HTML: + +```json +{ + "response_type": "single", + "previews": [ + { + "preview_id": "prev_002", + "renders": [ + { + "render_id": "render_1", + "output_format": "html", + "preview_html": "
...
", + "role": "primary" + } + ], + "input": { "name": "Default", "macros": {} } + } + ], + "expires_at": "2027-02-15T18:00:00Z" +} +``` + + +Treat `preview_html` and `preview_url` as untrusted even when the provider is publisher-designated. Never inject returned HTML into the host DOM. Render HTML via iframe `srcdoc` and URLs in a cross-origin iframe, in both cases with an empty sandbox token set and caller-enforced restrictive CSP. Provider-supplied embedding recommendations are advisory and MUST NOT loosen that policy. + + +### Batch Preview (Multiple Creatives) + +Preview multiple creatives in one API call (5-10x faster): + +```json +{ + "request_type": "batch", + "requests": [ + { "target_capability_id": "preview_image_300x250", "creative_manifest": { /* creative 1 */ } }, + { "target_capability_id": "preview_video_16x9", "creative_manifest": { /* creative 2 */ } } + ] +} +``` + +Response contains results in order: + +```json +{ + "response_type": "batch", + "results": [ + { "success": true, "creative_id": "creative_1", "response": { "previews": [...], "expires_at": "..." } }, + { "success": true, "creative_id": "creative_2", "response": { "previews": [...], "expires_at": "..." } } + ] +} +``` + +### Variant Preview (Post-Flight) + +Preview what a specific variant looked like when served. Use `variant_id` from [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery) response: + +```json +{ + "request_type": "variant", + "variant_id": "gen_mobile_morning" +} +``` + +Response: + +```json +{ + "response_type": "variant", + "variant_id": "gen_mobile_morning", + "previews": [ + { + "preview_id": "prev_gen_morning", + "renders": [ + { + "render_id": "render_1", + "output_format": "url", + "preview_url": "https://creative-agent.example.com/preview/variant/gen_mobile_morning", + "role": "primary", + "dimensions": { "width": 300, "height": 250 } + } + ] + } + ], + "manifest": { + "format_kind": "image", + "assets": { + "hero_image": { + "asset_type": "image", + "url": "https://cdn.creative.example.com/generated/mobile_morning_v1.jpg", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Start Your Summer Right" + } + } + }, + "expires_at": "2027-02-15T18:00:00Z" +} +``` + +Since each variant from `get_creative_delivery` includes its full `manifest`, you can also pass the manifest directly to `preview_creative` as a standard single request to re-render it. + +## Request Parameters + +All modes use a single flat object with `request_type` as the discriminant. + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `request_type` | string | Yes | `"single"`, `"batch"`, or `"variant"` | +| `creative_manifest` | object | Conditional | Complete creative manifest with all required assets for the format. For single requests and batch items, supply either this field or `creative_id`. | +| `creative_manifest.format_kind` | CanonicalFormatKind | Yes for inline manifests | Portable canonical format identity. | +| `target_capability_id` | string | No | Agent-local renderer route from `get_adcp_capabilities.creative.supported_formats[]`; the selected entry's `operations` must contain `preview`. In batch mode this is the default for items, which may override it. Omit only when exactly one advertised preview capability matches the canonical manifest; zero or multiple matches return [`FORMAT_NOT_SUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-format-not-supported). | +| `inputs` | array | No | Array of input sets for multiple preview variants. Used in single mode. | +| `quality` | string | No | `"draft"` (fast, lower-fidelity) or `"production"` (full quality). In batch mode, sets the default for all requests. | +| `output_format` | string | No | `"url"` (default) or `"html"`. In batch mode, sets the default for all requests. | +| `item_limit` | integer | No | Maximum catalog items to render per preview variant. Used in single mode. | +| `template_id` | string | No | Specific template ID for custom format rendering. Used in single mode. | +| `requests` | array | Batch | Array of 1-50 preview requests. Each item supplies either a canonical `creative_manifest` or library `creative_id`, and may also carry `target_capability_id`, inputs, quality, output format, item limit, and template ID. | +| `variant_id` | string | Variant | Platform-assigned variant identifier from [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery). | +| `creative_id` | string | Conditional | Creative-library identifier. Use instead of `creative_manifest` to preview a stored canonical creative; in batch mode it is set per item. It may also provide creative context in variant mode. | +| `allow_async` | boolean | No | Opt in to a `status: "submitted"` response for slow rendering. Defaults to `false`; agents MUST stay synchronous or return a terminal error when absent or false. | +| `push_notification_config` | object | No | Optional terminal completion/failure webhook when `allow_async` is true and the agent returns `submitted`. The task remains pollable without it; this field alone never causes async execution. | + +**Required** column values: *Conditional* = single requests and batch items require one of `creative_manifest` or `creative_id`; *Batch* = required when `request_type` is `"batch"`; *Variant* = required when `"variant"`. + +Discover renderers from `get_adcp_capabilities.creative.supported_formats[]` by selecting entries whose `operations` contains `preview` and whose canonical `format` satisfies the manifest. New 3.2 producers MUST list routable entries in `creative.preview.routes[]`, whose capability-ID set equals the preview-operation capability IDs. Each route declares informational `rendering_origin` as `platform_native` or `agent_approximation`. `capability_id` is an agent-local renderer route; it never belongs in the portable manifest. If multiple renderers match, the caller must select one explicitly. + +An agent cannot grant itself authority. Even `platform_native` remains informational unless a matching publisher-origin placement `preview_provider` delegates that endpoint and capability route. Buyers preserve the origin label and follow the [rendering authority and composition rules](/dist/docs/3.2.0-beta.4/creative/canonical-formats#rendering-authority-and-fallback-order). + +### Opt-in asynchronous preview + +`preview_creative` is synchronous by default. A buyer that can poll task results MAY set `allow_async: true`. Only then may an agent hand rendering to a queue or external renderer, release the request connection, and return: + +```json +{ + "response_type": "submitted", + "status": "submitted", + "task_id": "task_preview_abc123", + "message": "Production-quality video preview queued" +} +``` + +The buyer polls [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) with `task_id`; the completed task result contains the normal single, batch, or variant preview response. If the request also supplies `push_notification_config`, the agent sends at least the terminal completion/failure notification and the same task remains pollable. `response_type: "submitted"` keeps this fourth arm in the same discriminator family as the three synchronous preview arms; `status: "submitted"` is the task-lifecycle signal. + +`submitted` is for work that continues after the request connection is released, including a queued upstream renderer. If the agent is actively rendering while keeping the connection open, it uses `working` progress and returns the normal response on that connection. When `allow_async` is false or absent, agents MUST NOT return the submitted shape. [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) already has a separate async response contract and is unchanged by this field. + +Preview remains read-only in every lifecycle state. Queuing a preview MUST NOT build or approve a creative, add it to a creative library, or modify the supplied or stored manifest. + +### Input Sets + +Generate multiple preview variants by providing different contexts: + +```json +{ + "inputs": [ + { "name": "Desktop", "macros": { "DEVICE_TYPE": "desktop" } }, + { "name": "Mobile", "macros": { "DEVICE_TYPE": "mobile" } }, + { "name": "Morning Context", "context_description": "User commuting to work" } + ] +} +``` + +**Available macros**: `DEVICE_TYPE`, `COUNTRY`, `CITY`, `DMA`, `GDPR`, `US_PRIVACY`, `CONTENT_GENRE`, etc. + +**Context descriptions**: For AI-generated content like host-read audio ads. + +## Response Format + +### Single Mode Response + +```typescript +{ + response_type: "single"; + quality_used?: "draft" | "production"; // Required when the request supplied quality + previews: Preview[]; // One per input (or one default) + interactive_url?: string; // Optional sandbox for interactive formats + expires_at?: string; // Optional ISO 8601 expiration; omitted means no expiration +} +``` + +### Batch Mode Response + +```typescript +{ + response_type: "batch"; + results: Array<{ + success: boolean; + creative_id: string; + quality_used?: "draft" | "production"; // Required when effective request supplied quality + response?: { + previews: Preview[]; + expires_at?: string; + }; + errors?: Array<{ code: string; message: string; }>; + }>; +} +``` + +### Preview Structure + +```typescript +{ + preview_id: string; + renders: Array<{ + render_id: string; + output_format: "url" | "html" | "both"; + preview_url?: string; // When output_format is "url" or "both" + preview_html?: string; // When output_format is "html" or "both" + role: string; // "primary", "companion", etc. + dimensions?: { width: number; height: number; }; + }>; + input: { + name: string; + macros?: Record; + context_description?: string; + }; +} +``` + +**Multi-render formats**: Some formats produce multiple pieces (video + companion banner). Each has its own `render_id` and `role`. + +## Previewing generative creative + +For generative formats — contextual display, AI-generated native, conversational ads — the creative doesn't exist until serve time. Preview serves two distinct purposes: + +### Pre-flight: representative samples + +Before the campaign runs, use single or batch mode to preview what the agent *could* generate given different contexts. Pass `inputs` with `context_description` to simulate serve-time conditions: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/creative/preview-creative-request.json", + "request_type": "single", + "quality": "draft", + "creative_manifest": { + "format_kind": "agent_placement", + "assets": { + "brief": { + "asset_type": "brief", + "name": "Sustainability story", + "objective": "awareness", + "messaging": { + "key_messages": ["Highlight our sustainability story. Match tone to editorial context."] + } + } + } + }, + "inputs": [ + { "name": "Tech article", "context_description": "Article about semiconductor manufacturing" }, + { "name": "Lifestyle blog", "context_description": "Blog post about sustainable living" } + ] +} +``` + +These previews are *representative*, not definitive. Real serve-time output depends on live signals (actual page content, user device, time of day) that can't be fully simulated. Use draft quality for fast iteration on the brief and creative direction, then production quality for stakeholder review. + +### Post-flight: exact replay + +After the campaign runs, use variant mode to see exactly what was served. Pass a `variant_id` from [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery): + +```json +{ + "request_type": "variant", + "variant_id": "gen_tech_mobile_001" +} +``` + +The response includes the variant's actual manifest — the specific headline, image, and layout the agent generated for that context. This is a faithful replay, not a re-generation. + +### Setting expectations + +| Aspect | Standard creative | Generative creative | +|---|---|---| +| Pre-flight preview | At production quality, fidelity-accurate within the selected renderer's presentation; draft may approximate | Representative — shows the agent's interpretation of the brief under simulated conditions | +| Post-flight preview | Same as pre-flight | Exact — faithful replay of served output via variant mode | +| `quality: "draft"` | Iteration render; final fidelity is not guaranteed | Lower-fidelity sample for reviewing creative direction | +| `quality: "production"` | Fidelity-accurate review render | Fidelity-accurate sample of serve-time presentation | +| Number of variants | Typically 1 (or a few device variants) | Potentially thousands — one per context | + +For generative formats where every impression produces a different creative (like AI chat or real-time contextual), pre-flight previews are best understood as *samples from a distribution* rather than *the ad*. The brief and brand identity constrain the distribution; previews let you verify the agent interprets those constraints correctly. + +### Conversational and interactive formats + +For formats where the ad is stateful — AI chat, interactive experiences, conversational native — preview takes on additional meaning: + +- **Pre-flight** renders a representative first interaction or simulated conversation. The `interactive_url` field in the preview response (when present) provides a sandbox where reviewers can interact with the experience directly. Use `context_description` to simulate different conversation entry points. +- **Post-flight** variant replay shows the actual exchange that occurred. For multi-turn formats, the variant manifest captures the full content the agent produced (message sequence, responses, media assets shown). The level of detail depends on the agent — some provide full transcripts, others provide summarized content with anonymized user signals. + +These formats have the widest gap between pre-flight and post-flight: a pre-flight preview can only approximate one possible conversation path, while the live experience adapts to each user. Preview enough scenarios to verify tone, guardrails, and brand consistency. + +### Quality levels + +The preview quality tier describes render fidelity, not merely the renderer's relative cost or speed. It is not a validation result, compliance or brand-safety clearance, seller acceptance, or authorization to serve. Buyers use the applicable validation, governance, and seller creative-review workflows for those decisions. + +Quality and authority are independent. `quality_used: "production"` means full fidelity within the selected renderer; it does not turn an undelegated route into publisher-authoritative presentation. Buyer tooling MUST retain quality, rendering origin, and delegation provenance when it records or presents a preview. + +Each rendered piece may include `renderer` audit metadata: a stable `renderer_id`, exact semantic `version`, export name, informational `rendering_origin`, and whether the actual output suppresses every tracking, navigation, and remote-asset request. This metadata makes a render reproducible but does not grant authority. Buyers resolve authority only from a matching publisher-origin placement `preview_provider` delegation. + +- **`draft`** is an iteration render for reviewing creative direction. It MUST preserve the supplied manifest or brief's core concept, content, and non-fidelity constraints, but it MAY use lower-resolution or placeholder assets; approximate layout, typography, color, motion, audio, or interactive behavior; and omit final polish. The protocol does not guarantee that any of those listed fidelity dimensions is final in a draft preview. +- **`production`** is a fidelity-accurate review render. For standard or otherwise deterministic creative, it MUST faithfully render the supplied manifest—or the stored manifest resolved from `creative_id`—and its assets using the serve-time presentation controlled by the selected renderer. In `preview_creative`, material asset substitution or approximation requires `quality_used: "draft"`. It MUST include disclosure and compliance elements required by the manifest and those owned by that rendering layer for the supplied context. + +Publisher- or serving-layer elements outside the selected renderer are guaranteed only when the targeted preview capability represents that integrated rendering context. A standalone creative renderer is not responsible for reproducing downstream elements it cannot determine. Buyers that need an end-to-end composed review SHOULD request a preview from the applicable seller or publisher rendering capability. + +For generative creative, `production` means that the sample uses the serve-equivalent generation pipeline and configuration, honors the same declared constraints, and uses the same full-fidelity presentation rules as serve-time generation. It does not promise that the same content will be generated for every impression. Final assets and layout MAY vary where the format varies them at serve time. + +For stateful or interactive creative, a `production` preview MUST render the sampled state or path with serve-time visual and control fidelity. The tier makes no behavioral-coverage guarantee beyond that sample. Buyers assessing guardrails, disclosure persistence, error states, or multi-turn behavior SHOULD use `interactive_url`, when present, and exercise a scenario suite appropriate to the format. + +These definitions also apply to `preview_quality` on an inline [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) preview. In 3.x, that inline response does not echo `quality_used`, so an agent MUST either meet the requested `preview_quality` or return `preview_error`; it cannot silently substitute another tier. Buyers that need a successful response to echo the rendered tier use `preview_creative`. + +### Quality mismatch + +If the requested quality level is not supported, the agent renders at the best quality it can provide and reports that tier in `quality_used`. When a single request supplies `quality`, the response MUST include `quality_used`. For batch mode, each successful result whose effective request supplied `quality`—either on the item or through the batch-level default—MUST include `quality_used`. Agents SHOULD report `quality_used` even when the request omitted `quality`, so buyers can record the renderer's default tier. + +Buyers MUST compare `quality_used` with the requested value before treating a preview as a production-fidelity review artifact. A mismatch means the agent applied a different tier; specifically, requested `production` with `quality_used: "draft"` is an explicit downgrade. `quality_used` does not appear on variant-mode replay because that mode reproduces a historical execution rather than selecting a new render-quality tier. Agents are not required to support both quality levels or advertise per-capability quality discovery. + +In 3.x, `quality_used` is a binary fidelity gate: it does not identify which dimensions caused a downgrade. Buyers that receive a mismatch need agent-specific or out-of-band diagnostics before deciding whether to retry, select another renderer, or revise the creative. + +### Preview expiration and variant retention + +Preview responses may include an `expires_at` timestamp. When present, consumers should treat preview URLs as invalid after that time and re-generate them before reuse. When `expires_at` is omitted, the preview URLs do not expire. For generative creative, re-generating a pre-flight preview may produce different output — the same brief and context can yield different creative each time. + +### Preview URL durability + +`preview_url` is the protocol resource buyers and MCPUI hosts render. AdCP does not define a separate durable asset pointer for preview renders in 3.x; if a creative agent needs an internal asset key, resource URI, or storage object ID, it remains agent-internal unless the schema adds a future field for it. + +Creative agents MUST keep each `preview_url` dereferenceable until the response's `expires_at` timestamp. When `expires_at` is omitted, the URL has no protocol-level expiration and must remain dereferenceable until the agent explicitly revokes or purges it out of band. Do not back preview URLs only with pod-local `Map`/LRU state in multi-process or multi-pod deployments, because a browser fetch, later refinement call, or reviewer session may land on a different process than the one that created the preview. + +Durable storage does not require permanent public CDN hosting. A preview URL can resolve through the creative agent's authenticated preview route as long as the route can recover the render from shared storage, such as a database row, object store key, or shared cache tier, for the advertised lifetime. + +Variant previews (post-flight) depend on the agent retaining variant data. Agents are not required to retain variant data indefinitely. If you request a variant preview for a variant the agent has purged, expect a standard error response. For long-running campaigns, retrieve and archive variant previews periodically rather than assuming they will remain available. + +## Examples + +### Device Variants + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/creative/preview-creative-request.json", + "request_type": "single", + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "hero_image": { "asset_type": "image", "url": "https://cdn.example.com/hero.jpg", "width": 1200, "height": 627 }, + "headline": { "asset_type": "text", "content": "Veterinarian Recommended" } + } + }, + "inputs": [ + { "name": "Desktop", "macros": { "DEVICE_TYPE": "desktop" } }, + { "name": "Mobile", "macros": { "DEVICE_TYPE": "mobile" } } + ] +} +``` + +### Batch with HTML Output + +Preview multiple creatives for a grid layout: + +```json +{ + "request_type": "batch", + "output_format": "html", + "requests": [ + { "creative_manifest": { /* creative 1 */ } }, + { "creative_manifest": { /* creative 2 */ } } + ] +} +``` + +### AI-Generated Audio Preview + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/creative/preview-creative-request.json", + "request_type": "single", + "creative_manifest": { + "format_kind": "audio_hosted", + "assets": { + "script_template": { "content": "This episode brought to you by {{BRAND_NAME}}..." }, + "brand_voice": { "content": "Friendly, enthusiastic, conversational." } + } + }, + "inputs": [ + { "name": "Weather Podcast", "context_description": "Podcast discussing weather patterns" }, + { "name": "Fitness Podcast", "context_description": "Podcast about marathon training" } + ] +} +``` + +## HTTP Status Codes + +**Single mode:** +- **200 OK** - Preview generated successfully +- **400 Bad Request** - Invalid canonical manifest +- **404 Not Found** - Format not supported + +**Batch mode:** +- **200 OK** - Batch processed (check individual `success` fields) +- **400 Bad Request** - Invalid batch structure + +## Key Points + +- Every render's `preview_url` returns an untrusted HTML page for cross-origin iframe embedding with an empty sandbox token set +- Use `output_format: "html"` for grids of 10+ previews (no iframe overhead) +- Batch mode is 5-10x faster than individual requests +- Preview URLs expire only when `expires_at` is present; omitted `expires_at` means no protocol-level expiration +- Back preview URLs with storage that survives the URL's advertised lifetime; process-local maps are only appropriate for single-process demos or shorter-than-process-lifetime URLs +- Handle partial batch failures by checking each result's `success` field + +## Related Documentation + +- [Advanced Preview Patterns](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced) - Caching, workflows, implementation notes +- [Creative Manifests](/dist/docs/3.2.0-beta.4/creative/creative-manifests) - Manifest structure +- [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats) - Format specifications diff --git a/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives.mdx b/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives.mdx new file mode 100644 index 0000000000..07ea49e209 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives.mdx @@ -0,0 +1,952 @@ +--- +title: sync_creatives +description: "sync_creatives uploads and manages creative assets in an AdCP library with bulk uploads, upsert semantics, and generative creative support." +"og:title": "AdCP — sync_creatives" +testable: true +--- + + +Upload and manage creative assets in a creative library. Supports bulk uploads, upsert semantics, and generative creatives. Implemented by any agent that hosts a creative library — creative agents (ad servers, creative management platforms) and sales agents that manage creatives. + +**Response time**: Instant to days (returns `completed`, or `submitted` for review that takes hours/days) + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} +**Request Schema**: [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-request.json) +**Response Schema**: [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-response.json) + +## Quick start + +Upload creative assets: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncCreativesResponseSchema } from "@adcp/sdk"; +import { randomUUID } from "node:crypto"; + +const result = await testAgent.syncCreatives({ + account: { + brand: { domain: "acmecorp.com" }, + operator: "acmecorp.com", + sandbox: true, + }, + idempotency_key: randomUUID(), + creatives: [ + { + creative_id: "creative_video_001", + name: "Summer Sale 30s", + format_kind: "video_hosted", + assets: { + video: { + asset_type: "video", + url: "https://cdn.example.com/summer-sale-30s.mp4", + width: 1920, + height: 1080, + duration_ms: 30000, + }, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = SyncCreativesResponseSchema.parse(result.data); + +// Three-shape discriminated union: errors | submitted | creatives +if ("errors" in validated && validated.errors && !("creatives" in validated) && !("status" in validated)) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("status" in validated && validated.status === "submitted") { + // Whole sync queued asynchronously — invoke get_task_status with task_id or await webhook + console.log(`Sync queued as task ${validated.task_id}: ${validated.message ?? ""}`); +} else if ("creatives" in validated) { + console.log(`Synced ${validated.creatives.length} creatives`); + for (const c of validated.creatives) { + // c.status carries review state: approved, pending_review, rejected, processing, archived + if (c.status === "pending_review" || c.status === "processing") { + console.log(` ${c.creative_id}: awaiting review (${c.status})`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from uuid import uuid4 + +async def main(): + result = await test_agent.simple.sync_creatives( + account={ + 'brand': {'domain': 'acmecorp.com'}, + 'operator': 'acmecorp.com', + 'sandbox': True + }, + idempotency_key=str(uuid4()), + creatives=[{ + 'creative_id': 'creative_video_001', + 'name': 'Summer Sale 30s', + 'format_kind': 'video_hosted', + 'assets': { + 'video': { + 'asset_type': 'video', + 'url': 'https://cdn.example.com/summer-sale-30s.mp4', + 'width': 1920, + 'height': 1080, + 'duration_ms': 30000 + } + } + }] + ) + + # Three-shape discriminated union: errors | submitted | creatives + if getattr(result, 'status', None) == 'submitted': + # Whole sync queued asynchronously — invoke get_task_status with task_id or await webhook + print(f"Sync queued as task {result.task_id}: {getattr(result, 'message', '') or ''}") + return + + if getattr(result, 'errors', None) and not getattr(result, 'creatives', None): + raise Exception(f"Operation failed: {result.errors}") + + print(f"Synced {len(result.creatives)} creatives") + for c in result.creatives: + # c.status carries review state: approved, pending_review, rejected, processing, archived + if getattr(c, 'status', None) in ('pending_review', 'processing'): + print(f" {c.creative_id}: awaiting review ({c.status})") + +asyncio.run(main()) +``` + + + +**Note:** Per-creative async review is surfaced via `creatives[].status` (e.g., `pending_review`) on the synchronous success response. When the *whole* operation is queued (batch ingestion, governance review gating the sync), the response is a submitted envelope with top-level `status: "submitted"` and a `task_id`. See [Async approval workflow](#async-approval-workflow). + +## Read-after-write visibility + +Creatives accepted via a synchronous `sync_creatives` success response MUST be committed to the creative library before the response is returned. They MUST be immediately visible to subsequent [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) calls from the same account and authorized caller, including creatives whose review lifecycle status is `processing` or `pending_review`. + +Implementations that acknowledge a creative on the synchronous success branch but buffer the library write until a later background commit are not conformant. If the whole sync operation cannot commit before returning, use the submitted task envelope instead; the visibility requirement then applies when the task completes with accepted creatives. + +## Request parameters + +| Parameter | Type | Required | Description | +| ----------------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `account` | object | Yes | Account reference identifying the advertiser/workspace for this sync ([account-ref](/dist/docs/3.2.0-beta.4/accounts/overview)) | +| `idempotency_key` | string | Yes | Client-generated key that makes retries safe. Use a fresh UUID or other unique value per request. | +| `creatives` | Creative[] | Yes | Creative assets to upload/update (max 100) | +| `creative_ids` | string[] | No | Optional filter to limit sync scope to specific creative IDs. Only these creatives are affected, others remain untouched. Useful for partial updates and error recovery. | +| `assignments` | array | No | Array of `{creative_id, package_id}` objects for bulk assignment. Optional `weight` and `placement_ids` per assignment. | +| `dry_run` | boolean | No | When true, rehearse this exact sync operation without applying it (default: false). Use this for seller trafficking acceptance checks; use [`validate_input`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/validate-input-request.json) for manifest-only preflight against canonical/product format targets. | +| `validation_mode` | string | No | Validation strictness: `"strict"` (default) or `"lenient"` | +| `delete_missing` | boolean | No | When true, creatives not in this sync are archived (default: false). Cannot be combined with `creative_ids`. Cannot delete creatives assigned to active, non-paused packages. | + +### Creative object + +| Field | Type | Required | Description | +| ------------------- | ------------------- | ----------- | ------------------------------------------------------------------ | +| `creative_id` | string | Yes | Unique identifier for this creative | +| `name` | string | Yes | Human-readable name | +| `format_kind` | CanonicalFormatKind | Yes for 3.2 authoring | Portable canonical format path. Pair with `format_option_ref` when exact routing is required. | +| `format_id` | FormatId | Deprecated | Named-format compatibility path for older 3.x peers; mutually exclusive with `format_kind`. | +| `format_option_ref` | FormatOptionRef | No | Optional structured reference to a product or publisher format option. Required when the target product has multiple options with the same `format_kind`. | +| `assets` | object | Yes | Assets keyed by the selected format's slot name (`asset_group_id` for canonical formats). Catalogs are included as assets with `asset_type: "catalog"`. See [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs). | +| `localization` | object \| null | No | Sync-only explicit source and target locale variants. Requires `get_adcp_capabilities.creative.localization`. An object replaces the complete locale set; null removes it. Omission preserves existing localization only when source assets are exactly unchanged. | +| `tags` | string[] | No | Searchable tags for creative organization | + +New 3.2 integrations use `format_kind` with `format_option_ref` when routing depends on a product's declared option. A compatibility implementation may accept the legacy branch from an older peer, but never mixes both shapes. + +Before uploading, buyers MUST verify each creative manifest against the target product's canonical `format_options[]`. The manifest MUST include every asset slot that the selected format option declares as required, keyed by that slot's `asset_group_id`. + +### Native localization + +Discover support before writing. The agent's +`get_adcp_capabilities.creative.localization` block advertises structural +support, RFC 4647 Lookup, and an optional target ceiling. Locale, format, and +account support is validated against each request. A seller MUST reject an +unsupported locale/format pair, duplicate target locale/ID, target locale/ID +that reuses the source value, missing materialized assets, or invalid default +reference before mutating seller systems or the creative library. JSON Schema `uniqueItems` +compares whole objects and is not sufficient for those property-level rules; +conformance verifiers consume the schema's `x-adcp-validation` constraints. + +This is the only localization mutation surface. Inline package creatives in +[`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) reject `localization`; sync the +localized library creative here, then assign it by `creative_id`. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-request.json", + "adcp_version": "3.1", + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "account": { "account_id": "acct_nova" }, + "creatives": [ + { + "creative_id": "summer_image_localized", + "name": "Summer image — localized", + "format_kind": "image", + "assets": { + "image": { + "asset_type": "image", + "url": "https://cdn.nova.example/summer-en.jpg", + "width": 1080, + "height": 1080 + }, + "headline": { + "asset_type": "text", + "content": "Summer starts here", + "language": "en-US" + } + }, + "localization": { + "source": { + "locale_variant_id": "loc_en_us", + "locale": "en-US" + }, + "target_variants": [ + { + "locale_variant_id": "loc_es_mx", + "locale": "es-MX", + "assets": { + "image": { + "asset_type": "image", + "url": "https://cdn.nova.example/summer-es-mx.jpg", + "width": 1080, + "height": 1080 + }, + "headline": { + "asset_type": "text", + "content": "El verano empieza aquí", + "language": "es-MX" + } + } + } + ], + "locale_fallbacks": [ + { + "language_range": "es", + "locale_variant_id": "loc_es_mx" + } + ], + "default_locale_variant_id": "loc_en_us", + "unmatched_locale_action": "do_not_serve" + } + } + ] +} +``` + +Source identifies production provenance, not the serving default. Every target +contains materialized locale-specific overrides; missing slots inherit source. +`target_variants` may be empty to declare the canonical locale of a monolingual +source-only creative, such as a single `fr-CA` creative for French-only Québec +inventory. Do not invent a second locale variant merely to declare source +language. +`default_locale_variant_id` may select source or target. This task never asks +the seller to translate: use buyer tooling, [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative), or a separate +translation/transformation agent first, then sync the resulting assets. + +At delivery, the seller applies RFC 4647 Lookup to ordered locale preferences. +Each progressively truncated requested range matches only an equal available +canonical tag; it does not prefix-match sibling regional tags. +The ordered list comes from the seller's serving environment and is outside +this task: AdCP does not define how browser, content, geography, user, app, or +platform signals produce it or their precedence. +For each preference, a strict miss is followed by the most-specific matching +`locale_fallbacks` rule before the next preference is tried. The example's `es` +rule lets an `es-ES` preference use `loc_es_mx`; without that rule, no regional +substitution is inferred. After every preference misses both paths, the seller +follows `unmatched_locale_action`: serve `default_locale_variant_id` or make the +creative ineligible. It never silently assumes the source is the default. + +Standalone library sync has no product context and does not apply product locale +policy. When `assignments[]` binds a creative to a package whose effective +format option has `locale_policy`, the +seller uses RFC 4647 Basic Filtering to derive the eligible source/target +variant set before running the buyer algorithm above. For example, seller range +`fr` accepts `fr-CA` and `fr-FR`. The assignment fails with +[`CREATIVE_LOCALE_NOT_ACCEPTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-locale-not-accepted) if no materialized variant matches. If +`unmatched_locale_action` is `serve_default`, the default variant must also be +seller-eligible. Buyer fallback and default rules never override the product or +placement constraint; nonmatching variants remain stored for other products. +The seller runs this check independently for every placement where the +assignment may serve. If one placement fails, the assignment is rejected unless +the buyer narrows its placement scope to compatible placements. + +Accepted localized results include `localization` as a complete +source-plus-target variant list. The response preserves the request's exact +source ID/locale, target ID/locale set, fallback-rule set, default ID, and unmatched action. Each +variant returns complete resolved assets under the same buyer-assigned +`locale_variant_id`; no seller- or platform-assigned variant ID is required. +The enclosing creative's single `status` governs the complete set. If the +seller cannot read back any one of those values exactly, the item fails rather +than silently falling back to the source language. + +Every accepted localized result (`created`, `updated`, or `unchanged`) MUST +carry top-level aggregate `status` and complete `localization`; `failed` and +`deleted` results MUST omit localization. A later +[`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) read preserves the exact source/target identities. + +`delete_missing` remains creative-scoped. If it archives a creative, every +locale variant follows the whole creative lifecycle, and omitted target locales +are never treated as missing creatives. A non-null `localization` object +transactionally replaces top-level source assets and the complete locale set; +failure leaves the prior state unchanged and must not expose orphaned locale +variants. +Null removes localization. Omission preserves localization only when top-level +source assets exactly equal the prior source assets. The normal active-delivery +update protection applies to all three operations. + +### Promoting a build_creative variant + +When a buyer keeps a produced build leaf, the canonical promotion is to use the kept `build_variant_id` as the new `creative_id`. The seller does not need to hold a separate lineage mapping; delivery reporting can join back to the build leaf through the normal `creative_id`. + +```json test=false +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "account": { "account_id": "acct_acmecorp" }, + "creatives": [ + { + "creative_id": "bv_card01_a", + "name": "Summer card - studio take", + "format_kind": "image", + "assets": { + "headline_0_text": { + "asset_type": "text", + "content": "Summer Sale - 50% Off" + }, + "image_0_url": { + "asset_type": "image", + "url": "https://cdn.example.com/beach-hero.jpg", + "width": 300, + "height": 250 + } + } + } + ] +} +``` + +Later, [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery) uses `creative_id` as the join key. A workflow that mints a different library id instead of using the kept `build_variant_id` loses this protocol-visible join unless a future scoped lineage field is adopted. + +### Asset structure + +Assets are keyed by role name. Each role contains the asset details: + +```json test=false +{ + "assets": { + "video": { + "url": "https://cdn.example.com/video.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + }, + "thumbnail": { + "url": "https://cdn.example.com/thumb.jpg", + "width": 300, + "height": 250 + } + } +} +``` + +For published-post reference products, the asset role is usually `published_post` and the payload contains a post URL or platform post ID instead of uploaded media bytes. Buyers can submit these assets through the canonical creative path, for example `format_kind: "video_hosted"` plus the product's `format_option_ref`, instead of creating a platform-specific `format_id`. If the seller can resolve the post but lacks a required downstream platform connection, such as the publisher identity that owns the post, the correctable error is [`AUTHORIZATION_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-authorization-required). New implementations should include `error.details.missing_connections[]` so the caller can send a human through the correct connections flow and retry after authorization is restored. + +### Assignments structure + +Assignments are at the request level, mapping creative IDs to package IDs. Standalone creative agents that do not manage media buys ignore this field. + +```json test=false +{ + "assignments": [ + { "creative_id": "creative_video_001", "package_id": "pkg_premium" }, + { "creative_id": "creative_video_001", "package_id": "pkg_standard" }, + { "creative_id": "creative_display_002", "package_id": "pkg_standard" } + ] +} +``` + +**Adopter note (`@adcp/sdk` server-side):** the typed `syncCreatives(creatives, ctx)` signature does not surface `assignments` as a positional argument. The wire envelope lands on `RequestContext.input`, so handlers read `ctx.input.assignments` to fan out package bindings and emit `creatives[i].assigned_to` in the response. The same escape hatch applies to any request field the typed signature intentionally does not model. See [`adcp#5797`](https://github.com/adcontextprotocol/adcp/issues/5797) for the trace that motivated this note (SDK ≥ 11.1.0 threads `params` into `ctx.input`; earlier lines dropped the field at the projector seam). + +## Response + +Responses use discriminated unions — a response has exactly one of three shapes, never mixed: + +**1. Synchronous success** — per-creative results: + +- `creatives` - Results for each creative processed (includes both successful and failed items) +- `dry_run` - Boolean indicating if this was a dry run (optional) + +**2. Terminal error** — no creatives processed: + +- `errors` - Array of operation-level errors (auth failure, service unavailable) + +**3. Submitted task envelope** — whole operation queued asynchronously (batch ingestion, governance review gating the sync): + +- `status` - Always `"submitted"` +- `task_id` - Handle for polling via [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) on the A2A profile (or the advertised AdCP polling task on MCP), or receiving a webhook on completion +- `message` - Optional human-readable explanation of the queue state + +The final per-creative `creatives` array lands on the task completion artifact, not on the submitted envelope. Per-item async review (one creative in `pending_review` while the rest of the sync resolves synchronously) belongs on the synchronous success branch with `status: "pending_review"` on that item, not here. + +**Each creative in the success response includes:** + +- All request fields +- `platform_id` - Platform's internal ID (when `action` is not `failed`) +- `action` - Lifecycle operation performed by this sync: `created`, `updated`, `unchanged`, `failed`, `deleted` +- `status` - **Advisory** review-lifecycle state ([`CreativeStatus`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/creative-status.json)): `processing`, `pending_review`, `approved`, `suspended`, `rejected`, `archived`. A UI hint and polling-scheduling signal — **not** a spend-authorization gate. Orthogonal to `action` — `action` describes what the sync did, `status` describes where the creative is in the review lifecycle. Values come from `CreativeStatus` only, never from `CreativeAction` (never put `created`/`updated`/`failed` in `status`). Sellers with async review return `processing` or `pending_review`; sellers with synchronous review MAY return a terminal value (`approved`/`rejected`) or `suspended` when a recoverable dependency/authorization gate prevents serving. **Buyers MUST NOT gate downstream spend or package activation on `status: approved` from this response** — reconcile via [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) or a signed review webhook before committing spend. Authoritative state is always via `list_creatives`. **MUST be omitted** when `action` is `failed` or `deleted` — failed items have no meaningful review state (see `errors`); deleted items are gone from the library. The schema enforces the omission rule via a conditional constraint. +- `localization` - Exact materialized source/target locale state. Required with top-level `status` on every accepted localized item, omitted on failed/deleted/unlocalized items. The top-level status is the single creative-wide review state. +- `errors` - Array of error messages (only when `action: "failed"`) +- `warnings` - Array of non-fatal warnings (optional) + +**See schema for complete field list**: [sync-creatives-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-response.json) + +## Common scenarios + +### Bulk upload + +Upload multiple creatives in one call: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncCreativesResponseSchema } from "@adcp/sdk"; +import { randomUUID } from "node:crypto"; + +const result = await testAgent.syncCreatives({ + account: { + brand: { domain: "acmecorp.com" }, + operator: "acmecorp.com", + sandbox: true, + }, + idempotency_key: randomUUID(), + creatives: [ + { + creative_id: "creative_display_001", + name: "Summer Sale Banner 300x250", + format_kind: "image", + assets: { + image: { + asset_type: "image", + url: "https://cdn.example.com/banner-300x250.jpg", + width: 300, + height: 250, + }, + }, + }, + { + creative_id: "creative_video_002", + name: "Product Demo 15s", + format_kind: "video_hosted", + assets: { + video: { + asset_type: "video", + url: "https://cdn.example.com/demo-15s.mp4", + width: 1920, + height: 1080, + duration_ms: 15000, + }, + }, + }, + { + creative_id: "creative_display_002", + name: "Summer Sale Banner 728x90", + format_kind: "image", + assets: { + image: { + asset_type: "image", + url: "https://cdn.example.com/banner-728x90.jpg", + width: 728, + height: 90, + }, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncCreativesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("creatives" in validated) { + console.log(`Successfully synced ${validated.creatives.length} creatives`); + validated.creatives.forEach((creative) => { + console.log(` ${creative.creative_id}: ${creative.action}`); + }); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from uuid import uuid4 + +async def main(): + result = await test_agent.simple.sync_creatives( + account={ + 'brand': {'domain': 'acmecorp.com'}, + 'operator': 'acmecorp.com', + 'sandbox': True + }, + idempotency_key=str(uuid4()), + creatives=[ + { + 'creative_id': 'creative_display_001', + 'name': 'Summer Sale Banner 300x250', + 'format_kind': 'image', + 'assets': { + 'image': { + 'asset_type': 'image', + 'url': 'https://cdn.example.com/banner-300x250.jpg', + 'width': 300, + 'height': 250 + } + } + }, + { + 'creative_id': 'creative_video_002', + 'name': 'Product Demo 15s', + 'format_kind': 'video_hosted', + 'assets': { + 'video': { + 'asset_type': 'video', + 'url': 'https://cdn.example.com/demo-15s.mp4', + 'width': 1920, + 'height': 1080, + 'duration_ms': 15000 + } + } + }, + { + 'creative_id': 'creative_display_002', + 'name': 'Summer Sale Banner 728x90', + 'format_kind': 'image', + 'assets': { + 'image': { + 'asset_type': 'image', + 'url': 'https://cdn.example.com/banner-728x90.jpg', + 'width': 728, + 'height': 90 + } + } + } + ] + ) + + # Check for operation-level errors first + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"Successfully synced {len(result.creatives)} creatives") + for creative in result.creatives: + print(f" {creative.creative_id}: {creative.action}") + +asyncio.run(main()) +``` + + + +### Generative creatives + +Use the creative agent to generate creatives from brand identity data. See the [Generative Creatives guide](/dist/docs/3.2.0-beta.4/creative/generative-creative) for complete workflow details. + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncCreativesResponseSchema } from "@adcp/sdk"; +import { randomUUID } from "node:crypto"; + +const result = await testAgent.syncCreatives({ + account: { + brand: { domain: "acmecorp.com" }, + operator: "acmecorp.com", + sandbox: true, + }, + idempotency_key: randomUUID(), + creatives: [ + { + creative_id: "creative_gen_001", + name: "AI-Generated Summer Banner", + format_kind: "image", + assets: { + prompt: { + asset_type: "text", + content: "Create a summer banner for outdoor enthusiasts. Headline: Summer gear built for every trail. CTA: Shop the collection.", + }, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncCreativesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("creatives" in validated) { + console.log( + "Generative creative synced:", + validated.creatives[0].creative_id + ); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from uuid import uuid4 + +async def main(): + result = await test_agent.simple.sync_creatives( + account={ + 'brand': {'domain': 'acmecorp.com'}, + 'operator': 'acmecorp.com', + 'sandbox': True + }, + idempotency_key=str(uuid4()), + creatives=[{ + 'creative_id': 'creative_gen_001', + 'name': 'AI-Generated Summer Banner', + 'format_kind': 'image', + 'assets': { + 'prompt': { + 'asset_type': 'text', + 'content': 'Create a summer banner for outdoor enthusiasts. Headline: Summer gear built for every trail. CTA: Shop the collection.' + } + } + }] + ) + + # Check for operation-level errors first + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"Generative creative synced: {result.creatives[0].creative_id}") + +asyncio.run(main()) +``` + + + +### Dry run validation + +Validate creative configuration without uploading: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncCreativesResponseSchema } from "@adcp/sdk"; +import { randomUUID } from "node:crypto"; + +const result = await testAgent.syncCreatives({ + account: { + brand: { domain: "acmecorp.com" }, + operator: "acmecorp.com", + sandbox: true, + }, + idempotency_key: randomUUID(), + dry_run: true, + creatives: [ + { + creative_id: "creative_test_001", + name: "Test Creative", + format_kind: "video_hosted", + assets: { + video: { + asset_type: "video", + url: "https://cdn.example.com/test-video.mp4", + width: 1920, + height: 1080, + duration_ms: 30000, + }, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncCreativesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors && validated.errors.length > 0) { + console.log("Validation errors found:"); + validated.errors.forEach((error) => console.log(` - ${error.message}`)); +} else if ( + "creatives" in validated && validated.creatives?.some((creative) => creative.action === "failed") +) { + console.log("Creative validation errors found."); +} else if ( + "assignments" in validated && validated.assignments?.some((assignment) => assignment.status === "error") +) { + console.log("Assignment validation errors found."); +} else { + console.log("Validation passed! Ready to sync."); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from uuid import uuid4 + +async def main(): + result = await test_agent.simple.sync_creatives( + account={ + 'brand': {'domain': 'acmecorp.com'}, + 'operator': 'acmecorp.com', + 'sandbox': True + }, + idempotency_key=str(uuid4()), + dry_run=True, + creatives=[{ + 'creative_id': 'creative_test_001', + 'name': 'Test Creative', + 'format_kind': 'video_hosted', + 'assets': { + 'video': { + 'asset_type': 'video', + 'url': 'https://cdn.example.com/test-video.mp4', + 'width': 1920, + 'height': 1080, + 'duration_ms': 30000 + } + } + }] + ) + + if hasattr(result, 'errors') and result.errors: + error_messages = [error.message for error in result.errors] + raise Exception(f"Validation errors: {error_messages}") + if any(getattr(creative, 'action', None) == 'failed' for creative in getattr(result, 'creatives', [])): + raise Exception('Creative validation errors found') + if any(getattr(assignment, 'status', None) == 'error' for assignment in getattr(result, 'assignments', [])): + raise Exception('Assignment validation errors found') + + print('Validation passed! Ready to sync.') + +asyncio.run(main()) +``` + + + +### Scoped update with creative_ids filter + +Update only specific creatives from a large library without affecting others: + + + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncCreativesResponseSchema } from "@adcp/sdk"; +import { randomUUID } from "node:crypto"; + +// Update just 2 creatives out of 100+ in the library +const result = await testAgent.syncCreatives({ + account: { + brand: { domain: "acmecorp.com" }, + operator: "acmecorp.com", + sandbox: true, + }, + idempotency_key: randomUUID(), + creative_ids: ["creative_video_001", "creative_display_001"], + creatives: [ + { + creative_id: "creative_video_001", + name: "Summer Sale 30s - Updated", + format_kind: "video_hosted", + assets: { + video: { + asset_type: "video", + url: "https://cdn.example.com/updated-video.mp4", + width: 1920, + height: 1080, + duration_ms: 30000, + }, + }, + }, + { + creative_id: "creative_display_001", + name: "Summer Sale Banner - Updated", + format_kind: "image", + assets: { + image: { + asset_type: "image", + url: "https://cdn.example.com/updated-banner.jpg", + width: 300, + height: 250, + }, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncCreativesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +if ("creatives" in validated) { + console.log( + `Updated ${validated.creatives.length} creatives, others untouched` + ); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from uuid import uuid4 + +async def main(): + # Update just 2 creatives out of 100+ in the library + result = await test_agent.simple.sync_creatives( + account={ + 'brand': {'domain': 'acmecorp.com'}, + 'operator': 'acmecorp.com', + 'sandbox': True + }, + idempotency_key=str(uuid4()), + creative_ids=['creative_video_001', 'creative_display_001'], + creatives=[ + { + 'creative_id': 'creative_video_001', + 'name': 'Summer Sale 30s - Updated', + 'format_kind': 'video_hosted', + 'assets': { + 'video': { + 'asset_type': 'video', + 'url': 'https://cdn.example.com/updated-video.mp4', + 'width': 1920, + 'height': 1080, + 'duration_ms': 30000 + } + } + }, + { + 'creative_id': 'creative_display_001', + 'name': 'Summer Sale Banner - Updated', + 'format_kind': 'image', + 'assets': { + 'image': { + 'asset_type': 'image', + 'url': 'https://cdn.example.com/updated-banner.jpg', + 'width': 300, + 'height': 250 + } + } + } + ] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + print(f"Updated {len(result.creatives)} creatives, others untouched") + +asyncio.run(main()) +``` + + + +**Why use creative_ids filter:** + +- Scoped updates: Only specified creatives modified, even with 100+ in library +- Error recovery: Retry only failed creatives after bulk sync validation failures +- Performance: Publisher can optimize processing when scope is known upfront +- Safety: Explicit targeting reduces risk of unintended changes + +## Async approval workflow + +Two distinct async patterns — match the right one to the agent's behavior: + +**Per-creative async review** (common): the sync operation itself resolves synchronously, but one or more creatives require downstream review (brand safety, policy compliance). Items in review come back on the synchronous success response with `status: "pending_review"` (or `processing` during ingestion). The buyer reconciles terminal state via [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) or a webhook. + +**Operation-level async** (less common): the whole sync is queued — the seller cannot return any per-item results before responding, because ingestion is batched or governance review gates the entire sync. The response is a submitted envelope: + +- Top-level `status: "submitted"` with `task_id` +- `message` — optional human-readable explanation +- No `creatives` array on this envelope + +Invoke [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) on the A2A profile (or the advertised AdCP polling task on MCP), or wait for the webhook. The completion artifact carries the `creatives` array with per-item `action`/`status` results; operation-level failures surface as `status: "failed"` on the task. + +**See:** [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for webhook configuration. + +## Sync modes + +### Upsert (default) + +- Creates new creatives or updates existing by `creative_id` +- `assignments[]` remains the deprecated additive assignment shorthand +- `assignment_operations[]` can traffic existing IDs without resending creative bodies: `assign` upserts weight/placement scope, `unassign` removes one assignment, and `replace` atomically swaps an existing creative for a replacement +- Updates provided fields, leaves others unchanged +- Use `creative_ids` filter to limit scope to specific creatives + +### Dry run + +- Rehearses the same `sync_creatives` acceptance path without committing library, assignment, review, or serving changes +- Returns operation-level errors, per-creative failures, assignment errors, and warnings the seller can determine before mutation +- Does not create or update creatives, package assignments, review state, or serving state +- Use for seller trafficking acceptance checks; use [`validate_input`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/validate-input-request.json) for manifest-only canonical/product preflight + +## Error handling + +| Error Code | Description | Resolution | +| ------------------------- | ------------------------------------------------- | -------------------------------------------------------------------- | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Format not supported by this seller or product | Check the product's canonical `format_options[]` | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | Manifest failed format validation: an asset file is corrupt or invalid, or assets don't match the format's requirements (codec, dimensions, duration). `error.field` identifies the offending asset path | Verify asset types and specifications match the format definition | +| [`PACKAGE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-package-not-found) | Package ID doesn't exist in media buy | Verify `package_id`; for legacy package correlation use [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) + package `context.buyer_ref` | +| [`CREATIVE_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-rejected) | Creative failed content-policy, brand-safety, or accessibility review | Revise according to the applicable policy or validated accessibility criteria | +| [`CREATIVE_LOCALE_NOT_ACCEPTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-locale-not-accepted) | Assigned creative has no materialized variant accepted by the package's effective format `locale_policy`, lacks locale topology, or uses an ineligible `serve_default` | Supply a matching source/target variant, choose a compatible format option, or change the default policy | +| [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state) | Creative is assigned to an active, non-paused package (blocks updates and `delete_missing` deletions) | Pause the package first, or create a new creative version | + +Sellers that declare `creative_specs.vast_validation` of `document` or `wrapper` additionally validate `vast` assets at sync time (including `dry_run`) and can return [`VAST_PARSE_FAILED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-vast-parse-failed), [`VAST_VERSION_MISMATCH`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-vast-version-mismatch), or [`VAST_WRAPPER_DEPTH_EXCEEDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-vast-wrapper-depth-exceeded). See [VAST Validation](/dist/docs/3.2.0-beta.4/creative/channels/video#vast-validation). + +## Best practices + +1. **Use upsert semantics** - Same `creative_id` updates existing creative rather than creating duplicates. This allows iterative creative development. Note: updates are blocked for creatives in active delivery (see #6). + +2. **Rehearse seller acceptance first** - Use `dry_run: true` when you need to catch upload, upsert, assignment, account, policy, or format errors before mutating the seller's creative library. Use [`validate_input`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/validate-input-request.json) earlier in the workflow only for manifest-structure preflight or multi-target product comparison. + +3. **Batch assignment operations** - Use one idempotent `assignment_operations[]` call for assignment updates, removals, and replacements. This keeps creative trafficking separate from MediaBuy commercial controls and avoids races between calls. + +4. **CDN-hosted assets** - Use publicly accessible CDN URLs for faster processing. Platforms can fetch assets directly without proxy delays. + +5. **Brand identity** - For generative creatives, validate brand identity schema before syncing to avoid processing failures. + +6. **Active delivery protection** - Creatives assigned to active, non-paused packages cannot be updated or deleted via `delete_missing`. Pause the package first, use `assignment_operations` to unassign or replace the creative, or create a new creative with a different `creative_id`. + +## Related tasks + +- [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) - Check product and publisher format contracts before upload +- [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) - Browse and filter creatives in a library +- [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) - Build manifests from library creatives or generate from scratch +- [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) - Generate previews of creative manifests +- [Creative Asset Types](/dist/docs/3.2.0-beta.4/creative/asset-types) - Technical requirements for assets diff --git a/dist/docs/3.2.0-beta.4/creative/template-format-ids.mdx b/dist/docs/3.2.0-beta.4/creative/template-format-ids.mdx new file mode 100644 index 0000000000..e3b6ad67cf --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/template-format-ids.mdx @@ -0,0 +1,65 @@ +--- +title: Migrating Template Format IDs +description: "Replace parameterized template format IDs with canonical declarations and creative capability IDs in AdCP 3.2." +"og:title": "AdCP — Migrating template format IDs" +--- + +Template and parameterized `format_id` patterns are deprecated in AdCP 3.2. They combined structural constraints, namespace ownership, and operation routing in one compound identifier. Canonical declarations separate those concerns. + +## Replacement model + +| Legacy use | Canonical replacement | +|---|---| +| A template ID plus width/height fields | `format_kind` with explicit canonical `params` | +| A seller's supported template list | Each product's `format_options[]` | +| A creative agent's template catalog | `creative.supported_formats[]` | +| Selecting a build template | `target_capability_id` and, when applicable, `transformer_id` | +| A manifest's template reference | `format_kind` plus optional `format_option_ref` | + +## Product declaration + +```json +{ + "format_option_id": "display_image_300x250", + "format_kind": "image", + "params": { + "width": 300, + "height": 250, + "slots": [ + { "asset_group_id": "image_main", "asset_type": "image", "required": true } + ] + } +} +``` + +Flexible size support uses `sizes[]` or a responsive bounds envelope in `params`; it does not mint one partially parameterized identifier. + +## Creative capability + +```json +{ + "capability_id": "display_image_builder", + "operations": ["build", "validate", "preview"], + "format": { + "format_kind": "image", + "params": { + "sizes": [{ "w": 300, "h": 250 }, { "w": 728, "h": 90 }] + } + } +} +``` + +```json +{ + "target_capability_id": "display_image_builder", + "message": "Adapt the launch concept to a 300x250 placement" +} +``` + +If the creative service offers separately priced or configured templates, expose them through `list_transformers`. Each transformer declares `output_capability_ids[]`; build requests select one with `transformer_id`. + +## Compatibility + +Implementations may still parse legacy template IDs for older 3.x peers. Normalize them to canonical declarations immediately and do all matching on the canonical shape. Do not author new template IDs or treat a deprecated `list_creative_formats` response as a source of truth. + +See [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) and [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers). diff --git a/dist/docs/3.2.0-beta.4/creative/universal-macros.mdx b/dist/docs/3.2.0-beta.4/creative/universal-macros.mdx new file mode 100644 index 0000000000..18c177689d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/creative/universal-macros.mdx @@ -0,0 +1,810 @@ +--- +title: Universal Macros +description: "Universal macros in AdCP insert dynamic tracking data into creatives with platform-agnostic placeholders replaced at impression time." +"og:title": "AdCP — Universal Macros" +--- + + +Universal macros enable buyers to include dynamic tracking data in their creatives without needing to know each publisher's ad server implementation details. Macros are placeholders that get replaced with actual values at impression time. + +## Overview + +When you provide creative assets to AdCP, you can include universal macro placeholders in: +- Impression tracking URLs +- Click tracking URLs +- VAST tracking events +- Landing page URLs + +**Example**: +``` +https://track.brand.com/imp? + campaign={MEDIA_BUY_ID}& + creative={CREATIVE_ID}& + device={DEVICE_ID}& + cb={CACHEBUSTER} +``` + +At impression time, this becomes: +``` +https://track.brand.com/imp? + campaign=mb_spring_2025& + creative=cr_video_30s& + device=ABC-123-DEF& + cb=87654321 +``` + +## Available Macros by Format + +Different creative contracts support different macros. Read macro support from the selected product, publisher, or creative-capability canonical declaration. + +### Common Macros (All Formats) + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{MEDIA_BUY_ID}` | Your AdCP media buy identifier | `mb_spring_2025` | +| `{PACKAGE_ID}` | Your AdCP package identifier | `pkg_ctv_prime` | +| `{CREATIVE_ID}` | Your AdCP creative identifier | `cr_video_30s` | +| `{CACHEBUSTER}` | Random number to prevent caching | `87654321` | +| `{TIMESTAMP}` | Unix timestamp in milliseconds | `1704067200000` | +| `{CLICK_URL}` | Publisher's click tracking URL | *(auto-inserted by sales agent)* | + +### Privacy & Compliance Macros + +**Critical for regulatory compliance** - Use these to respect user privacy choices in your creative logic. + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{GDPR}` | GDPR applicability flag | `1` (applies), `0` (doesn't apply) | +| `{GDPR_CONSENT}` | IAB TCF 2.0 consent string | `CPc7TgPPc7TgPAGABC...` | +| `{US_PRIVACY}` | US Privacy (CCPA) string | `1YNN` | +| `{GPP_STRING}` | Global Privacy Platform consent string | `DBABMA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA` | +| `{GPP_SID}` | GPP Section ID(s) indicating applicable sections | `7`, `7,8` (US National, US National + California) | +| `{IP_ADDRESS}` | User IP address (often masked for privacy) | `203.0.113.42`, `""` (when restricted) | +| `{LIMIT_AD_TRACKING}` | Limit Ad Tracking enabled | `1` (limited), `0` (allowed) | + +> **Privacy Warning**: `{IP_ADDRESS}` is considered personal data under GDPR and many privacy regulations. This macro may return an empty string or masked/truncated IP depending on user privacy settings, publisher policies, and regional regulations. Use geo macros (`{COUNTRY}`, `{REGION}`, `{CITY}`) instead when possible. + +**Example - Privacy-aware tracking**: +```javascript +// In creative logic +if (GDPR == 1 && GDPR_CONSENT == '') { + // No consent - don't load tracking pixels +} else { + // Load tracking +} +``` + +### Device & Environment Macros + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{DEVICE_TYPE}` | Device category | `mobile`, `tablet`, `desktop`, `ctv`, `dooh` | +| `{OS}` | Operating system | `iOS`, `Android`, `tvOS`, `Roku` | +| `{OS_VERSION}` | OS version | `17.2`, `14.0` | +| `{DEVICE_MAKE}` | Device manufacturer | `Apple`, `Samsung`, `Roku` | +| `{DEVICE_MODEL}` | Device model | `iPhone15,2`, `Roku Ultra` | +| `{USER_AGENT}` | Full user agent string | `Mozilla/5.0 ...` | +| `{APP_BUNDLE}` | App bundle ID (domain or numeric) | `com.publisher.app`, `123456789` | +| `{APP_NAME}` | Human-readable app name | `Publisher News App` | + +### Geographic Macros + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{COUNTRY}` | ISO 3166-1 alpha-2 country code | `US`, `GB`, `CA`, `FR`, `JP`, `AU` | +| `{REGION}` | State/province/region code | `NY`, `CA` (US states), `ON` (Canada), `IDF` (France), `NSW` (Australia) | +| `{CITY}` | City name | `New York`, `London`, `Tokyo`, `Sydney` | +| `{ZIP}` | Postal code | `10001` (US), `SW1A 1AA` (UK), `75001` (France), `100-0001` (Japan) | +| `{DMA}` | [Nielsen DMA code](https://help.thetradedesk.com/s/article/Nielsen-DMA-Regions) (US TV markets) | `501` (New York), `803` (Los Angeles) | +| `{LAT}` | Latitude | `40.7128`, `51.5074`, `35.6762` | +| `{LONG}` | Longitude | `-74.0060`, `-0.1278`, `139.6503` | + +### Identity Macros + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{DEVICE_ID}` | Mobile advertising ID (IDFA/AAID) | `ABC-123-DEF-456` | +| `{DEVICE_ID_TYPE}` | Type of device ID | `idfa`, `aaid` | + +### Web Context Macros + +For web-based inventory: + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{DOMAIN}` | Domain where ad is shown | `nytimes.com` | +| `{PAGE_URL}` | Full page URL (encoded) | `https%3A%2F%2F...` | +| `{REFERRER}` | HTTP referrer URL | `https://google.com` | +| `{KEYWORDS}` | Page keywords (comma-separated) | `business,finance,tech` | + +### Placement & Position Macros + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{PLACEMENT_ID}` | Global Placement ID (IAB standard) | `12345678` | +| `{FOLD_POSITION}` | Position relative to fold (display) | `above_fold`, `below_fold` | +| `{AD_WIDTH}` | Ad slot width | `300`, `728` | +| `{AD_HEIGHT}` | Ad slot height | `250`, `90` | + +### Video Content Macros + +For video formats with content context: + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{VIDEO_ID}` | Content video identifier | `vid_12345` | +| `{VIDEO_TITLE}` | Content video title | `Breaking News Story` | +| `{VIDEO_DURATION}` | Content duration in seconds | `600` | +| `{VIDEO_CATEGORY}` | IAB content category | `IAB1` (Arts & Entertainment) | +| `{CONTENT_GENRE}` | Content genre | `news`, `sports`, `comedy` | +| `{CONTENT_RATING}` | Content rating | `G`, `PG`, `TV-14` | +| `{PLAYER_WIDTH}` | Video player width | `1920` | +| `{PLAYER_HEIGHT}` | Video player height | `1080` | + +### Video Ad Pod Macros + +For video ads in commercial breaks: + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{POD_POSITION}` | Position within ad break | `1`, `2`, `3` | +| `{POD_SIZE}` | Total ads in this break | `3` | +| `{AD_BREAK_ID}` | Unique ad break identifier | `break_mid_1` | + +**Note**: Video formats also support all [IAB VAST 4.x macros](http://interactiveadvertisingbureau.github.io/vast/vast4macros/vast4-macros-latest.html) like `[CACHEBUSTING]`, `[TIMESTAMP]`, `[DOMAIN]`, `[IFA]`, etc. These work natively in VAST XML. + +### Audio Content Macros + +For audio formats with content context: + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{STATION_ID}` | Radio station or podcast identifier | `WXYZ-FM`, `pod_12345` | +| `{COLLECTION_NAME}` | Program or collection name | `Morning Drive`, `Tech Talk Daily` | +| `{INSTALLMENT_ID}` | Podcast episode identifier | `ep_2025_01_15` | +| `{AUDIO_DURATION}` | Content duration in seconds | `3600` | + +### Impression Identification + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{IMPRESSION_ID}` | Upstream-minted unique identifier per impression (publisher or ad-decision layer) | `8c9e2f3a-7b1c-4d5e-9f6a-1a2b3c4d5e6f` (UUID), `01ARZ3NDEKTSV4RRFFQ69G5FAV` (ULID), or equivalent | + +The `{IMPRESSION_ID}` macro carries a unique identifier for one impression opportunity. It is a general-purpose impression key — buyers, measurement vendors, attribution providers, and verification services all use this kind of identifier to deduplicate impression events, reconcile pixel firings across vendors, join impressions to clicks, and detect retries. Whichever upstream layer mints the value (see hierarchy below) substitutes it into creative tracking URLs, and any downstream consumer that needs to identify the impression uses the same value. + +**Common use cases:** + +- **Per-impression deduplication.** A single impression often fires many pixels (impression, viewability, video quartiles, completion, third-party verification). All of them sharing one `{IMPRESSION_ID}` lets downstream consumers reconcile "is this the same impression?" without time- or URL-based heuristics. +- **TMP cross-identity dedup.** When a TMP impression resolves to multiple user identities, the buyer's impression tracker writes the same `{IMPRESSION_ID}` to every identity's log so distinct-impression counts dedup correctly. See [Impression Tracker Implementation](/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation). +- **Cross-vendor reconciliation.** Advertisers comparing delivery between an ad server, a verification vendor, and a measurement vendor join on `{IMPRESSION_ID}` rather than building cross-walks. +- **Pixel retry dedup.** A pixel firing twice (network retry, page refresh) carries the same `{IMPRESSION_ID}`, so a server-side dedup pass on the id catches retries without over-counting. + +**When to include it:** + +- **Recommended on every impression tracking URL** — the macro is small, cheap, and the use cases above all benefit when it is consistently present. +- **Required for TMP context-only impressions** — when Identity Match returned no eligibility (or wasn't called) and no `{TMPX}` is present on the pixel, `{IMPRESSION_ID}` is the only available cross-identity dedup key for the buyer's impression tracker. + +**Format is implementation choice.** The protocol requires uniqueness with sufficient entropy to avoid cross-seller / cross-time collisions; it does not pin a wire format. UUID (any version), ULID, snowflake-style IDs, or any other collision-resistant identifier scheme are all acceptable. Buyers MUST treat the value as an opaque string for dedup purposes — no parsing, no format assumptions. + +**Three valid sources for the value, in priority order:** + +1. **Publisher-side mint** (highest priority): the publisher's own first-party code mints a fresh identifier per impression opportunity — e.g., server-side, before the ad request reaches the decision layer — and passes it forward so the decision layer can substitute it via `{IMPRESSION_ID}`. Works for both context-only and identity-bearing impressions. +2. **Decision-layer mint** (used when the publisher hasn't minted): the ad-decision layer (Prebid TMP module, ad server, SSP, or equivalent client) mints the identifier at the context↔identity join and substitutes it via `{IMPRESSION_ID}`. Also works for both context-only and identity-bearing impressions. +3. **Buyer-side mint at TMPX decode** (fallback, identity-bearing only): when neither layer above minted, the buyer's impression tracker mints the id locally at TMPX decode time per [`Impression Tracker Implementation`](/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation). This works only when `{TMPX}` is present — it cannot cover context-only impressions. + +Each layer MUST defer to whatever value an upstream layer already produced — minting a fresh id at a lower layer when a higher layer already supplied one would split logs for the same impression across two ids. In practice this means: if the publisher minted, the decision layer passes it through; if either of those minted, the buyer uses the value from the pixel rather than minting at decode. + +**Relationship to `{CACHEBUSTER}`.** The two are not interchangeable. `{CACHEBUSTER}` is a low-entropy anti-cache value sufficient to defeat HTTP intermediaries; it is not a globally-unique impression key. Both can appear in the same tracking URL serving different purposes. + +### TMP Exposure Tracking + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{TMPX}` | TMP exposure token (HPKE-encrypted) | `k1.dG1weC1leGFtcGxl...` | + +The `{TMPX}` macro carries an encrypted exposure token from the [Identity Match](/dist/docs/3.2.0-beta.4/trusted-match/specification) response. It contains the user's resolved identity tokens encrypted via HPKE, enabling the buyer's impression pixel to log per-user exposures for real-time frequency capping. Publishers substitute `{TMPX}` into tracking URLs exactly like other macros. The token is opaque — publishers MUST NOT parse, log, or make decisions based on its value. + +See [TMPX Exposure Tokens](/dist/docs/3.2.0-beta.4/trusted-match/specification#tmpx-exposure-tokens) for the encryption format and key management. + +### AXE Integration (Legacy) + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{AXEM}` | AXE contextual metadata (encoded blob) | `eyJjb250ZXh0IjoiLi4uIn0=` | + +The `{AXEM}` macro is from the legacy AXE integration. In [TMP](/dist/docs/3.2.0-beta.4/trusted-match), this is replaced by: +- **Structured creative assets** move to the `creative_manifest` field on the [Offer](/dist/docs/3.2.0-beta.4/trusted-match/specification#offer). +- **Loose dynamic rendering values** use the Offer's `creative_data` map under the package's publisher/creative contract; they are not ad-server macro substitutions. +- **Per-user exposure tracking** uses the [`{TMPX}`](#tmp-exposure-tracking) macro from Identity Match. + +### Catalog Item Macros + +For catalog-driven creatives (carousels, dynamic product ads, job boards, store locators). These macros resolve to the identifier of the specific catalog item being rendered at serve time — the same identifiers used in conversion event `content_ids` via the [`content_id_type`](/dist/docs/3.2.0-beta.4/creative/catalogs#conversion-events) field. + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{CATALOG_ID}` | Buyer-defined catalog identifier | `gmc-primary`, `job-feed` | +| `{SKU}` | Product SKU identifier | `SKU-12345` | +| `{GTIN}` | Global Trade Item Number | `00013000006040` | +| `{OFFERING_ID}` | AdCP offering identifier | `summer-sale` | +| `{JOB_ID}` | Job posting identifier | `vacancy-amsterdam-chef-42` | +| `{HOTEL_ID}` | Hotel property identifier | `grand-amsterdam` | +| `{FLIGHT_ID}` | Flight route identifier | `AMS-BCN-2025-06` | +| `{VEHICLE_ID}` | Vehicle listing identifier | `VIN-1234` | +| `{LISTING_ID}` | Real estate listing identifier | `prop-amsterdam-01` | +| `{STORE_ID}` | Store location identifier | `amsterdam-flagship` | +| `{PROGRAM_ID}` | Education program identifier | `mba-2025` | +| `{DESTINATION_ID}` | Travel destination identifier | `barcelona` | + +Use the macro that matches your catalog's `content_id_type`. For example, a product catalog with `content_id_type: "gtin"` uses `{GTIN}` in tracker URLs; a job catalog uses `{JOB_ID}`. + +#### Catalog content macros + +The macros above resolve to the catalog item's **identifier**. Catalog **content** macros resolve to a catalog item's scalar **field values**, for catalog-driven creative templates (`sponsored_placement` / DPA — Meta DPA, Snap Collection, TikTok Shopping). They are the substitute-the-value analog of the ID macros above: same single-brace family, same substitution-safety rules below, just more tokens. + +| Macro | Description | `catalog_field` | Example Value | +|-------|-------------|-----------------|---------------| +| `{ITEM_NAME}` | Item name/title | `name` | `Summer Sale` | +| `{ITEM_DESCRIPTION}` | Item description | `description` | `Up to 50% off summer collection` | +| `{ITEM_TAGLINE}` | Promotional tagline | `tagline` | `Start measuring today` | +| `{ITEM_PRICE}` | Price amount | `price.amount` | `29.99` | +| `{ITEM_PRICE_CURRENCY}` | ISO 4217 currency code | `price.currency` | `USD` | + +Each token maps 1:1 to a documented catalog item field via the existing `catalog_field` dot-notation vocabulary used by [`field_bindings`](/dist/docs/3.2.0-beta.4/creative/catalogs#field-bindings) — content macros do **not** introduce a parallel field vocabulary. The five tokens are deliberately small and cross-vertical; vertical-specific deep fields (e.g. `star_rating`, `salary.min`) are served by `field_bindings` scalars, not universal content macros. URL-valued and image-valued fields (e.g. `landing_url`, image pools) bind via `field_bindings` to `url`/asset slots and are **not** content macros — substituting a whole URL as an entire `href` would also break the `encodeURIComponent`-equivalent percent-encoding contract below. + +**Single-brace `{MACRO}` only.** `{{double-brace}}` is **not** an AdCP content-macro syntax and MUST NOT be used. Double-brace is reserved as one of the downstream ad-server macro syntaxes (`%%...%%`, `${...}`, `[...]`, `{{...}}`) that the sales agent MUST neutralize/percent-encode (see the nested-expansion rule below); adopting it for AdCP content macros would relax that guarantee and collide with downstream ad servers that interpret `{{...}}` natively. + +Which catalog items render is **seller-declared** via the `fanout_mode` enum on the [`sponsored_placement`](/dist/docs/3.2.0-beta.4/creative/canonical-formats) format (`single_item` / `per_item` / `multi_item_in_creative`) — there is no buyer-side selection field. On ML-optimized DPA surfaces (Meta Advantage+, TikTok Shopping) the platform commonly overrides buyer-authored overlay text, so content macros are a buyer-declared **hint** the seller MAY honor, not a guaranteed substitution. + +#### Substitution safety (catalog-item macros) + +Catalog-item macros are the one macro class where the value originates in **buyer-controlled data** (the catalog feed) and expands at impression time into **publisher-controlled contexts** (impression tracker URLs, click tracker URLs, VAST tracking-event URLs, AND landing / clickthrough URLs — the full set of [URL substitution targets](#overview) above). That flow is attacker-adjacent: a catalog value containing `&`, `#`, `?`, CR/LF, a stray URL fragment, or a Unicode bidi override can break out of the URL context, inject a Host-header via CRLF, or spoof audit-log rendering if substituted raw. + +The following rules apply to all catalog-item macros listed above — both the ID macros (`{CATALOG_ID}`, `{SKU}`, `{GTIN}`, `{OFFERING_ID}`, `{JOB_ID}`, `{HOTEL_ID}`, `{FLIGHT_ID}`, `{VEHICLE_ID}`, `{LISTING_ID}`, `{STORE_ID}`, `{PROGRAM_ID}`, `{DESTINATION_ID}`) and the content macros (`{ITEM_NAME}`, `{ITEM_DESCRIPTION}`, `{ITEM_TAGLINE}`, `{ITEM_PRICE}`, `{ITEM_PRICE_CURRENCY}`): + +- **Normalize to Unicode NFC before encoding.** Prior to percent-encoding, catalog-item values that are not already in Unicode Normalization Form C (NFC) MUST be normalized to NFC per Unicode Standard Annex #15. Sellers and buyers MAY send catalog values in any normalization form at `sync_catalogs` ingest (the catalog is stored as-supplied); the normalization to NFC is a step in the substitution pipeline immediately before percent-encoding, not a catalog-ingest requirement. Without this step, two implementations that both satisfy the unreserved-whitelist rule below produce different bytes for the same visual string — `café` (NFC: U+00E9) and `cafe\u0301` (NFD: U+0065 + combining U+0301) encode to `caf%C3%A9` vs `e%CC%81` respectively. NFC matches web-platform convention (WHATWG URL, HTML5 DOM, W3C Character Model). NFKC / NFKD are **not** acceptable substitutes — their compatibility folding silently mutates fullwidth/halfwidth variants and other visually-distinct glyphs that legitimately appear in Japanese/Korean retailer catalogs. +- **Percent-encode every octet that is not in the RFC 3986 `unreserved` set.** Sales agents MUST percent-encode the NFC-normalized catalog-item value such that only RFC 3986 `unreserved` characters (`ALPHA / DIGIT / "-" / "." / "_" / "~"`) remain unescaped before substituting it into a URL context (query string, path segment, or fragment). Non-ASCII octets MUST be percent-encoded after UTF-8 encoding per RFC 3986 §2.5. This is the `encodeURIComponent`-equivalent contract: reserved characters (`: / ? # [ ] @ ! $ & ' ( ) * + , ; =`) are escaped as one would expect, but so are CR (`%0D`), LF (`%0A`), space (`%20`), C0/C1 control characters, and Unicode bidi overrides — the broader enumeration closes CRLF-injection and bidi-spoofing vectors that a reserved-only rule would leave open. Encoding is applied exactly once at substitution time; downstream VAST players and ad servers firing the URL verbatim is the expected contract — they do not and MUST NOT re-decode before firing. +- **Nested macro expansion is prohibited.** A catalog-item value that itself contains text matching AdCP's `{MACRO_NAME}` syntax MUST NOT be re-expanded. Sales agents perform AdCP macro substitution in one pass: source placeholders are replaced with literal values, and those literal values are not re-scanned. A `{JOB_ID}` value of `vacancy-{DEVICE_ID}-42` produces the literal string `vacancy-%7BDEVICE_ID%7D-42` (after percent-encoding of the braces) in the emitted URL, not a second-round expansion. This rule binds AdCP's `{...}` syntax only; catalog-item values containing downstream ad-server macro syntaxes (`%%...%%`, `${...}`, `[...]`, `{{...}}`) remain the sales agent's responsibility to neutralize when targeting an ad server that would interpret them — percent-encoding per the rule above typically suffices, since `%`, `$`, `[`, `]`, and `{` all land outside the `unreserved` set. +- **Scope is URL contexts only.** These rules apply when a catalog-item macro is substituted into a URL context. When a catalog-item macro is substituted into an HTML-attribute context (for example, a banner template's `href` or `data-*` attribute rendered server-side), percent-encoding per this section does not by itself prevent attribute-context breakout; the renderer MUST additionally apply HTML-attribute escaping — the two encodings are layered, not alternatives, because the value must survive both the URL parser and the HTML attribute parser. AdCP's normative contract bounds to the URL-context case; publisher-side HTML-attribute handling is out of scope for this spec. + +Non-catalog macros (`{MEDIA_BUY_ID}`, `{PACKAGE_ID}`, `{CREATIVE_ID}`, `{GEO}`, `{COUNTRY}`, `{DEVICE_TYPE}`, etc.) are populated from publisher- or ad-server-mediated state, not from buyer-supplied feed data. Their encoding contract is governed by the ad-server integration (OpenRTB, VAST), which percent-encodes by convention. Some macros in this class derive from attacker-spoofable inputs (`{USER_AGENT}`, `{REFERRER}`, `{PAGE_URL}`, `{DOMAIN}`, `{APP_BUNDLE}` come from request headers or page metadata); the OpenRTB / ad-server encoding convention is the control today. This spec's normative MUST deliberately scopes to the buyer-controlled catalog-item class — a narrower, verifiable contract than a universal canonicalization rule. + +**Conformance fixture.** Reference test vectors pinning the encoding behavior — reserved-character breakout, nested-expansion literal preservation, CRLF injection, non-ASCII — are versioned at [`static/compliance/source/test-vectors/catalog-macro-substitution.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/catalog-macro-substitution.json). Sales agents SHOULD validate their substitution code against these vectors before shipping. + +### Creative Variant Macros + +| Macro | Description | Example Value | +|-------|-------------|---------------| +| `{CREATIVE_VARIANT_ID}` | Seller-assigned creative variant identifier | `variant_a`, `v2_mobile` | + +> **Note**: Publisher-specific custom macros may be defined in individual creative format specifications as `extra supported macros`. + +## Usage Examples + +### Video Creative with Tracking + +```json +{ + "creative_id": "cr_video_30s", + "format_kind": "video_vast", + "assets": { + "vast_xml": { + "asset_type": "vast", + "delivery_type": "inline", + "content": "\n\n \n \n \n \n \n \n 00:00:30\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n", + "vast_version": "4.2" + } + } +} +``` + +**Key Points**: +- Mix AdCP macros (`{MEDIA_BUY_ID}`) with VAST macros (`[CACHEBUSTING]`) +- AdCP macros use `{CURLY_BRACES}` +- VAST macros use `[SQUARE_BRACKETS]` +- Both work together seamlessly + +### Display Creative with Tracking + +```json +{ + "creative_id": "cr_banner_300x250", + "format_kind": "image", + "assets": { + "banner_image": { + "url": "https://cdn.brand.com/banners/spring_300x250.jpg", + "width": 300, + "height": 250 + }, + "impression_pixel": { + "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&pkg={PACKAGE_ID}&cre={CREATIVE_ID}&device={DEVICE_ID}&domain={DOMAIN}&cb={CACHEBUSTER}" + }, + "landing_url": { + "url": "https://brand.com/spring?campaign={MEDIA_BUY_ID}" + } + } +} +``` + +### Audio Creative with Tracking + +```json +{ + "creative_id": "cr_audio_30s", + "format_kind": "audio_hosted", + "assets": { + "audio_file": { + "url": "https://cdn.brand.com/audio/spring_30s.mp3", + "duration_ms": 30000 + }, + "impression_tracker": { + "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&pkg={PACKAGE_ID}&station={STATION_ID}&show={COLLECTION_NAME}&cb={CACHEBUSTER}" + } + } +} +``` + +### Catalog-Driven Creative with Item Tracking + +```json +{ + "creative_id": "cr_product_carousel", + "format_kind": "image_carousel", + "catalogs": [{ + "catalog_id": "gmc-primary", + "type": "product", + "content_id_type": "gtin", + "tags": ["summer"] + }], + "assets": { + "impression_pixel": { + "url": "https://track.brand.com/imp?buy={MEDIA_BUY_ID}&catalog={CATALOG_ID}&item={GTIN}&cb={CACHEBUSTER}", + "url_type": "tracker_pixel" + }, + "click_tracker": { + "url": "https://track.brand.com/click?buy={MEDIA_BUY_ID}&catalog={CATALOG_ID}&item={GTIN}", + "url_type": "tracker_pixel" + } + } +} +``` + +**Key point**: `{GTIN}` resolves to the specific product's GTIN at serve time. For a carousel showing 5 products, each product impression/click fires with that product's identifier — enabling per-item attribution. + +## Macro Availability by Inventory Type + +Not all macros are available in all inventory types. Check format specifications to see which macros are supported. + +**Important**: The columns below represent format types (Display, Video, etc.) which can run in different environments (app vs web). For example: +- Display ads in mobile apps have `DEVICE_ID` (✅*), but display ads on web do not +- The ✅* notation means "available in-app contexts only" +- Format type + inventory environment determine actual macro availability + +| Macro Category | Display | Video | Audio | Native | CTV/OTT | DOOH | Mobile App | Mobile Web | Desktop Web | +|----------------|---------|-------|-------|--------|---------|------|------------|------------|-------------| +| **Common** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{MEDIA_BUY_ID}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{PACKAGE_ID}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{CREATIVE_ID}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{CACHEBUSTER}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{TIMESTAMP}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **Privacy** | | | | | | | | | | +| `{GDPR}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{GDPR_CONSENT}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{US_PRIVACY}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{GPP_STRING}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{GPP_SID}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{IP_ADDRESS}` | ✅‡ | ✅‡ | ✅‡ | ✅‡ | ✅‡ | ❌ | ✅‡ | ✅‡ | ✅‡ | +| `{LIMIT_AD_TRACKING}` | ✅* | ✅* | ✅* | ✅* | ✅ | ❌ | ✅ | ❌ | ❌ | +| **Identity** | | | | | | | | | | +| `{DEVICE_ID}` | ✅* | ✅* | ✅* | ✅* | ✅ | ❌ | ✅ | ❌ | ❌ | +| `{DEVICE_ID_TYPE}` | ✅* | ✅* | ✅* | ✅* | ✅ | ❌ | ✅ | ❌ | ❌ | +| **Geographic** | | | | | | | | | | +| `{COUNTRY}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{REGION}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{CITY}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{ZIP}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{DMA}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{LAT}/{LONG}` | ✅† | ❌ | ❌ | ✅† | ❌ | ✅ | ✅† | ❌ | ❌ | +| **Device** | | | | | | | | | | +| `{DEVICE_TYPE}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{OS}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{OS_VERSION}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{APP_BUNDLE}` | ✅* | ✅* | ✅* | ✅* | ✅ | ❌ | ✅ | ❌ | ❌ | +| `{USER_AGENT}` | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | +| **Web Context** | | | | | | | | | | +| `{DOMAIN}` | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | +| `{PAGE_URL}` | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | +| `{REFERRER}` | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | +| `{KEYWORDS}` | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | +| **Placement** | | | | | | | | | | +| `{PLACEMENT_ID}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `{FOLD_POSITION}` | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | +| **Video Content** | | | | | | | | | | +| `{VIDEO_ID}` | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| `{VIDEO_CATEGORY}` | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| `{CONTENT_GENRE}` | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| **Video Ad Pods** | | | | | | | | | | +| `{POD_POSITION}` | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| `{POD_SIZE}` | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| `{AD_BREAK_ID}` | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | +| **Audio Content** | | | | | | | | | | +| `{STATION_ID}` | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `{COLLECTION_NAME}` | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| **TMP Exposure** | | | | | | | | | | +| `{TMPX}` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅§ | ✅ | ✅ | ✅ | + +**Legend**: +- ✅ = Available +- ❌ = Not available +- ✅* = In-app only (not mobile web) +- ✅† = When location permission granted +- ✅‡ = Often restricted due to privacy regulations (may return empty or masked value) +- ✅§ = DOOH uses play-log-based reporting rather than pixel URLs + +**Important Notes**: +- Privacy macros (`{LIMIT_AD_TRACKING}`, `{DEVICE_ID}`) may return empty values based on user privacy settings +- Geographic macros accuracy varies by publisher's data capabilities +- `{PLACEMENT_ID}` refers to the IAB Global Placement ID standard + +## How Macros Work + +### 1. Discovery + +Inspect the selected canonical declaration to see which macros it supports: + +```json +{ + "format_option_id": "video_30s_vast", + "format_kind": "video_vast", + "params": { + "supported_macros": [ + { + "macro": "{MEDIA_BUY_ID}", + "category": "identity", + "description": "AdCP media buy identifier", + "required": false, + "privacy_sensitive": false, + "example_value": "mb_spring_2025" + }, + { + "macro": "{DEVICE_ID}", + "category": "identity", + "description": "Mobile advertising ID (IDFA/AAID)", + "required": false, + "privacy_sensitive": true, + "example_value": "ABC-123-DEF-456" + }, + { + "macro": "{GDPR}", + "category": "privacy", + "description": "GDPR applicability flag", + "required": true, + "privacy_sensitive": false, + "example_value": "1" + } + ], + "vast_macros_supported": true + } +} +``` + +### 2. Include Macros in Creatives + +Add macro placeholders in your tracking URLs using `{MACRO_NAME}` syntax: + +``` +https://track.brand.com/imp?campaign={MEDIA_BUY_ID}&device={DEVICE_ID} +``` + +### 3. Sales Agent Processing + +When you create a media buy via `create_media_buy`, the sales agent: + +1. **Replaces AdCP ID macros** with your actual IDs: + - `{MEDIA_BUY_ID}` → `mb_spring_2025` + - `{PACKAGE_ID}` → `pkg_ctv_prime` + - `{CREATIVE_ID}` → `cr_video_30s` + +2. **Translates platform macros** to their ad server's syntax: + - `{CACHEBUSTER}` → `%%CACHEBUSTER%%` (GAM) or `{{timestamp}}` (Kevel) + - `{DEVICE_ID}` → `%%ADVERTISING_IDENTIFIER_PLAIN%%` (GAM) + - `{DOMAIN}` → `%%SITE%%` (GAM) + +3. **Inserts click trackers** automatically into clickable elements + +4. **Leaves VAST macros unchanged** (for video formats) + +#### Implementing translation with the SDK + +Sales agents don't have to hand-roll the rewrite. The `@adcp/sdk` package ships a +`translateUniversalMacros` helper that applies a per-macro mapping to a tracking +URL's query-parameter values. Each macro maps to either a **native** ad-server token +(left raw, filled by the ad server at impression time) or a concrete **value** the +agent already knows (substituted now, percent-encoded per RFC 3986): + +```typescript +import { translateUniversalMacros } from '@adcp/sdk'; + +const mapping = { + // AdCP identifiers the agent knows at media-buy creation → concrete values + '{MEDIA_BUY_ID}': { value: 'mb_spring_2025' }, + '{PACKAGE_ID}': { value: 'pkg_ctv_prime' }, + // Runtime macros → the ad server's native syntax (Google Ad Manager shown) + '{CACHEBUSTER}': { native: '%%CACHEBUSTER%%' }, + '{DEVICE_ID}': { native: '%%ADVERTISING_IDENTIFIER_PLAIN%%' }, +}; + +const { + url, + dropped_params, + unmapped_macros, + dropped_consent_macros, + frozen_consent_macros, + suspect_native_values, +} = translateUniversalMacros( + 'https://track.brand.com/imp?buy={MEDIA_BUY_ID}&pkg={PACKAGE_ID}&cb={CACHEBUSTER}&device={DEVICE_ID}', + mapping, +); + +// url: +// https://track.brand.com/imp?buy=mb_spring_2025&pkg=pkg_ctv_prime&cb=%%CACHEBUSTER%%&device=%%ADVERTISING_IDENTIFIER_PLAIN%% +// dropped_params: [] (every macro was mapped) +// unmapped_macros: [] +// dropped_consent_macros: [] (no consent macro was dropped) +// frozen_consent_macros: [] (no consent macro was supplied as a fixed value) +// suspect_native_values: [] (no value entry looks like a native token) +``` + +Behavior: + +- **`native` entries are inserted verbatim** — `%%CACHEBUSTER%%` is not percent-encoded, + so the ad server still recognizes it. A native mapping containing U+0000–U+001F + or U+007F is invalid: the helper raises a typed `unsafe_native_mapping` error and + emits no translated URL. +- **`value` entries are RFC-3986 percent-encoded**, so a value containing reserved + characters can't break or inject into the URL. +- A consent/privacy macro supplied through **`value`** is still encoded, but it is + also surfaced in **`frozen_consent_macros`**. Inspect this advisory field: fixing a + consent string at translation time can produce a stale-consent pixel. +- **A parameter whose universal macro the agent does not support is dropped entirely** + (its key is reported in `dropped_params`, the macro in `unmapped_macros`) — better to + omit a tracker the agent can't fill than to emit a broken one. A dropped + consent/privacy macro (`{GDPR_CONSENT}`, `{US_PRIVACY}`, …) is also surfaced in + **`dropped_consent_macros`** — **inspect it** so a forgotten mapping doesn't silently + ship a consent-degraded pixel. +- **Already-minted parameters pass through untouched** — `pkg_id=123456` (no macro) is + left exactly as-is. +- **`suspect_native_values`** flags any `value` entry shaped like a native token + (`%%…%%`, `{{…}}`, `${…}`, `[UPPER_SNAKE]`) — almost always a mapping that should have + used the `native` arm. +- Only query-parameter **values** are translated; a macro in a key position is left + untouched. The path and fragment also pass through byte-for-byte. +- Substitution is single-pass. Macro-shaped text inside a substituted `value` is data, + percent-encoded once, and never re-expanded. +- A URL ending in a bare trailing `?` is normalized by removing the delimiter. +- Diagnostic ordering is deterministic: `dropped_params` follows query occurrence + order (including repeated keys); `unmapped_macros` and `dropped_consent_macros` + follow first occurrence and are deduplicated; `frozen_consent_macros` and + `suspect_native_values` follow mapping property order and are deduplicated. + +The language-neutral golden fixture at +[`/compliance/latest/test-vectors/universal-macro-translation.json`](https://adcontextprotocol.org/compliance/latest/test-vectors/universal-macro-translation.json) +pins the output URL, every diagnostic array, typed rejection cases, and ratified +edge-case ordering. +SDK implementations MUST run the applicable versioned fixture rather than maintain an +independent behavioral table. + +### 4. Impression Time + +The publisher's ad server replaces remaining macros with actual values: + +``` +https://track.brand.com/imp? + campaign=mb_spring_2025& + device=ABC-123-DEF-456& + cb=87654321 +``` + +## Best Practices + +### Use Macros Consistently + +Include the same core set of macros across all your creatives: +``` +?buy={MEDIA_BUY_ID}&pkg={PACKAGE_ID}&cre={CREATIVE_ID}&cb={CACHEBUSTER} +``` + +This makes your tracking data consistent and easier to analyze. + +### Check Format Support + +Always inspect the selected canonical declaration. Not all formats support all macros. + +### Combine VAST and AdCP Macros + +For video, use both systems together: +- **VAST macros** `[CACHEBUSTING]`, `[TIMESTAMP]` - for standard video tracking +- **AdCP macros** `{MEDIA_BUY_ID}`, `{DEVICE_ID}` - for your campaign tracking + +### Privacy Compliance + +**Critical**: Always respect user privacy choices in your creative logic. + +#### GDPR Compliance (EU Traffic) + +For campaigns serving in the EU: + +```javascript +// Check consent before loading tracking +if (GDPR == 1) { + if (GDPR_CONSENT && GDPR_CONSENT != '') { + // User has consented - load tracking pixels + loadTracking(); + } else { + // No consent - skip tracking + console.log('Tracking skipped - no GDPR consent'); + } +} else { + // GDPR doesn't apply - load tracking + loadTracking(); +} +``` + +#### US Privacy / CCPA Compliance + +For US traffic: + +```javascript +// Check US Privacy string +if (US_PRIVACY == '1YYN') { + // User has opted out - don't sell personal info + skipPersonalizedTracking(); +} else { + // Load normal tracking + loadTracking(); +} +``` + +#### Device-Level Privacy + +Respect Limit Ad Tracking settings: + +```javascript +// Check if device ID is available +if (LIMIT_AD_TRACKING == 1 || DEVICE_ID == '' || DEVICE_ID == '00000000-0000-0000-0000-000000000000') { + // User has limited tracking - use contextual attribution + useContextualTracking(); +} else { + // Device ID available + useDeviceTracking(DEVICE_ID); +} +``` + +#### Privacy Macro Behavior + +**Empty Values**: Privacy-restricted macros return empty strings or zeros: +- `{DEVICE_ID}` → `""` or `00000000-0000-0000-0000-000000000000` when LAT enabled +- `{GDPR_CONSENT}` → `""` when no consent provided +- `{IP_ADDRESS}` → `""` or masked/truncated IP when privacy restricted + +**Always test for empty values** before using privacy-sensitive macros. + +### URL Encoding + +No need to URL-encode macro placeholders. The ad server handles encoding of actual values automatically. + +**Example**: +``` +❌ WRONG: https://track.com/imp?device=%7BDEVICE_ID%7D +✅ CORRECT: https://track.com/imp?device={DEVICE_ID} +``` + +The ad server will URL-encode the actual value when replacing the macro. + +### Template Syntax + +AdCP macro-bearing URLs validate as [RFC 6570 URI templates (Level 1)](https://datatracker.ietf.org/doc/html/rfc6570#section-1.2) — simple `{var}` substitution only. Level 2–4 operators (`{+SKU}`, `{#SKU}`, `{.SKU}`, `{/SKU}`, `{;SKU}`, `{?SKU}`, `{&SKU}`) are **not** used by AdCP and must not appear in manifests. The ad server performs literal string replacement, not RFC 6570 expansion. + +## Implementation Notes for Sales Agents + +*This section is for AdCP implementers, not buyers.* + +### Macro Translation Approach + +Sales agents must translate universal macros to their ad server's native syntax. The recommended approach: + +**Option 1: Hard-Code During Trafficking (MVP)** +- When creating ad server creatives, replace AdCP ID macros with actual values +- Translate platform macros to ad server syntax +- Creates one creative per line item but is simple and reliable + +**Option 2: Dynamic Wrapper (Future)** +- Intercept ad calls and inject values dynamically +- More complex but avoids creative duplication + +### Translation Examples + +**Google Ad Manager**: +```javascript +{ + '{CACHEBUSTER}': '%%CACHEBUSTER%%', + '{DEVICE_ID}': '%%ADVERTISING_IDENTIFIER_PLAIN%%', + '{DEVICE_ID_TYPE}': '%%ADVERTISING_IDENTIFIER_TYPE%%', + '{DOMAIN}': '%%SITE%%', + '{VIDEO_ID}': '%%VIDEO_ID%%' +} +``` + +**Kevel**: +```javascript +{ + '{CACHEBUSTER}': '{{timestamp}}', + '{DEVICE_ID}': '{{device.ifa}}', + '{DEVICE_ID_TYPE}': '{{device.ifaType}}', + '{DOMAIN}': '{{request.domain}}' +} +``` + +**Xandr Monetize**: +```javascript +{ + '{CACHEBUSTER}': '${CACHEBUSTER}', + '{DEVICE_ID}': '${DEVICE_APPLE_IDA}', // or ${DEVICE_AAID} + '{DOMAIN}': '${DOMAIN}' +} +``` + +### Click Tracker Insertion + +A click on a creative produces two distinct signals, and AdCP models them as **separate asset slots**: + +| Slot | Asset | Role | OpenRTB Native parallel | +|------|-------|------|--------------------------| +| `landing_page_url` | `url` | The single terminal destination the user navigates to. | `link.url` | +| `click_tracker` | `pixel_tracker` (`event: click`) | A measurement hop that fires on click **without** navigating the user there. Any number may be present. | `link.clicktrackers[]` | + +This separation is inherited from IAB OpenRTB Native: a click has **exactly one destination** and **N fire-and-forget click trackers** (the `link.fallback` deeplink is an alternative form of that one destination, not a second one). At serve time the sales agent fires every `click_tracker` as a count beacon and navigates the user to the one `landing_page_url`. Both slots are defined in [Asset Types](/dist/docs/3.2.0-beta.4/creative/asset-types). + +**Macro insertion.** Sales agents insert their ad server's click-tracking macro ahead of the destination so the platform records the click and forwards the user. The destination encoding is ad-server-specific (GAM uses append-style `%%CLICK_URL_UNESC%%`; other servers ship a self-contained `?...&rurl=` form): + +**Original creative**: +```html +
Click here +``` + +**After insertion (GAM)**: +```html +Click here +``` + +**Preserving the buyer's clickthrough parameters.** Inserting a click macro can strip query parameters already present on the buyer-supplied clickthrough URL — including ones the agent does not recognize, such as a buyer-side vendor's click identifier — which silently breaks downstream attribution. An agent that forwards these parameters applies the encoding discipline [Substitution safety](#substitution-safety-catalog-item-macros) defines for catalog-item values (Unicode NFC normalization, then percent-encoding to the RFC 3986 `unreserved` set) to any value derived from buyer- or third-party-supplied data, so preservation does not reopen URL-context breakout, CRLF injection, or bidi spoofing. Whether to make parameter preservation a normative requirement is part of the click-tracking proposal under working-group review ([#5693](https://github.com/adcontextprotocol/adcp/issues/5693)). + +**Getting a buyer's click identifier onto the landing.** A `click_tracker` is a count beacon: it records the click but does not place its identifier into the user's landing session, because only `landing_page_url` is navigated. When a buyer needs its click identifier to reach the landing (for click-level conversion attribution), the reliable, redirect-free pattern is to put that identifier directly on the `landing_page_url` it supplies — either as a literal value (`&buyer_click_id=abc123`) or composed from an AdCP macro the buyer controls (`&buyer_click_id={CREATIVE_ID}`, expanded by the sales agent at serve time). `{buyer_click_id}` is not itself an AdCP macro — the macro set is a closed registry (see [Available Macros](#available-macros-by-format)), so the buyer supplies the value, not a new token. Because the identifier rides on the one navigated URL, no party's redirect has to be the terminal hop. This works for any identifier the buyer can supply or derive ahead of serve time, and avoids multi-party redirect chaining entirely. + +Identifiers that can only be minted at click time (inside a vendor's own redirect) cannot survive on a count beacon, and routing the user *through* the vendor's redirect so its identifier lands requires a chaining contract AdCP does not define. A buyer-declarable "this tracker must be in the navigation path" slot semantic is under working-group discussion ([#5693](https://github.com/adcontextprotocol/adcp/issues/5693)); until it lands, the count beacon is the default and in-path identifier survival is out of scope. + +### Mapping Storage + +Store the mapping between AdCP IDs and ad server IDs for reconciliation: + +```javascript +{ + media_buy_id: "mb_spring_2025", + ad_server_order_id: "1234567", + packages: [ + { + package_id: "pkg_ctv_prime", + ad_server_line_item_id: "8901234" + } + ] +} +``` + +Return this in `create_media_buy` responses and make it queryable for reconciliation. + +## Related Documentation + +- [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats) - Understanding format specifications and discovery +- [Creative Protocol](/dist/docs/3.2.0-beta.4/creative) - How creatives work in AdCP +- [sync_creatives](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) - Creative management API diff --git a/dist/docs/3.2.0-beta.4/curation/coming-soon.mdx b/dist/docs/3.2.0-beta.4/curation/coming-soon.mdx new file mode 100644 index 0000000000..72619fc298 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/curation/coming-soon.mdx @@ -0,0 +1,41 @@ +--- +title: Curation Protocol +description: "AdCP curation protocol (coming soon): curated marketplace discovery, deal packaging, and inventory curation for AI advertising agents." +"og:title": "AdCP — Curation Protocol" +sidebarTitle: Coming Soon +--- + + +The Curation Protocol will enable AI assistants to discover and package media inventory based on campaign objectives, context, and brand safety requirements. + +## Planned Features + +### Inventory Discovery +- Natural language description of desired inventory +- Contextual category matching +- Cross-platform inventory packaging + +### Brand Safety +- Keyword exclusions +- Category blocks +- Custom safety profiles +- Third-party verification integration + +### Package Creation +- Multi-publisher deals +- Audience + inventory bundles +- Preferred pricing tiers + +## Expected Timeline + +- **Coming Soon**: Initial specification draft and reference implementation + +## Get Involved + +Want to help shape the Curation Protocol? + +- Join our [working group](/dist/docs/3.2.0-beta.4/community/joining-slack) +- Share your use cases +- Review early drafts + +Subscribe to updates: announcements@adcontextprotocol.org diff --git a/dist/docs/3.2.0-beta.4/faq.mdx b/dist/docs/3.2.0-beta.4/faq.mdx new file mode 100644 index 0000000000..d342d107a0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/faq.mdx @@ -0,0 +1,411 @@ +--- +title: Frequently asked questions +sidebarTitle: FAQ +description: "Answers to common questions about AdCP — licensing (Apache 2.0, free to use), how it relates to OpenRTB and IAB standards, who maintains it (AgenticAdvertising.org), and how to start implementing." +"og:title": "AdCP — Frequently asked questions" +--- + +## About agentic advertising + + + + +When you ask an AI assistant for a product recommendation, the assistant can surface relevant brands — similar to how a retail platform shows sponsored products when you search. The brand pushes its product catalog, brand identity, and content standards into the platform ahead of time. When a user's question matches, the AI generates a contextually relevant recommendation from that data. This is called [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview), and the content is always clearly labeled as sponsored — the same way sponsored search and retail media placements are labeled. + + + +AI platforms are beginning to offer advertising, and the market is growing. AdCP provides a standard protocol so your buyer agent can connect to any AI platform that implements it — without building a custom integration for each one. Your buyer agent discovers available inventory from connected sellers in real time via [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products). + + + +SEO for AI (sometimes called GAIO or generative AI optimization) focuses on getting your brand mentioned in organic AI responses by optimizing your public content. [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) is paid advertising — brands push structured product data, brand identity, and optimization goals into AI platforms through a standard protocol, and the platform generates clearly labeled sponsored content. The two approaches are complementary, not competing. + + + + + +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — session lifecycle, UI components, identity/consent object shape, and capability negotiation may change between 3.x releases with at least 6 weeks' notice. Pilot implementations are encouraged; regulated or compliance-sensitive workflows should wait for graduation to stable. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +For a practical guide to buying ads on AI platforms, see the [monetizing AI guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai). For the technical protocol walkthrough, see the [Sponsored Intelligence overview](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview). + +## Buying AI media + + + + +Both paths work. Agencies, ad networks, and commerce platforms can implement AdCP on your behalf — you provide product data and brand guidelines, they handle the protocol plumbing across AI platforms. If you run programmatic in-house, you (or your engineering team) can build a buyer agent directly against AdCP. The [monetizing AI guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai#getting-started-by-role) walks through options for brands, agencies, and small businesses. + + + +Yes. Brands push [brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) (voice, visual guidelines, positioning) and [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards) (approved claims, topics to avoid, suitability rules) into AI platforms through the protocol. Platforms enforce these at generation time — before content is shown — rather than filtering after the fact. See [governance](/dist/docs/3.2.0-beta.4/governance/overview) for the full model. + + + +Pricing varies by platform and format. Common models include CPC (cost per click) for sponsored responses and AI search results, and per-session pricing for conversational brand experiences via SI Chat Protocol. Your buyer agent discovers available pricing from connected sellers through [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) — each product lists its pricing options. + + + +AI assistants, search copilots, and conversational platforms are live today. The ecosystem is early-stage and growing. Your buyer agent discovers available inventory from connected sellers in real time via [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) — you always see what's currently reachable. + + + +AdCP does not specify attribution or viewability — it is not an MRC-accredited measurement standard. The protocol carries the delivery and usage data that your existing IAS, DV, Nielsen, Comscore, or attribution tools consume; you keep your existing measurement contracts and accreditations. See [Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations) for the full list of what AdCP does not standardize. + + + +Yes. AdCP is additive to existing agency relationships. Your agency can use buyer agents to extend their capabilities, or you can work with AdCP-certified practitioners. + + + +If your agency already supports AdCP, you can be live in days. If not, the [monetizing AI guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai#getting-started-by-role) walks through options for brands, agencies, and small businesses — including working with an AdCP-certified partner. + + + + + + What you need, what data to provide, and how to find a partner — whether you're a brand, agency, or small business. + + +## About AdCP + + + + +AdCP (Ad Context Protocol) is an open protocol that lets AI agents collaborate across advertising platforms using a standardized language — spanning product discovery, media buying, creative generation, audience activation, and brand governance. + +[Embedded human judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) keeps humans accountable: agent actions are reviewed and approved before execution. + +AdCP is a specification — not a product, platform, or company. Anyone can implement it. Start with the [introduction](/dist/docs/3.2.0-beta.4/intro) or the [building guide](/dist/docs/3.2.0-beta.4/building). + + + +AdCP is developed and maintained by [AgenticAdvertising.org](https://agenticadvertising.org) (AAO), a Delaware nonprofit trade association (501(c)(6) status pending with the IRS) with four equal voting classes — Brands, Agencies, Publishers, and Technology Providers — and a target of ten elected seats per class at steady state. + +The Foundation currently operates under an interim board appointed at incorporation: Michael Blum (Scope3), Brian O'Kelley (Scope3), Pia Malovrh (Celtra), and Benjamin Masse (Triton Digital). The interim board is replaced by the elected board at the first Annual General Meeting on **May 6, 2026**. Two of four interim seats are Scope3-affiliated, reflecting Scope3's seed contributions; see [How is AAO related to Scope3?](#how-is-aao-related-to-scope3) for the full relationship, named recusal areas, and the transition to equal voting-class representation. + +Day-to-day protocol work happens in public working groups on [GitHub](https://github.com/adcontextprotocol/adcp), with every change auditable in Git history. Contributors and organizations who have shaped the protocol through issues, pull requests, and working-group participation are named in [CONTRIBUTORS.md](https://github.com/adcontextprotocol/adcp/blob/main/CONTRIBUTORS.md). + + + +To pioneer a more intelligent, human-centric advertising future through agentic AI — pairing the scale of AI with the power of human judgment. + +Three pillars support the mission: [open standards](https://docs.adcontextprotocol.org) (AdCP), [education](/dist/docs/3.2.0-beta.4/learning/overview) (the Academy and certification program), and [governance](/dist/docs/3.2.0-beta.4/governance/overview) (frameworks that keep humans in the decisions that matter). + + + +Yes. AdCP is open source under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). There is no cost to use, implement, or license the protocol, and no permission required. The specification, [JSON schemas](https://adcontextprotocol.org/schemas/3.2.0-beta.4/), and documentation are freely available — no fee, no license agreement, no membership requirement. + + + +AdCP **3.1.12** is the current stable release. The protocol is stable and production-ready. See [Release notes](/dist/docs/3.2.0-beta.4/reference/release-notes) for the full change log and [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) for the 2.5 → 3.0 migration summary. + +The next major version (4.0) is targeted for early 2027. Under the [release cadence policy](/dist/docs/3.2.0-beta.4/reference/versioning#release-cadence), majors are at least 18 months apart, the previous major receives security patches for at least 12 months after successor GA, and deprecation notices are published at least 6 months before removal. See [Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning) for the full policy and 3.x stability guarantees. AdCP 2.5 reached end of life on 2026-08-01 and no longer receives security patches — see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). + + + +AdCP 3.0 introduces breaking changes. Start with [what's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) for the summary, then work through the [migration guides](/dist/docs/3.2.0-beta.4/reference/migration) by topic — channels, pricing, creatives, catalogs, geo targeting, optimization goals, brand identity, and audiences. New protocol domains (accounts, governance, brand protocol) are additive; existing integrations can adopt them incrementally. + + + + +## How AdCP relates to other standards + + + + +No. AdCP and OpenRTB operate at different layers and are complementary. + +| | OpenRTB | AdCP | +|---|---------|------| +| **Scope** | Impression-level transactions | Agent-level workflows | +| **Operations** | Bid requests, bid responses, win notifications | Product discovery, media buy creation, creative generation, audience activation | +| **Participants** | DSPs and SSPs | AI agents and advertising platforms | +| **Timing** | Real-time (milliseconds) | Asynchronous (seconds to days) | + +A platform can implement both. For example, a publisher's AdCP agent might accept a [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) task from a buyer agent, then use OpenRTB internally to execute the impression-level delivery. AdCP handles the workflow; OpenRTB handles the auction. + + + +AdCP is maintained by AgenticAdvertising.org (AAO), an independent specification body — not a subsidiary or working group of IAB Tech Lab. The two organizations sit at different layers of the advertising stack and run on different cadences. + +- **Layer.** AdCP describes the campaign layer — the buyer/seller workflow above the impression-level auction (product discovery, media buy creation, creative, signals, governance). IAB Tech Lab's portfolio (OpenRTB, VAST, `ads.txt`/`sellers.json`, Open Measurement SDK, content taxonomy, audience taxonomy, GPP) standardizes the impression layer and the supply-chain primitives below. AdCP coexists with all of them — content taxonomy fields align with IAB content categories, audience segments can reference IAB audience taxonomy IDs, and [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents) extends the `ads.txt`/`sellers.json` relationship semantics rather than replacing them. +- **Cadence.** AAO works through public RFCs and working groups on GitHub on a monthly cycle, suited to an agentic surface that is still moving. IAB Tech Lab's standardization process is built for slower, broader-consensus deliberation across a much larger membership. + +AdCP is Apache 2.0 — IAB Tech Lab or any other body is free to adopt, reference, or align with the specification. See [Industry landscape](/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape) for the full picture of how AdCP, OpenRTB, MCP, and A2A relate. + + + +AAMP — [IAB Tech Lab's Agentic Advertising Management Protocols framework](https://iabtechlab.com/standards/) — is an emerging suite of agentic-advertising initiatives (including an Agent Registry and Agentic Audiences work streams). Based on AAMP materials published to date, AdCP and AAMP appear to operate at different layers of the stack and can coexist. + +Put simply: **AAMP is agentic bidding; AdCP is agentic buying.** AAMP's work streams, as currently described, address impression-level concerns — how agents are discovered and identified inside the programmatic auction, and how agentic audiences move across it — and sit alongside OpenRTB at the impression layer (sub-200ms, single auction). AdCP describes the campaign layer above: how a buyer agent and a seller agent negotiate, transact, and govern a media buy across product discovery, pricing, creative, signals, and governance. The layers compose — a single AdCP `create_media_buy` can spawn thousands of impression-layer events. A platform can implement both. + +As of April 2026: + +| | AAMP | AdCP | +|---|---|---| +| **Layer** | Impression layer — agentic bidding | Campaign layer — agentic buying | +| **Maintainer** | IAB Tech Lab | AgenticAdvertising.org | +| **Maturity** | Emerging framework across multiple sub-initiatives | 3.0 GA (released April 2026) | +| **Scope** | Umbrella for multiple agentic initiatives | Single specification covering media buying, creative, signals, brand governance, and execution (TMP) | +| **Governance verification** | Being defined | Signed governance context with 15-step verification (Layer 4 of the [security model](/dist/docs/3.2.0-beta.4/building/concepts/security-model)) | +| **Public schemas** | Being defined | [Published](https://adcontextprotocol.org/schemas/3.2.0-beta.4/), Apache 2.0 | + +We do not yet publish a formal technical comparison because AAMP is still defining its normative surface. Implementers interested in both should watch both specifications as they stabilize. + + + +Google's Universal Commerce Protocol (UCP) — developed with Shopify, Walmart, Target, and others — and OpenAI and Stripe's Agentic Commerce Protocol (ACP) standardize *commerce* in AI assistants: checkout, payments, and fulfillment. AdCP standardizes *advertising*: how offers get surfaced, how a brand agent engages a user, and how attribution flows back. + +These are different layers, not competing specifications. + +| Layer | Standard | What it does | +|---|---|---| +| Commerce | UCP, ACP | Checkout, payments, fulfillment, order status | +| Advertising | AdCP | Sponsored discovery, media buying, creative, brand governance, attribution | + +The layers meet at the handoff. The [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) runs a conversational brand experience inside an AI assistant; when the user decides to buy, the host hands off to ACP or UCP for checkout, carrying the SI `session_id` through as context so the transaction can be attributed back to the sponsored conversation. The commerce protocol's own session owns the purchase flow. AdCP owns the path up to the handoff; the commerce protocol owns the transaction. + +A platform implementing both sees AdCP for "surface the right offer and engage the user" and UCP/ACP for "take the payment." Neither substitutes for the other. + + + +You can, and for some deployments that is the right call — proprietary internal protocols are fine when the scope stays inside a single organization. + +A shared protocol earns its cost when two conditions hold: (1) agents need to interoperate across organizational boundaries, and (2) the guarantees an implementer needs — idempotency, signed governance, structural privacy separation, conformance — are nontrivial to build from scratch. AdCP already specifies the wire, publishes schemas, runs conformance tests, and carries a signed-governance profile with 15-step verification (see the [security model](/dist/docs/3.2.0-beta.4/building/concepts/security-model)). Rebuilding that internally is a real cost, and if you want counterparties to trust your internal protocol, you have to socialize it anyway. + +If AdCP is missing something you need, the cheaper path is usually: extend via `ext.{vendor}`, or propose a change to the working group. See the [contributing guide](https://github.com/adcontextprotocol/adcp/blob/main/CONTRIBUTING.md). + + + +MCP defines *how* an agent calls a tool. AdCP defines *what* the agent says when it calls an advertising tool. An MCP server that exposes ad-buying tools without AdCP defines its own task shapes, its own response schemas, its own error codes, and its own governance semantics — and every buyer agent has to integrate one server at a time. + +AdCP is what makes the tools interchangeable. If every publisher's MCP server speaks AdCP's `create_media_buy`, one buyer agent can integrate with all of them. Without AdCP, "connect to a new publisher" is a new development task every time. + +Put differently: MCP is the transport, AdCP is the protocol. You use MCP to *carry* AdCP tasks — the same way HTTP carries REST payloads. See [Industry landscape](/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape) for how AdCP, OpenRTB, MCP, and A2A relate. + + + +AdCP is built for agentic workflows — direct-sold inventory, guaranteed deals, and commerce media — not the impression-level auction where OpenRTB already works. Buyers and sellers transact directly through their agents, with pricing surfaced via `pricing_options`, `price_guidance`, and (when the transaction warrants it) `price_breakdown`. + +The supply-path-optimization concerns that drove SPO disclosure in programmatic auctions look different in direct-sold transactions, where buyer and seller are authenticated counterparties rather than anonymous bidders. Buyers that want SPO-grade fee disclosure can require it through `buy_terms` as a condition of the purchase — the protocol supports it; it's not imposed as a protocol-wide mandate. + + + +`adagents.json` extends the authorization model for agentic buying while preserving the ads.txt/sellers.json relationship semantics. A publisher's `adagents.json` with `delegation_type` carries the same signal as an ads.txt `DIRECT` or `RESELLER` row, and `brand.json` properties with a `relationship` field carry the same signal as a sellers.json entry. + +The full crosswalk is in [Why adagents.json instead of ads.txt](/dist/docs/3.2.0-beta.4/governance/property/adagents#why-adagents-json-instead-of-ads-txt). + + + +These verticals fall under GDPR Art 22, EU AI Act Annex III, and US FHA / ECOA / EEOC. The policy-category mechanism already ships with `fair_housing`, `fair_lending`, and `fair_employment` entries in the registry. + +AdCP 3.0 GA will require campaigns declaring a regulated policy category to run with human review — `authority_level: agent_full` will not be accepted — with an Annex III category taxonomy and a data-subject contestation path added at the same time. Tracked in [#2310](https://github.com/adcontextprotocol/adcp/issues/2310). Until that ships, enforcement depends on the governance agent implementation, not a schema invariant. See the [governance overview](/dist/docs/3.2.0-beta.4/governance/overview) for the full model. + + + +AdCP is governed by AgenticAdvertising.Org (AAO), a pending 501(c)(6) trade association incorporated in Delaware. Governance is summarized in [CHARTER.md](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md) in the repository, with the authoritative materials (Bylaws, Membership Agreement, IPR Policy, Antitrust Policy) at [agenticadvertising.org/governance](https://agenticadvertising.org/governance). + +The interim board (as of 2026-04-18) has four directors: Michael Blum (Scope3), Brian O'Kelley (Scope3), Pia Malovrh (Celtra), and Benjamin Masse (Triton Digital). The elected board — first Annual General Meeting on **May 6, 2026** — has equal representation across four voting classes (Brands, Agencies, Publishers, Technology Providers), with a target of ten seats per class. Day-to-day protocol work happens in [working groups](/dist/docs/3.2.0-beta.4/community/working-group); change proposals flow through this repository. + +**A sell-side implementation lives at Prebid.** Development of the Prebid Sales Agent was handed to the [Prebid community](https://prebid.org/) in February 2026, [reported by AdExchanger](https://www.adexchanger.com/ad-exchange-news/the-agentic-advertising-organization-hands-development-of-its-sell-side-agent-to-prebid/). AgenticAdvertising.org maintains the specification; Prebid maintains the Prebid Sales Agent implementation. Spec governance and implementation development remain separate. + + + +Prebid.org maintains the Prebid Sales Agent and its build and release pipeline. For setup, dependency, version, build, or upgrade help, start with the project's [documentation](https://github.com/prebid/salesagent/tree/main/docs). If the documentation does not answer your question, use Prebid's [official Sales Agent support page](https://prebid.org/product-suite/sales-agent/) or email [support@prebid.org](mailto:support@prebid.org). AgenticAdvertising.org does not maintain or support this build pipeline. + + + +No. All examples in docs, storyboards, and test vectors use fictional entities — Acme Outdoor, Nova Motors, Pinnacle Agency, StreamHaus, and the other names registered in `static/compliance/source/universal/fictional-entities.yaml`. Real brands, agencies, publishers, and vendors do not appear in normative examples. The editorial rule is enforced in [`CLAUDE.md`](https://github.com/adcontextprotocol/adcp/blob/main/CLAUDE.md) and called out in [CONTRIBUTING.md](https://github.com/adcontextprotocol/adcp/blob/main/CONTRIBUTING.md). Reviewers flag real-brand usage the same way they flag vendor leakage in schemas. This is a deliberate choice to keep the protocol neutral: the spec shouldn't favor one seller, agency, or vendor by name. + + + +**Two of four interim board seats are Scope3-affiliated.** The interim board has four directors: Michael Blum (Scope3), Brian O'Kelley (Scope3), Pia Malovrh (Celtra), and Benjamin Masse (Triton Digital). This composition reflects Scope3's seed contributions to AAO and transitions to an elected board at the first Annual General Meeting on **May 6, 2026**, which carries equal representation across four voting classes (Brands, Agencies, Publishers, Technology Providers) — ten seats per class at steady state. + +Scope3 contributed foundational IP and early funding. Specifically: + +- **CSBS (Common Sense Brand Standards)** — formerly "Scope3 Common Sense" — was donated to AAO and is now governed by AAO. The formal donation and rename are tracked in [#2305](https://github.com/adcontextprotocol/adcp/issues/2305). +- **Property registry seed data** — the initial property universe and ad-infrastructure knowledge graph seeding the AAO property catalog was donated by Scope3. +- **Seed funding loan** — Scope3 provided a seed funding loan to AAO, repaid from membership revenue on a scheduled basis. Terms are disclosed in the annual financial report to members. + +Brian co-founded both Scope3 and AAO and serves as AdCP lead architect; he does not hold executive authority at AAO, and Scope3 holds no voting rights, veto, or protocol-control privileges beyond those of any other member. Because of the dual role, he recuses from AAO decisions where Scope3 has a direct commercial interest — including any change to the default brand-safety framework, property-catalog data governance, and the terms of the seed-loan repayment. + +See [CHARTER.md](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md) for the governance framework and [agenticadvertising.org/governance](https://agenticadvertising.org/governance) for the authoritative board list, funding disclosures, and recusal rules. + + + +AdCP today uses bearer-token authentication between agents — see [authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication) for the shipped model. + +AdCP 3.1 will add request signing for mutating calls (`create_*`, `update_*`, `sync_*`, `activate_*`, `acquire_*`) via RFC 9421 HTTP Signatures or JWS-signed bodies as a normative requirement, with sellers verifying against the buyer's published signing keys. Bearer tokens alone will not be sufficient for mutating calls. Tracked in [#2307](https://github.com/adcontextprotocol/adcp/issues/2307). + +Governance decisions will also be signed so that a seller or regulator can verify a `governance_context` token genuinely came from the issuing governance agent. Tracked in [#2306](https://github.com/adcontextprotocol/adcp/issues/2306). Until those land, implementers should treat bearer auth as an interim floor, not the long-term contract. + + + +Yes. AdCP's `sponsored_intelligence` channel covers advertising within AI assistants, AI search engines, and generative AI experiences — including sponsored responses, AI search sponsored results, generative display, and brand experience handoffs via SI Chat Protocol. AI platforms and ad networks implement AdCP the same way any seller does: publish [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents), implement [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with `channels: ["sponsored_intelligence"]`, and accept media buys. See the [Sponsored Intelligence protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) for product modeling, workflows, and measurement. + +Sponsored Intelligence is an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) in 3.0 (feature id `sponsored_intelligence.core`) — sellers implementing it MUST declare `sponsored_intelligence.core` in `experimental_features`, and buyers SHOULD check that declaration before relying on SI tasks. The surface may change between 3.x releases with at least 6 weeks' notice. + + + +AdCP uses [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) and [A2A (Agent-to-Agent Protocol)](https://google.github.io/A2A/) as transport layers. Think of it this way: + +- **MCP and A2A** define how agents communicate (the transport) +- **AdCP** defines what agents say about advertising (the domain) + +AdCP tasks are the same regardless of transport. A [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) call has the same request schema and response schema whether it travels over MCP or A2A. See [protocol comparison](/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison) for details on how the two transports differ. + + + +No. Platform APIs (self-serve dashboards, management APIs) serve a different purpose than AdCP. Platform APIs expose the full, proprietary feature set of a single platform. AdCP provides a standardized interface for common advertising operations across platforms. + +A platform that implements AdCP does not need to replace its existing API. AdCP sits alongside it, providing a standard interface that AI agents can use for cross-platform workflows. + + + + +## Trust, identity & governance + + + + A governance agent is an external service that an advertiser/buyer configures on their account to validate + campaign actions before they execute — budget limits, brand safety, regulatory compliance. Both the + orchestrator (buy side) and the seller call [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) + against it; it is the universal validation gate. Campaign governance + (`sync_plans`, `check_governance`, `report_plan_outcome`, `get_plan_audit_logs`) is an **AdCP 3.0 experimental** + surface — sellers implementing it declare `governance.campaign` in `experimental_features`. + + + + Your role is **validate and fulfill**. You receive the governance agent's endpoint and credentials when the + account is synced via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance), call + [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before processing a media buy, honor the + verdict (you can't override a governance decision or modify budgets), and fulfill as approved. You do **not** + report outcomes to the governance agent — the orchestrator reports acceptance, committed budget, and delivery. + + + + The **governance agent** holds the consolidated audit trail — a first-class, structured, timestamped, + attributable record of every decision, approval, and outcome, served via + [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs). A seller is **not** required to + maintain or hand over a governance audit-log store; the seller validates via `check_governance` and fulfills, + and the orchestrator reports outcomes. (Operational logging a seller keeps for its own business is separate + from the governance audit trail.) + + + + A governance agent's endpoint and credentials are provisioned to the seller through + [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). Rotation or replacement of a compromised credential + is done by re-syncing the account with updated authentication — the new configuration replaces the prior one. + Note that governance approvals (`governance_context`) are carried as a signed token per the AdCP JWS profile so + sellers can verify authenticity and freshness. This is part of the AdCP 3.0 experimental governance surface. + + + + Publishers declare which sales agents may sell their inventory in a `/.well-known/adagents.json` file on their + own domain (with `ads.txt` `managerdomain` delegation for network-managed properties). Authorization is bound + to the publisher domain — a seller's job is to publish an accurate declaration, and an agent proves + authorization by being granted a property on the queried domain (presence in `authorized_agents[]` alone is not + sufficient). See the property/authorization docs for the resolution rules. + + + +## Certification + + + + +Start a conversation with Addie, our AI teaching assistant. She'll guide you through [interactive modules](/dist/docs/3.2.0-beta.4/learning/overview) at your own pace. + + + +The Basics track has 3 modules, about 50 minutes total. Most learners finish in a few focused sessions. Practitioner tracks add 4 more modules (~90–105 minutes depending on your role track). + + + +The Basics track is free and open to everyone. Practitioner and Specialist tracks require AgenticAdvertising.org membership. + + + +Not for the Basics track. The Practitioner track includes a build project, but it uses vibe coding — you describe what you want in plain language and an AI agent writes the code. + + + +Yes. That's the point. The Practitioner build project is designed so that anyone — including marketing executives with zero coding experience — can build a working advertising agent through conversation with an AI coding assistant. + + + +Vibe coding means describing what you want in plain language and having an AI coding assistant build it. No syntax, no prior programming experience needed. You iterate by describing what to change — the AI handles the code. In the certification build project, you'll vibe-code a working advertising agent. + + + +That's expected. Two or three iteration cycles is normal, not a sign you're failing. When you hit an error, copy it back to your AI coding assistant and describe what you were trying to do. Addie coaches you through the debug loop rather than debugging for you — you'll leave the program knowing how to iterate with AI on real projects. + + + +Yes. Every module has 3–5 required demonstrations — specific things you must do or explain during the conversation. These are identical for all learners, enforced by the system, and cannot be skipped. Addie adapts the *teaching* to your background, but the *bar* is the same for everyone. An experienced ad tech executive and a newcomer both verify the same core competencies. See [assessment fairness](/dist/docs/3.2.0-beta.4/learning/instructional-design#assessment-fairness) for details. + + + +AdCP evolves. When a protocol update changes what certified professionals should know, the system identifies which credentials are affected and notifies holders about what changed. Recertification is targeted — if the update affects creative workflows but not media buying, only creative-related credentials are flagged. You won't be asked to redo material that hasn't changed. + + + + + + Open Addie and say "I want to get certified." The Basics track is free — no account required. + + +## Getting involved + + + + +Read the [introduction](/dist/docs/3.2.0-beta.4/intro) for an overview, then explore the domain that matches your use case: + +- **Sell-side platforms**: Start with [media buy](/dist/docs/3.2.0-beta.4/media-buy) to expose your inventory +- **Creative platforms**: Start with [creative](/dist/docs/3.2.0-beta.4/creative) to offer format discovery and ad generation +- **Data providers**: Start with [signals](/dist/docs/3.2.0-beta.4/signals/overview) to make audiences addressable by agents +- **Orchestrators and agencies**: Start with the [integration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0) to connect to existing AdCP agents + +JSON schemas for all tasks are available at [adcontextprotocol.org/schemas](https://adcontextprotocol.org/schemas/3.2.0-beta.4/). + + + +Both. AgenticAdvertising.org membership is open to individuals and companies. If you work in advertising — as a trader, media planner, buyer, agency strategist, or any other role — you can join as an individual member and benefit from: + +- **Certification** — The Practitioner and Specialist tracks teach you how agentic advertising works and how to build advertising agents, regardless of technical background. The Basics track is free and open to everyone. +- **Community** — Connect with others navigating the same transition from programmatic to agentic, across roles and companies. +- **Working groups** — Participate in groups that shape protocol direction. Your operational perspective as a practitioner is valuable — protocols built only by engineers miss real-world workflow needs. +- **Professional development** — Agentic advertising is early. Getting certified now positions you ahead of the curve as the industry adopts AI-driven workflows. + +You do not need to be an engineer or represent a company to join. Individual membership is designed for practitioners who want to learn, contribute, and stay ahead of the industry shift. + + + +Membership gives you access to the community, certification, and governance: + +- **Certification** — Practitioner and Specialist credential tracks, including a hands-on build project where you create a working advertising agent +- **Working groups** — Participate in groups that shape protocol direction and vote on proposed changes +- **Member directory** — List your organization's capabilities so others can find you as a partner or vendor +- **Community** — Connect with implementers, practitioners, and decision-makers across the industry + +Membership is not required to implement AdCP or to complete the free Basics certification track. See the [working group](/dist/docs/3.2.0-beta.4/community/working-group) page for how to get involved. + + + +Yes. The protocol is developed in the open. You can: + +- File issues and feature requests on [GitHub](https://github.com/adcontextprotocol/adcp/issues) +- Join the community Slack to ask questions and discuss implementations +- Submit pull requests with bug fixes or documentation improvements +- Build and publish your own AdCP implementation + +Membership is for individuals and organizations that want to go deeper — certification, working groups, and formal influence over protocol governance. + + + + + + Implementation guides, SDKs, and integration patterns. + diff --git a/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations.mdx b/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations.mdx new file mode 100644 index 0000000000..e37695e04a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations.mdx @@ -0,0 +1,119 @@ +--- +title: Annex III & Article 22 obligations +sidebarTitle: Annex III & Art 22 +description: "How AdCP's policy framework supports deployer obligations under GDPR Article 22 and EU AI Act Annex III for regulated verticals — credit, insurance, employment, housing." +"og:title": "AdCP — Annex III & Art 22 obligations" +--- + +AdCP is used to run advertising campaigns. Some of those campaigns make automated decisions about who sees an ad for a credit card, a life insurance quote, a job listing, or an apartment. Under EU law, those are not ordinary marketing decisions — they are **solely automated decisions producing legal or similarly significant effects** (GDPR Article 22) and, when made by AI systems, they fall within **Annex III high-risk categories** of the EU AI Act (Regulation (EU) 2024/1689). + +This page explains what AdCP provides, what it does not, and what the deployer is responsible for. + +## What the law requires + +**GDPR Art. 22(1)** prohibits decisions based solely on automated processing — including profiling — that produce legal effects or similarly significantly affect a natural person, unless a narrow exception applies (explicit consent, contract, or EU/Member State law). Ad-targeting decisions in regulated verticals routinely engage Art. 22: the *SCHUFA* case (CJEU C-634/21, 2023) extended "similarly significant effects" broadly. + +**EU AI Act Annex III** lists high-risk use cases that intersect AdCP: + +| Annex III reference | Vertical | +|---|---| +| §1(b) | Recruitment / selection (targeting job ads) | +| §5(b) | Evaluation of creditworthiness (credit / lending ads) | +| §5(c) | Risk assessment and pricing of life and health insurance | + +US parallels are the **Fair Housing Act** (HUD v. Facebook, 2019 settlement), **ECOA** for credit, and **EEOC / ADEA** for employment. AdCP treats housing allocation as equivalent-risk under the `fair_housing` category even though Annex III does not name it directly. + +For any of the above, the deployer MUST: + +1. **Ensure human oversight** (AI Act Art. 14) — a qualified person reviews the decision. +2. **Maintain automatic logs** (AI Act Art. 12) — timestamped records of each decision. +3. **Provide transparency** (AI Act Art. 13, GDPR Art. 13–14) — the data subject can understand what's happening. +4. **Govern input data** (AI Act Art. 10) — signals used for targeting are documented and restricted-attribute-aware. +5. **Honor contestation rights** (GDPR Art. 22(3)) — the data subject can request human intervention, express their view, and contest the outcome. + +The monetary value of the decision is irrelevant. A €20 autonomous targeting decision in a regulated vertical engages Art. 22 identically to a €2M one. + +## What AdCP provides + + +**AdCP is a building block, not a compliance shortcut.** The protocol exposes structured fields that let a deployer discharge Annex III obligations — it does not itself perform conformity assessment, DPIA, human-oversight workflow, or contestation handling. Those remain the deployer's responsibility under the AI Act and GDPR. The mechanisms below are the seams AdCP provides; the obligations stay with you. + + +AdCP's role is **Article 25 data-governance provider**: the protocol exposes structured fields that let the deployer discharge its Annex III obligations. + +| Obligation | AdCP mechanism | +|---|---| +| Human oversight (Art. 14, Art. 22(1)) | `plan.human_review_required` — governance agent escalates every action for human approval | +| Input-data governance (Art. 10) | `policy_categories`, `restricted_attributes`, `min_audience_size`, signal `restricted_attributes` declarations | +| Automatic logging (Art. 12) | `get_plan_audit_logs` — immutable record of `sync_plans`, `check_governance`, `report_plan_outcome` | +| Transparency (Art. 13) | Policy registry entries exposing policy text and exemplars used in decisions | +| Contestation discovery (Art. 22(3)) | `brand.data_subject_contestation` — a **discoverable contact point** pointing to the deployer's contestation process. AdCP does not operate the process. | +| Policy vocabulary | `eu_ai_act_annex_iii` registry policy + `fair_housing`, `fair_lending`, `fair_employment`, `pharmaceutical_advertising` categories | + +### Automatic triggering + +When a campaign plan declares any of the following, the governance agent MUST set `plan.human_review_required = true`: + +- `policy_categories` includes `fair_housing`, `fair_lending`, `fair_employment`, or `pharmaceutical_advertising` +- Any resolved policy (registry or custom) has `requires_human_review: true` +- The resolved registry policy `eu_ai_act_annex_iii` applies via jurisdiction matching +- `brand.industries` intersects a regulated sector (consumer_finance, banking, mortgage, life_insurance, health_insurance, recruitment, staffing, real_estate, property_management, housing) + +If any Annex III category resolves but `brand.data_subject_contestation` is missing, the governance agent MUST emit a critical finding — Art 22(3) cannot be discharged without a contact point. + +This is enforced by the policy framework, not by the buyer. A buyer cannot opt out of human review by omitting the flag — if the resolved policies require it, the governance agent sets it. A buyer who previously declared `human_review_required: true` cannot downgrade it on re-sync without an explicit `human_override` artifact (reason + approver). + +### `reallocation_threshold` vs. `human_review_required` + +These are **different axes** and often confused: + +| Field | Scope | Covers | +|---|---|---| +| `budget.reallocation_threshold` | Operational | Budget reallocation across sellers, channels, purchase types | +| `plan.human_review_required` | Regulatory | Decisions affecting individuals — targeting, creative selection, delivery | + +A plan can set `reallocation_threshold` equal to `budget.total` (agent reallocates budget freely) **and** `human_review_required: true` (every targeting decision gets human review). These govern different things. + +Annex III / Art. 22 obligations flow through `human_review_required`, not through `reallocation_threshold`. Restricting budget autonomy does not address Art. 22; it just adds friction to reallocation. + +## Contestation endpoint + +AdCP provides a **discovery mechanism** for the contestation process, not the process itself. Art. 22(3) gives the data subject three substantive rights — human intervention, expression of view, and contestation of the outcome — which are workflow rights the deployer must operate. `brand.data_subject_contestation` tells downstream agents and data subjects where to find that process; it does not substitute for it. + +`brand.data_subject_contestation` surfaces a **contact reference** — a URL, an email, or both. It is intentionally not a machine-callable API. Art. 22(3) rights are workflow rights exercised by humans; the deployer runs the workflow behind the contact point. + +```json +{ + "data_subject_contestation": { + "url": "https://acmecorp.com/privacy/contest", + "email": "privacy@acmecorp.com", + "languages": ["en", "de", "fr"] + } +} +``` + +Any AdCP agent exposing an automated decision under Annex III SHOULD make this pointer available to downstream consumers (e.g., in disclosure text or creative metadata). Deployers MUST monitor and respond within applicable legal timelines — one month under GDPR Art. 12(3). + +## What AdCP does not do + +- **AdCP does not perform conformity assessment.** The AI Act Art. 43 conformity assessment is the provider's obligation. +- **AdCP does not run the human-oversight workflow.** Setting `human_review_required: true` means the governance agent escalates — the human reviewer and review tooling are outside the protocol. +- **AdCP does not define the contestation process.** `data_subject_contestation` points to the deployer's process. +- **AdCP does not determine which vertical a campaign belongs to.** The buyer declares `policy_categories`; governance agents may flag mismatches but cannot guess intent. + +### Jurisdictional scoping is mechanical + +AdCP resolves policy applicability by matching `plan.countries` against policy `jurisdictions`. This is a useful first pass but incomplete at the edges: + +- A US-based deployer targeting only US audiences may still reach EU residents via cross-border signals, which engages GDPR / AI Act obligations that `plan.countries: ["US"]` would miss. +- An EU-established entity running a non-EU campaign remains subject to the AI Act under establishment-based jurisdiction (Art. 2 of Regulation (EU) 2024/1689). +- Housing / lending / employment regulations have their own extraterritorial doctrines distinct from privacy law. + +Deployers MUST evaluate applicable law based on establishment, target audience location, and processing location — not solely on the plan's country list. Governance agents SHOULD apply regulated-vertical policies conservatively: if the deployer's `brand.industries` or campaign `objectives` suggest an Annex III vertical, the policy fires regardless of whether `plan.countries` matches the policy's declared jurisdictions. + +## See also + +- [`eu_ai_act_annex_iii`](/dist/docs/3.2.0-beta.4/governance/policy-registry#seeded-policies) — the seeded registry policy +- [Policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) — `requires_human_review` on policies and categories +- [Campaign governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification) — `human_review_required` plan field +- [Embedded human judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) — the architectural principle behind mandatory oversight diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/audit-trail.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/audit-trail.mdx new file mode 100644 index 0000000000..3903a1ef74 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/audit-trail.mdx @@ -0,0 +1,325 @@ +--- +title: "Audit trail: internal vs shareable views" +sidebarTitle: Audit trail +description: "How AdCP's campaign governance audit trail splits into a full internal view and scoped shareable views, and what each counterparty can safely see." +"og:title": "AdCP — Governance audit trail" +--- + +The protocol does not mandate what a buyer must share with a counterparty. It does give you the primitives to produce two distinct views of the same audit trail: + +- An **internal view** — the buyer's full record of every check, finding, budget movement, and human review. Used for self-protection, regulator audits, and internal compliance review. +- A **shareable view** — a scoped subset, addressed to one counterparty (a seller, an agency, a third-party auditor). Reveals only what that party needs to verify their own action. + +Both are produced from [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs). The split is a matter of filtering and field selection, not a separate protocol. + +## Why split at all + +Three reasons buyers maintain distinct views: + +1. **Strategy leakage.** Total authorized budget, channel allocation, and remaining headroom across all sellers are competitive signals. Note that derived ratios are not safer than raw amounts — `budget.utilization_pct` is a one-step inverse problem if a seller knows their own committed share. A single seller does not need to know the buyer's full plan to verify their own buy. +2. **Cross-counterparty isolation.** Seller A has no business seeing the findings, governance contexts, or outcomes for Seller B. A shareable view is always scoped to the requesting party's `governance_context` values. +3. **Internal review fields.** Human review reasons, drift metrics, and oversight thresholds are the buyer's own governance posture. They protect the buyer in a regulator audit; they are not addressed to a counterparty. + +## Field tagging + +The table below classifies every field in the [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs#response) response by who can safely see it. + +| Field | Internal | Shareable with the specific seller | Shareable with regulator/auditor | +|---|:-:|:-:|:-:| +| `plans[].plan_id`, `plan_version` | yes | yes (when scoped) | yes | +| `plans[].status` | yes | yes (when scoped) | yes | +| `plans[].budget.authorized` | yes | no | yes | +| `plans[].budget.committed` | yes | no | yes | +| `plans[].budget.remaining` | yes | no | yes | +| `plans[].budget.utilization_pct` | yes | no | yes | +| `plans[].channel_allocation.*` | yes | no | yes | +| `plans[].governed_actions[].governance_context` | yes | yes (own context only) | yes | +| `plans[].governed_actions[].purchase_type` | yes | yes (own context only) | yes | +| `plans[].governed_actions[].status` | yes | yes (own context only) | yes | +| `plans[].governed_actions[].committed` | yes | yes (own context only) | yes | +| `plans[].governed_actions[].check_count` | yes | yes (own context only) | yes | +| `plans[].summary.checks_performed`, `outcomes_reported` | yes | no | yes | +| `plans[].summary.statuses` | yes | no | yes | +| `plans[].summary.findings_count` | yes | no | yes | +| `plans[].summary.human_reviews[]` | yes | no | redact reason; share resolution + timestamp on request | +| `plans[].summary.drift_metrics.*` | yes | no | available if the buyer's counterparty rules require disclosure | +| `plans[].entries[].id`, `type`, `timestamp` | yes | yes (own context only) | yes | +| `plans[].entries[].caller` | yes | yes (own context only) | yes | +| `plans[].entries[].tool` | yes | yes (own context only) | yes | +| `plans[].entries[].check_type`, `verdict` | yes | yes (own context only) | yes | +| `plans[].entries[].mode` | yes | yes (own context only) | yes — distinguishes a `denied` from an `approved`-with-finding under `audit` | +| `plans[].entries[].explanation` | yes | yes (own context only) | yes | +| `plans[].entries[].categories_evaluated` | yes | yes (own context only) | yes | +| `plans[].entries[].policies_evaluated` | yes | yes (own context only) | yes | +| `plans[].entries[].findings[]` | yes | yes (own context only) | yes | +| `plans[].entries[].plan_hash` | yes | yes (own context only) | yes — auditors verify this | +| `plans[].entries[].governance_context` | yes | yes (own context only) | yes | +| `plans[].entries[].purchase_type` | yes | yes (own context only) | yes | +| `plans[].entries[].outcome`, `outcome_status` | yes | yes (own context only) | yes | +| `plans[].entries[].committed_budget` | yes | yes (own context only) | yes | + +## Producing a shareable view + +To answer "what should I share with Seller X?", filter the audit query to the contexts that belong to that seller and drop plan-level aggregates. + +**Request scoped to one seller's actions:** + +```json +{ + "tool": "get_plan_audit_logs", + "arguments": { + "plan_ids": ["plan_q1_2026_launch"], + "governance_contexts": ["gc_mb_seller_456"], + "include_entries": true + } +} +``` + +This narrows `governed_actions` and `entries` to the requested contexts. The buyer is still responsible for stripping `budget.*`, `channel_allocation.*`, `summary.findings_count`, `summary.statuses`, and `summary.drift_metrics` before forwarding — those summaries cover the entire plan and reveal totals across other sellers. + +**Minimum compliance attestation (no entries):** + +For counterparties who only need proof that a buy was governed — not the full trail — share a four-field attestation derived from the audit response: + +```json +{ + "governance_context": "gc_mb_seller_456", + "verdict": "approved", + "plan_hash": "oR0jFDEtzcwgPbNf-Ofd_fZHYfAyD1TRbzGOFBVCG-c", + "policies_evaluated": ["us_coppa", "alcohol_advertising"] +} +``` + +The seller can verify the `plan_hash` against the plan revision they signed under, and the `policies_evaluated` list confirms which registry policies were applied. Nothing else about the buyer's portfolio is disclosed. + +## Regulator and auditor views + +A regulator typically asks for one of three things: + +1. **Did human oversight occur where required?** Share `summary.human_reviews[]` and the `requires_human_review` flag from the resolved policies. Reasons may be redacted or summarized; resolutions and timestamps should be intact. +2. **Did the buy comply with a specific regulation?** Share entries scoped by `policies_evaluated` containing the regulation's `policy_id` (e.g., `us_coppa`). Include `plan_hash` so the regulator can verify against the plan revision. +3. **Are oversight metrics within thresholds?** Share `summary.drift_metrics` and the policy-derived thresholds. A `human_review_rate` below `human_review_rate_min` is a signal worth explaining. + +The protocol does not define a regulator API. Counterparty rules govern the disclosure; the audit trail makes the disclosure possible. + +## Worked example: a clean buy + +A plan with $500K authorized for an OLV/display campaign. The orchestrator runs an intent check on `get_products`, then an execution check on `create_media_buy` for $150K, then reports the outcome. The full internal audit response: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/get-plan-audit-logs-response.json", + "status": "completed", + "plans": [ + { + "plan_id": "plan_q1_2027_acme", + "plan_version": 1, + "status": "active", + "budget": { + "authorized": 500000, + "committed": 150000, + "remaining": 350000, + "utilization_pct": 30 + }, + "governed_actions": [ + { + "governance_context": "11ab64d0-2e20-4b62-8964-b024cfc98d36", + "purchase_type": "media_buy", + "status": "active", + "committed": 150000, + "check_count": 1 + } + ], + "summary": { + "checks_performed": 2, + "outcomes_reported": 1, + "statuses": { "approved": 2, "denied": 0, "conditions": 0 }, + "findings_count": 0 + }, + "entries": [ + { + "id": "chk_378be2f1", + "type": "check", + "timestamp": "2027-01-15T14:32:41.008Z", + "caller": "https://ads.seller-a.example", + "tool": "create_media_buy", + "check_type": "execution", + "mode": "enforce", + "purchase_type": "media_buy", + "governance_context": "11ab64d0-2e20-4b62-8964-b024cfc98d36", + "verdict": "approved", + "explanation": "All governance checks passed.", + "policies_evaluated": [], + "categories_evaluated": ["delegation_authority"], + "findings": [] + }, + { + "id": "out_9b2c1f04", + "type": "outcome", + "timestamp": "2027-01-15T14:32:41.105Z", + "outcome": "completed", + "committed_budget": 150000, + "purchase_type": "media_buy", + "governance_context": "11ab64d0-2e20-4b62-8964-b024cfc98d36" + } + ] + } + ] +} +``` + +The seller's shareable view of the same trail is the `governed_actions[]` entry and the `entries[]` filtered to `governance_context = 11ab64d0...`. Plan-level `budget.authorized`, `budget.remaining`, and the `summary` aggregate stay buyer-side. + +## What violations look like + +Findings are how the audit trail communicates risk. Two patterns worth knowing: + +### Security-shaped finding: an unauthorized seller + +The plan declares `approved_sellers: ["https://ads.seller-approved.example"]`. A different seller calls `check_governance` and gets denied: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/check-governance-response.json", + "check_id": "chk_0ac8d7de", + "check_type": "intent", + "plan_id": "plan_2027_apex_athletic", + "verdict": "denied", + "explanation": "Denied: Caller https://ads.seller-rogue.example is not in the plan's approved sellers list.", + "categories_evaluated": ["delegation_authority", "seller_compliance"], + "policies_evaluated": [], + "findings": [ + { + "category_id": "seller_compliance", + "severity": "critical", + "explanation": "Caller https://ads.seller-rogue.example is not in the plan's approved sellers list." + } + ] +} +``` + +The corresponding plan summary records `statuses.denied: 1` and `findings_count: 1`. No `governance_context` is issued; the audit entry captures the denied attempt through `check_id`. + +### Coaching-shaped finding: an Annex III prerequisite is missing + +A plan with `policy_categories: ["fair_lending"]` (mortgage, consumer credit, etc.) auto-flips `human_review_required: true`. If the brand profile doesn't expose a contestation contact, the check fails closed with an actionable explanation: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/check-governance-response.json", + "check_id": "chk_8360a36d", + "check_type": "intent", + "plan_id": "plan_2027_nova_mortgage", + "verdict": "denied", + "explanation": "Denied: Plan requires human review (Annex III / Art 22) but brand does not expose data_subject_contestation. Art 22(3) requires a discoverable contact point for the data subject to request human intervention, express their view, and contest the decision. Set brand.data_subject_contestation in brand.json.", + "categories_evaluated": ["data_subject_contestation", "delegation_authority"], + "policies_evaluated": [], + "findings": [ + { + "category_id": "data_subject_contestation", + "severity": "critical", + "explanation": "Plan requires human review (Annex III / Art 22) but brand does not expose data_subject_contestation. Set brand.data_subject_contestation in brand.json." + } + ] +} +``` + +The denial is also a coaching moment — the operator sees exactly what to fix. This is the shape good governance findings should take: a category, a severity, and a path forward. + +## The operator's dial: enforce / advisory / audit + +`mode` is set on the plan via [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) and is the operator's primary lever. The same caller, same payload, same finding produces three different outcomes depending on mode. + +**`mode: "enforce"`** — the buy is blocked at the governance layer: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/check-governance-response.json", + "check_id": "chk_enforce_001", + "check_type": "intent", + "plan_id": "plan_mode_enforce", + "verdict": "denied", + "explanation": "Denied: Caller https://ads.seller-rogue.example is not in the plan's approved sellers list.", + "categories_evaluated": ["delegation_authority", "seller_compliance"], + "policies_evaluated": [], + "findings": [ + { + "category_id": "seller_compliance", + "severity": "critical", + "explanation": "Caller https://ads.seller-rogue.example is not in the plan's approved sellers list." + } + ] +} +``` + +**`mode: "advisory"`** — the buy proceeds; the operator gets a critical finding to act on post-hoc: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/check-governance-response.json", + "check_id": "chk_advisory_001", + "check_type": "intent", + "plan_id": "plan_mode_advisory", + "verdict": "approved", + "explanation": "Approved with 1 advisory finding(s).", + "expires_at": "2027-01-15T15:32:41Z", + "governance_context": "eyJhbGciOiJFZERTQSJ9.advisory.signature", + "categories_evaluated": ["delegation_authority", "seller_compliance"], + "policies_evaluated": [], + "findings": [ + { + "category_id": "seller_compliance", + "severity": "critical", + "explanation": "Caller https://ads.seller-rogue.example is not in the plan's approved sellers list." + } + ] +} +``` + +**`mode: "audit"`** — the buy proceeds silently; the finding is in the log for retrospective analysis: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/governance/check-governance-response.json", + "check_id": "chk_audit_001", + "check_type": "intent", + "plan_id": "plan_mode_audit", + "verdict": "approved", + "explanation": "All governance checks passed.", + "expires_at": "2027-01-15T15:32:41Z", + "governance_context": "eyJhbGciOiJFZERTQSJ9.audit.signature", + "categories_evaluated": ["delegation_authority", "seller_compliance"], + "policies_evaluated": [], + "findings": [ + { + "category_id": "seller_compliance", + "severity": "critical", + "explanation": "Caller https://ads.seller-rogue.example is not in the plan's approved sellers list." + } + ] +} +``` + +The trade-off: + +| Mode | Velocity | Safety | When to use | +|---|---|---|---| +| `enforce` | Slowest — checks block buys | Highest — violations cannot ship | Production for regulated brands; default for new operators | +| `advisory` | Full velocity | Findings surface but don't block | Rolling out a new policy; observing behavior before tightening | +| `audit` | Full velocity | Findings logged silently | Backstop telemetry; never the only governance posture | + +A plan can shift modes between revisions — the governance decisions in the audit trail tell the truth about how each historical buy was governed. The operating mode should be visible on every audit entry; today it appears on the per-`check_governance` response but not consistently on `get_plan_audit_logs` responses ([#3156](https://github.com/adcontextprotocol/adcp/issues/3156)). + +## What the protocol guarantees + +Two invariants you can rely on when designing your shareable view: + +- **`plan_hash` is verifiable.** It is `base64url_no_pad(SHA-256(JCS(plan_payload)))` over the plan revision the check was evaluated against. Any party with the plan revision can recompute and byte-compare the digest. See [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit). +- **Inline policies cannot relax registry policies.** A buyer's bespoke `policy` entries can only add restrictions on top of registry-sourced policies. So when a shareable view shows `policies_evaluated: ["us_coppa"]`, the counterparty can trust that the registry version of `us_coppa` was applied at its declared `enforcement` level — the buyer did not silently downgrade it. See [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry#policy-categories). + +## Related + +- [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) — request and response schema +- [Campaign governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification) — plan binding, drift detection, governance context lifecycle +- [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) — policy versioning, `effective_date`, registry vs inline policies +- [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) — when human review is required diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/index.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/index.mdx new file mode 100644 index 0000000000..6a15b82394 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/index.mdx @@ -0,0 +1,250 @@ +--- +title: Campaign Governance +description: "AdCP Campaign Governance validates autonomous media buys against authorized plans, budget limits, and compliance policies using three-party trust." +"og:title": "AdCP — Campaign Governance" +sidebarTitle: Overview +"og:image": /images/walkthrough/diagram-governance-triangle.png +--- + +# Campaign Governance Protocol + +Three-party governance: buyer orchestrator sends plan to governance agent, governance agent validates and returns approval, orchestrator sends buy to seller, seller verifies with governance agent. No party grades its own homework. + +Campaign Governance provides automated validation for buy-side advertising transactions. When AI agents buy media autonomously, Campaign Governance acts as an independent review layer -- validating every action against authorized plans, brand policies, budget limits, and compliance requirements. + +## The problem + +An AI agent interprets a brief, picks a seller, negotiates a media buy, and takes it live -- all without a human watching. This is the "no eyes" problem: autonomous agents making real financial commitments with no independent check that the purchase matches what was authorized. + +The existing AdCP governance domains solve *where* ads run (Property Governance), *what content is adjacent* (Content Standards), *what creatives are safe* (Creative Governance), and *who the brand is* (Brand Protocol). None of them govern **what gets bought and why**. + +Without a governance layer on the buy side: + +- An agent could exceed authorized budgets or reallocate spend outside approved parameters +- The agent could misinterpret a brief -- buying in New Mexico when the brief said Mexico +- Targeting could drift in ways that violate brand policy or create discriminatory patterns +- Seller responses could differ from what was requested, with no automated verification +- Compliance policies are fragmented -- copy-pasted as natural language strings into every campaign plan, with no standard library and no separation between who defines policies and who executes campaigns + +Campaign Governance fills this gap with three mechanisms: **plans** that define what's allowed (independent of the agent), **seller-side governance checks** that verify purchases independently of the buyer, and a **policy registry** that standardizes compliance rules across governance agents. + +Governance supports incremental adoption — organizations configure their governance agent to start in audit mode (log everything, approve everything), move to advisory (flag violations without blocking), and eventually enforce (block on violations). See the [safety model](/dist/docs/3.2.0-beta.4/governance/campaign/safety-model) for the adoption path. Mode is internal to the governance agent, not a protocol field. + +### Industry precedent + +Campaign Governance formalizes patterns that exist in ad tech today as manual processes: + +| Manual process | Campaign Governance equivalent | +|---------------|-------------------------------| +| Agency trading desk QA | Automated validation against the IO | +| DSP pre-bid rules | Budget authority and targeting compliance checks | +| Advertiser approval workflows | Human escalation for high-risk actions | +| Post-campaign audit | Seller verification and delivery validation | +| Compliance review | Regulatory checks by jurisdiction | + +## How it works + +The orchestrator pushes campaign plans via [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), then calls [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before commitment-bearing operations. Every enforcing service verifies the approved `governance_context`; media-buy services that claim online execution checking additionally validate `planned_delivery` before commit. After the response, the orchestrator calls [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) to close the loop. + +```mermaid +flowchart LR + subgraph brand["Brand organization"] + policy["Policy team"] + buying["Buying team / Agency"] + orchestrator["Orchestrator"] + gov["Authorization /
Governance Agent"] + policy -->|"configure compliance"| gov + buying -->|"operate"| orchestrator + orchestrator -->|"1. sync plan"| gov + orchestrator -->|"2. check_governance
(tool + payload)"| gov + orchestrator -->|"5. report outcome"| gov + gov -->|"status / findings"| orchestrator + end + + orchestrator -->|"3. create_media_buy
(governance_context)"| seller["Seller Agent"] + seller -->|"4. check_governance
(governance_context + planned_delivery)"| gov + seller -->|"confirmed + planned_delivery"| orchestrator +``` + +Three parties participate in campaign governance: + +- The **orchestrator** validates actions against the plan before sending them to sellers (buyer-side governance loop). +- The **seller** independently checks purchases by calling the buyer's governance agent with its planned delivery parameters (seller-side governance check). +- The **governance agent** validates both the orchestrator's intended actions and the seller's planned delivery against the same campaign plan. + +This creates a trust model where neither the buyer nor the seller can unilaterally misrepresent what was approved. The orchestrator cannot skip governance (the seller checks independently), and the seller cannot deliver something different from what was approved (the governance agent has a record of the planned delivery). + +## Separation of duties + +Campaign Governance enforces an automated separation between **who defines policies** and **who executes campaigns**: + +- The **policy team** selects applicable compliance policies from the [policy registry](#policy-resolution), configures brand-specific rules, and maintains the brand's compliance profile. This configuration lives at the brand level (in brand.json), not in individual campaign plans. +- The **buying team** (or agency) operates the orchestrator, creates campaign plans, and executes media buys. Plans specify campaign context -- budget, channels, flight dates, authorized markets -- and can reference additional registry policies or campaign-specific rules when needed. +- The **governance agent** resolves applicable policies from the brand's compliance configuration and validates every orchestrator action against them. + +The orchestrator cannot bypass or modify the brand's compliance policies -- those are resolved from the brand configuration by the governance agent. Plans can layer on additional policies via `policy_ids` and `custom_policies`, but the brand's baseline always applies. When a regulation changes, the policy team updates the brand configuration once and all active campaigns pick up the change automatically. + +## Policy resolution + +The governance agent resolves applicable policies through the brand reference in the plan: + +1. The plan includes `brand.domain` (required) and optionally `countries`/`regions` (authorized markets for this campaign) +2. The governance agent resolves the brand via the [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol/index) and retrieves its compliance configuration +3. The brand configuration references standardized policies from the **policy registry** by ID and includes any custom brand-specific policies +4. The governance agent intersects these policies with the plan's authorized markets -- only policies applicable to those markets are active for this plan +5. The resolved policy set is what gets evaluated during `check_governance` +6. Media buys targeting outside the authorized markets are denied regardless of policy compliance + +The **[policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry)** is a community-maintained library of standardized, machine-readable advertising compliance policies -- covering jurisdictions (UK HFSS restrictions, US COPPA, EU GDPR), policy categories (children directed, pharmaceutical, fair housing, fair employment), and brand safety baselines. Brands select applicable policies from the registry rather than writing their own. + +## The governance loop + +Every seller interaction follows a before/after pattern: + +1. **Before**: The orchestrator calls `check_governance` with `tool` and `payload` — the action it intends to send. The governance agent returns a status. +2. **Execute**: If approved, the orchestrator sends the action to the service with `governance_context` on the protocol envelope. The service does not need the plan ID. +3. **Check**: A governance-enforcing service prepares what it will deliver without committing, calls `check_governance` with `governance_context` and `planned_delivery`, and commits only if the governance agent approves. +4. **After**: The orchestrator calls `report_plan_outcome` with the seller's response. The governance agent updates its state and flags any discrepancies. + +This pattern applies to request schemas carrying an `x-governed-commitment` annotation, including media purchases, rights, paid signal activation, and creative services. Discovery and read-only tasks do not create commitments and are outside the gate. + +## Planned delivery + +When a seller confirms a media buy, it returns a `planned_delivery` object describing what it will actually deliver -- the geographic targeting, channels, flight dates, frequency caps, and budget it will use. This may differ from what the buyer requested (e.g., the seller may apply additional frequency caps or adjust geo to match available inventory). + +`planned_delivery` serves two purposes: + +1. **Governance check**: The seller sends `planned_delivery` to the buyer's governance agent, which confirms it matches the campaign plan. This prevents the seller from delivering something the buyer didn't approve. +2. **Discrepancy detection**: The buyer can compare `planned_delivery` against the original request and flag differences via `report_plan_outcome`, catching configuration drift before delivery begins. + +## Seller-side governance checks + +Buyer-side governance has a trust limitation: the orchestrator attests to its own compliance. An LLM agent could hallucinate governance approval, skip validation, or misrepresent what was validated. You can't trust the agent that's spending money to also be the one that checks whether spending that money is OK. + +Service-side governance checks solve this. The buyer syncs governance agents (URLs with credentials) via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). When a service receives a governed commitment, it prepares what it plans to deliver and calls the governance agent before committing. The execution decision is binary: `approved` or `denied`. + +This also catches misinterpretation. If the brief says "Mexico" and the seller interprets it as "New Mexico," the governance agent sees the geo mismatch against the plan and denies the buy -- before it goes live. + +The webhook covers the full media buy lifecycle: + +- **Purchase**: POST before confirming `create_media_buy` -- is this buy approved? +- **Modification**: POST before confirming `update_media_buy` -- is this change OK? +- **Delivery**: POST periodically during delivery -- is delivery still on track? + +The governance agent maintains all state. The seller just posts what's happening -- no chaining, no conversation history, no state to track across servers. + +Seller-side lifecycle checks are optional unless the task advertises `online_execution_check`; that mode makes the purchase/modification pre-commit check mandatory for the claimed task. Delivery monitoring remains separately opt-in. Sellers can otherwise start with signed-context verification and add online phases incrementally. See the [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#governance-checks) for the full protocol. + +Sellers that implement governance checks gain a competitive advantage: they can prove to buyers that purchases were independently verified before execution. This reduces dispute risk, automates compliance verification, and signals trust to buyers with strict oversight requirements. + +## Adoption path + +Governance agents support incremental adoption through their internal mode configuration. The protocol surface is the same regardless of mode. Intent checks may return `approved`, `denied`, or `conditions`; execution checks return `approved` or `denied`. How the governance agent arrives at that decision is its own concern. + +In practice, organizations configure their governance agent to progress through three stages: + +1. **Audit** — Log everything, approve everything. The governance agent evaluates fully but always returns `approved` with findings attached. The organization reviews findings to assess false positive rates and calibrate policies. +2. **Advisory** — Approve with prominent findings and recommended corrections. The decision is still unambiguously `approved`; humans review findings post-hoc. +3. **Enforce** — Block on violations. The default for production governance. + +This works the same way for a single brand buying direct and for a holding company with 35 brands and multiple agency partners. + +### For small brands + +A brand buying direct (no agency, no policy team) still gets: +- Automated budget limits and geo enforcement from the campaign plan +- Compliance coverage from the [policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) -- registry policies are community-maintained, no per-brand configuration required +- Seller-side verification via governance checks +- Full audit trail via `get_plan_audit_logs` + +Set a `budget.reallocation_threshold` to define guardrails on how much the agent may reallocate without human approval. The governance agent handles the rest. + +### For multi-agency and holding company setups + +Plans support [delegations](/dist/docs/3.2.0-beta.4/governance/campaign/specification#delegations) that scope which agents can execute against a plan -- by authority level, budget limit, market, and expiration. A brand can delegate `full` authority to one agency for European markets and `execute_only` authority to another for North America. + +For holding companies managing multiple brands, [portfolio governance](/dist/docs/3.2.0-beta.4/governance/campaign/specification#portfolio-governance) defines cross-brand constraints: total portfolio spend caps, shared policy enforcement, and corporate-level exclusions that no individual brand plan can override. + +### Finding confidence + +Governance findings include optional [confidence scores](/dist/docs/3.2.0-beta.4/governance/campaign/specification#finding-confidence) (0-1) that distinguish "this definitely violates GDPR" (0.95) from "this might violate depending on how audience segments resolve" (0.6). This helps brands respond appropriately -- high-confidence findings can be auto-resolved, medium-confidence findings get flagged for human review. + +### Drift detection + +The [audit log](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) includes aggregate metrics -- human review rate, auto-approval rate, human override rate -- with trend indicators. A declining human review rate may mean the system is well-calibrated or that oversight is eroding. Surfacing the trend lets the organization make that call. + +## Lifecycle phases + +Campaign Governance is stateful across three phases: + +| Phase | When | What gets validated | +|-------|------|-------------------| +| **Discovery** | Before `get_products` | Search intent matches plan, products from authorized sellers, prices reasonable | +| **Purchase** | Before `create_media_buy` / `update_media_buy` | Budget within limits, targeting compliant, flight dates match, creative assignments appropriate | +| **Delivery** | Periodic reporting | Pacing within parameters, spend rate consistent, delivery metrics on track | + +Each phase builds on context from earlier phases. During **purchase**, the governance agent knows which products were discovered (and approved) during **discovery**. During **delivery**, it monitors execution against what was purchased. + +## Validation categories + +The labels below are common agent-internal vocabulary for governance response and audit output. They are illustrative, not a protocol-level enum or a capability declaration. Consumers display them with their human-readable findings and MUST NOT pattern-match them as machine-level contracts. + +| Category | What it checks | +|----------|---------------| +| `budget_authority` | Spend within authorized limits, per-seller concentration, reallocation magnitude | +| `strategic_alignment` | Channel mix, audience match, publisher quality tier, brief consistency | +| `bias_fairness` | Protected category targeting, audience composition, disparate impact. Matches audience selectors against `restricted_attributes` defined by the plan's `policy_categories` | +| `regulatory_compliance` | Jurisdiction-specific regulations resolved from the brand's compliance configuration and the plan's authorized countries/regions | +| `seller_verification` | Configuration accuracy, undisclosed changes, delivery plausibility | +| `brand_policy` | Brand-level compliance policies resolved from the brand configuration and policy registry -- competitor separation, category adjacency, custom brand rules | +| `accessibility_compliance` | Accessibility posture evaluated by the agent's own policy model, such as a brand- or plan-stated WCAG objective or accessible-asset expectation | + +`accessibility_compliance` is documented response/audit vocabulary, not a policy-activation mechanism. Its presence does not make an agent evaluate accessibility, activate a policy, or establish a typed accessibility requirement on canonical formats or creative assets. The canonical 3.2 format schemas do not yet define that typed contract; legacy format accessibility hints do not fill that gap. A future protocol slice must define discovery, policy activation, typed requirements, and structured per-asset failures before clients can rely on accessibility enforcement. + +This label belongs to governance rather than Content Standards: Content Standards evaluates creative-content suitability, while a governance finding records the agent's evaluation of an applicable technical or policy obligation. An agent may surface `accessibility_compliance` only when its own policy model actually performed that review. + +## Statuses + +Every governance check returns a structured status: + +| Status | Meaning | Caller action | +|--------|---------|---------------| +| `approved` | Passes all checks | Proceed | +| `denied` | Violates a hard policy | Do not proceed; report to user | +| `conditions` | Could pass with specific changes | Apply conditions, re-call `check_governance` | + +Finding severity levels indicate urgency: + +- **`info`** -- Logged for audit. Used on `approved` responses for informational findings. +- **`warning`** -- Human should review. Used on `approved` responses when action is allowed but attention is needed. +- **`critical`** -- Action is blocked. Used on `denied` responses. + +When the governance agent determines that human review is required (e.g., a reallocation exceeds the plan's `reallocation_threshold`, or the plan has `human_review_required: true`), the task goes async — it returns standard async task lifecycle statuses and eventually resolves to `approved` or `denied` once the human acts. This integrates with the existing AdCP async task mechanism. The caller does not need special handling beyond supporting async tasks (see [task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)). + +## Relationship to other governance domains + +Campaign Governance composes with the existing domains -- it does not duplicate them: + +| Domain | Relationship | +|--------|-------------| +| **[Property Governance](/dist/docs/3.2.0-beta.4/governance/property/index)** | Campaign Governance validates that the orchestrator *uses* property lists correctly (e.g., not bypassing them). Property Governance provides the lists. | +| **[Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index)** | Campaign Governance validates that content standards references are included in media buys. Content Standards handles the actual content evaluation. | +| **[Creative Governance](/dist/docs/3.2.0-beta.4/governance/creative/index)** | Campaign Governance validates that creative assignments match format requirements. Creative Governance scans the creatives themselves. | +| **[Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol/index)** | Campaign Governance resolves the brand's compliance configuration via the Brand Protocol. The brand's policy team configures compliance policies in brand.json; the governance agent applies them automatically. | + +## Next steps + + + + What buyer-side orchestrators, sellers, and governance agents each check and carry. + + + How the three-party trust model, separation of duties, and structural controls make agentic advertising safe. + + + Data models, validation logic, capability declaration, and orchestrator integration patterns. + + + Task reference: `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs`. + + diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/responsibilities.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/responsibilities.mdx new file mode 100644 index 0000000000..2b82115a8c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/responsibilities.mdx @@ -0,0 +1,89 @@ +--- +title: Buyer and Seller Responsibilities +description: "How buyer-side orchestrators, sellers, and governance agents share responsibility in AdCP Campaign Governance." +"og:title": "AdCP — Campaign governance buyer and seller responsibilities" +sidebarTitle: Responsibilities +--- + +# Governance responsibilities: buyer vs. seller + +Campaign Governance uses the same `check_governance` task from two different positions in the transaction. The buyer-side orchestrator checks intent before it sends an action. The seller checks execution before it commits or changes delivery. Both checks go to the buyer's configured governance agent, but they carry different evidence. + +## Roles + +| Role | Responsibility | +|------|----------------| +| Buyer-side orchestrator | Creates or updates plans, checks intended actions, sends approved requests to sellers, and reports outcomes back to the governance agent. | +| Seller | Verifies the buyer supplied a valid governance context, checks planned delivery before execution, and refuses governed actions that are missing or denied by governance. | +| Governance agent | Applies the plan and policy rules, returns intent counterproposals or binding decisions, signs context only for `approved`, and records audit state. | + +## Setup: bind the seller to the governance agent + +Before a seller can make seller-side checks, the buyer account must sync governance agent endpoints with the seller via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). This is account setup, not per-buy negotiation. + +The seller stores the configured governance agent endpoint and credentials for the account. Later, when a governed request arrives, the seller knows where to call `check_governance`. + +## Buyer-side intent check + +The buyer-side orchestrator calls [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before every spend-commit action on a governed plan. + +The intent check sends: + +| Field | Required | Purpose | +|-------|----------|---------| +| `plan_id` | Yes | Identifies the campaign plan being enforced. | +| `caller` | Yes | Identifies the buyer-side orchestrator making the governance check. | +| `target_agent` | Yes | Exact downstream service URL; becomes the signed token audience and stays outside the business payload. | +| `tool` | Yes | Names the action the orchestrator intends to perform, such as `create_media_buy`, `update_media_buy`, `activate_signal`, or `build_creative`. | +| `payload` | Yes | Carries the exact request body the orchestrator intends to send. | +| `governance_context` | No | Not sent on initial intent negotiation. It is issued only after approval. | + +Only `approved` returns a `governance_context` token. The orchestrator attaches that token to the request it sends to the service. A `conditions` response instead carries `consultation_context`, a non-authorizing negotiation handle that the orchestrator returns only with the adjusted intent re-check. The governance agent binds the handle to the authenticated principal, caller, plan, tool, purchase type, and target audience and rejects a mismatch. + +## Seller-side execution check + +When a seller receives a governed spend-commit request, it performs an independent execution check before confirming the action. + +The seller-side check sends: + +| Field | Required | Purpose | +|-------|----------|---------| +| `caller` | Yes | Identifies the seller making the execution check. | +| `governance_context` | Yes | The signed, opaque context from the buyer-side approval. It is the authoritative plan binding. | +| `planned_delivery` | Yes | The seller's actual planned execution: budget, dates, channels, geography, placements, pacing, and other delivery parameters. | +| `phase` | Yes for lifecycle clarity | Indicates whether this is a purchase, modification, or delivery check. | +| `delivery_metrics` | Delivery phase | Required when `phase` is `delivery`; carries the seller-attributed canonical statement used for pacing, spend, geography, channel, and audience-drift checks. | + +The seller must not treat the buyer's intent check as sufficient by itself. The seller checks what it will actually deliver, which may differ from the buyer's request because of inventory availability, seller defaults, or implementation constraints. + +The execution check is binary. If the governance agent denies it, the seller must not proceed; a `conditions` response is invalid on this path and does not authorize a commit. + +## Outcome reporting + +After a seller responds, the buyer-side orchestrator calls [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome). This lets the governance agent reconcile the approved action with the seller's actual response and update budget state from confirmed outcomes. + +For periodic delivery, the buyer names the exact seller delivery check and submits either the seller statement copy it received or an independently measured buyer observation. Governance keeps both sources attributed, and a discrepancy is never resolved by last-writer-wins. A forwarded copy that does not match the canonical statement is a dispute and blocks adjustment acceptance; buyer measurement variance is recorded without blocking, and the higher amount bounds conservative exposure and decommitments. + +Outcome reporting is what prevents the governance agent from counting attempted actions as committed spend. The governance agent tracks the state that actually happened. + +## Common mistakes + +| Mistake | Correct behavior | +|---------|------------------| +| Buyer skips `check_governance` because the seller will check later | Buyer must perform the intent check first so it can attach a valid governance context. | +| Seller accepts a request with no governance context on a governed account | Seller rejects the request before execution. | +| Seller checks the buyer's requested payload instead of `planned_delivery` | Seller checks the delivery it will actually run. | +| Orchestrator treats `conditions` as approval | The buyer applies the intent counterproposal and calls `check_governance` again; services never treat it as execution authorization. | +| Orchestrator omits `report_plan_outcome` | Governance budget and audit state drift from what actually happened. | + +## Minimal sequence + +1. Buyer configures governance on the account with `sync_governance`. +2. Buyer creates or updates a plan with `sync_plans`. +3. Buyer calls `check_governance` with `tool` and `payload`. +4. Buyer sends the seller request with `governance_context`. +5. Seller prepares a candidate and calls `check_governance` with `governance_context`, `caller`, and `planned_delivery`. +6. Seller commits atomically on `approved` or rejects on `denied`. +7. Buyer calls `report_plan_outcome` with the seller result. + +See the [`check_governance` task reference](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) for request and response fields, and the [Campaign Governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification) for lifecycle and token validation details. diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/safety-model.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/safety-model.mdx new file mode 100644 index 0000000000..229bd32d8e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/safety-model.mdx @@ -0,0 +1,143 @@ +--- +title: Safety Model +description: "AdCP three-party trust prevents any single AI agent from making unilateral media buying decisions. Orchestrator, governance, and seller validate independently." +"og:title": "AdCP — Safety Model" +sidebarTitle: Safety Model +--- + + +# Why agentic advertising is safe + +Autonomous AI agents buying media raises a legitimate question: how do you trust software to spend real money on your behalf? Campaign Governance answers this with structural controls -- not by trusting any single agent, but by making it impossible for any single party to act unilaterally. + +## Three-party trust model + +Campaign Governance distributes validation across three independent parties: + +```mermaid +flowchart LR + O[Orchestrator] -->|"1. intent check"| G[Governance Agent] + G -->|"approved/denied"| O + O -->|"2. create_media_buy"| S[Seller] + S -->|"3. execution check"| G + G -->|"approved/denied"| S + S -->|"4. confirmed"| O + O -->|"5. report outcome"| G +``` + +1. The **orchestrator** checks its intended action against the plan before sending it to any seller (intent check: `tool` + `payload`) +2. The **seller** independently checks its planned delivery against the same plan before executing (execution check: `governance_context` + `planned_delivery`) +3. The **governance agent** validates both sides against the campaign plan, maintaining state across the full lifecycle + +No party grades its own homework. The orchestrator cannot skip governance because the seller checks independently. The seller cannot deliver something different from what was approved because the governance agent has a record of the planned delivery. + +## Verifiable approvals + +Every governance approval is cryptographically signed by the governance agent. The approval token rides along with the purchase request; sellers check the signature before committing, and **regulators or auditors can verify the same token independently, without cooperating with the governance vendor that issued it**. + +That independence is the whole point. A design where the only way to reconstruct the approval trail is to subpoena the vendor that issued it is not an audit trail — it's a vendor dependency. Signed tokens turn the audit trail into something a data subject, a regulator, or an opposing counsel can examine on their own. + +The signed token also binds the approval to a specific plan, a specific seller, a specific phase of the media buy, and a unique transaction identifier. A token approving a $500K flight for Seller A cannot be silently reused to authorize a $500K flight at Seller B, nor can an approval for Q1 be replayed in Q3. + +See [Signed Governance Context](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context) for the implementer-facing profile (claim set, key discovery, revocation, verification rules). + +## Separation of duties + +Three roles with non-overlapping responsibilities: + +| Role | Responsibility | Cannot do | +|------|---------------|-----------| +| **Policy team** | Configure compliance policies, select registry policies, define brand rules | Execute campaigns or spend budget | +| **Buying team** | Create plans, operate orchestrator, execute media buys | Modify compliance policies or bypass governance | +| **Governance agent** | Validate actions against plans and policies, track budget, escalate violations | Initiate spending or modify plans | + +The orchestrator cannot bypass compliance because it does not carry the policies -- they are resolved from the brand's configuration by the governance agent. When a regulation changes, the policy team updates the configuration once and all active campaigns pick up the change automatically. + +## Crawl-walk-run adoption + +Governance agents support three internal operating modes so organizations can build confidence incrementally. Mode is configured on the governance agent itself — it is not a protocol field, and callers act on the status they receive regardless of mode. + +| Mode | What happens | Risk | +|------|-------------|------| +| **Audit** | Log everything, never block. Always returns `approved` with findings attached. | Zero. See what governance would flag without affecting live campaigns. | +| **Advisory** | Return `approved` with prominent findings and recommended corrections. | Minimal. Humans review findings post-hoc and act on them. | +| **Enforce** | Block on violations. Require resolution before proceeding. | Production governance with full protection. | + +Start in audit mode to evaluate false positive rates and calibrate policies. Move to advisory to test findings with real campaigns. Switch to enforce when confidence is established. The governance agent's audit logs record which mode was active for each check, so post-hoc analysis can distinguish audit-mode approvals from enforce-mode approvals. + +## Budget protection + +Budget is committed based on confirmed outcomes, not intended actions: + +1. `check_governance` with `tool` + `payload` (intent check) checks whether the spend fits the plan. No budget is committed. +2. The orchestrator sends the action to the seller. +3. `report_plan_outcome` reports the seller's confirmed amount. Only then is budget committed. + +If a seller reduces the amount, the governance agent commits the actual amount and flags the discrepancy. If the action fails, the governance agent commits zero. Budget state reflects reality, not intent. + +Concurrent media buys are handled through optimistic concurrency control or budget reservation, preventing concurrent approvals that together exceed the plan budget. + +## Two dimensions of autonomy + +Campaign Governance separates agent autonomy into two independent dimensions. Both are evaluated on every action; neither overrides the other. + +| Field | Dimension | What it controls | +|-------|-----------|------------------| +| `budget.reallocation_threshold` | Operational | Maximum reallocation the agent can execute without escalation. `0` requires approval for every reallocation; a value at or above `budget.total` is effectively unlimited. | +| `plan.human_review_required` | Regulatory | Whether decisions affecting individuals require human review before execution | + +`reallocation_threshold` is about money movement: how much can the agent shift between sellers or channels without asking? `human_review_required` is about the nature of the decision: does the decision fall under a regime (GDPR Art 22 automated decision-making, EU AI Act Annex III use cases, fair housing/lending/employment) that legally requires a human in the loop? + +The governance agent sets `human_review_required: true` automatically when resolved policies or policy_categories carry `requires_human_review: true`. Annex III use cases and Art 22-triggering verticals flip the flag regardless of how permissive `reallocation_threshold` is. A plan with unlimited reallocation can still require human review on every action if the underlying vertical demands it. + +This separation means an organization can grant broad reallocation autonomy for operational efficiency while preserving non-negotiable human review on the categories of decisions where human judgment is the regulatory requirement. + +## Confidence and explainability + +Governance findings include confidence scores (0 to 1) and explanations that distinguish certain violations from ambiguous ones: + +- **High confidence (0.9+)**: Definitive violation. A GDPR breach on a campaign explicitly targeting EU users. +- **Medium confidence (0.6-0.9)**: Depends on context the governance agent cannot fully resolve. Audience segments that may include minors, geo targeting that partially overlaps regulated jurisdictions. +- **Low confidence (below 0.6)**: Speculative. Flagged for human review rather than acted on autonomously. + +Every finding includes a human-readable `explanation` and structured `details` for programmatic consumption. When human review is triggered internally, the governance agent records the reason, severity, and resolution in its audit logs. Nothing is a black box. + +## Drift detection + +The audit log surfaces aggregate metrics that detect oversight erosion over time: + +- **Human review rate** -- fraction of checks that required internal human review, with trend direction +- **Auto-approval rate** -- fraction of checks approved without human intervention +- **Human override rate** -- fraction of human reviews where the human disagreed with the governance agent + +Organizations set thresholds on these metrics. When a threshold is breached, the governance agent includes a finding on the next check. A declining human review rate may mean well-calibrated governance or eroding oversight -- the threshold breach surfaces the question so the organization can decide. + +## Multi-brand and agency governance + +For holding companies with multiple brands and agency partners: + +- **Delegations** scope which agents can act on a plan, by authority level, budget limit, market, and expiration. A brand can grant `full` authority to one agency for Europe and `execute_only` to another for North America. +- **Portfolio governance** defines cross-brand constraints: total portfolio spend caps, shared policy enforcement, and corporate-level exclusions that no individual brand plan can override. + +## For small brands + +A brand buying direct with no agency and no policy team still gets: + +- Automated budget limits and geo enforcement from the campaign plan +- Compliance coverage from the [policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) -- community-maintained, no per-brand configuration required +- Seller-side verification via governance checks +- Full audit trail via `get_plan_audit_logs` + +Set a [`reallocation_threshold`](/dist/docs/3.2.0-beta.4/governance/campaign/specification#budget-reallocation) on the budget to define guardrails. The governance agent handles the rest. + +## Comparison to manual processes + +| Manual process | Campaign Governance equivalent | +|---------------|-------------------------------| +| Agency trading desk QA | Automated validation against the plan | +| DSP pre-bid rules | Budget authority and targeting compliance checks | +| Advertiser approval workflows | Human review for high-risk actions | +| Post-campaign audit | `get_plan_audit_logs` with drift metrics | +| Compliance review | Policy registry + jurisdiction-scoped validation | + +The difference is that Campaign Governance applies these controls to every transaction, not just the ones that happen to get reviewed. Manual processes are sampling-based and retrospective. Campaign Governance is exhaustive and real-time. diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/specification.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/specification.mdx new file mode 100644 index 0000000000..19344503ac --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/specification.mdx @@ -0,0 +1,1245 @@ +--- +title: Specification +description: "Formal specification for AdCP campaign governance — plan schemas, budget authority models, validation logic, and integration patterns." +"og:title": "AdCP — Specification" +sidebarTitle: Specification +--- + + +# Campaign Governance specification + + +**Experimental.** Campaign governance is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +**Status**: Request for Comments +**Last Updated**: March 2026 + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +This document defines the data models, validation logic, and integration patterns for Campaign Governance. + +## Campaign plan + +The campaign plan is the source of truth for all validation. Plans are pushed to the governance agent via [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) and define the plan parameters for a campaign -- budget limits, channels, flight dates, and plan markets. The governance agent resolves applicable policies from the brand's compliance configuration. Plans can also reference registry policies directly via `policy_ids` and include campaign-specific rules via `custom_policies`. + +```json +{ + "plan_id": "plan_q1_2026_launch", + "brand": { + "domain": "acmecorp.com" + }, + "objectives": "Drive awareness for spring product launch among 25-54 adults in the US, focusing on premium video and high-impact display.", + "budget": { + "total": 500000, + "currency": "USD", + "reallocation_threshold": 25000, + "per_seller_max_pct": 40 + }, + "channels": { + "required": ["olv"], + "allowed": ["olv", "display", "ctv", "audio"], + "mix_targets": { + "olv": { "min_pct": 40, "max_pct": 70 }, + "display": { "min_pct": 10, "max_pct": 30 }, + "ctv": { "min_pct": 0, "max_pct": 20 }, + "audio": { "min_pct": 0, "max_pct": 10 } + } + }, + "flight": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-06-15T00:00:00Z" + }, + "countries": ["US"], + "policy_ids": ["us_coppa", "alcohol_advertising"], + "custom_policies": [ + { + "policy_id": "no_competitor_adjacency", + "enforcement": "must", + "policy": "No advertising adjacent to competitor brand content." + } + ], + "approved_sellers": null, + "ext": {} +} +``` + +### Purchase types + +Governance plans govern all financial commitments, not just media buys. The `purchase_type` field on `check_governance` identifies which kind of commitment is being validated: + +| Purchase type | Tool | What's governed | +|--------------|------|-----------------| +| `media_buy` (default) | `create_media_buy`, `update_media_buy` | Media inventory purchases | +| `rights_license` | `acquire_rights`, `update_rights` | Brand rights licensing fees | +| `signal_activation` | `activate_signal` | Data signal activation fees | +| `creative_services` | `build_creative` | Creative generation fees | + +All purchase types share the same governance loop: `sync_plans` → `check_governance` → execute → `report_plan_outcome`. The governance agent validates budget authority, geo compliance, and flight compliance across all types. Media-buy-specific validations (channel compliance, seller concentration, delivery pacing) apply only when `purchase_type` is `media_buy` or when the payload contains the relevant fields. + +When `purchase_type` is omitted, the governance agent assumes `media_buy`. + + +**Future purchase types**: Content standards, property list curation, and measurement/verification services (brand lift studies, viewability, fraud detection) all carry `pricing_options` in their schemas and bill through `report_usage`. These services currently lack an explicit activation tool where the buyer commits to the service — the billing relationship is implicit. When the protocol adds activation surfaces for these services, corresponding purchase types will be added to enable governance checks at the point of commitment. + + +### Budget reallocation + +`budget.reallocation_threshold` (required number) governs budget reallocation autonomy. It does not cover mandatory human review of decisions that affect data subjects — for that, see the plan-level `human_review_required` field. + +| Value | Meaning | +|-------|---------| +| `0` | Every reallocation requires human approval | +| positive number below `budget.total` | Agent may reallocate up to this amount without escalation; larger moves escalate for human review | +| equal to `budget.total` (or greater) | Agent may reallocate freely within the plan's total budget | + +### Budget allocations + +Plans can optionally partition the total budget across purchase types using `allocations`: + +```json +{ + "budget": { + "total": 500000, + "currency": "USD", + "reallocation_threshold": 25000, + "allocations": { + "media_buy": { "amount": 400000 }, + "rights_license": { "amount": 75000 }, + "signal_activation": { "amount": 25000 } + } + } +} +``` + +When `allocations` is present, the governance agent validates spend against both the per-type allocation and the overall total. When absent, all spend counts against the single total regardless of purchase type. Allocations are guardrails, not hard partitions — the sum of allocations MAY differ from the total. + +When `allocations` is present but a purchase type is not listed (e.g., `signal_activation` is attempted against a plan that only allocates for `media_buy` and `rights_license`), the governance agent validates the action against the plan's total budget only. Unlisted types are not denied — they draw from the shared pool. To restrict spending to listed types only, set `custom_policies` with explicit constraints. + +### Human review required + +`human_review_required` is a plan-level boolean (default `false`) that mandates human oversight of every action on the plan, independent of budget reallocation autonomy. + +The governance agent sets `human_review_required: true` automatically when any resolved policy or policy_category on the plan carries `requires_human_review: true`. This includes regulated verticals such as `fair_housing`, `fair_lending`, `fair_employment`, and `pharmaceutical_advertising`, and the `eu_ai_act_annex_iii` policy covering decisions in Annex III use cases. + +When `human_review_required` is true, the governance agent MUST escalate any action on the plan for human review before execution — regardless of the plan's `reallocation_threshold`. A permissive reallocation threshold does not bypass human review when the plan carries `human_review_required: true`; the two dimensions compose. + +This field is distinct from `budget.reallocation_threshold`: + +| Field | Scope | Purpose | +|-------|-------|---------| +| `budget.reallocation_threshold` | Operational | Controls agent autonomy for budget reallocation within the plan | +| `human_review_required` | Regulatory | Mandates human review of decisions affecting individuals (e.g., GDPR Art 22, EU AI Act Annex III) | + +Callers MAY set `human_review_required: true` explicitly on a plan even when no triggering policy is present. Callers MUST NOT set it to `false` to override a policy that requires human review — the governance agent re-evaluates the flag from resolved policies on every sync and overrides a caller-supplied `false` when a triggering policy is present. + +### Spend-commit invocation + +Buyer-side governance invocation is enforceable, not advisory. When a governance agent is configured on the plan, the buyer agent MUST invoke [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before sending any spend-commit request to a seller — full stop — producing an **intent-phase** `governance_context` token to attach to that request. The governance agent decides internally whether to auto-approve, apply conditions, deny, or escalate to human review per the plan's `budget.reallocation_threshold` and `human_review_required` fields. No dollar figures, no baseline arithmetic, no operator-declared floors appear in the invocation rule — those auto-approve fast-paths belong inside the governance agent's own policy, not in the buyer's decision about whether to call at all. + +#### Governed commitment operations + +Request schemas use `x-governed-commitment` to declare whether every invocation commits (`scope: always`) or only commitment-increasing effects do (`scope: conditional`). Conditional annotations list both triggers and fail-safe exemptions. Cancellation, pause, deactivation, and decrease-only changes MUST remain available during a governance outage or denial; governance must not prevent risk-reducing cleanup. + +For conditional tasks, services evaluate the **effective state delta**, not the presence of one request field in isolation. `trigger_overrides_exemption` is the mandatory precedence rule: an exemption applies only when the entire effective delta is risk-reducing or cost-free. If any part of a mixed request creates a trigger, the whole atomic request requires governance. Evaluation is task-specific: + +- `update_media_buy`: load the current buy at the requested revision and compare the atomic result. Any higher committed budget, later end, resume, new package, or movement into materially different delivery is a trigger. Cancel, pause, or a pure decrease is exempt only when no triggering change is bundled. +- `accept_proposal`: accepting a new-buy proposal or a commitment-increasing amendment triggers governance. A negotiated cancellation or decrease-only amendment is exempt when it contains no triggering change, so cleanup remains available during an outage or denial. +- `control_media_buy`: compare the requested operational patch with the accepted proposal and authoritative current revision. A higher committed budget, resume, or delivery reallocation triggers governance. Cancel, pause, and decrease-only controls are exempt only when no triggering change is bundled; commercial changes outside the accepted envelope return `REQUOTE_REQUIRED` and proceed through proposal refinement. +- `update_rights`: load the current grant. Any higher price or cap, later end, resume, or pricing-option change is a trigger. Pause or a pure decrease is exempt only when no trigger is bundled. +- `activate_signal`: `activate` triggers; `deactivate` is exempt. +- `build_creative`: resolve the selected pricing option before execution. A positive vendor charge triggers; an estimate-only call or retrieval with zero vendor charge is exempt. If the service cannot establish zero cost before execution, it treats the request as triggering. + +The strings in `triggers` and `exemptions` are stable audit labels, not JSON paths. Implementations use the algorithms above and MUST evaluate against authoritative current resource state in the same concurrency boundary as the eventual write. + +The invocation requirement covers: + +- [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — committed budget across packages +- [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) — committed budget across canonical product purchases +- [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) — increases, extensions, resumptions, and reallocations; cancellation, pause, and decrease-only updates are exempt +- [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) — new commitments and commitment-increasing amendments; negotiated cancellations and decrease-only amendments are exempt +- [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) — commitment-increasing or reallocating controls; cancellation, pause, and decrease-only controls are exempt +- [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) — rights pricing +- [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights) — increases, extensions, resumptions, and pricing changes; pause and decrease-only updates are exempt +- [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) — activation only; deactivation is exempt +- [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) — executions that incur vendor cost; estimates and zero-cost retrieval are exempt +- Any future spend-commit task + +When a task payload contains its numeric commitment directly, the governance agent evaluates that field. `update_media_buy` and `control_media_buy` are the important exceptions: the buyer computes the positive delta from its last confirmed revision and sends it as `proposed_commitment`; the governance agent treats that declaration as a ceiling and does not need access to seller-internal buy state. When a task identifies price only indirectly (for example a rights or signal `pricing_option_id`), the intent check likewise MUST include task-neutral `proposed_commitment: {amount, currency}`. Amount `0` is an explicit assertion that the resolved action is no-cost, not an omission. The intent separately names the exact downstream `target_agent`; that role-neutral routing field becomes the token audience and is not injected into the business payload. An approval signs the ceiling into `governance_context.authorized_commitment` and binds the exact task and business request with critical `authorized_task` and `authorized_payload_hash` claims. The payload hash is JCS/SHA-256 over the downstream task request excluding exactly the top-level governance/transport fields `governance_context` and `context`; `idempotency_key` and every business field remain bound. The downstream service recomputes that hash, compares its independently computed price or positive update delta and currency with the signed ceiling, and rejects any task, payload, amount, or currency mismatch. A governance agent that can resolve a pricing identifier itself MUST also reject a conflicting declaration. The approved ceiling is retained for outcome reconciliation; a lower report after execution cannot restore headroom. + +Invocation is NOT required for discovery tasks, reporting tasks, operational-status tasks, or the explicit risk-reducing exemptions above. The MUST fires specifically when an operation creates, increases, extends, reallocates, or resumes an obligation. + +When no governance agent is configured on the plan, `check_governance` invocation is neither required nor meaningful — there is nothing to call. Sellers MAY refuse to transact on plans lacking a configured governance agent as a matter of their own commercial policy (enterprise sellers typically will); the protocol does not mandate one, and the brand's published configuration is how a seller discovers whether one exists. + +Orchestrators fanning out the same plan to multiple sellers produce one intent token per seller, because `aud` is bound byte-for-byte to the target seller. This is the correct protocol shape, but it means the governance agent sees the buyer's full shopping list on a plan. Operators who treat shopping intent as commercially sensitive SHOULD choose governance agents whose data-handling posture they trust. + +#### Seller enforcement + +A service receiving a governed commitment MUST require a valid, in-date **intent-phase** `governance_context` token on the request, verified per the [verification checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#seller-verification-checklist). The token MUST carry `phase: "intent"` and be addressed (`aud`) to this service. The service does not need the buyer's `plan_id`: the opaque token is the authoritative plan binding, and the issuing governance agent recovers the plan from it. A request without a token, with a token that fails verification, or with a token issued for a different audience or phase MUST be rejected with `PERMISSION_DENIED`. + +Applicability is resolved from the commercial account, not from token presence. A service advertising `governance_enforcement` for a task MUST be able to resolve that invocation to an account: from `account` on a create/activation/build/acquisition, or from the authoritative resource owner on an update. If neither is possible, it rejects with `ACCOUNT_REQUIRED` rather than guessing whether governance applies. Once resolved, a registered governance agent means the applicable commitment requires a token; no registered agent means the operation may proceed without one. A supplied token is always verified even when registration lookup says none. This conditional account requirement is part of the experimental capability claim even where a legacy request schema keeps `account` optional for 3.x compatibility. + +For any task declared with `signed_context`, the service commits only after verifying the approved context. Media-buy tasks may additionally declare `online_execution_check`; those services follow **prepare → check → commit** by computing `planned_delivery` without externally committing it, calling `check_governance`, and committing atomically only after `approved`. Execution checks return `approved` or `denied`. Other roles do not claim online execution checking until AdCP defines a prepared-result contract for that role; they MUST NOT invent `planned_delivery` or `media_buy_id` values. + +Identity is role-specific. On the buyer's intent check, `caller` is the authenticated buyer-side principal and is evaluated against `delegations`; `approved_sellers` is evaluated against the target service that becomes the token `aud`, never against that buyer. Every later execution check resolves that original intent by its opaque action binding before evaluating delegation—the immediately prior check's caller may be the seller. On an execution check, the authenticated `caller` MUST equal the audience preserved from the approved intent, and that seller identity is evaluated against `approved_sellers`. The execution commitment may narrow the approved intent but MUST use the same currency and MUST NOT exceed the intent's `authorized_commitment`. For `update_media_buy`, the seller computes `max(0, new committed total − authoritative current total)` atomically with its revision check and write, enforces the signed intent ceiling, and reports that value as `execution_commitment`; the governance agent never infers a delta by reading seller state or subtracting from the seller's post-update total. A buyer/seller delta mismatch fails closed and requires a fresh intent. + +Sellers MUST persist the accepted intent token and any lifecycle tokens they subsequently hold, keyed at minimum by `jti` with `iss`, `aud`, the opaque action binding in `sub`, `phase`, decision outcome, and the timestamp of acceptance. They MUST NOT treat `sub` as a plan identifier. Retention follows the seller's regulatory retention period. Without seller-side retention, the audit log is single-sourced from the governance agent; independent reconciliation between seller records and `get_plan_audit_logs` is the cross-check that catches a compromised or misbehaving governance agent. + +Seller-side governance (if the seller itself has configured a governance agent on the account) is an **independent layer**. A buyer's successful `check_governance` does not obligate the seller to accept the request; the seller's own compliance policies MAY still reject the action via `PERMISSION_DENIED`. + +An approved token carries an `exp` that is authoritative at verification time; a policy change inside the token's validity window is accepted residual risk of any signed-decision system. Tight `exp` values (intent tokens SHOULD expire within 15 minutes per the JWS profile) bound the window rather than closing it. Operators who cannot tolerate the window MUST set `reallocation_threshold` to `0` or `human_review_required: true` so every action goes through an internal human review regardless of caching. + +#### Audit logging + +Every `check_governance` invocation MUST produce an audit log entry — retrievable via [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) — capturing: + +1. Invocation timestamp as a timezone-offset ISO 8601 string +2. Tool being validated (`create_media_buy`, `acquire_rights`, etc.) and commit amount in the plan's currency +3. Outcome (`approved`, `denied`, or `conditions`; and whether human review was invoked internally) +4. Human actor identity and authority, when a human signal was recorded +5. `check_id` for cross-reference from the downstream spend-commit task's audit entry and from `report_plan_outcome` + +The buyer-side intent check and any seller-side execution check each produce a distinct `check_id`, while the opaque action binding in their signed `sub` remains stable. For completed or failed outcomes, `report_plan_outcome` MUST carry an exact `check_id`, `plan_id`, and `governance_context` tuple from an approved decision in that action lifecycle. The authenticated reporter MUST be the buyer-side caller from the original intent, and `purchase_type` MUST match that intent. The governance agent rejects mismatched tuples and permits only one terminal settlement per opaque action binding, regardless of whether a report names the intent or execution check (apart from an identical idempotent cached replay). Auditors reconcile that intent entry with any execution entry and the service's persisted token record. The report's monetary fields are reconciliation evidence: the governance agent derives ledger authority from its own intent record, narrowed by a matching purchase execution record when available. + +#### Evidence authority and reconciliation + +Campaign Governance is a three-party evidence system, not a rule that one participant is authoritative for every fact. The governance agent is selected by and works for the buyer, so its ledger is authoritative for authorization state but is not independent evidence that physical delivery or a refund occurred. + +| Fact | Authoritative protocol record | What the other parties contribute | +|---|---|---| +| Spend authority and plan headroom | Governance agent's approved checks and derived ledger | Buyer proposes an action; seller may narrow the execution commitment | +| What the seller claims it delivered or billed | Seller-authenticated canonical delivery statement | Buyer may forward the copy it received or submit its own measurement | +| What the buyer observed | Buyer-authenticated delivery observation | It remains separately attributed and never overwrites the seller statement | +| Commercial release, refund, credit, or makegood | Seller report plus plan-owner review | Governance verifies identities, evidence integrity, bounds, and accounting policy | +| Current ledger and conservative exposure | Governance-derived state over all retained records | Neither a buyer nor seller can directly set this value | + +For each `phase: "delivery"` check, the seller MUST provide an immutable `delivery_metrics.statement_id`, a monotonically increasing `sequence`, and a `statement_digest`. The digest is lowercase hex SHA-256 prefixed with `sha256:` over RFC 8785 JCS of: + +```json +{ + "seller_reference": "", + "delivery_metrics": "" +} +``` + +The seller's authenticated call attributes that statement to the seller. A statement ID is unique in that seller's namespace and binds to one governed action; reusing it for another action or different content is a conflict. A non-increasing sequence on the same action is also a conflict. Delivery evidence describes an already-authorized commitment and MUST NOT reserve that commitment a second time. + +The buyer reports its side through `report_plan_outcome` with `outcome: "delivery"`, naming the exact seller delivery `check_id` and `governance_context`. `source: "seller_statement_copy"` means only that the buyer received the same seller statement; it is not independent corroboration. `source: "buyer_measurement"` is separately attributed buyer evidence. In either case, governance retains both records and compares period, cumulative spend, currency, and—when forwarded—the seller statement ID and digest. + +How governance classifies a disagreement depends on the evidence source: + +- **Forwarded copy with mismatched identity** — a `seller_statement_copy` whose statement ID or digest does not match the canonical statement means the seller told two different stories. Governance MUST mark the governed action `disputed` and preserve both records with their source identities. +- **Forwarded copy with matching identity but different values** — the statement digest covers the period, spend, and currency, so a copy whose digest matches the canonical statement cannot honestly carry different values. Governance MUST reject the observation as a validation error rather than record a dispute. +- **Buyer measurement variance** — a `buyer_measurement` with a matching period and currency but a different `cumulative_spend` is expected measurement noise, not evidence of equivocation. Governance MUST record it as `measurement_variance`, preserving both values with their source identities. The variance does not block adjustment acceptance; the conservative rules below price the difference instead. +- **Buyer measurement with a structural mismatch** — a period or currency that differs from the canonical statement makes the records incomparable. Governance MUST mark the governed action `disputed`. + +Whenever the current seller-stated and buyer-observed amounts differ — `disputed` or `measurement_variance` — governance MUST: + +- use `max(seller_reported_spend, buyer_observed_spend)` as `conservative_exposure`; +- compute the verified-decommitment ceiling from the conservative delivered figure, `max(latest seller-stated cumulative spend, latest buyer-observed cumulative spend)`; +- neither average the values nor choose the last writer; and +- reject adjustment acceptance while any reporting period for the governed action has a `disputed`, unclosed latest observation — not only the most recent reporting period. A `measurement_variance` observation never blocks acceptance. + +The conservative ceiling is what makes manufactured variance pointless: a seller that understates its statement gains no extra decommitment room because the buyer's higher figure holds the ceiling down, and a buyer that inflates an observation only shrinks the headroom restorable to its own plan. A disagreement can freeze value; it can never free it. + +Reconciliation is append-only. The buyer submits a newer observation against the applicable canonical seller statement after the parties resolve the discrepancy. The governance agent uses the latest observation as the current reconciliation state while retaining every earlier disputed record in the audit trail. + +The governance agent evaluates every observation against the latest in-sequence canonical statement for that reporting period; an observation naming a superseded statement's check is rejected as a conflict rather than recorded against stale evidence. + +A seller may also issue a corrected statement for the same open period by submitting a new `check_governance` delivery call with a higher `sequence`. The latest in-sequence statement becomes the applicable canonical statement; the buyer's next observation SHOULD bind to it. Earlier statements remain in the audit trail. + +Campaign Governance is an operational control, not the source of truth for final billing. The authenticated plan owner MAY end an operational reporting window by submitting a new observation for that exact seller statement and period with `period_closed: true`. If the values still disagree — whether `disputed` or `measurement_variance` — governance records `closed_unresolved`, freezes both parties' evidence for that period, and stops the historical discrepancy from blocking later governance or a buyer-reviewed adjustment. Neither party may add a different delivery statement or observation for the closed period. Closure does not assert a final payable amount, settle an invoice, or resolve the commercial dispute; those remain outside Campaign Governance. A seller statement for a different subsequent reporting period starts that period as `open` and `unmatched`. A caller other than the authenticated plan owner cannot close a period: the governance agent MUST reject `period_closed: true` from any other authenticated reporter. Delivery observations themselves MAY be submitted by either the original intent caller or the plan owner. + +Thus, a seller reporting 100 to governance and 200 to the buyer produces an explicit discrepancy, not an authoritative 100 or 200 overwrite. The converse behaves the same way. Governance's audit view exposes the current `delivery_reporting_period`, `seller_reported_spend`, `buyer_observed_spend`, `conservative_exposure`, `delivery_reconciliation_status`, and `delivery_period_state` while retaining every historical entry. + +Commercial adjustments follow the same attributed-evidence rule. The authenticated seller first calls `report_plan_adjustment` with `action: "report"` and an integrity-bound evidence record. This creates a `reported` record only. The authenticated plan owner then calls the same task with `action: "review"` to accept or dispute the exact `adjustment_id`. A report becomes `verified` only after acceptance; a seller cannot unilaterally reduce net cost or restore plan headroom. + +A buyer-disputed adjustment record is terminal: it cannot be re-reviewed, and it contributes nothing to net cost, headroom, or the cumulative-adjustment cap. The seller's only path to correct a disputed record is a new report carrying a new seller adjustment ID. Cumulative verified adjustments for an outcome MUST NOT exceed that outcome's authoritative commitment at acceptance time. + +Verified decommitments require a canonical seller delivery statement and, in aggregate, cannot exceed the undelivered obligation, computed against the conservative delivered figure: `max(latest seller-stated cumulative spend, latest buyer-observed cumulative spend)`. Seller-issued adjustment and evidence IDs are immutable within the seller's namespace and cannot be rebound to different content. Verified refunds and credits reduce economic `net_cost`; they restore reusable headroom only when the plan explicitly uses `budget.accounting_mode: "verified_net_cost"`. The default `gross_commitment` mode restores headroom only for verified decommitments. Makegoods remain non-cash audit records in both modes. Regardless of mode, the original commitment remains in trailing anti-fragmentation aggregates, preventing repeated commit-adjust-commit cycles from evading cumulative thresholds. + +#### Interaction with idempotency + +- **Replay of an already-completed identical request within the seller's idempotency window:** return the cached outcome without re-executing side effects or re-authorizing. Token expiry after the original commit does not invalidate the historical cached success. This ordering is essential because the idempotency window is longer than the intent-token lifetime. +- **Retry that has no completed cache entry and would execute the state transition:** verify a fresh, unexpired `governance_context` and run the normal enforcement path. A repeated `jti` is accepted only when tied to the same in-flight `idempotency_key`; otherwise it is a replay attack. +- **Re-plan with a different payload (new `idempotency_key` per [Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency)):** a fresh `check_governance` invocation is required. A new `governance_context` token is issued. + +A retry after a human approval does not re-invoke governance; the existing token remains the authorization until it expires. Post-execution lifecycle retries operate against the seller's `purchase`-phase token, which is a distinct artifact governed by the seller's execution check, not the buyer's intent check. + +### Channel mix targets + +The `mix_targets` field defines acceptable allocation ranges. The governance agent validates that aggregate spend across all media buys stays within these ranges. A `create_media_buy` that would push video spend above 70% of total budget triggers a `conditions` or `denied` status. + +### Delegations + +Plans can include a `delegations` array that specifies which agents are authorized to execute against the plan and with what constraints. This makes the brand–agency delegation relationship explicit in the protocol. + +```json +{ + "plan_id": "plan_q1_2026_launch", + "brand": { "domain": "acmecorp.com" }, + "delegations": [ + { + "agent_url": "https://buying.pinnacle-media.com", + "authority": "full", + "budget_limit": { "amount": 300000, "currency": "USD" }, + "markets": ["FR", "DE", "GB"], + "expires_at": "2026-06-30T00:00:00Z" + }, + { + "agent_url": "https://buying.nova-agency.com", + "authority": "execute_only", + "markets": ["US"], + "expires_at": "2026-06-30T00:00:00Z" + } + ] +} +``` + +Authority levels: + +| Level | Meaning | +|-------|---------| +| `full` | Can execute any action within the delegation's budget and market constraints | +| `execute_only` | Can execute pre-approved actions but cannot initiate new campaigns or reallocate budget | +| `propose_only` | Can propose actions for governance review but cannot execute without explicit approval | + +The governance agent resolves the authenticated transport credential to an agent URL and requires the request's `caller` assertion to match it. For a non-owner caller, it then compares that resolved URL with the delegation's `agent_url`. It MUST NOT authorize from the body assertion alone. Matching is exact and case-sensitive after normalization per RFC 3986. Every call fails closed when the credential has no agent-URL mapping. An agent requesting a media buy in France must have a delegation that includes France in its `markets`. An agent with `execute_only` authority cannot reallocate budget between channels. + +The authenticated buyer principal that synchronized the plan is its owner and +always retains full authority. Delegations add explicitly scoped non-owner +agents; they do not replace or constrain the owner. When delegations are +absent, only that authenticated owner can initiate governed actions. A +self-asserted `caller` value never grants plan access. + + +`delegations.authority` governs what a delegated executor-agent can do on behalf of the plan. It is unrelated to the plan's budget autonomy (`budget.reallocation_threshold` / `budget.reallocation_unlimited`) and unrelated to `plan.human_review_required`. Three separate concerns: per-agent scope, budget ops, and per-decision review. + + + +### Portfolio governance + +For holding companies and multi-brand organizations, a plan can include a `portfolio` object that defines cross-brand constraints. Portfolio plans govern member plans -- any action validated against a member plan is also validated against the portfolio plan's constraints. + +```json +{ + "plan_id": "portfolio_q1_2026_global", + "brand": { "domain": "acmecorp.com" }, + "objectives": "Global Q1 media governance across all Acme brands", + "budget": { "total": 50000000, "currency": "USD", "reallocation_threshold": 2000000 }, + "flight": { "start": "2026-01-01T00:00:00Z", "end": "2026-06-30T00:00:00Z" }, + "countries": ["US", "GB", "FR", "DE", "JP"], + "portfolio": { + "member_plan_ids": ["plan_sparkle_q1", "plan_glow_q1", "plan_nova_q1"], + "total_budget_cap": { "amount": 50000000, "currency": "USD" }, + "shared_policy_ids": ["eu_gdpr_advertising", "eu_ai_act_article_50"], + "shared_exclusions": [ + { + "policy_id": "no_competitor_properties", + "enforcement": "must", + "policy": "No advertising on properties owned by competitor holding companies." + } + ] + } +} +``` + +Portfolio constraints: + +- **`total_budget_cap`**: Maximum aggregate spend across all member plans. The governance agent tracks committed budget across all member plans and denies actions that would exceed the cap. +- **`shared_policy_ids`**: Registry policies enforced across all member plans, regardless of individual brand compliance configuration. Corporate-level regulations that no brand team can override. +- **`shared_exclusions`**: Bespoke exclusion policies applied to all member plans, using the `PolicyEntry` shape. Additive only — same constraint as plan-level `custom_policies`. + +The governance agent validates member plan actions against both the member plan's own constraints and the portfolio plan's constraints. A denial from either level blocks the action. + +When a portfolio plan references a `member_plan_id` that the governance agent does not yet recognize, the governance agent SHOULD accept the portfolio plan and begin enforcing portfolio constraints as member plans are synced. This allows portfolio plans to be synced before their member plans without requiring a specific ordering. + + +**Concurrency**: An orchestrator may send `create_media_buy` requests to multiple sellers simultaneously, each triggering a `committed` check. Budget checks are point-in-time and do not reserve budget, so concurrent approvals may together exceed the plan budget. The governance agent detects overspend at outcome reporting time. To prevent concurrent overspend, use [delegations](#delegations) with per-agent `budget_limit` to partition the budget across executing agents. + + +### Aggregated-spend evaluation (fragmentation defense) + +Governance thresholds (`reallocation_threshold`, `human_review_required` trigger points, registry-policy dollar floors) MUST be evaluated against **aggregated committed spend** over a trailing window, not per-plan or per-media-buy in isolation. A buyer that fragments a \$999,900 intended spend into 100 × \$9,999 buys — each individually below an operator's \$10,000 human-review threshold — would otherwise bypass review entirely. This is a fragmentation attack on governance, not a legitimate usage pattern, and the governance agent MUST close it. + +Governance agents MUST aggregate committed spend across all of the following when evaluating any threshold: + +- All plans attributable to the same `(buyer_agent, seller_agent, account_id)` tuple — fragmentation across plans on the same account does not reset the aggregate. Delegated sub-agents (see [Delegations](#delegations)) share the delegating buyer's aggregate: the `buyer_agent` element of the key is the delegating principal, not the sub-agent's `agent_url`. A delegation does NOT mint a fresh per-agent aggregation window, because otherwise the delegation surface itself reopens the fragmentation hole (\$999,900 split across 100 sub-agents, each getting their own \$9,999 budget). +- Every [spend-commit task](#spend-commit-tasks) — fragmentation across task surfaces does not reset the aggregate. The spend-commit task inventory is the single authoritative list; new spend-commit tasks added there join the aggregate automatically, without a separate edit in this section. +- The trailing window declared via the `governance.aggregation_window_days` capability (see [get_adcp_capabilities](#governance-aggregation-capability) below). The window slides with wall-clock time, not plan boundaries. + +**Evaluation-time semantics (testable).** At the moment of a spend-commit, the governance agent computes + +``` +aggregate = sum(c.amount for c in commit_history + where c.key == this.key + and c.ts > now - aggregation_window_days × 86400s) + + this.amount +``` + +then evaluates `aggregate` against each applicable threshold. The current incoming commit is included in the sum. Denied commits and unresolved conditions do not contribute; only actions that ultimately receive `approved` and are confirmed count. `now` is the governance agent's wall-clock time at evaluation; sliding-window boundaries are not snapped to plan or calendar boundaries. + +**Commitments are sticky within the window.** `c.amount` is the amount committed at approval time, not the delivered amount. Under-delivery, cancellation, makegoods, and post-approval budget reductions MUST NOT decrement a commit's contribution to the aggregate before the trailing window rolls it off. Otherwise a buyer could free fragmentation headroom by cancelling an approved commit and immediately re-committing sub-threshold — full spend moves across the round trip, each leg passes in isolation. An `update_media_buy` that *increases* committed budget enters as a delta (new committed budget − prior committed); a decrease does not decrement. + +[`report_plan_adjustment`](./tasks/report_plan_adjustment) separates current plan obligation from that sticky history. A verified `decommitment` restores current plan headroom, but the original outcome amount remains in the trailing-window aggregate until it rolls off. Verified refunds and credits reduce economic net cost and restore headroom only under an explicit `verified_net_cost` accounting mode; makegoods never restore cash headroom. Governance agents MUST retain gross commitment, reported and verified adjustments, economic net cost, restored headroom, and current ledger commitment as separately auditable values. + +When an individual commit would be below a threshold in isolation but pushes the trailing-window aggregate above the threshold, the governance agent MUST apply the threshold's consequence (human review escalation, denial, or conditions) to that commit. Governance agents MAY expose an `aggregate_committed` field on `get_plan_audit_logs` responses so auditors can reconstruct the fragmentation-defense decision without re-deriving it from the full outcome stream. The field's shape (units, currency, window-boundary reporting) is governance-agent-specific in 3.x and will be standardized in a later revision; implementers exposing it SHOULD document their shape alongside their `get_plan_audit_logs` response. + +Governance agents MAY evaluate narrower aggregation scopes additionally (per-brand, per-campaign) but MUST NOT evaluate any scope *broader* than the declared window without operator sign-off. "Broader" covers **both** dimensions: a longer trailing window (time) and a wider key tuple (e.g., collapsing across `account_id` so two accounts share an aggregate). A silently-widened scope in either dimension is as surprising to the operator as a silently-narrowed one. + +#### Composition with `reallocation_threshold` + +A reallocation is itself a spend-commit: `update_media_buy` carries an incremental commit delta (new committed budget − previously committed), and that delta enters the aggregate and counts toward `reallocation_threshold` evaluation. A buyer cannot sidestep a \$25,000 reallocation threshold by fragmenting one \$30,000 reallocation into six \$4,999 updates — each update's delta accumulates into the trailing-window aggregate and trips the threshold once the cumulative delta crosses it. + +#### Conformance example + +Agent declares `aggregation_window_days: 30`. Plan sets a `human_review_required` trigger at \$10,000 committed spend (keyed on `(buyer_agent, seller_agent, account_id)`). + +| # | Prior 30-day aggregate | Incoming commit | Post-aggregate | Expected outcome | +|---|-----------------------|-----------------|----------------|-------------------| +| 1 | \$4,000 | \$2,500 `create_media_buy` | \$6,500 | Auto-approve — below threshold | +| 2 | \$8,000 | \$2,500 `create_media_buy` | \$10,500 | Escalate to human review — aggregate crosses threshold even though the incoming commit is \$2,500 in isolation | + +A governance agent that approves row 2 without escalation is non-conformant: it has either failed to aggregate across the 30-day window, failed to key on the correct tuple, or failed to include the incoming commit in the sum. + +#### Governance aggregation capability + +Sellers and governance agents declare their aggregation window via `governance.aggregation_window_days` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). Buyers that depend on a specific window for compliance (e.g., a brand-level weekly cadence review) MUST check this capability before relying on aggregation semantics — a governance agent declaring `aggregation_window_days: 7` does not defend against fragmentation spread across a 30-day quarter-end push. Absent declaration means the agent has not committed to any aggregation window and buyers MUST assume per-commit evaluation only (the fragmentation attack surface is open). There is no schema default: omission is not equivalent to a declared 30-day window. + +## Brand compliance configuration + +Compliance policies live at the brand level, not in individual campaign plans. The brand's policy team configures the brand's compliance profile, and the governance agent resolves it when processing plans for that brand. + + +The schema and hosting mechanism for brand compliance configuration are under development by the AgenticAdvertising.org Governance Working Group. The following describes the conceptual model; implementations may vary. + + +A brand's compliance configuration contains two kinds of policies: + +- **Registry policies**: References to standardized policies in the [AdCP policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry), identified by ID. Each reference MAY include configuration parameters that customize the policy for the brand. +- **Custom policies**: Brand-specific rules expressed as natural language strings, evaluated by the governance agent using the same approach as [prompt-based policies](/dist/docs/3.2.0-beta.4/governance/overview#prompt-based-policies). + +The policy team selects registry policies that apply to the brand, configures parameters where needed, and adds any custom policies specific to the brand. The buying team never interacts with this configuration -- they create campaign plans that reference the brand, and the governance agent resolves applicable policies automatically. + +The brand's industries inform automatic policy matching -- for example, a brand in the beverage industry would receive any registry policies tagged for that industry. + +## Policy registry + +The policy registry is a community-maintained library of standardized, machine-readable advertising compliance policies. Brands reference policies by ID rather than writing their own. + +The registry covers three categories: + +| Category | Examples | +|----------|----------| +| **Jurisdiction** | UK HFSS restrictions, US COPPA, EU GDPR age-gating, California AI disclosure (SB 942) | +| **Vertical** | Alcohol age verification, pharma fair balance, gambling self-exclusion, financial services APR disclosure | +| **Brand safety** | Brand safety baselines, content suitability tiers | + +Each policy in the registry has an ID, applicable jurisdictions, a description, and machine-readable rules that governance agents can evaluate programmatically. Policies are versioned as regulations change; brand references MAY pin a specific version, and unversioned references resolve to the current version. The registry format and hosting mechanism are under development by the AgenticAdvertising.org Governance Working Group. + +This model follows the pattern established by [IEEE 7012](https://standards.ieee.org/ieee/7012/7192/) (Machine Readable Personal Privacy Terms), which maintains a neutral roster of standardized agreements that parties reference rather than draft individually. + +## Policy resolution + +Policies are declared directly on the plan via `policy_ids` and `custom_policies`. When a plan is synced, the governance agent resolves the active policy set: + +1. Load registry policies referenced by `policy_ids` +2. Intersect with the plan's `countries` and `regions` -- only policies applicable to the plan's markets are active +3. Include all `custom_policies` (these apply regardless of geography) + + +**`custom_policies` are additive only.** Governance agents MUST pin registry-sourced policy text as system-level instructions and MUST NOT permit `custom_policies` (or the plan's `objectives` field) to relax, override, or disable registry-sourced policies. Custom policies may add tighter restrictions — they cannot lower enforcement levels or exempt categories. A `custom_policies` entry that contradicts a registry policy is evaluated alongside it, not instead of it; the stricter constraint governs. + + +The plan's `countries` and `regions` fields also serve as **geo enforcement**: the governance agent MUST reject governed actions targeting markets outside the plan's allowed geography. A plan with `regions: ["US-MA"]` rejects actions not explicitly targeting Massachusetts, even if they are otherwise compliant. These fields use the same ISO codes and semantics as `product-filters`, `offerings`, and `create_media_buy`. + +The resolved policy set is what the governance agent evaluates during [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance). For the `brand_policy` and `regulatory_compliance` categories, the governance agent validates against this resolved set. + +If the plan has no `policy_ids` or `custom_policies`, the governance agent operates with an empty policy set for policy-based categories. Other categories (`budget_authority`, `strategic_alignment`, etc.) still apply based on the plan's parameters. + +## Audience governance + +Campaign plans declare audience targeting constraints, restricted attributes, and policy categories. The governance agent uses these to validate that seller targeting complies with regulatory requirements and campaign intent. + +### Three-layer model + +Audience governance separates three concerns: + +| Layer | Field | Purpose | Example | +|-------|-------|---------|---------| +| **Identity** | `brand.industries` | What the company does | `["pharmaceuticals", "consumer_packaged_goods"]` | +| **Regulatory regime** | `plan.policy_categories` | What regulations apply to this campaign | `["pharmaceutical_advertising", "health_wellness"]` | +| **Data restrictions** | `plan.restricted_attributes` | What personal data is off-limits for targeting | `["health_data"]` | + +A pharmaceutical company is always pharma (identity), but a general awareness campaign might not trigger pharmaceutical advertising regulations (regime), and only campaigns in EU jurisdictions might restrict health data targeting (restrictions). + +### Audience constraints + +Plans can declare `audience.include` and `audience.exclude` arrays using audience selectors. Each selector is either a `signal_ref` or a natural language description. + +The governance agent evaluates these constraints against seller targeting in `check_governance`: +1. Compare `planned_delivery.audience_targeting` against the plan's `audience.include`/`exclude` +2. Compare `planned_delivery.audience_targeting` against the same constraints (for committed checks) +3. Detect divergence between what the orchestrator requested and what the seller will activate + +### Structural governance matching + +Signal definitions can self-declare `restricted_attributes` and `policy_categories`. When they do, the governance agent performs **structural matching** — a set intersection between the plan's restrictions and the signal's declarations. This is deterministic and requires no LLM inference. + +Direct media-buy demographic targeting is structural too: `targeting_overlay.demographics.age` maps to the `age` restricted attribute. A governance agent blocks that predicate only when the applicable plan includes `age` in `restricted_attributes`; the existence of the registry category is not a blanket prohibition on demographic targeting. + +For signals without declared governance metadata, the governance agent falls back to **semantic matching** — inferring sensitivity from the signal name and description. Structural matching produces higher-confidence findings than semantic matching. + +Restricted attributes apply to both `include` and `exclude` targeting. Using restricted data to exclude an audience (e.g., excluding people with health conditions from pharmaceutical ads) is as prohibited as using it for inclusion — both constitute use of restricted personal data for targeting decisions. + +### Audience distribution drift + +During delivery, sellers report `audience_distribution` in `delivery_metrics`. Index values indicate demographic composition relative to a declared baseline (census, platform, or custom). A value of 1.0 means parity; values significantly above or below indicate skew. + +The governance agent tracks both per-period indices and cumulative indices across all reporting periods. This enables detection of systematic bias that might not be visible in any single reporting period. + +## State tracking + +The governance agent tracks state at two levels: + +- **Plan level**: Total budget committed, channel allocation percentages, plan status +- **Campaign level**: Per-`governance_context` committed budget, active media buy references, validation history + +A single plan can span multiple campaigns. When [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) checks budget authority, it considers all campaigns tied to the plan. When [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) settles an approval, the ledger uses the governance agent's own approved amount. A matching purchase execution check may narrow that amount to the seller's checked `planned_delivery.total_budget`; an unauthenticated buyer report cannot. + +### Plan status + +| Status | Meaning | +|--------|---------| +| `active` | Accepting validation requests and outcome reports | +| `suspended` | Paused pending human review of a critical escalation | +| `completed` | Plan finished; read-only | + +When status is `suspended`, the governance agent MUST reject all `check_governance` and `report_plan_outcome` requests with a `CAMPAIGN_SUSPENDED` error until the escalation is resolved. + +### Budget tracking + +Budget is committed based on **confirmed outcomes**, not validated actions. The flow: + +1. `check_governance` with `tool` + `payload` (intent check) checks whether the proposed spend fits within the plan. No budget is committed yet. +2. The orchestrator executes the action with the seller. +3. `report_plan_outcome` settles the exact approved check. The governance agent commits its own authorized amount, preferring the matching purchase execution check when present, and records the caller-reported seller amount only as reconciliation evidence. + +This prevents a compromised or mistaken orchestrator from restoring headroom by under-reporting. If a seller reduces a \$150K intent to \$120K, its pre-commit purchase execution check makes \$120K authoritative. Without that checked transition, governance conservatively reserves \$150K and records the \$120K report as a discrepancy. If the action fails, the governance agent commits \$0. + +An execution check approval validates the seller's planned delivery against the plan but does not commit budget. Budget is only committed when the orchestrator calls `report_plan_outcome` with the seller's confirmed response. + +Budget checks are point-in-time: `check_governance` validates against the current committed total but does not reserve budget. If multiple agents execute concurrently against the same plan, two checks could both pass and the combined outcomes could exceed the authorized budget. The governance agent detects overspend at outcome reporting time and returns a `budget_authority` finding. To prevent concurrent overspend, use [delegations](#delegations) with per-agent `budget_limit` to partition the budget across executing agents. + +### Drift detection + +The audit log includes `drift_metrics` that surface aggregate governance trends over the plan's lifetime: + +```json +{ + "summary": { + "checks_performed": 847, + "drift_metrics": { + "human_review_rate": 0.03, + "human_review_rate_trend": "declining", + "auto_approval_rate": 0.91, + "human_override_rate": 0.02, + "mean_confidence": 0.88 + } + } +} +``` + +These metrics detect oversight drift -- the gradual migration of control away from humans. A declining human review rate may indicate the governance agent is well-calibrated, or it may indicate that oversight is eroding. Surfacing the trend lets the organization make that judgment. + +| Metric | What it measures | +|--------|-----------------| +| `human_review_rate` | Fraction of checks that required internal human review | +| `human_review_rate_trend` | Direction over the plan's lifetime (`increasing`, `stable`, `declining`) | +| `auto_approval_rate` | Fraction of checks approved without human intervention | +| `human_override_rate` | Fraction of human reviews where the human overrode the governance agent | +| `mean_confidence` | Average confidence score across findings (when confidence is reported) | + +Organizations can set thresholds on drift metrics. When a metric crosses its threshold, the governance agent SHOULD include a finding (severity `warning`) on the next governance check: + +```json +{ + "drift_metrics": { + "human_review_rate": 0.01, + "human_review_rate_trend": "declining", + "auto_approval_rate": 0.97, + "thresholds": { + "human_review_rate_min": 0.02, + "auto_approval_rate_max": 0.95 + } + } +} +``` + +In this example, both thresholds are breached -- the human review rate (0.01) is below the minimum (0.02) and the auto-approval rate (0.97) exceeds the maximum (0.95). This could indicate that the governance agent is approving too broadly, or that policies are well-calibrated for a low-risk campaign. The threshold breach surfaces the question; the organization decides the answer. + +Organizations set only the thresholds relevant to their concern. A `human_review_rate_min` catches oversight erosion; a `human_review_rate_max` catches policy miscalibration. A `human_override_rate_max` catches a governance agent whose recommendations are consistently wrong. All threshold fields are optional. + +### Plan amendments + +Calling `sync_plans` with an existing `plan_id` updates the plan (upsert). The governance agent increments `plan_version` and applies the new parameters immediately. Active media buys that were approved under the previous plan version are not automatically re-validated -- the governance agent evaluates them against the updated plan on the next `check_governance` call (e.g., the next delivery check). If an amendment reduces the budget below the currently committed amount, the governance agent flags this as a finding on the next governance check. + +## Validation logic + +For intent checks, the governance agent evaluates each [validation category](/dist/docs/3.2.0-beta.4/governance/campaign/index#validation-categories) independently: + +- If **any** category has status `failed` and the failure is correctable, the status is `conditions` with suggested fixes +- If **any** category has status `failed` and the failure is not correctable by the caller, the status is `denied` +- If all categories pass but the overall risk profile warrants human review, the governance agent handles the review internally (the task goes async) and eventually resolves to `approved` or `denied` +- If all categories pass, the status is `approved` + +The `conditions` array is only present when the status is `conditions`. Each condition identifies a specific field, its current value, a suggested value, and the reason for the change. + +For execution and lifecycle checks, any failed category produces `denied`. Findings may explain a correctable failure, but the service has no authorization until it submits a new candidate and receives `approved`. + +### Finding confidence + +Governance findings include an optional `confidence` score (0-1) and `uncertainty_reason` that distinguish certain violations from ambiguous ones: + +```json +{ + "category_id": "regulatory_compliance", + "severity": "critical", + "confidence": 0.85, + "uncertainty_reason": "Targeting includes 'New Mexico' which partially overlaps LATAM HFSS jurisdiction boundaries", + "explanation": "Potential HFSS jurisdiction violation based on targeting geography." +} +``` + +Confidence informs the appropriate response: +- **High confidence (0.9+)**: The finding is definitive. A GDPR violation on a campaign explicitly targeting EU users. +- **Medium confidence (0.6-0.9)**: The finding depends on context the governance agent cannot fully resolve. Audience segments that may include minors, geo targeting that partially overlaps regulated jurisdictions. +- **Low confidence (below 0.6)**: The finding is speculative. The governance agent flags it for human review rather than acting on it autonomously. + +Without confidence, every finding is presented as equally certain, which either over-blocks (if treated as certain) or trains people to ignore findings (if many are false positives). Governance agents SHOULD include confidence when the evaluation involves natural language interpretation or probabilistic matching. + +### Phase inference + +The governance agent determines the token phase from the request shape, not from +the tool name or a caller-supplied lifecycle phase: + +- `tool` + `payload` is an orchestrator-side intent check. Its signed + `governance_context` carries `phase: "intent"` and omits `media_buy_id`, even + when the proposed payload contains a media buy ID or the caller supplies a + lifecycle `phase`. +- `planned_delivery` is a seller-side execution check (normally carrying the + buyer's prior `governance_context` for lifecycle continuity). + Its signed token carries the requested `purchase`, `modification`, or + `delivery` phase (defaulting to `purchase`) and binds to the seller-assigned + `media_buy_id` when one is supplied. + +This separation prevents a proposed action from being mistaken for a seller's +authorization to execute it. The `phase` request field applies only to execution +checks; it does not override an intent-shaped request. + +The `check_id` returned by `check_governance` is used by `report_plan_outcome` to link the seller's response back to the validated action. + +## Capability declaration + +Governance agents declare their Campaign Governance support in `get_adcp_capabilities`: + +```json +{ + "adcp": { + "attestations": { + "accepted_claim_types": [ + "https://claims.example/audience/population-stability" + ], + "accepted_proof_formats": [ + "https://formats.example/jcs-signed-json" + ], + "supported_delivery_methods": [ + "credential_uri", + "issuer_credential_id", + "embedded" + ], + "accepted_issuers": [ + { + "issuer": { + "type": "origin", + "origin": "https://credentials.example" + }, + "credential_origins": [ + "https://credentials.example" + ], + "resolvers": [ + { + "resolver_id": "primary", + "url": "https://resolver.credentials.example/v1/credentials", + "authentication": "evaluator_managed" + } + ] + } + ] + } + }, + "governance": { + "runtime_attestations": { + "signal_activation": { + "requirement": "required", + "claim_types": [ + "https://claims.example/audience/population-stability" + ] + } + }, + "campaign_governance": { + "categories": [ + { + "category_id": "budget_authority", + "description": "Validates spend against plan budget limits and allocation rules." + }, + { + "category_id": "strategic_alignment", + "description": "Validates that purchases match campaign brief and channel mix targets." + }, + { + "category_id": "bias_fairness", + "description": "Checks targeting for discriminatory patterns and protected category compliance.", + "jurisdictions": ["US", "EU", "UK"] + }, + { + "category_id": "regulatory_compliance", + "description": "Validates jurisdiction-specific advertising regulations.", + "jurisdictions": ["US", "EU", "UK"] + }, + { + "category_id": "seller_verification", + "description": "Compares seller setup against original requests to detect discrepancies." + }, + { + "category_id": "brand_policy", + "description": "Enforces brand-level compliance policies resolved from the brand configuration and policy registry." + } + ] + } + } +} +``` + +`adcp.attestations` is the shared portable-attestation trust and delivery allowlist. `governance.runtime_attestations` is the action-specific policy: presence enables `check_governance.runtime_attestations[]` for signal activation, `requirement` controls whether omission is allowed, and `claim_types` MUST be a subset of the shared accepted claims. Governance capabilities do not duplicate resolver URLs or verifier trust; those remain centralized in the shared block. + +### Runtime signal-quality evaluation + +`runtime_attestations[]` is standardized per-check evidence for `purchase_type: signal_activation` when `tool` is `activate_signal` and `payload.action` is `activate` or omitted (the default). It MUST NOT be supplied for `payload.action: deactivate`, and a `requirement: required` policy applies only to activation: missing evidence MUST NOT block deactivation. The evidence is outside the campaign plan: it neither changes declared plan intent nor provides delegation authority. Plan-level `delegations[]` remains the only delegation-continuity mechanism. + +AdCP does not define a credential issuance API or an orchestrator-side discovery/retrieval API for attestation references. The orchestrator obtains references through an issuer-defined or other out-of-band mechanism before calling `check_governance`. Once presented, evaluator-side credential resolution follows the shared portable-attestation contract and the governance agent's published allowlist. + +For each presentation, the governance agent applies the shared [portable-attestation procedure](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#portable-attestations), then checks the complete typed subject against the governed signal and action. For `activate_signal`, `subject.id` matches `payload.signal_agent_segment_id`; `subject.namespace` and any richer signal identity are reconciled with the signals agent and plan state known to the governance agent. A matching opaque id under a different namespace is a subject mismatch. + +The response carries exactly one ordered `runtime_attestation_evaluations[]` result per presentation. Evaluation `outcome`, `confidence`, and `reason_codes` are produced by the governance agent; they are never authoritative buyer input. Every evaluation binds to the current `check_id` through `action_binding`. + +The governance agent also computes: + +```text +attestation_bound_findings = findings filtered to entries with attestation_reference_digest +runtime_attestation_binding_digest = + "sha256:" + lowercase_hex(SHA-256(JCS({ + evaluations: runtime_attestation_evaluations, + findings: attestation_bound_findings + }))) +``` + +Array order is preserved. Omitted optional fields remain omitted; implementations MUST NOT synthesize defaults before JCS canonicalization. The response, signed `governance_context`, and `get_plan_audit_logs` check entry carry the identical digest. Audit logs retain ordered `{ reference, evaluation }` pairs and the complete attestation-bound findings. Auditors MUST first verify that each evaluation's `reference_digest` equals SHA-256 of RFC 8785 JCS over its paired reference, then recompute the binding digest from the ordered evaluations and findings. + +## Integration with `create_media_buy` + +The buyer includes `governance_context` on the protocol envelope. It does not disclose `plan_id` to the seller; the context carries the opaque, signed binding needed for seller-side verification and for the governance agent to recover the plan. + +```json +{ + "tool": "create_media_buy", + "arguments": { + "account": { "agent_url": "https://seller.example.com", "id": "acc_123" }, + "brand": { "domain": "acmecorp.com" }, + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "packages": ["..."] + } +} +``` + +The seller's response includes `planned_delivery` -- what the seller will actually run: + +```json +{ + "seller_reference": "mb_seller_456", + "packages": ["..."], + "planned_delivery": { + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "total_budget": 150000, + "currency": "USD", + "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "audience_summary": "Adults 25-54, US, premium video inventory", + "enforced_policies": ["us_coppa"] + } +} +``` + +`planned_delivery` is the seller's interpretation of the request -- the actual delivery parameters they will use. It serves two purposes: + +1. **Governance checks** -- When the account has a governance agent configured, the seller sends `planned_delivery` to the governance agent for verification before confirming the media buy. +2. **Transparency** -- The buyer can compare `planned_delivery` against what they requested to catch discrepancies early, before delivery begins. + +## Media-buy online execution checks + +Campaign Governance's buyer-side validation has a trust limitation: the buyer's orchestrator grades its own homework. An LLM agent could hallucinate governance approval, skip validation, or misrepresent what was validated. Seller-side governance checks close this gap by giving sellers an independent way to confirm that purchases are approved. + +The seller POSTs to the buyer's configured governance agent URL when governed action events occur. The governance agent maintains all state and correlates subsequent requests from `governance_context`; the seller does not need the plan ID or governance history. + +### Both checks must pass + +Every media-buy task whose capability entry includes `online_execution_check` **MUST** pass both the buyer-side intent check and the seller-side planned-delivery check. Both calls hit the same authority (the buyer's governance agent), so there is no "two agents disagreeing" case — but the invariant that both calls must succeed is load-bearing: + +- The buyer-side intent check confirms the *plan permits the spend in principle*. +- The seller-side planned-delivery check confirms the *seller's actual delivery parameters are consistent with the approved plan*. + +These are not redundant. A buyer's intent check can pass (the plan allows $100K on premium video) while the seller's planned-delivery check fails (the seller's planned line-up includes inventory the plan excludes). Intent checks may return `conditions` as a counterproposal; the buyer applies them and re-checks. Execution checks are binary. If the concrete candidate is not allowed, the governance agent returns `denied` and the action **MUST NOT** proceed. + +A seller that rejects a trade for its own content-standards or commercial reasons is not participating in a governance conflict — that is a separate, commerce-layer rejection (e.g., `TERMS_REJECTED`) and follows the regular rejection path. Governance speaks only for the buyer's plan. + +### Setup + +The buyer syncs governance agents via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance), pairing each account with the governance agent endpoints to call. Each agent includes authentication credentials so the governance agent can verify the seller's identity: + +```json +{ + "tool": "sync_governance", + "arguments": { + "accounts": [ + { + "account": { + "brand": { "domain": "acmecorp.com" }, + "operator": "pinnacle-media.com" + }, + "governance_agents": [ + { + "url": "https://governance.pinnacle-media.com", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov_token_acme_pinnacle_2026_xyzxyzxyz..." + } + } + ] + } + ] + } +} +``` + +The seller stores these endpoints and presents the credentials when calling `check_governance`. The governance agent MUST resolve the credential to the registered agent URL, require exact equality with `caller`, and use only the resolved URL for authorization, audit, and token issuance. It rejects unrecognized credentials, caller mismatches, and restricted-plan calls whose credential lacks an agent-URL mapping. + +### Governance modes + +Governance mode (audit, advisory, enforce) is an internal implementation detail of the governance agent, not a protocol-level field. The caller sends `check_governance` and acts on the verdict without needing to know what mode produced it. Intent checks may return `approved`, `denied`, or `conditions`; execution checks return `approved` or `denied`. + +This means: +- A governance agent in audit mode internally always returns `approved` with findings attached +- A governance agent in advisory mode returns `approved` with prominent findings and recommended corrections +- A governance agent in enforce mode returns `denied` and expects the caller to stop + +Mode is configured by the buyer's policy team on the governance agent itself, not via the protocol. The governance agent MAY include mode information in its audit logs or `get_plan_audit_logs` response for post-hoc analysis, but callers MUST NOT branch behavior based on mode — they act on the status they receive. + +See the [safety model](/dist/docs/3.2.0-beta.4/governance/campaign/safety-model) for the crawl-walk-run adoption path. + +### Governance context + +The `governance_context` field is an opaque string issued by the governance agent in the `check_governance` response. It correlates any governed action's lifecycle and is the primary audit/reporting key. The governance agent encodes whatever internal state it needs (plan reference, budget snapshot, check history) into this value. + +Callers MUST NOT interpret `governance_context`. They persist and forward it: + +- **Buyer**: receives `governance_context` from `check_governance` response, attaches it to the protocol envelope when sending the media buy to the seller. +- **Seller**: receives `governance_context` in the envelope, stores it alongside the media buy, and includes it on all subsequent `check_governance` calls for that media buy's lifecycle. +- **Governance agent**: uses `governance_context` to reconnect each lifecycle event to the original plan, campaign grouping, and budget state. + +On the first `check_governance` call (before any context exists), the governance agent extracts what it needs from `payload` and `plan_id`. On subsequent calls, `governance_context` provides the continuity so the governance agent does not need to re-derive state from the payload. + +Governance agents SHOULD treat `governance_context` as a lookup key into server-side state or a signed token, not as a plain-text encoding of governance state. If state is encoded directly, it MUST be signed (e.g., HMAC) so tampering by intermediaries is detectable. + +In AdCP 3.0 the encoded value is a compact JWS signed per the [AdCP JWS profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#adcp-jws-profile). The token carries a required `plan_hash` claim that binds the attestation to the exact plan state the governance agent evaluated (see [Plan binding and audit](#plan-binding-and-audit) below). Callers still treat the value as opaque for correlation; sellers that opt into verification follow the [seller verification checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#seller-verification-checklist), which verifies the token's authenticity, authorization scope, and freshness — not the buyer's plan. + +### Plan binding and audit + +The `plan_hash` claim is the cryptographic receipt that forever binds a signed `governance_context` attestation to the exact plan state the governance agent evaluated. It is an **audit-layer** property — sellers do not verify it and are not expected to. The buyer's plan carries commercially sensitive data (cross-seller allocations, per-seller caps, objectives, `approved_sellers` lists, custom policies, `ext`) that buyers do not share with sellers; there is no plan-retrieval mechanism in 3.x and none is planned. `plan_hash` rides inside the JWS because the JWS is already the signed artifact the governance agent produces, but it is not part of the wire-verification contract. + +What the claim delivers: + +- **Post-hoc accountability.** Every governance attestation is forever-bindable to the plan state it attested to. Regulators and forensic audits can prove "this transaction was authorized under plan state X at time T" years after the fact, using only the retained JWS and the governance agent's revision records. +- **Governance-agent self-integrity.** On every `check_governance` call, the governance agent re-evaluates current plan state and re-hashes. Tampering with the governance agent's persisted plan between calls surfaces as a mismatch against the retained revision record. +- **Buyer-side compliance verification.** A buyer's own tooling can verify its governance agent is producing tokens that match the plan the buyer actually pushed — catching a compromised or misbehaving governance vendor. + +#### Canonicalization + +`plan_hash = base64url_no_pad(SHA-256(JCS(plan_payload)))` where: + +- `JCS` is [RFC 8785 JSON Canonicalization Scheme](https://www.rfc-editor.org/rfc/rfc8785) — the same scheme used for [idempotency payload equivalence](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#payload-equivalence). Governance agents and auditor verifiers SHOULD use the same library implementations listed there. JCS sorts object keys lexicographically by code point (caller key order in the `sync_plans` request does not affect the hash) and preserves the distinction between an omitted optional field and an explicit `null` (these produce different hashes). Governance agents MUST hash the plan as-supplied; they MUST NOT synthesize omitted optionals to default values and MUST NOT drop explicit nulls. +- `plan_payload` is **one element of the `plans[]` array as supplied on `sync_plans`** — a single plan object, not the `sync_plans` request envelope and not the `plans` wrapper array. The preimage is the current plan-revision state at the time of attestation, i.e., the plan object the governance agent just evaluated. Implementations constructing the preimage start from the plan-revision object and remove the closed set of bookkeeping fields listed below. +- `base64url_no_pad` follows RFC 4648 §5 with trailing `=` padding stripped — consistent with `jti` and other base64url values in the JWS profile. Governance agents MUST emit the unpadded form. Verifiers (governance agents re-verifying their own tokens, auditors, buyer-side compliance tooling) MUST compare by base64url-decoding both sides to the raw 32-byte SHA-256 digest and comparing bytes — NOT by string equality of the encoded form — so padding, case, or alphabet variation is rejected as a decode failure rather than producing a false non-match. A `plan_hash` that does not decode to exactly 32 bytes MUST be rejected. + +#### Excluded fields + +Closed list — governance agents MUST NOT extend or shrink it; any addition is a breaking change requiring a profile version bump, same rule as [Payload equivalence](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#payload-equivalence): + +- `version` — governance-agent revision counter, set by the agent on each re-sync +- `status` — plan lifecycle status managed by the agent +- `syncedAt` — timestamp written on each re-sync +- `revisionHistory` — agent-internal append-only revision log (MUST be append-only archival; implementations MUST NOT read revisionHistory entries back into the active plan-object shape used for hashing) +- `committedBudget` — derived from downstream `check_governance` / `report_plan_outcome` activity +- `committedByType` — derived from the same activity + +None of these appear in the `sync_plans` request schema (`additionalProperties: false` on the plan item); they exist only on the governance agent's persisted plan state. The list is stated explicitly so an implementer naively hashing their internal state struct strips the right fields. Implementations that discover additional GA-internal fields on their persisted plan state beyond this list MUST treat those fields as **IN the preimage** until the profile version bumps — fail-safe toward inclusion, not exclusion. The "anything that looks like bookkeeping → strip" shortcut silently diverges every implementation that guesses differently; the safe default is "if it is not on the closed list, it is part of the hash." + +All other fields — including `ext`, `custom_policies`, `objectives`, `delegations`, `human_override`, and every field declared in the `sync_plans` plan-item schema — are IN the preimage. Caller guidance: + +`check_governance.runtime_attestations[]` is not a plan field and is therefore outside this preimage. Its omission or change does not alter `plan_hash`; the separate `runtime_attestation_binding_digest` binds that per-check evidence and evaluation to the signed governance decision. + +- **`ext` is part of the preimage.** Buyers MUST NOT place rotating tokens or retry-unstable values inside `ext` on a plan; a value that changes between re-syncs invalidates every outstanding governance_context token for the plan even when the buyer's declared intent is unchanged (consistent with idempotency's treatment of `ext`). +- **`delegations[].expires_at`** is declared intent and SHOULD be stable across re-syncs of the same plan; regenerating it from "now + N days" on every sync causes hash churn. +- **Array order** in `policy_ids`, `policy_categories`, `custom_policies`, `approved_sellers`, `delegations`, `countries`, `regions`, `channels.required`, `channels.allowed` is not semantically meaningful, but JCS preserves it. Buyers SHOULD emit these in stable order across re-syncs. +- **JCS does not Unicode-normalize.** Per RFC 8785 §3.2.5, JCS preserves strings as-supplied — visually-indistinguishable Unicode variants (Latin `a` vs Cyrillic `а`, NFC-vs-NFD compositions, confusable homoglyphs) produce distinct bytes and therefore distinct hashes. `plan_hash` detects this divergence correctly at the cryptographic layer, but the plan-semantics layer does not: two plans whose `policy_ids` or `policy_categories` differ only by a homoglyph substitution authorize different enforcement outcomes at the governance agent and at downstream consumers. Buyers and governance agents SHOULD validate `policy_ids` and `policy_categories` against a canonical allowlist server-side before emitting or evaluating them. This is a plan-content rule, not a hashing rule — `plan_hash` integrity is intact either way; the allowlist is what prevents a homograph substitution from producing a different authorization decision. + +#### Governance-agent obligations + +Governance agents MUST: + +- Compute `plan_hash` over the current plan state on every `check_governance` call and include it in the signed JWS payload. The hash MUST be over the plan the agent just evaluated; stale attestations over mutated plans MUST NOT be produced. +- Refresh the signature on every `check_governance` invocation — fresh `jti`, `iat`, `exp`, and `plan_hash`. Governance agents MUST NOT cache and re-emit a previously-signed `governance_context` token across plan revisions. Envelope idempotency response caching is a separate regime — `governance_context` is on the closed exclusion list in [Payload equivalence](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#payload-equivalence) precisely so it can rotate on replay. +- **Retain the per-revision `plan_hash`** alongside each internal plan-revision record — MUST, regardless of whether `audit_log_pointer` is exposed. Retention is what delivers the forever-binding property; without universal retention, every governance agent that doesn't use `audit_log_pointer` silently voids the audit layer for its entire token corpus. An audit log that cannot be joined back to the attested plan state is half an audit trail, and a governance agent that cannot verify its own historical tokens cannot detect tampering of its own store. Retained values are implementation-internal and are never exposed on the wire except through the normalized response on [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs), which echoes `plan_hash` per entry so auditors do not have to reconstruct from the governance agent's private records. + +#### Wire-verification contract + +`plan_hash` is not listed in `crit`. `crit` is wire-verifier semantics (RFC 7515 §4.1.11): it forces verifiers to reject tokens whose listed claims they cannot process. No wire verifier processes `plan_hash` — the only parties who can fetch the preimage (governance agent, auditor, buyer compliance) are off-wire. Listing in `crit` would force sellers to reject tokens they have no basis to verify, with no offsetting benefit. Governance agents MUST emit the claim and MUST NOT list it in `crit`. + +Sellers persist and forward `governance_context` verbatim and perform the [15-step JWS verification checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#seller-verification-checklist) — authenticity, authorization scope, freshness. They treat `plan_hash` as opaque cargo inside the token and never inspect it. + +#### Verification recipes + +**Auditor recipe.** A regulator or third-party auditor with access to a plan's audit logs verifies historical attestations as follows: + +1. Call [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) with `include_entries: true` to retrieve the audit trail. Each `check` entry carries `plan_hash` (the claim asserted at issuance time) and `governance_context` (the signed JWS). +2. For each governance_context, decode the compact JWS and verify the 15-step JWS contract (signature, `iss` in brand.json, `aud`, `exp`, etc.) against the governance agent's published JWKS. +3. Extract the `plan_hash` claim from the decoded JWS payload and base64url-decode to 32 raw bytes. +4. Decode the entry-level `plan_hash` to 32 raw bytes and byte-compare to the claim. A mismatch means the retained audit record disagrees with the signed token — either the token was tampered with or the record was, and the governance agent's integrity is in question. +5. Optionally: recompute `plan_hash` from the governance agent's retained per-revision plan record (if the auditor has authenticated access to the governance agent's revision store) and byte-compare again. A mismatch here means the governance agent's own store was tampered with between signing and audit. + +**Buyer-side compliance recipe.** A buyer whose own tooling wants to verify its governance agent is producing honest tokens: + +1. Observe `governance_context` tokens flowing through the protocol envelope to sellers (the buyer already has these; no retrieval needed). +2. For each token, decode the JWS, extract the `plan_hash` claim, and base64url-decode to 32 bytes. +3. Recompute `plan_hash` over the buyer's own copy of the plan at the revision the token attests to. The buyer has authoritative plan state from their own `sync_plans` calls. +4. Byte-compare. A mismatch means the governance agent is signing attestations that don't match the plan the buyer actually pushed — either vendor compromise or a bug. Either is a critical finding the buyer should escalate. + +This path catches a misbehaving governance vendor without involving the seller, the auditor, or the protocol. The data is already on the buyer's side. + +**Constant-time comparison.** All three verifier types — governance-agent self-integrity, auditor, and buyer-side compliance — SHOULD use constant-time byte comparison (e.g., `crypto.timingSafeEqual` in Node, `hmac.compare_digest` in Python, `crypto/subtle.ConstantTimeCompare` in Go) when comparing `plan_hash` digests. Timing side channels on a SHA-256-length comparison are not practically exploitable today; the rule is cheap insurance against future deployments that re-use the comparison code on shorter digests or against adversaries with co-tenancy on the verifier host. + +#### Privacy considerations + +The opaque `sub` does not disclose `plan_id`, but compact JWS is readable and `plan_hash` is stable for one plan revision. A seller can therefore correlate otherwise separate actions that carry the same hash, even though it cannot recover the plan ID or plan contents. This revision preserves that linkability because the hash is the durable audit receipt; deployments that consider same-revision correlation sensitive should use short retention and separate governance agents or audiences. A future auditor-only receipt could remove the signal, but 3.x does not claim plan unlinkability. + +#### Reference test vectors + +Eleven vectors under [`static/compliance/source/test-vectors/plan-hash/`](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/test-vectors/plan-hash) pin the canonicalization bit-exactly: a minimal plan, a plan exercising every optional field, a bookkeeping-stripped case (GA-internal fields present on the stored plan but stripped before hashing, yielding the same hash as the bookkeeping-absent equivalent), paired vectors proving that omitted-vs-explicit-null, array order in `policy_categories`, and rotating `ext.trace_id` all produce distinct hashes, a Unicode case confirming JCS does not normalize per RFC 8785 §3.2.5, and a numeric-canonicalization case with fractional percentages that pins library choice over hand-rolled `JSON.stringify + key sort`. Each vector records the preimage, the canonical JCS bytes, the SHA-256 hex digest, and the final `plan_hash` claim value. Governance agents and auditor verifiers MUST reproduce these hashes bit-exactly. + +### Governance phases + +Governance checks cover the full media buy lifecycle through three phases: + +| Phase | Trigger | What's validated | +|-------|---------|------------------| +| `purchase` | `create_media_buy`, `acquire_rights`, `activate_signal`, `build_creative` | Budget, geo, channels, flight dates, policies | +| `modification` | `update_media_buy`, `update_rights` | Change magnitude, reallocation, new parameters | +| `delivery` | Periodic (seller-initiated) | Pacing, spend rate, geo drift, channel distribution | + +The `phase` field defaults to `purchase` if omitted, so existing implementations continue to work without changes. + +The governance agent maintains all state and correlates service-side requests from `governance_context`. The seller does not receive `plan_id`, chain check IDs, or track governance history. + +### Purchase phase + +When the seller receives a `create_media_buy` request on an account with `governance_agents`: + +1. The seller interprets the request and determines its `planned_delivery`. +2. Before committing, the seller calls `check_governance` with `phase: "purchase"`, `governance_context`, and `planned_delivery`. +3. The governance agent validates the planned delivery against the campaign plan. +4. If `approved`, the seller confirms the media buy. +5. If `denied`, the seller rejects the media buy with an `GOVERNANCE_DENIED` error. + +```mermaid +sequenceDiagram + participant O as Orchestrator + participant S as Seller + participant A as Governance Agent + + O->>S: create_media_buy(packages, governance_context) + S->>S: Interpret request → planned_delivery + S->>A: POST check_governance(phase: purchase) + A->>A: Validate against plan + A-->>S: approved + S-->>O: media_buy confirmed (planned_delivery) +``` + +### Modification phase + +When the seller receives an `update_media_buy` request: + +1. The seller interprets the update and determines the new `planned_delivery`. +2. The seller calls `check_governance` with `phase: "modification"`, the updated `planned_delivery`, and a `modification_summary`. +3. The governance agent looks up the governed action from `governance_context` and evaluates the changes against the plan. +4. If `approved`, the seller confirms the update. +5. If `denied`, the seller does not commit the update. + +```mermaid +sequenceDiagram + participant O as Orchestrator + participant S as Seller + participant A as Governance Agent + + O->>S: update_media_buy(budget: $200K, end: Jul 15) + S->>S: Determine new planned_delivery + S->>A: POST check_governance(phase: modification) + A->>A: Look up media buy, evaluate changes + A-->>S: approved + S-->>O: media_buy updated +``` + +The governance agent can apply different logic to modifications than to initial purchases. For example, a small budget increase within `reallocation_threshold` might be auto-approved, while a large budget increase or new geo market might require stricter scrutiny. + +### Delivery phase + +The seller calls `check_governance` with `phase: "delivery"` periodically during active delivery. This creates a direct reporting channel between the seller and the buyer's governance agent. + +1. The seller collects delivery metrics for the reporting period. +2. The seller calls `check_governance` with `phase: "delivery"`, the current `planned_delivery`, and `delivery_metrics`. +3. If `approved`, the response includes `next_check` -- when the seller should report again. +4. If `denied`, the seller pauses delivery immediately. + +The governance agent opts in to delivery reporting by including `next_check` in the purchase approval response. If the purchase response has no `next_check`, the governance agent does not expect delivery reports. + +```mermaid +sequenceDiagram + participant S as Seller + participant A as Governance Agent + + loop Every reporting period + S->>A: check_governance(phase: delivery, metrics) + A->>A: Check pacing, geo drift, spend rate + A-->>S: approved (next_check: +7d) + end + + Note over S,A: If drift detected + S->>A: check_governance(phase: delivery, metrics) + A-->>S: denied (pacing drift) + S->>S: Pause and prepare corrected delivery + S->>A: check_governance(phase: delivery, corrected plan + metrics) + A-->>S: approved (next_check: +3d) +``` + +The governance agent controls the reporting cadence through `next_check`. It can tighten the cadence after corrected drift and relax it when delivery is stable. The governance agent MAY treat a missed `next_check` deadline as a finding on the next delivery check. + +### Verification examples + +**Purchase request:** + +```json +{ + "tool": "check_governance", + "arguments": { + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "purchase", + "planned_delivery": { + "media_buy_id": "mb_seller_456", + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "total_budget": 150000, + "currency": "USD", + "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "audience_summary": "Adults 25-54, US, premium video inventory", + "enforced_policies": ["us_coppa"] + } + } +} +``` + +**Authorized (purchase with delivery opt-in):** + +```json +{ + "check_id": "auth_001", + "check_type": "execution", + "verdict": "approved", + "explanation": "Planned delivery is within plan parameters. Budget: $150,000 of $500,000 plan total. Geo: US (within plan). Channel: OLV (within 40-70% target range).", + "expires_at": "2026-03-15T01:00:00Z", + "governance_context": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFkY3AtZ292K2p3cyJ9.purchase.signature", + "next_check": "2026-03-22T00:00:00Z" +} +``` + +The `next_check` field signals that the governance agent expects delivery reporting. If absent, no delivery reports are expected. + +**Denied (purchase):** + +```json +{ + "check_id": "auth_002", + "check_type": "execution", + "verdict": "denied", + "explanation": "Planned delivery targets CA (Canada) which is not an authorized market for this plan.", + "findings": [ + { + "category_id": "strategic_alignment", + "severity": "critical", + "explanation": "Geo targeting includes CA but plan only authorizes US.", + "details": { + "plan_countries": ["US"], + "planned_countries": ["US", "CA"] + } + } + ] +} +``` + +**Authorized (delivery):** + +```json +{ + "check_id": "auth_004", + "check_type": "execution", + "verdict": "approved", + "explanation": "Delivery on track. Week 1 spend: $12,500 of $150,000 (8.3%). Pacing is on target for 13-week flight.", + "expires_at": "2026-03-29T00:00:00Z", + "governance_context": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFkY3AtZ292K2p3cyJ9.delivery.signature", + "next_check": "2026-03-29T00:00:00Z" +} +``` + +### Enforcement + +When `governance_agents` is present on the account, the seller MUST call `check_governance` before confirming any media buy. The buyer provided the endpoints specifically so that purchases are independently verified -- skipping it defeats the purpose. + +When `governance_agents` is absent, the seller processes media buy requests normally. The buyer-side governance loop (intent check -> execute -> `report_plan_outcome`) still applies, but there is no seller-side verification. + +Sellers MUST NOT require governance checks as a prerequisite for all accounts. A seller that refuses to process media buys from accounts without `governance_agents` would break interoperability with buyers who do not use Campaign Governance. + +The `delivery` phase is optional even when `purchase` phase governance is used. A seller MAY support purchase approval without ongoing delivery reporting. The governance agent indicates whether it expects delivery reports through the presence of `next_check` in the purchase response. + +If the governance agent is unreachable (timeout, network error), the seller MUST NOT proceed with the media buy. Governance checks are a prerequisite for confirming purchases on accounts with registered `governance_agents`. The seller SHOULD retry the check after a brief delay and reject the media buy with a `GOVERNANCE_UNAVAILABLE` error if the agent remains unreachable. + +When the orchestrator receives `GOVERNANCE_UNAVAILABLE` from a seller, it SHOULD retry the `create_media_buy` after a delay. If the governance agent remains unavailable, the orchestrator SHOULD escalate to a human rather than attempting alternative sellers -- the governance outage affects all sellers on the same account. A prior intent check approval from the orchestrator does not substitute for the seller's execution check; the seller validates independently and cannot use the orchestrator's approval. + +### Performance expectations + +Governance agent implementations SHOULD respond to `check_governance` calls within 5 seconds for intent checks and 10 seconds for execution checks. Sellers SHOULD configure appropriate timeouts and treat timeouts the same as unavailability (retry, then reject with `GOVERNANCE_UNAVAILABLE`). + +### Wire format + +The seller calls each governance agent at its registered URL using MCP over HTTP (Streamable HTTP transport). The request is an MCP `tools/call` invocation with tool name `check_governance` and the request arguments as the tool input. Authentication uses the Bearer token from the agent's `authentication.credentials` in the `Authorization` header. + +### One governance agent per account + +An account binds to exactly one governance agent per [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). Registration is single-agent by schema — `governance_agents` is an array because that is what 3.0 shipped with, constrained to `maxItems: 1` as a load-bearing invariant (not a staging post toward relaxation). The envelope carries a single `governance_context` token; all lifecycle calls route to that one agent. Loosening the cap would require a coordinated change across `sync_governance`, the protocol envelope, and every lifecycle task that threads the token — that change is not planned. + +This is deliberate. A governance plan is unitary — budget authority, delivery monitoring, brand safety, and regulatory compliance are not independent specialisms held by different authorities. They are phases and facets of the same evaluation against the same plan state: + +- **Authorization, fidelity, and drift are phases, not specialisms.** `check_governance` already separates them on the `phase` axis (`purchase` / `modification` / `delivery`). Splitting them across agents partitions the same plan state across separate authorities, which can only produce drift, disagreement, or duplicated re-reads of the same plan. +- **Regulatory rules are encoded in the plan, not held by a separate agent.** `enforced_policies`, `restricted_attributes`, `policy_ids`, and `human_review_required` live on the plan itself. A "regulatory compliance" agent separate from the "spend authority" agent would re-evaluate the same plan and reach the same decision, or diverge — neither is useful. +- **Internal specialist review belongs inside the governance agent.** A buyer that wants legal, brand-safety, or category-specialist review composes those reviewers behind a single governance-agent endpoint (human review, internal routing, multi-reviewer consensus are all governance-agent-internal concerns). The protocol sees one agent; the agent's internal organization is the agent's business. +- **One lifecycle, one token, one audit trail.** Plan binding (`plan_hash`), signed context (`governance_context`), and `get_plan_audit_logs` are all single-agent designs. A single agent is what makes post-hoc accountability ("this transaction was authorized under plan state X by agent Y at time T") a clean, verifiable claim. + +Buyers that need internal specialist review (legal, brand safety, category) compose those reviewers inside the governance agent they configure — the protocol does not surface the split. + +Internal decomposition is auditable through `check-governance-response.findings[]`. Each finding carries `category_id` (the agent-internal taxonomy — pharma MLR, brand safety, legal compliance, whichever specialism flagged it) and `policy_id` (the specific policy that triggered the finding). Buyers and sellers see one consolidated decision; per-finding attribution lets readers trace which specialist within the governance agent contributed to a denial or condition without surfacing the split as separate protocol-level agents. + +When the violation traces to a producer-tagged surface — a `feature_requirements[i].policy_id` the buyer authored, a `creative-feature-result.policy_id` the creative agent recorded, or a `validation-result.features[i].policy_id` a property-list agent emitted — the governance agent echoes that `policy_id` on the finding for end-to-end traceability. See [Policy Attribution](/dist/docs/3.2.0-beta.4/governance/policy-attribution) for the producer contract. + +Related specialist reviews that sit adjacent to (not inside) campaign governance — brand-safety pre-screen of creatives, property-list policy, content-standards evaluation — are separate governance surfaces with their own agents and their own lifecycle (see [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative), property governance, content-standards governance). Campaign governance speaks only for the plan. + +### Governance checks and the governance loop + +Governance checks complement the buyer-side governance loop, they do not replace it: + +| Concern | Intent checks (orchestrator, `tool` + `payload`) | Execution checks (seller, `governance_context` + `planned_delivery`) | +|---------|--------------------------------------|---------------------------------------| +| **Who checks** | Buyer's governance agent, called by orchestrator | Buyer's governance agent, called by seller | +| **When** | Before the buyer sends the request | Before confirm, on update, during delivery | +| **What's validated** | The buyer's intended action | The seller's planned and actual delivery | +| **Trust model** | Buyer-attributed intent | Seller-attributed statement, reconciled against buyer evidence | +| **Budget tracking** | Yes (plan state) | Governance agent maintains state | +| **Ongoing monitoring** | Buyer observations via `report_plan_outcome` | Seller statements via `delivery` phase | + +The `delivery` phase gives the governance agent a seller-authenticated claim about delivery. Buyer observations arrive separately through `report_plan_outcome`. Neither claim silently replaces the other; the [evidence reconciliation rules](#evidence-authority-and-reconciliation) define how conflicts are retained and handled. + +The buyer-side and seller-side governance checks hit the same agent — the one registered on the account via `sync_governance`. The orchestrator calls it for intent checks and the seller calls it for execution checks; both conversations reach the same authority with the same plan state. + +## Orchestrator integration pattern + +```mermaid +flowchart TD + A[Sync plan] --> B[Agent decides to act] + B --> C["check_governance(plan_id, tool, payload)"] + C --> D{Status?} + D -->|approved| E[Send create_media_buy to seller] + D -->|conditions| F[Apply conditions] + F --> C + D -->|denied| G[Log denial, skip action] + D -->|async| J[Task goes async — human review internal to governance agent] + J --> K[Resolves to approved or denied] + K --> C + E --> L{Governance agent?} + L -->|yes| M["Seller calls check_governance (purchase)"] + L -->|no| N[Seller processes normally] + M --> O{Approved?} + O -->|approved| N + O -->|denied| P[Seller rejects media buy] + N --> R[Receive seller response with planned_delivery] + R --> S["report_plan_outcome(plan_id, check_id, outcome)"] + S --> T{Status?} + T -->|accepted| U[Continue] + T -->|findings| V[Review findings, decide next action] + V --> U + U --> W{Update needed?} + W -->|yes| X["check_governance(tool: update_media_buy, payload)"] + X --> Y["Seller calls check_governance(governance_context, phase: modification)"] + W -->|no| Z{Delivery active?} + Z -->|yes| AA["Seller calls check_governance (delivery) periodically"] + AA --> AB{Delivery approved?} + AB -->|approved| Z + AB -->|denied| AC[Seller pauses; may correct and re-check] +``` + +The governance check is a synchronous call in the orchestrator's action loop. The orchestrator calls `check_governance` with `tool` + `payload` (intent check) before sending requests to sellers. Seller-side execution checks are transparent to the orchestrator — the orchestrator sends the same `create_media_buy` request regardless of whether governance checks are configured. Modification and delivery phase checks happen between the seller and governance agent, independent of the orchestrator's governance loop. + +## Audit trail + +Every plan maintains an ordered audit trail of all validated actions and reported outcomes, retrievable via [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs). The trail includes: + +- Check ID, timestamp, and tool +- The status and category evaluations +- Outcome status and committed budget +- Any findings from outcome reports +- Any internal escalations and their resolutions (recorded by the governance agent) +- The human approver identity (when human review occurred internally) +- Delivery metrics over time +- Ordered runtime attestation `{ reference, evaluation }` pairs, their binding digest, and complete findings linked by `attestation_reference_digest` + +This audit trail serves compliance and reporting needs. For regulated categories (political advertising, financial services), the trail provides evidence that governance was applied to every transaction. + +## Conformance testing + +A conformance test suite for governance agent implementations is planned. Test vectors provide structured input/output pairs -- a plan, a set of policies, a `check_governance` request, and the expected response status and findings. Governance agents can run these vectors to verify that their policy evaluation produces consistent results. + +The policy registry's exemplars (pass/fail scenarios per policy) provide the raw material. Test vectors formalize these into executable assertions that any governance agent can validate against. The AdCP client test library will include these vectors as part of its standard test suite. + +## Property list governance + +Campaign governance intersects with property governance when media buys reference property lists. A governance agent MAY validate that property lists referenced in media buy requests meet the plan's brand safety and compliance requirements, ensuring that property lists align with the brand's compliance configuration and enforced policies. diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance.mdx new file mode 100644 index 0000000000..238b5fb842 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance.mdx @@ -0,0 +1,664 @@ +--- +title: check_governance +description: "check_governance is the universal validation gate in AdCP — orchestrators and sellers call it before executing any campaign action." +"og:title": "AdCP — check_governance" +--- + + +# check_governance + + +**Experimental.** Campaign governance ([`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), `check_governance`, [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome), [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Universal governance check for campaign actions. Both the orchestrator (buyer-side) and the seller call this task. The governance agent infers the check type from the fields present: + +| Check type | Who calls | Discriminating fields | Purpose | +|------------|-----------|----------------------|---------| +| **Intent** | Orchestrator | `tool` + `payload` | Validates the intended action before sending to a seller. No budget committed. | +| **Execution** | Seller | `planned_delivery` + `governance_context` | Validates what the seller will actually deliver. Budget is committed later via `report_plan_outcome`. | + +The governance agent maintains all state. Initial intent checks are addressed by `plan_id`; subsequent execution and lifecycle checks are addressed by the opaque `governance_context`. Services do not need the buyer's plan ID and do not chain check IDs or track governance history. + +An account binds to one governance agent (see [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) and [One governance agent per account](/dist/docs/3.2.0-beta.4/governance/campaign/specification#one-governance-agent-per-account)). All lifecycle calls for a governed action go to that same agent. + + +**Per-specialist review surfaces here.** Internal decomposition (legal, brand safety, category) is not exposed as separate endpoints — it appears as agent-internal labels in `categories_evaluated` and, on `denied`, `conditions`, or informational `approved` responses, in `findings[].details`. Treat these values as opaque audit values; do not pattern-match against a fixed list. + + +## Check types + +### Intent checks (orchestrator) + +The orchestrator calls `check_governance` with `tool` and `payload` before sending a tool call to a seller. The governance agent evaluates the intended action against the campaign plan. + +1. Orchestrator decides to call a seller tool (e.g., [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy)) +2. Orchestrator calls `check_governance` with the tool name and full payload +3. If `approved`, orchestrator sends the tool call to the seller +4. If `denied`, orchestrator does not send the tool call +5. If `conditions`, orchestrator adjusts the payload and re-calls `check_governance` +6. If the governance agent needs human review, the task goes async and eventually resolves to `approved` or `denied` + +### Runtime signal attestations + +For an [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) intent check, the orchestrator MAY attach `runtime_attestations[]`: independently issued evidence that a signal-quality claim still holds at activation time. Each item is the shared [portable `AttestationReference`](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#portable-attestations), not a governance decision supplied by the buyer. + +AdCP does not define a credential issuance API or an orchestrator-side API for discovering or retrieving these references. Before calling `check_governance`, the orchestrator obtains each reference through an issuer-defined or other out-of-band mechanism. Evaluator-side resolution of a supplied credential locator still follows the portable-attestation procedure and the governance agent's published allowlist. + +The governance agent advertises support in two capability locations: + +- `adcp.attestations` is the shared issuer, resolver, verifier, proof-format, and delivery allowlist. +- `governance.runtime_attestations.signal_activation` declares whether evidence is `optional` or `required` for signal activation and which signal-quality claim types apply. + +```json +{ + "plan_id": "plan_nova_signal_launch", + "caller": "https://buying.pinnacle-agency.example", + "target_agent": "https://signals.meridian.example/adcp", + "purchase_type": "signal_activation", + "proposed_commitment": { + "amount": 0, + "currency": "USD" + }, + "tool": "activate_signal", + "payload": { + "idempotency_key": "67da3ce4-f2aa-4b63-93a1-215106690f73", + "signal_agent_segment_id": "segment_urban_commuters", + "destinations": [ + { + "type": "agent", + "agent_url": "https://sales.streamhaus.example" + } + ] + }, + "runtime_attestations": [ + { + "issuer": { + "type": "origin", + "origin": "https://credentials.example" + }, + "claim_type": "https://claims.example/audience/population-stability", + "subject": { + "type": "resource", + "resource_type": "https://adcontextprotocol.org/claims/subjects/signal", + "namespace": "https://signals.meridian.example/adcp", + "id": "segment_urban_commuters" + }, + "locator": { + "type": "issuer_credential_id", + "credential_id": "cred_population_2026_08", + "resolver_id": "primary" + }, + "content_digest": "sha256:cee39fac0bff75b76b0dd193c19e259d7bfed089dd9ae4a528a132d32ec7449a" + } + ] +} +``` + +For `tool: activate_signal`, the governance agent MUST confirm that each subject is the signal resource governed by the action. `subject.id` MUST match `payload.signal_agent_segment_id`; `subject.namespace` and any richer signal identity MUST match the signals agent and plan/action state known to the governance agent. The comparison is on the complete typed subject, not the opaque id alone. + +Runtime attestations apply only when `payload.action` is `activate` or omitted (the default). They MUST NOT be supplied for `payload.action: deactivate`. A capability with `requirement: required` requires evidence only for activation; missing evidence MUST NOT block deactivation. + +`runtime_attestations[]` is per-check evidence. It is not stored inside the plan and is not part of the `plan_hash` preimage. Delegation continuity remains plan-owned through `delegations[]`; runtime attestations do not create another delegation mechanism. + +For each presentation the response returns one `runtime_attestation_evaluations[]` item in the same order. The governance agent produces `outcome`, optional `confidence`, and `reason_codes`; buyer input cannot make those values authoritative. Each evaluation's `action_binding.action_id` equals the response `check_id`. + +```json +{ + "check_id": "check_signal_001", + "check_type": "intent", + "verdict": "approved", + "plan_id": "plan_nova_signal_launch", + "explanation": "Signal activation is within plan policy and the required population-stability credential verified.", + "runtime_attestation_evaluations": [ + { + "reference_digest": "sha256:c3eeeaaad0916bb04f14940f21303ce0abf27296c4cf979ba9c22e2e8245ac07", + "credential_digest": "sha256:cee39fac0bff75b76b0dd193c19e259d7bfed089dd9ae4a528a132d32ec7449a", + "proof_format": "https://formats.example/jcs-signed-json", + "outcome": "verified", + "confidence": 0.98, + "evaluated_at": "2026-08-04T12:00:00Z", + "evaluated_by": "https://governance.example/adcp", + "valid_until": "2026-08-04T13:00:00Z", + "action_binding": { + "action_type": "https://adcontextprotocol.org/actions/governance-check", + "action_id": "check_signal_001" + } + } + ], + "runtime_attestation_binding_digest": "sha256:3a746f172de517f24ad53ec0c12a4ad39d0f02dcf7187aa92eb26760d9438934", + "governance_context": "eyJhbGciOiJFZERTQSIsImtpZCI6ImdvdjIwMjYwOCIsInR5cCI6ImFkY3AtZ292K2p3cyJ9...", + "expires_at": "2026-08-04T12:15:00Z" +} +``` + +`runtime_attestation_binding_digest` binds the ordered evaluations plus findings that carry `attestation_reference_digest`. The signed `governance_context` carries the same digest, and [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) retains ordered `{ reference, evaluation }` pairs plus the full attestation-bound findings. An auditor first recomputes each evaluation's `reference_digest` from its paired reference, then recomputes the binding digest. + +When the capability says `requirement: required`, missing evidence cannot approve the signal activation. A supplied expired, revoked, invalid, subject-mismatched, or digest-mismatched credential MUST NOT be ignored or treated as verified. Off-policy issuers, resolver IDs, credential origins, and verifier nominations are rejected before network access. Resolution failures surface as normalized outcomes and are evaluated under plan policy; they never silently become `verified`. + +### Execution checks (seller) + +The seller calls `check_governance` with `governance_context` and `planned_delivery` when processing a request on an account that has a governance agent configured (set via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance)). Execution checks are always binding — if the governance agent denies, the seller must not proceed. + +Before executing the check, the seller verifies the signed `governance_context` token that arrived on the protocol envelope from the buyer. The buyer produces an **intent-phase** token (per the [JWS profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#adcp-jws-profile)); the seller's execution check produces a purchase token bound by opaque action `sub`, optionally adding a provisional `media_buy_id`. Modification and delivery tokens require the durable `media_buy_id`. + +``` +on receive(create_media_buy request): + token = request.envelope.governance_context + persist(token) # always persist for audit/forwarding + verify(token, { # per Security — Signed Governance Context + sellerId: my_adagents_url, + phase: "intent", # buyer produces intent tokens + mediaBuyId: null, # intent tokens have no media_buy_id + }) # throws on any of 15 checks failing + candidate = prepare_without_commit(request) + call check_governance(candidate.planned_delivery, token) + proceed only if governance_agent verdict = approved + commit(candidate) # atomic after approval +``` + +Sellers that have not yet implemented verification MUST still persist and forward the token unchanged — auditors and regulators rely on this. Verification is the ramp from "forward-only" compliance to cryptographic accountability and can be adopted incrementally. + +Execution checks cover the full media buy lifecycle through three phases: + +| Phase | When | What's checked | +|-------|------|----------------| +| `purchase` | Before confirming `create_media_buy` | Budget, geo, channels, flight dates, policies | +| `modification` | Before confirming [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) | Change magnitude, reallocation, new parameters | +| `delivery` | Periodically during delivery | Pacing, spend rate, geo drift, channel distribution | + +Sellers can adopt committed governance checks incrementally: + +- **Level 1: Purchase only** -- One call per `create_media_buy`. The minimum viable integration. +- **Level 2: + Modification** -- One call per `update_media_buy`. +- **Level 3: + Delivery reporting** -- Periodic calls during active delivery. + +## Invocation requirement + +When a governance agent is configured on the plan, buyer agents MUST invoke `check_governance` before every operation classified by its request schema's `x-governed-commitment` annotation. There is no dollar floor or cold-start exemption for commitment-bearing operations. Conditional tasks keep cancellation, pause, deactivation, decrease-only changes, estimates, and zero-cost retrieval outside the gate so governance cannot block risk-reducing cleanup. + +Service-side enforcement makes the MUST real through the [signed `governance_context` token](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context): a service receiving a governed commitment MUST require a valid, in-date intent-phase token addressed to that service. The service treats the context as the authoritative opaque plan binding; it does not require `plan_id`. Media-buy services that additionally declare `online_execution_check` prepare `planned_delivery`, call `check_governance`, and commit atomically only on `approved`. + +When no governance agent is configured on the plan, `check_governance` invocation is neither required nor meaningful — there is nothing to call. Sellers MAY refuse to transact on plans lacking a configured governance agent as a matter of their own commercial policy. + +See the [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#spend-commit-invocation) for the full definition, including audit requirements, seller-side retention MUSTs, and interaction with idempotency. + +## Status values + +| Status | Meaning | Caller action | +|--------|---------|---------------| +| `approved` | Proceed as planned. | Act before `expires_at` or re-call. | +| `denied` | Do not proceed. | Return error to upstream caller. | +| `conditions` | Intent counterproposal; not authorization. | Apply conditions, then re-call `check_governance` with adjusted parameters. | + +### Expiration + +`expires_at` and `governance_context` are present only when the `verdict` is `approved`. A lapsed approval is no approval -- the caller must re-call `check_governance` before proceeding. + +### Conditions + +`conditions` is valid only for intent checks and carries no `governance_context`. It returns a separate `consultation_context`, which is only a negotiation handle: the buyer returns it with the adjusted `plan_id` + `tool` + `payload` re-check and MUST NOT send it to a service. The governance agent binds that handle to the authenticated principal, caller, plan, tool, purchase type, and target audience; any mismatch is rejected. The caller must receive `approved` before proceeding. Conditions with a `required_value` are machine-actionable; conditions without one describe the adjustment the buyer must make. Execution and lifecycle checks return either `approved` or `denied`. + +Governance agents SHOULD return `denied` after 3 unsuccessful intent re-calls for the same action. This prevents infinite negotiation loops. + +### Human review + +When the governance agent determines that human review is required (e.g., the action exceeds the plan's `reallocation_threshold`, or the plan carries `human_review_required: true`), it handles the escalation internally. The `check_governance` task goes async — the caller receives standard async task lifecycle statuses (`submitted`, `working`) and eventually gets `approved` or `denied` once the human acts. The caller does not need special handling for this case beyond supporting async tasks (see [task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)). + +For `committed` checks (seller-side), the seller sets a timeout. If the governance agent does not respond within the timeout, the seller treats it as `denied` and returns an error to the orchestrator. The orchestrator can re-initiate the media buy after the governance agent resolves. + +### Linking to outcomes + +The response includes a `check_id`. Use this in [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) to link outcomes to the governance check that authorized them. + +## When the governance agent is unavailable + +If the governance agent is configured and the caller cannot reach it (timeout, network error), the caller MUST NOT proceed. Governance is a gate -- when the gate is unreachable, the default is halt. The caller SHOULD retry with backoff and report the failure upstream. + +## Delivery cadence + +The presence of `next_check` in a response is the signal that the governance agent expects ongoing delivery reporting. The seller SHOULD call no later than the `next_check` time. The governance agent MAY treat a missed deadline as a finding on the next delivery check. + +## Request + +### Intent check (orchestrator checking before sending to seller) + +```json +{ + "tool": "check_governance", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "caller": "https://orchestrator.example.com", + "target_agent": "https://seller.example.com", + "tool": "create_media_buy", + "payload": { + "idempotency_key": "buy-plan-q1-2026-001", + "account": { "brand": { "domain": "acmecorp.com" }, "operator": "pinnacle-agency.example" }, + "brand": { "domain": "acmecorp.com" }, + "proposal_id": "prop_premium_video_300k", + "total_budget": { "amount": 150000, "currency": "USD" }, + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z" + } + } +} +``` + +On the first `check_governance` call, the governance agent extracts what it needs from `payload`. The response includes a `governance_context` string that the caller attaches to the protocol envelope and includes on all subsequent governance calls for this governed action. In 3.0 the governance agent MUST emit a compact JWS signed per the [AdCP JWS profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context) so sellers can verify authenticity, authorization scope, and freshness (the 15-step seller checklist). Action-authorizing tokens critically bind `authorized_task` and the canonical `authorized_payload_hash`, so the receiving service can verify the request without access to governance-private state. The token also carries a required `plan_hash` audit-layer claim — see [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit) for canonicalization rules, retention obligations, and the eleven reference vectors governance-agent implementers SHOULD validate against before shipping. + +### Intent check (rights license) + +```json +{ + "tool": "check_governance", + "arguments": { + "plan_id": "plan_acme_summer_2026", + "caller": "https://buying.pinnacle-agency.example", + "target_agent": "https://rights.example.com", + "purchase_type": "rights_license", + "proposed_commitment": { "amount": 25000, "currency": "USD" }, + "tool": "acquire_rights", + "payload": { + "idempotency_key": "rights-acme-summer-2026-001", + "account": { "brand": { "domain": "acmeoutdoor.com" }, "operator": "pinnacle-agency.example" }, + "rights_id": "acme-athlete-likeness-2026", + "pricing_option_id": "standard_monthly", + "buyer": { "domain": "acmeoutdoor.com" }, + "campaign": { + "description": "AI-generated summer campaign creative", + "uses": ["likeness"], + "countries": ["US"], + "start_date": "2026-04-01", + "end_date": "2026-06-30" + }, + "revocation_webhook": { + "url": "https://buying.pinnacle-agency.example/webhooks/rights", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "rights_webhook_shared_secret_32_chars" + } + } + } + } +} +``` + +### Execution check -- purchase + +```json +{ + "tool": "check_governance", + "arguments": { + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "purchase", + "planned_delivery": { + "media_buy_id": "mb_seller_456", + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "total_budget": 150000, + "currency": "USD", + "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "audience_summary": "Adults 25-54, US, premium video inventory", + "enforced_policies": ["us_coppa"] + } + } +} +``` + +### Execution check -- modification + +```json +{ + "tool": "check_governance", + "arguments": { + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "modification", + "execution_commitment": { "amount": 50000, "currency": "USD" }, + "modification_summary": "Budget increase from $150,000 to $200,000 and flight extension to 2026-07-15.", + "planned_delivery": { + "media_buy_id": "mb_seller_456", + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-07-15T00:00:00Z", + "total_budget": 200000, + "currency": "USD", + "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "audience_summary": "Adults 25-54, US, premium video inventory", + "enforced_policies": ["us_coppa"] + } + } +} +``` + +### Execution check -- delivery + +```json +{ + "tool": "check_governance", + "arguments": { + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "delivery", + "planned_delivery": { + "media_buy_id": "mb_seller_456", + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "total_budget": 150000, + "currency": "USD", + "frequency_cap": { "max_impressions": 3, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "audience_summary": "Adults 25-54, US, premium video inventory", + "enforced_policies": ["us_coppa"] + }, + "delivery_metrics": { + "statement_id": "stmt_mb_seller_456_0001", + "statement_digest": "sha256:4b55f1157094ed8df2635250f71568701d294cb0da57845eba886a62e5434633", + "sequence": 1, + "issued_at": "2026-03-22T01:00:00Z", + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "spend": 12500, + "cumulative_spend": 12500, + "currency": "USD", + "impressions": 850000, + "cumulative_impressions": 850000, + "geo_distribution": { "US": 100 }, + "channel_distribution": { "olv": 100 }, + "pacing": "on_track", + "audience_distribution": { + "baseline": "platform", + "indices": { + "age:18-24": 0.8, + "age:25-34": 1.4, + "age:35-44": 1.3, + "age:45-54": 1.1, + "gender:female": 1.05, + "gender:male": 0.95 + }, + "cumulative_indices": { + "age:18-24": 0.85, + "age:25-34": 1.35, + "age:35-44": 1.25, + "age:45-54": 1.1, + "gender:female": 1.03, + "gender:male": 0.97 + } + } + } + } +} +``` + +## Response + +### approved (intent check) + +```json +{ + "check_id": "chk_001", + "check_type": "intent", + "verdict": "approved", + "plan_id": "plan_q1_2026_launch", + "explanation": "Proposed create_media_buy is within plan parameters. Budget: $150,000 of $500,000 plan total. Geo: US (within plan). Channel: OLV (within 40-70% target range).", + "categories_evaluated": ["budget_authority", "geo_compliance", "channel_compliance", "flight_compliance", "delegation_authority"], + "policies_evaluated": ["us_coppa", "alcohol_advertising"], + "expires_at": "2026-03-15T01:00:00Z", + "governance_context": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFkY3AtZ292K2p3cyJ9.intent.signature" +} +``` + +The orchestrator proceeds to send the [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) to the seller before `expires_at`. + +### approved (execution check -- purchase with delivery opt-in) + +```json +{ + "check_id": "chk_002", + "check_type": "execution", + "verdict": "approved", + "explanation": "Planned delivery is within plan parameters. Budget: $150,000 of $500,000 plan total. Geo: US (within plan). Channel: OLV (within 40-70% target range).", + "mode": "enforce", + "expires_at": "2026-03-15T01:00:00Z", + "governance_context": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFkY3AtZ292K2p3cyJ9.purchase.signature", + "next_check": "2026-03-22T00:00:00Z" +} +``` + +The seller proceeds with the media buy. The presence of `next_check` signals that the governance agent expects delivery reporting starting at that time. + +### approved (execution check -- delivery) + +```json +{ + "check_id": "chk_003", + "check_type": "execution", + "verdict": "approved", + "explanation": "Delivery on track. Week 1 spend: $12,500 of $150,000 (8.3%). Pacing is on target for 13-week flight. Geo and channel distribution match plan parameters.", + "delivery_statement": { + "statement_id": "stmt_mb_seller_456_0001", + "statement_digest": "sha256:4b55f1157094ed8df2635250f71568701d294cb0da57845eba886a62e5434633", + "sequence": 1, + "issued_at": "2026-03-22T01:00:00Z", + "seller_reference": "mb_seller_456", + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "cumulative_spend": 12500, + "currency": "USD", + "canonical_payload": { + "seller_reference": "mb_seller_456", + "delivery_metrics": { + "statement_id": "stmt_mb_seller_456_0001", + "statement_digest": "sha256:4b55f1157094ed8df2635250f71568701d294cb0da57845eba886a62e5434633", + "sequence": 1, + "issued_at": "2026-03-22T01:00:00Z", + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "spend": 12500, + "cumulative_spend": 12500, + "currency": "USD", + "impressions": 850000, + "cumulative_impressions": 850000, + "geo_distribution": { "US": 100 }, + "channel_distribution": { "olv": 100 }, + "pacing": "on_track", + "audience_distribution": { + "baseline": "platform", + "indices": { + "age:18-24": 0.8, + "age:25-34": 1.4, + "age:35-44": 1.3, + "age:45-54": 1.1, + "gender:female": 1.05, + "gender:male": 0.95 + }, + "cumulative_indices": { + "age:18-24": 0.85, + "age:25-34": 1.35, + "age:35-44": 1.25, + "age:45-54": 1.1, + "gender:female": 1.03, + "gender:male": 0.97 + } + } + } + } + }, + "expires_at": "2026-03-29T00:00:00Z", + "governance_context": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFkY3AtZ292K2p3cyJ9.delivery.signature", + "next_check": "2026-03-29T00:00:00Z" +} +``` + +The seller continues delivery and schedules the next governance check for `next_check`. + +### denied (intent check) + +```json +{ + "check_id": "chk_004", + "check_type": "intent", + "verdict": "denied", + "plan_id": "plan_q1_2026_launch", + "explanation": "Proposed media buy targets CA (Canada) which is not within the plan's geography.", + "findings": [ + { + "category_id": "strategic_alignment", + "severity": "critical", + "explanation": "Geo targeting includes CA but plan only covers US.", + "details": { + "plan_countries": ["US"], + "payload_countries": ["US", "CA"] + } + } + ] +} +``` + +The orchestrator MUST NOT send the tool call to the seller. + +### conditions (intent counterproposal) + +```json +{ + "check_id": "chk_004b", + "check_type": "intent", + "verdict": "conditions", + "plan_id": "plan_q1_2026_launch", + "explanation": "Reduce the proposed budget before re-checking.", + "consultation_context": "consult_01K1W8Q4X5Y6Z7", + "conditions": [ + { + "field": "payload.total_budget.amount", + "required_value": 100000, + "reason": "The proposed amount exceeds delegated authority." + } + ] +} +``` + +The buyer adjusts the indicated field on the complete request-arguments object and re-calls `check_governance` with the same `plan_id`, `target_agent`, `tool`, and `consultation_context`. Paths are rooted at that complete object, so `payload.*` changes the downstream task arguments while `proposed_commitment.*` changes the declared ceiling. The buyer does not send the consultation handle to the service. + +### denied (execution check -- delivery geo drift) + +```json +{ + "check_id": "chk_005", + "check_type": "execution", + "verdict": "denied", + "explanation": "Delivery has drifted outside plan parameters. 12% of impressions delivered in CA (Canada) which is not within the plan's geography.", + "findings": [ + { + "category_id": "strategic_alignment", + "severity": "critical", + "confidence": 0.98, + "explanation": "Geo distribution shows 12% delivery in CA, but plan only covers US.", + "details": { + "plan_countries": ["US"], + "actual_distribution": { "US": 88, "CA": 12 } + } + } + ] +} +``` + +The seller MUST pause delivery immediately and correct the geo targeting before resuming. + +## Fields + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plan_id` | string | Initial | Campaign governance plan identifier. Required before a context exists; optional on continuation checks. If sent with a context, it must match the token binding. Services do not require or interpret it. | +| `caller` | string (URI) | Yes | Claimed agent URL. The transport credential must resolve to the same URL, which is used for authorization and audit. Intent callers must be the authenticated plan owner or hold an active delegation; execution callers must match the preserved target audience. | +| `purchase_type` | enum | No | The kind of financial commitment being validated: `media_buy` (default), `rights_license`, `signal_activation`, or `creative_services`. When omitted, the governance agent assumes `media_buy`. | +| `target_agent` | string (URI) | Intent | Exact downstream service URL. Required on intent checks and signed as the token audience. It is routing metadata and is not included in `payload`. | +| `proposed_commitment` | object | Conditional | Intent-only task-neutral `{amount, currency}`. Required for [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products), [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy), [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy), [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights), commitment-increasing [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights), [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal), and [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). For update/control it is the positive delta; for `accept_proposal` it derives from `proposal.commercial_terms`; for `buy_products` it derives from the purchase payload. Use amount `0` for a verified no-cost or non-increasing action. | +| `execution_commitment` | object | Update execution | Seller-computed `{amount, currency}` positive delta for `update_media_buy`. The seller derives it from authoritative current state atomically with the revision check and write. It must not exceed or change the currency of `proposed_commitment`; a mismatch requires a fresh intent. | +| `tool` | string | Intent | The AdCP tool being checked, including compact `buy_products`, `accept_proposal`, and `control_media_buy`. Present on intent checks; `tool` + `payload` identifies an intent check. | +| `payload` | object | Intent | Full downstream tool arguments exactly as they will be sent to `target_agent`. Present on intent checks. | +| `proposal` | CanonicalProposal | `accept_proposal` | Exact committed proposal being authorized. The governance agent verifies `terms_digest` over `commercial_terms` and binds that digest into its decision; the downstream payload carries the same digest. | +| `governance_context` | string | Execution | Opaque context from a prior approved response. Required with `planned_delivery` or `delivery_metrics`; the governance agent derives the plan from it. Services persist and forward it without business-level parsing. | +| `consultation_context` | string | Intent re-check | Non-authorizing handle from a conditions response. Return only with the adjusted intent and the same authenticated principal, caller, plan, tool, purchase type, and target audience; never forward it to a service. | +| `phase` | enum | Execution | `purchase`, `modification`, or `delivery`. Defaults to `purchase`. Present on execution checks. | +| `planned_delivery` | object | Execution | What will actually be delivered. Present on execution checks. When `total_budget` is present, `currency` is required and must equal the intent-authorized currency. Creates compare the total with the ceiling. Updates carry their seller-computed positive delta separately in `execution_commitment`; `total_budget` remains the post-update delivery total. `media_buy_id` is optional during purchase prepare and required for modification/delivery. See [planned delivery](/dist/docs/3.2.0-beta.4/governance/campaign/specification#integration-with-create_media_buy). | +| `delivery_metrics` | object | Delivery | Seller-attributed canonical delivery statement. Required when `phase` is `delivery`; it describes an existing commitment and is never charged again. | +| `delivery_metrics.statement_id` | string | Delivery | Immutable seller-issued statement ID. Reuse with different content is a conflict. | +| `delivery_metrics.statement_digest` | string | Delivery | `sha256:` plus lowercase hex SHA-256 of RFC 8785 JCS over `{seller_reference, delivery_metrics}`, excluding this field. | +| `delivery_metrics.sequence` | integer | Delivery | Monotonically increasing sequence for the governed action. | +| `delivery_metrics.issued_at` | date-time | Delivery | When the seller issued the statement. | +| `delivery_metrics.reporting_period` | object | Delivery | Exact start and end timestamps for this statement. | +| `delivery_metrics.cumulative_spend` | number | Delivery | Finite, non-negative cumulative seller-attributed spend. | +| `delivery_metrics.currency` | string | Delivery | Plan currency for spend fields. | +| `delivery_metrics.audience_distribution` | object | No | Audience demographic composition relative to a baseline. Used for bias/fairness drift detection. | +| `delivery_metrics.audience_distribution.baseline` | enum | Yes | Reference population: `census` (national population), `platform` (platform's user base), or `custom`. | +| `delivery_metrics.audience_distribution.baseline_description` | string | No | Description of the baseline when `baseline` is `custom` (e.g., "US adults 18+ with broadband access"). | +| `delivery_metrics.audience_distribution.indices` | object | Yes | Index values for the current reporting period. Key format: `dimension:value` (e.g., `age:25-34`, `gender:female`). Value of 1.0 means parity with baseline; above 1.0 means over-indexed; below 1.0 means under-indexed. | +| `delivery_metrics.audience_distribution.cumulative_indices` | object | No | Index values across all reporting periods. Same format as `indices`. Helps governance agents detect trends vs. one-period noise. | +| `modification_summary` | string | No | Human-readable summary of what changed. SHOULD be present for `modification` phase. | +| `runtime_attestations` | AttestationReference[] | No | Signal-quality evidence for `purchase_type: signal_activation`; maximum 10. When supplied, `tool` is required and must be `activate_signal`. Items use the shared portable-attestation schema and cannot carry an authoritative buyer decision or confidence. | + +### Delivery metrics + +| Field | Type | Description | +|-------|------|-------------| +| `reporting_period` | object | Reporting window with `start` and `end` timestamps (ISO 8601). Required. | +| `spend` | number | Spend during the reporting period. | +| `cumulative_spend` | number | Total spend since the media buy started. | +| `impressions` | integer | Impressions during the reporting period. | +| `cumulative_impressions` | integer | Total impressions since the media buy started. | +| `geo_distribution` | object | Actual geographic distribution. Keys are ISO 3166-1 alpha-2 codes, values are percentages. | +| `channel_distribution` | object | Actual channel distribution. Keys are values from the channels enum, values are percentages. | +| `pacing` | enum | `ahead`, `on_track`, or `behind`. | +| `audience_distribution` | object | Audience composition relative to a baseline. Contains `baseline` (enum), optional `baseline_description` (string, for custom baselines), `indices` (current period), and optional `cumulative_indices` (all periods). Keys are `dimension:value` strings, values are index numbers (1.0 means parity). | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `check_id` | string | Unique identifier for this governance check. Use in [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) to link outcomes. | +| `check_type` | enum | `intent` or `execution`. Conditions are valid only for intent. | +| `verdict` | enum | `approved`, `denied`, or `conditions`. | +| `plan_id` | string | Echoed on an initial plan-addressed check; optional on context-addressed continuation checks. | +| `explanation` | string | Human-readable explanation of the decision. | +| `findings` | array | Per-category issues found. Present when `verdict` is `denied` or `conditions`. MAY also be present on `approved` for informational findings. Each finding has `category_id`, `severity`, `explanation`, and optionally `policy_id`, `details`, `confidence` (0-1), `uncertainty_reason`, and `attestation_reference_digest` when it relies on a runtime evaluation. `category_id` is an **agent-internal label**, not a protocol-level enum — treat as opaque for display/audit, not for machine pattern-matching. | +| `conditions` | array | Intent-only counterproposal. `field` is rooted at the complete check request arguments (for example `payload.total_budget.amount` or `proposed_commitment.amount`). Adjustments must be re-checked and never authorize execution. | +| `consultation_context` | string | Present only with `conditions`. Correlates negotiation attempts but carries no authorization. | +| `categories_evaluated` | string[] | Governance categories evaluated during this check (e.g., `budget_authority`, `geo_compliance`, `channel_compliance`). **Agent-internal labels** — each string is defined by the governance agent's policy model and is how internal specialist review (legal, brand safety, category) surfaces for audit from behind the agent's single endpoint. Not a protocol enum; not safe to pattern-match against a fixed list. | +| `policies_evaluated` | string[] | Registry policy IDs evaluated during this check. | +| `mode` | enum | `audit`, `advisory`, or `enforce` — governance mode active when this check was evaluated. Recorded by the governance agent from its runtime configuration at check time, not from a plan field. Lets counterparties, regulators, and auditors distinguish whether an `approved` decision reflects deliberate `enforce` enforcement or `audit`-mode silent logging. | +| `expires_at` | string | Present only when `verdict` is `approved`. The caller must act before this time or re-call. | +| `next_check` | string | When the seller should next call `check_governance` with delivery metrics. Present when the governance agent expects ongoing delivery reporting. | +| `delivery_statement` | object | Canonical retained seller statement. Present on delivery execution checks and used by the buyer as the exact reconciliation target in `report_plan_outcome`. | +| `delivery_statement.canonical_payload` | object | Exact `{seller_reference, delivery_metrics}` record retained so auditors can recompute the statement digest after excluding `statement_digest`. | +| `runtime_attestation_evaluations` | AttestationEvaluation[] | Ordered evaluator-of-record results, exactly one per request presentation. Each result binds to `check_id`. | +| `runtime_attestation_binding_digest` | string | Required with runtime evaluations. Digest of ordered evaluations and attestation-bound findings; the signed governance context and audit log carry the same value. | +| `governance_context` | string | Opaque authorization context. Present only when `verdict` is `approved`. Attach it to the protocol envelope and forward it on subsequent governance calls; conditions and denied responses never carry one. When runtime attestations are evaluated, the signed context carries the same `runtime_attestation_binding_digest` returned in the response. | + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| [`PLAN_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-plan-not-found) | correctable | No plan with this ID. The buyer may not have synced the plan yet. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | correctable | The request mixes intent and execution fields, omits a shape-dependent field such as `target_agent` or `execution_commitment`, changes a consultation binding, or carries an invalid amount/currency. Correct the named field and retry; send exactly one check shape. | +| [`CAMPAIGN_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-campaign-suspended) | transient | Campaign governance is suspended pending human review. Wait for the escalation to resolve; contact the plan operator if it persists. | +| [`PERMISSION_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-permission-denied) | correctable | Authenticated identity is missing/mismatched, the buyer-side caller is not authorized by `delegations`, or the target/executing service is not authorized by `approved_sellers`. Retry only with the correct authenticated identity or after authority is granted. | +| [`GOVERNANCE_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-governance-unavailable) | transient | The configured governance agent could not be reached. Retry with backoff; do not perform the governed action while the gate is unavailable. | + +## Related tasks + +- [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) -- The plan this governance check validates against +- [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) -- Report what happened after the action was confirmed +- [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs.mdx new file mode 100644 index 0000000000..1b878148aa --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs.mdx @@ -0,0 +1,374 @@ +--- +title: get_plan_audit_logs +description: "get_plan_audit_logs retrieves governance state, budget tracking, and a complete audit trail for AdCP campaign plans or portfolios." +"og:title": "AdCP — get_plan_audit_logs" +--- + + +# get_plan_audit_logs + + +**Experimental.** Campaign governance ([`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance), [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome), [`report_plan_adjustment`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment), `get_plan_audit_logs`) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Retrieve governance state and audit trail for a plan, multiple plans, or an entire portfolio. Returns budget tracking, validation history, and compliance summary. + +Budget state separates `gross_committed`, `adjustments_reported`, `adjustments_verified`, economic `net_cost`, `headroom_restored`, and `ledger_committed`. The legacy `committed` and `net_committed` fields remain 3.x aliases for the current ledger value. Adjustment entries are append-only; they never rewrite the source outcome or decrement the trailing aggregate used for fragmentation defense. + +## Request + +```json +{ + "tool": "get_plan_audit_logs", + "arguments": { + "plan_ids": ["plan_q1_2026_launch"], + "include_entries": true + } +} +``` + +Results are joined by the governance agent's stable opaque action binding. The exposed `governance_context` is the original intent context for correlation; later lifecycle checks have freshly signed context strings but remain part of the same action. + +**Multiple plans** -- retrieve specific plans in one call: + +```json +{ + "tool": "get_plan_audit_logs", + "arguments": { + "plan_ids": ["plan_q1_2026_launch", "plan_q1_2026_emea"], + "include_entries": false + } +} +``` + +**Portfolio query** -- retrieve combined audit data for all member plans in one or more portfolios: + +```json +{ + "tool": "get_plan_audit_logs", + "arguments": { + "portfolio_plan_ids": ["portfolio_nova_brands_2026"], + "include_entries": true + } +} +``` + +You can combine `plan_ids` and `portfolio_plan_ids` to query both specific plans and portfolios in a single call. + +## Response + +```json +{ + "plans": [ + { + "plan_id": "plan_q1_2026_launch", + "plan_version": 1, + "status": "active", + "budget": { + "authorized": 500000, + "accounting_mode": "gross_commitment", + "gross_committed": 425000, + "adjustments_reported": 25000, + "adjustments_verified": 25000, + "net_cost": 400000, + "headroom_restored": 25000, + "ledger_committed": 400000, + "net_committed": 400000, + "committed": 400000, + "remaining": 100000, + "utilization_pct": 80 + }, + "channel_allocation": { + "olv": { "committed": 275000, "pct": 55 }, + "display": { "committed": 150000, "pct": 30 } + }, + "governed_actions": [ + { + "governance_context": "gc_mb_seller_456", + "purchase_type": "media_buy", + "status": "active", + "committed": 275000, + "adjustments_reported": 25000, + "adjustments_verified": 25000, + "net_cost": 250000, + "headroom_restored": 25000, + "net_committed": 250000, + "seller_reported_spend": 200000, + "buyer_observed_spend": 200000, + "delivery_reporting_period": { + "start": "2026-03-01T00:00:00Z", + "end": "2026-04-01T00:00:00Z" + }, + "conservative_exposure": 200000, + "delivery_reconciliation_status": "consistent", + "delivery_period_state": "open", + "check_count": 8 + }, + { + "governance_context": "gc_mb_seller_789", + "purchase_type": "media_buy", + "status": "active", + "committed": 150000, + "check_count": 7 + }, + { + "governance_context": "gc_rights_acme_img", + "purchase_type": "rights_license", + "status": "active", + "committed": 75000, + "check_count": 2 + } + ], + "summary": { + "checks_performed": 14, + "outcomes_reported": 12, + "adjustments_reported": 1, + "adjustments_verified": 1, + "statuses": { + "approved": 12, + "denied": 1, + "conditions": 1, + "human_reviewed": 1 // also counted in approved or denied above; never counted in conditions (an agent-issued flow-control state, not a human resolution) + }, + "findings_count": 2, + "escalations": [ + { + "check_id": "chk_esc_001", + "reason": "Budget reallocation exceeds threshold", + "resolution": "approved_by_human", + "resolved_at": "2026-03-16T09:30:00Z" + } + ], + "drift_metrics": { + "escalation_rate": 0.07, + "escalation_rate_trend": "stable", + "auto_approval_rate": 0.80, + "human_override_rate": 0.02, + "mean_confidence": 0.88, + "thresholds": { + "escalation_rate_max": 0.20, + "escalation_rate_min": 0.02, + "auto_approval_rate_max": 0.95, + "human_override_rate_max": 0.15 + } + } + }, + "entries": [ + { + "id": "chk_001", + "type": "check", + "timestamp": "2026-03-10T10:05:00Z", + "caller": "https://orchestrator.pinnacle-media.com/agent", + "tool": "get_products", + "check_type": "intent", + "verdict": "approved", + "explanation": "Product discovery within budget and channel constraints.", + "categories_evaluated": ["budget_authority", "strategic_alignment"], + "policies_evaluated": ["us_coppa"] + }, + { + "id": "chk_003", + "type": "check", + "timestamp": "2026-03-15T11:05:00Z", + "caller": "https://ads.seller-example.com/adcp", + "tool": "create_media_buy", + "check_type": "execution", + "mode": "enforce", + "governance_context": "gc_mb_seller_456", + "plan_hash": "oR0jFDEtzcwgPbNf-Ofd_fZHYfAyD1TRbzGOFBVCG-c", + "purchase_type": "media_buy", + "verdict": "approved", + "explanation": "Media buy within plan budget ($150,000 of $500,000 remaining). Geo targeting matches authorized markets. COPPA compliance verified.", + "categories_evaluated": ["budget_authority", "regulatory_compliance", "brand_policy"], + "policies_evaluated": ["us_coppa", "alcohol_advertising"], + "findings": [ + { + "category_id": "budget_authority", + "severity": "info", + "explanation": "Budget utilization at 70% after this buy." + } + ] + }, + { + "id": "out_001", + "type": "outcome", + "timestamp": "2026-03-15T11:10:00Z", + "caller": "https://orchestrator.pinnacle-media.com/agent", + "governance_context": "gc_mb_seller_456", + "purchase_type": "media_buy", + "outcome": "completed", + "committed_budget": 150000, + "reported_committed_budget": 150000, + "seller_reference": "mb_seller_456" + }, + { + "id": "out_del_001", + "type": "outcome", + "timestamp": "2026-03-22T00:00:00Z", + "caller": "https://ads.seller-example.com/adcp", + "governance_context": "gc_mb_seller_456", + "purchase_type": "media_buy", + "outcome": "delivery", + "delivery": { + "media_buy_id": "mb_seller_456", + "impressions": 4200000, + "spend": 137500 + }, + "outcome_status": "accepted" + }, + { + "id": "adj_001", + "type": "adjustment", + "timestamp": "2026-03-23T09:00:00Z", + "caller": "https://ads.seller-example.com/adcp", + "governance_context": "gc_mb_seller_456", + "purchase_type": "media_buy", + "outcome_id": "out_001", + "seller_reference": "mb_seller_456", + "seller_adjustment_id": "cancel_mb_seller_456_01", + "adjustment_type": "decommitment", + "amount": { "amount": 25000, "currency": "USD" }, + "headroom_restored": 25000, + "reason": "Remaining obligation cancelled by mutual agreement.", + "effective_at": "2026-03-23T08:30:00Z" + } + ] + } + ] +} +``` + +## Fields + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plan_ids` | string[] | At least one of `plan_ids`, `portfolio_plan_ids`, or `governance_contexts` | Plan IDs to retrieve. | +| `portfolio_plan_ids` | string[] | At least one of `plan_ids`, `portfolio_plan_ids`, or `governance_contexts` | Portfolio plan IDs. Expanded to member plans. | +| `governance_contexts` | string[] | No | Filter results to specific governed actions by their `governance_context` values. When present, only entries and summaries for the matching governed actions are returned. | +| `purchase_types` | string[] | No | Filter results by purchase type (e.g., `["rights_license"]` to see all rights activity). When present, only entries and summaries matching these purchase types are returned. | +| `include_entries` | boolean | No | Include the full audit trail. Default: `false`. | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `plans` | array | Audit data for each requested plan. | +| `plans[].plan_id` | string | Plan identifier. | +| `plans[].plan_version` | number | Current plan version. | +| `plans[].status` | enum | `active`, `suspended`, or `completed`. | +| `plans[].budget` | object | Budget state. | +| `plans[].budget.authorized` | number | Total authorized budget from the plan. | +| `plans[].budget.accounting_mode` | enum | `gross_commitment` or `verified_net_cost`; controls which verified records restore headroom. | +| `plans[].budget.gross_committed` | number | Authoritative commitment from completed outcomes before adjustments. | +| `plans[].budget.adjustments_reported` | number | Sum of all seller-reported adjustment amounts, regardless of review state. | +| `plans[].budget.adjustments_verified` | number | Sum of buyer-accepted economic reductions in plan currency; accepted makegoods contribute zero. | +| `plans[].budget.net_cost` | number | Gross commitment minus verified economic reductions. | +| `plans[].budget.headroom_restored` | number | Verified reductions eligible to restore headroom under the accounting mode. | +| `plans[].budget.ledger_committed` | number | Amount currently charged against plan headroom. | +| `plans[].budget.net_committed` | number | Legacy alias for `ledger_committed`. | +| `plans[].budget.committed` | number | Legacy 3.x alias for `net_committed`. | +| `plans[].budget.remaining` | number | Authorized minus committed. | +| `plans[].budget.utilization_pct` | number | Committed as a percentage of authorized. | +| `plans[].channel_allocation` | object | Current channel mix. Keyed by channel ID. | +| `plans[].channel_allocation[channel].committed` | number | Budget committed to this channel. | +| `plans[].channel_allocation[channel].pct` | number | Channel's share of the authorized total budget. | +| `plans[].governed_actions` | array | Per-action breakdown joined by the stable opaque action binding. | +| `plans[].governed_actions[].governance_context` | string | Original intent context exposed for correlation. | +| `plans[].governed_actions[].purchase_type` | enum | `media_buy`, `rights_license`, `signal_activation`, or `creative_services`. | +| `plans[].governed_actions[].status` | enum | `active`, `suspended`, or `completed`. | +| `plans[].governed_actions[].committed` | number | Gross authoritative commitment for this governed action. | +| `plans[].governed_actions[].adjustments_reported` | number | Sum of all adjustment amounts for this action. | +| `plans[].governed_actions[].adjustments_verified` | number | Buyer-accepted economic reductions for this action. | +| `plans[].governed_actions[].net_cost` | number | Gross commitment minus verified economic reductions. | +| `plans[].governed_actions[].headroom_restored` | number | Verified amount eligible under the plan accounting mode. | +| `plans[].governed_actions[].net_committed` | number | Current ledger obligation after restored headroom. | +| `plans[].governed_actions[].seller_reported_spend` | number | Latest canonical seller cumulative spend. | +| `plans[].governed_actions[].buyer_observed_spend` | number | Latest buyer-attributed cumulative spend. | +| `plans[].governed_actions[].delivery_reporting_period` | object | Current seller reporting period summarized for this action. | +| `plans[].governed_actions[].conservative_exposure` | number | Greater of seller-reported and buyer-observed spend while evidence disagrees. | +| `plans[].governed_actions[].delivery_reconciliation_status` | enum | `consistent`, `measurement_variance`, `disputed`, `unmatched`, or `closed_unresolved`. | +| `plans[].governed_actions[].delivery_period_state` | enum | `open` or `closed`; closure is operational and does not settle billing. | +| `plans[].governed_actions[].check_count` | integer | Number of governance checks performed. | +| `plans[].summary` | object | Aggregate validation and outcome statistics. | +| `plans[].summary.checks_performed` | number | Total governance checks performed. | +| `plans[].summary.outcomes_reported` | number | Total outcomes reported. | +| `plans[].summary.adjustments_reported` | number | Total append-only adjustment records reported. | +| `plans[].summary.adjustments_verified` | number | Count of adjustment records accepted by the plan owner, including makegoods. | +| `plans[].summary.statuses` | object | Count of each governance check status (`approved`, `denied`, `conditions`). Also includes `human_reviewed` as a supplementary count — checks that required human review before resolving. Always a subset of `approved` + `denied`; `conditions` is an agent-issued flow-control state and is never counted here. | +| `plans[].summary.findings_count` | number | Total findings across all checks and outcomes. | +| `plans[].summary.escalations` | array | Checks that were escalated for human review and their resolutions. | +| `plans[].summary.escalations[].check_id` | string | The governance check that was escalated. | +| `plans[].summary.escalations[].reason` | string | Why the check was escalated. | +| `plans[].summary.escalations[].resolution` | string | How it was resolved (e.g., `approved_by_human`, `rejected_by_human`). | +| `plans[].summary.escalations[].resolved_at` | string | ISO 8601 resolution timestamp. | +| `plans[].summary.drift_metrics` | object | Aggregate governance metrics for detecting oversight drift. See [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#drift-detection). | +| `plans[].summary.drift_metrics.escalation_rate` | number | Fraction of checks that were escalated for human review (0-1). | +| `plans[].summary.drift_metrics.escalation_rate_trend` | enum | `increasing`, `stable`, or `declining`. | +| `plans[].summary.drift_metrics.auto_approval_rate` | number | Fraction of checks approved without human intervention (0-1). | +| `plans[].summary.drift_metrics.human_override_rate` | number | Fraction of escalations where the human overrode the governance agent's recommendation (0-1). | +| `plans[].summary.drift_metrics.mean_confidence` | number | Average confidence score across findings (0-1). Present when findings include confidence. | +| `plans[].summary.drift_metrics.thresholds` | object | Organization-defined thresholds for drift metrics. When a metric crosses its threshold, the governance agent includes a finding. | +| `plans[].summary.drift_metrics.thresholds.escalation_rate_max` | number | Maximum acceptable escalation rate. A rate above this may indicate policy miscalibration. | +| `plans[].summary.drift_metrics.thresholds.escalation_rate_min` | number | Minimum acceptable escalation rate. A rate below this may indicate eroding oversight. | +| `plans[].summary.drift_metrics.thresholds.auto_approval_rate_max` | number | Maximum acceptable auto-approval rate. | +| `plans[].summary.drift_metrics.thresholds.human_override_rate_max` | number | Maximum acceptable human override rate. | +| `plans[].entries` | array | Ordered audit trail (only when `include_entries` is `true`). | +| `plans[].entries[].id` | string | Entry identifier. | +| `plans[].entries[].type` | enum | `check`, `outcome`, or `adjustment`. | +| `plans[].entries[].timestamp` | string | ISO 8601 timestamp. | +| `plans[].entries[].plan_id` | string | Plan this entry belongs to. Present when querying multiple plans or a portfolio. | +| `plans[].entries[].caller` | string | URL of the agent that made the request. Resolved from the credentials used on the governance callback. | +| `plans[].entries[].tool` | string | The AdCP tool (present for `check` entries). | +| `plans[].entries[].status` | enum | Governance check status (present for `check` entries). | +| `plans[].entries[].check_type` | enum | `intent` or `execution` (present for `check` entries). Inferred from the fields present on the original check request. | +| `plans[].entries[].mode` | enum | `audit`, `advisory`, or `enforce` — governance mode active when this check was evaluated. Recorded by the governance agent from its runtime configuration at check time, not from a plan field. Present on check entries; absent on outcome entries and on governance agents that have not yet adopted this field. Lets auditors distinguish `approved` decisions made under `enforce` from those made under `audit` (where the agent could not have blocked anything). | +| `plans[].entries[].explanation` | string | Human-readable explanation of the governance decision (present for `check` entries). | +| `plans[].entries[].policies_evaluated` | array | Registry policy IDs evaluated during this check. | +| `plans[].entries[].categories_evaluated` | array | Governance categories evaluated (e.g., `budget_authority`, `regulatory_compliance`). **Agent-internal labels**, not a protocol-level enum — each string is defined by the governance agent's policy model. Since one governance agent per account composes all specialist review (legal, brand safety, category-specialist reviewers) behind its single endpoint, `categories_evaluated` and `findings[].details` are how internal decomposition surfaces for audit. Consumers MUST treat values as opaque labels: pattern-matching against a fixed list is not safe across agents. | +| `plans[].entries[].findings` | array | Findings from this check, mirroring the complete [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) finding shape so binding-digest inputs round-trip without loss, including `source_plan_id`, `details`, and `uncertainty_reason` when present. | +| `plans[].entries[].governance_context` | string | Opaque governance context identifying the governed action this entry belongs to. | +| `plans[].entries[].plan_hash` | string | Audit-layer binding to the plan revision this attestation was evaluated over — `base64url_no_pad(SHA-256(JCS(plan_payload)))` per [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit). Present on `check` entries. Auditors and buyer-side compliance tooling verify by recomputing over the retained plan revision and byte-comparing the decoded 32-byte digests. | +| `plans[].entries[].runtime_attestations` | array | Ordered `{ reference, evaluation }` pairs retained for a runtime-attestation check. Recompute each `evaluation.reference_digest` from RFC 8785 JCS of its paired `reference` before recomputing the binding digest. | +| `plans[].entries[].runtime_attestation_binding_digest` | string | Digest copied from the check response and signed governance context. Recompute it from ordered `runtime_attestations[].evaluation` values and findings carrying `attestation_reference_digest`. | +| `plans[].entries[].purchase_type` | enum | `media_buy`, `rights_license`, `signal_activation`, or `creative_services`. Present when the entry is associated with a specific governed action. | +| `plans[].entries[].outcome` | enum | Outcome type (present for `outcome` entries). | +| `plans[].entries[].committed_budget` | number | Governance-authorized budget reserved for the action (present for `completed` outcome entries). This is the ledger-authoritative amount, not a caller assertion. | +| `plans[].entries[].reported_committed_budget` | number | Caller-reported seller amount retained for reconciliation. Never ledger authority. | +| `plans[].entries[].seller_reference` | string | Seller resource identifier retained with the outcome, such as a media-buy ID. | +| `plans[].entries[].delivery_statement` | object | Canonical seller-attributed statement retained on a delivery check, including ID, digest, sequence, period, cumulative spend, currency, and the exact digest-verifiable payload. | +| `plans[].entries[].delivery` | object | Buyer-attributed observation retained on a `delivery` outcome. It never overwrites the seller statement. | +| `plans[].entries[].delivery_reconciliation_status` | enum | `consistent`, `measurement_variance`, `disputed`, `unmatched`, or `closed_unresolved`. Only an open dispute blocks adjustment verification; measurement variance is recorded and priced into conservative exposure. | +| `plans[].entries[].delivery_period_state` | enum | `open` or `closed`. Closed evidence is immutable but not a final billing record. | +| `plans[].entries[].outcome_status` | string | Outcome status (present for `outcome` entries). | +| `plans[].entries[].outcome_id` | string | Source completed outcome (present for `adjustment` entries). | +| `plans[].entries[].seller_adjustment_id` | string | Seller-issued source record (present for `adjustment` entries). | +| `plans[].entries[].adjustment_type` | enum | `decommitment`, `refund`, `credit`, or `makegood`. | +| `plans[].entries[].amount` | object | Positive adjustment amount and plan currency. | +| `plans[].entries[].adjustment_state` | enum | `reported`, `verified`, or `disputed`. | +| `plans[].entries[].verified_amount` | number | Buyer-accepted economic reduction; zero while reported, disputed, or for makegoods. | +| `plans[].entries[].evidence` | object | Seller evidence ID, type, digest, and issue time. | +| `plans[].entries[].headroom_restored` | number | Headroom restored by this record under the plan accounting mode. | +| `plans[].entries[].reviewed_by` | string | Authenticated plan owner that reviewed the record. | +| `plans[].entries[].reviewed_at` | string | Review timestamp. | +| `plans[].entries[].review_reason` | string | Optional acceptance reason or required dispute reason. | +| `plans[].entries[].reason` | string | Seller-supplied adjustment reason. | +| `plans[].entries[].effective_at` | string | When the seller adjustment became effective. | + +## Authorization + +The request schema does not carry an envelope `account` field — tenant identity is resolved from the submitted IDs. The governance agent MUST verify that the authenticated principal is authorized for every `plan_ids` member, every plan expanded from `portfolio_plan_ids`, and every governed action addressed by `governance_contexts`. When any element fails the authorization check the governance agent MUST fail closed with a generic [`PLAN_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-plan-not-found) response — the error body MUST NOT distinguish "unauthorized" from "not found" or name the offending ID. See [Agent and Account Isolation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#agent-and-account-isolation) for the pattern and existence-leak guardrails. + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| [`PLAN_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-plan-not-found) | correctable | No plan with this ID, or the authenticated principal is not authorized for it. The two cases MUST be indistinguishable in the response to prevent plan-ID enumeration. | + +## Related tasks + +- [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) -- Push or update plans +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) -- Validate actions against the plan +- [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) -- Report outcomes to update plan state +- [`report_plan_adjustment`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment) -- Append a seller-authenticated adjustment without rewriting the outcome diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/index.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/index.mdx new file mode 100644 index 0000000000..d65c56e996 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/index.mdx @@ -0,0 +1,23 @@ +--- +title: Task reference +description: "Task reference for AdCP campaign governance — plan synchronization, checks, outcomes, adjustments, and audit logs." +"og:title": "AdCP — Campaign governance task reference" +sidebarTitle: Overview +--- + + +# Campaign Governance tasks + +Campaign Governance has five tasks. + +| Task | Direction | Description | +|------|-----------|-------------| +| [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) | Orchestrator → Gov | Push campaign plans with budget, channels, flight dates, and authorized markets | +| [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) | Orchestrator or Seller → Gov | Universal governance check. Orchestrator sends `tool` + `payload` (intent check). Seller sends `governance_context` + `planned_delivery` (execution check). | +| [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) | Orchestrator → Gov | Post-action report: "here's what happened." Gov updates state and returns any findings | +| [`report_plan_adjustment`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment) | Seller or Orchestrator → Gov | Seller reports an evidence-bound adjustment; the plan owner accepts or disputes it | +| [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) | Orchestrator → Gov | Read governance state, budget burn, and audit trail | + +`sync_plans` configures the rules. `check_governance` is the universal governance gate and records seller delivery statements. `report_plan_outcome` closes execution and records buyer delivery observations. `report_plan_adjustment` uses a seller-report/plan-owner-review lifecycle without rewriting the outcome. `get_plan_audit_logs` exposes every attributed record and the derived accounting state. + +**Setup prerequisite:** [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) syncs governance agent endpoints to accounts. This must be done before sellers can call `check_governance`. diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment.mdx new file mode 100644 index 0000000000..708d5f3eee --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment.mdx @@ -0,0 +1,144 @@ +--- +title: report_plan_adjustment +description: "report_plan_adjustment records a seller adjustment and the plan owner's independent acceptance or dispute." +"og:title": "AdCP — report_plan_adjustment" +--- + +# report_plan_adjustment + + +**Experimental in AdCP 3.2.** This task uses the campaign-governance experimental contract. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status). + + +Record a commercial adjustment without rewriting the completed outcome or trusting either party unilaterally. The task has two authenticated actions: + +1. The seller uses `action: "report"` and supplies an integrity-bound source record. Governance stores it as `reported`; net cost and plan headroom do not change. +2. The plan owner uses `action: "review"` to `accept` or `dispute` that exact `adjustment_id`. Only an accepted record becomes `verified` and may affect accounting. + +This is the same authority rule used for delivery evidence: governance preserves attributed claims, compares them, and derives ledger state. It does not turn the seller, buyer, or governance agent into the universal source of truth. See [Evidence authority and reconciliation](/dist/docs/3.2.0-beta.4/governance/campaign/specification#evidence-authority-and-reconciliation). + +## Seller report + +```json +{ + "tool": "report_plan_adjustment", + "arguments": { + "action": "report", + "plan_id": "plan_q3_launch", + "outcome_id": "out_7f23ac91", + "seller_reference": "buy_4821", + "seller_adjustment_id": "cancel_4821_01", + "adjustment_type": "decommitment", + "amount": { "amount": 40000, "currency": "USD" }, + "reason": "Remaining inventory obligation cancelled by mutual agreement.", + "effective_at": "2026-08-09T09:30:00Z", + "evidence": { + "evidence_id": "agreement_4821_01", + "evidence_type": "decommitment_agreement", + "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "issued_at": "2026-08-09T09:25:00Z" + }, + "idempotency_key": "adjustment-cancel-4821-01" + } +} +``` + +The authenticated caller must be the seller audience on the original intent. `seller_reference` must equal the resource retained on the completed outcome. Governance returns the same not-found shape for an absent record and a record belonging to another seller. + +`evidence_type` must match the commercial claim: + +| `adjustment_type` | Required `evidence_type` | +|---|---| +| `decommitment` | `decommitment_agreement` | +| `refund` | `refund_settlement` | +| `credit` | `credit_note` | +| `makegood` | `makegood_agreement` | + +The report response has `adjustment_state: "reported"` and `headroom_restored: 0`. + +## Plan-owner review + +```json +{ + "tool": "report_plan_adjustment", + "arguments": { + "action": "review", + "plan_id": "plan_q3_launch", + "adjustment_id": "adj_5d92a018", + "decision": "accept", + "idempotency_key": "adjustment-review-4821-01" + } +} +``` + +Only the authenticated principal that owns the plan may review. A dispute requires `reason` and produces `adjustment_state: "disputed"` without accounting mutation. An acceptance is rejected while buyer and seller delivery evidence for the governed action is disputed in an open governance period; recorded `measurement_variance` never blocks acceptance — its difference is priced into the conservative decommitment ceiling instead. A historical `closed_unresolved` period does not block a later buyer-reviewed adjustment and does not become a billing determination. A dispute is terminal: it cannot be re-reviewed and never contributes to net cost, headroom, or the cumulative-adjustment cap; the seller corrects it only by submitting a new report with a new `seller_adjustment_id`. + +A decommitment also requires a canonical seller delivery statement. Its cumulative amount cannot exceed `authoritative commitment - max(latest seller-stated cumulative spend, latest buyer-observed cumulative spend)`. Using the conservative delivered figure prevents a nominal cancellation from releasing budget already reported as delivered by either side: a seller that understates its statement gains no extra decommitment room, and a buyer that inflates an observation only shrinks its own restorable headroom. + +For actions cancelled before any delivery occurs, the seller first submits a [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) delivery phase with `cumulative_spend: 0` and the applicable `reporting_period`. This attests zero delivery and satisfies the statement prerequisite before a decommitment can be reviewed. + +## Verified accounting + +```json +{ + "adjustment_id": "adj_5d92a018", + "adjustment_state": "verified", + "adjustment_type": "decommitment", + "amount": { "amount": 40000, "currency": "USD" }, + "headroom_restored": 40000, + "plan_summary": { + "accounting_mode": "gross_commitment", + "gross_committed": 150000, + "adjustments_reported": 40000, + "adjustments_verified": 40000, + "net_cost": 110000, + "headroom_restored": 40000, + "ledger_committed": 110000, + "net_committed": 110000, + "budget_remaining": 90000 + } +} +``` + +| Verified type | Economic `net_cost` | Headroom in `gross_commitment` | Headroom in `verified_net_cost` | +|---|---:|---:|---:| +| `decommitment` | Reduced | Restored | Restored | +| `refund` | Reduced | Unchanged | Restored | +| `credit` | Reduced | Unchanged | Restored | +| `makegood` | Unchanged | Unchanged | Unchanged | + +The original gross commitment remains in trailing anti-fragmentation history even when current headroom is restored. Splitting spend into commit-adjust-commit cycles therefore cannot evade cumulative governance thresholds. + +## Fields + +| Field | Report | Review | Description | +|---|---:|---:|---| +| `action` | Yes | Yes | `report` or `review`. | +| `plan_id` | Yes | Yes | Plan containing the source outcome or adjustment. | +| `outcome_id` | Yes | — | Positive completed governance outcome being adjusted. | +| `adjustment_id` | — | Yes | Exact seller report being reviewed. | +| `decision` | — | Yes | `accept` or `dispute`. | +| `seller_reference` | Yes | — | Exact seller resource retained on the outcome. | +| `seller_adjustment_id` | Yes | — | Stable seller-side source identifier. | +| `adjustment_type` | Yes | — | `decommitment`, `refund`, `credit`, or `makegood`. | +| `amount` | Yes | — | Finite positive amount in plan currency. Cumulative reports cannot exceed the source commitment. | +| `evidence` | Yes | — | Immutable seller source ID, type, SHA-256 digest, and issue time. Rebinding an ID to different content is a conflict. | +| `reason` | Yes | On dispute | Seller report reason or buyer dispute reason. | +| `effective_at` | Yes | — | When the seller says the adjustment became effective. | +| `idempotency_key` | Yes | Yes | Exact replay returns the immutable prior response with `replayed: true`. | + +## Errors + +| Code | Meaning | +|---|---| +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | The source is absent or not attributable to the authenticated seller or plan owner. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | A required field, evidence type, amount, currency, cap, or decommitment bound is invalid. | +| [`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict) | A caller reused a retry key with another payload. | +| [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) | A source ID was reused, the record was already reviewed, or delivery evidence is disputed. | +| [`PERMISSION_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-permission-denied) | The caller has no authenticated agent identity. | + +## Related tasks + +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) — Records canonical seller delivery statements +- [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) — Records completed outcomes and buyer delivery observations +- [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) — Returns attributed evidence, reconciliation, and accounting state diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome.mdx new file mode 100644 index 0000000000..595bf1626c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome.mdx @@ -0,0 +1,322 @@ +--- +title: report_plan_outcome +description: "report_plan_outcome sends action results to the AdCP governance agent so it can update budget tracking, state, and compliance records." +"og:title": "AdCP — report_plan_outcome" +--- + + +# report_plan_outcome + + +**Experimental.** Campaign governance ([`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance), `report_plan_outcome`, [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Report the outcome of an action to the governance agent. Called by the orchestrator after a seller responds. The report closes the authorization record, but it does not let the caller choose the ledger amount: the governance agent reserves the amount from its own approved check state and retains the seller response for reconciliation and audit. + +Sellers do not call this task. They report delivery data via [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) with `phase: "delivery"`. + +## Seller response (after `create_media_buy`) + +```json +{ + "tool": "report_plan_outcome", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "check_id": "chk_xyz789", + "idempotency_key": "outcome-create-2026-001", + "governance_context": "gc_mb_seller_456", + "outcome": "completed", + "seller_response": { + "seller_reference": "mb_seller_456", + "packages": [ + { + "package_id": "pkg_001", + "product_id": "premium_video_300k", + "budget": 150000, + "targeting_overlay": { + "geo": { "include": [{ "type": "country", "code": "US" }] }, + "viewability": { "standard": "mrc", "threshold": 50 } + } + } + ], + "planned_delivery": { + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "start_time": "2026-03-15T00:00:00Z", + "end_time": "2026-06-15T00:00:00Z", + "total_budget": 150000, + "currency": "USD" + }, + "creative_deadline": "2026-03-20T00:00:00Z" + } + } +} +``` + +### Response (no issues) + +```json +{ + "outcome_id": "out_001", + "outcome_state": "accepted", + "committed_budget": 150000, + "plan_summary": { + "total_committed": 425000, + "budget_remaining": 75000 + } +} +``` + +The governance agent updates its state from the amount it authorized. For a create, when an online purchase execution check approved a narrower `planned_delivery.total_budget`, that seller-side checked amount is authoritative; otherwise the approved intent amount remains reserved. For [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy), the intent reserves the buyer-proposed positive-delta ceiling and a successful online execution check may narrow it to the seller-computed `execution_commitment`; the post-update total is never added again as a fresh commitment. + +The transport credential must resolve to the same buyer-side agent URL that made the original approved intent check. The governance agent also requires `purchase_type` to match that intent and allows only one terminal `completed` or `failed` settlement across the intent and execution checks sharing the same opaque action binding. Retrying the identical request with the same `idempotency_key` returns the cached response with `replayed: true`; reusing the key for a different payload is an idempotency conflict. + +### Response (discrepancy found) + +In this alternative scenario for the same action, the seller modified the request: + +```json +{ + "outcome_id": "out_002", + "outcome_state": "findings", + "committed_budget": 150000, + "findings": [ + { + "category_id": "outcome_budget_reconciliation", + "severity": "warning", + "explanation": "Caller reported $120,000; ledger reserved the governance-authorized $150,000. A seller-side purchase execution check is required to narrow the authoritative amount.", + "details": { + "discrepancies": [ + { "field": "packages[0].budget", "requested": 150000, "received": 120000 }, + { "field": "packages[0].targeting_overlay.geo.include", "requested": ["US"], "received": ["US", "CA"] } + ] + } + } + ], + "plan_summary": { + "total_committed": 425000, + "budget_remaining": 75000 + } +} +``` + +The caller's lower report is preserved in the audit trail but cannot manufacture plan headroom. If the seller prepared a \$120K delivery and obtained a purchase execution approval for it before commit, that governance-owned execution record becomes authoritative and the ledger reserves \$120K. + +All monetary inputs MUST be finite and non-negative. Invalid or overflowing values are rejected before ledger or audit mutation. Each approved check may be settled by only one completed or failed outcome; idempotent replay returns the cached result, while a second distinct settlement is a conflict. + +## Buyer delivery observation + +The seller first submits a canonical delivery statement through [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) with `phase: "delivery"`. The buyer then binds its observation to that exact approved seller check. This preserves two attributed records instead of treating either party as the universal source of truth. + +```json +{ + "tool": "report_plan_outcome", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "check_id": "chk_seller_delivery_001", + "idempotency_key": "outcome-delivery-2026-001", + "governance_context": "gc_mb_seller_456", + "outcome": "delivery", + "delivery": { + "observation_id": "obs_q1_launch_001", + "source": "seller_statement_copy", + "observed_at": "2026-03-22T01:05:00Z", + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "cumulative_spend": 12500, + "currency": "USD", + "seller_statement_id": "stmt_q1_launch_001", + "seller_statement_digest": "sha256:4b55f1157094ed8df2635250f71568701d294cb0da57845eba886a62e5434633", + "impressions": 850000 + } + } +} +``` + +Use `source: "seller_statement_copy"` when the buyer is forwarding the statement it received from the seller. That proves consistent transmission, not independent measurement. Use `source: "buyer_measurement"` for separately measured buyer evidence; seller statement ID and digest are then optional. Delivery observations never add spend to the already-recorded commitment. + +Authoritative seller monitoring uses [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) with `phase: "delivery"`; the buyer observation remains separately attributed audit evidence. + +### Response (on track) + +```json +{ + "outcome_id": "out_del_001", + "outcome_state": "accepted", + "delivery_reconciliation_status": "consistent", + "delivery_period_state": "open" +} +``` + +### Response (forwarded seller copy does not match the canonical statement) + +A `seller_statement_copy` whose statement ID or digest differs from what the seller filed with governance means the seller told two different stories. This is a dispute, and it blocks adjustment acceptance while the period is open: + +```json +{ + "outcome_id": "out_del_002", + "outcome_state": "findings", + "delivery_reconciliation_status": "disputed", + "delivery_period_state": "open", + "findings": [ + { + "category_id": "delivery_evidence_conflict", + "severity": "critical", + "explanation": "The forwarded seller statement does not match the canonical statement retained by governance.", + "details": { + "field": "delivery.seller_statement_digest", + "expected": "sha256:4b55f1157094ed8df2635250f71568701d294cb0da57845eba886a62e5434633", + "actual": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + } + } + ] +} +``` + +A forwarded copy whose digest matches the canonical statement but whose values differ is internally inconsistent — the digest covers the period, spend, and currency — and is rejected as a [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) rather than recorded as a dispute. + +### Response (buyer measurement differs from the seller statement) + +A `buyer_measurement` with a matching period and currency but a different `cumulative_spend` is expected measurement noise, not equivocation. It is recorded, attributed, and non-blocking: + +```json +{ + "outcome_id": "out_del_004", + "outcome_state": "findings", + "delivery_reconciliation_status": "measurement_variance", + "delivery_period_state": "open", + "findings": [ + { + "category_id": "delivery_measurement_variance", + "severity": "warning", + "explanation": "Buyer-measured delivery differs from the seller statement; the higher amount is used as conservative exposure and as the delivered figure for decommitment bounds.", + "details": { + "field": "delivery.cumulative_spend", + "seller_stated": 12500, + "buyer_observed": 12384 + } + } + ] +} +``` + +A `buyer_measurement` whose reporting period or currency differs from the canonical statement is not comparable and produces `disputed`, as for a mismatched forwarded copy. + +In every disagreement, governance retains both attributed amounts and reports `max(seller_reported_spend, buyer_observed_spend)` as conservative exposure in [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs). The same conservative figure bounds verified decommitments, so neither side gains anything from manufacturing a disagreement. Only a `disputed` state blocks adjustment acceptance; `measurement_variance` never does. Governance never averages the claims or applies a last-writer-wins rule. + +### Closing an unresolved governance period + +The plan owner may submit a new observation for the same seller statement and `reporting_period` with `period_closed: true`. Only the authenticated plan owner can close a period; the governance agent rejects `period_closed: true` from any other authenticated reporter. If the values still disagree, the response makes the limited operational meaning explicit: + +```json +{ + "outcome_id": "out_del_003", + "outcome_state": "findings", + "delivery_reconciliation_status": "closed_unresolved", + "delivery_period_state": "closed" +} +``` + +Closure freezes that period's governance evidence and prevents the old discrepancy from blocking later governance or a buyer-reviewed adjustment. It does not determine the final invoice, payable amount, credit balance, or commercial winner. A different subsequent seller reporting period starts `open` and `unmatched`; neither party may rewrite the closed period. + +## Failed actions + +If the seller rejected the request, report it so the governance agent can update plan state: + +```json +{ + "tool": "report_plan_outcome", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "check_id": "chk_xyz789", + "idempotency_key": "outcome-failed-2026-001", + "governance_context": "gc_mb_seller_456", + "outcome": "failed", + "error": { + "code": "PRODUCT_UNAVAILABLE", + "message": "Product premium_video_300k is no longer available." + } + } +} +``` + +```json +{ + "outcome_id": "out_003", + "outcome_state": "accepted", + "committed_budget": 0, + "plan_summary": { + "total_committed": 275000, + "budget_remaining": 225000 + } +} +``` + +## Fields + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plan_id` | string | Yes | The plan this outcome is for. | +| `check_id` | string | Conditional | Exact approved check. Required for every outcome; a delivery observation names the seller delivery statement check. | +| `idempotency_key` | string | Yes | Stable retry key. An identical replay returns the cached outcome without another ledger mutation; reuse with a different payload is rejected. | +| `purchase_type` | enum | No | The kind of financial commitment: `media_buy` (default), `rights_license`, `signal_activation`, or `creative_services`. When omitted, the governance agent assumes `media_buy`. | +| `outcome` | enum | Yes | `completed`, `failed`, or `delivery`. | +| `seller_response` | object | No | The seller's full response. Required when outcome is `completed`. | +| `seller_response.seller_reference` | string | No | The seller's identifier for the created resource (e.g., `media_buy_id`, `rights_grant_id`, `deployment_id`). Not interpreted by the governance agent — included in audit logs for human-readable traceability alongside the opaque `governance_context`. | +| `seller_response.committed_budget` | number | No | Buyer-reported seller amount retained for reconciliation. Never ledger authority. A value above the approved amount is rejected; a lower value does not restore headroom. | +| `seller_response.packages` | array | No | Confirmed packages with actual budget and targeting. | +| `seller_response.planned_delivery` | object | No | What the seller said it will deliver. When seller-side governance is not configured, this is the governance agent's only view of the seller's delivery parameters. | +| `seller_response.creative_deadline` | string | No | ISO 8601 deadline for creative submission. | +| `delivery` | object | No | Buyer-attributed observation. Required for `delivery`; retained separately from the seller statement and never added as a second commitment. | +| `delivery.observation_id` | string | For delivery | Stable buyer-issued record ID. | +| `delivery.source` | enum | For delivery | `seller_statement_copy` or `buyer_measurement`. | +| `delivery.observed_at` | date-time | For delivery | When the buyer recorded the observation. | +| `delivery.reporting_period` | object | For delivery | Exact period compared with the seller statement. | +| `delivery.cumulative_spend` | number | For delivery | Finite, non-negative buyer-attributed cumulative spend. | +| `delivery.currency` | string | For delivery | Three-letter currency matching the compared evidence. | +| `delivery.period_closed` | boolean | No | Defaults to `false`. Only the authenticated plan owner may close this operational governance period; the governance agent rejects the value from any other authenticated reporter. An unresolved close is retained as `closed_unresolved`; closure is not billing settlement. | +| `delivery.seller_statement_id` | string | For seller copy | ID received with the seller statement. | +| `delivery.seller_statement_digest` | string | For seller copy | Digest received with the seller statement. | +| `delivery.impressions` | integer | No | Optional buyer-attributed impressions. | +| `error` | object | No | Error details. Required when outcome is `failed`. | +| `error.code` | string | No | Error code from the seller. | +| `error.message` | string | No | Human-readable error description. | +| `governance_context` | string | Conditional | Exact approved context paired with `check_id` and `plan_id`. Required for every outcome. | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `outcome_id` | string | Unique identifier for this outcome record. | +| `outcome_state` | enum | `accepted` (state updated, no issues) or `findings` (issues detected). | +| `committed_budget` | number | Governance-authorized budget reserved by this completed outcome. | +| `delivery_reconciliation_status` | enum | `consistent`, `measurement_variance`, `disputed`, `unmatched`, or `closed_unresolved`; present for delivery observations. Only `disputed` blocks adjustment acceptance. | +| `delivery_period_state` | enum | `open` or `closed`. Closure freezes governance evidence but does not settle billing. | +| `findings` | array | Present only when `outcome_state` is `findings`. | +| `findings[].category_id` | string | Which validation category flagged the issue. | +| `findings[].severity` | enum | `info`, `warning`, or `critical`. | +| `findings[].explanation` | string | Human-readable description of the issue. | +| `findings[].details` | object | Structured details for programmatic consumption. | +| `plan_summary` | object | Updated plan budget state (present for `completed`/`failed` outcomes). | + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | correctable | `plan_id` or `check_id` does not resolve within the authenticated reporter's scope. Verify the identifiers and authenticated buyer; do not probe another buyer's plan. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | correctable | The exact tuple, purchase type, outcome-dependent fields, idempotency-key format, or monetary evidence is invalid. Correct the named value; delivery observations must bind both `check_id` and `governance_context` to a seller statement. | +| [`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict) | correctable | This reporter already used the key with another canonical payload. Resend the exact original request for replay, or use a fresh key for a genuinely distinct report. | +| [`PERMISSION_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-permission-denied) | correctable | The authenticated reporter is not the buyer that owns the plan or made the original approved intent. Retry only with that buyer identity. | +| [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) | transient | The opaque governed action already has a different terminal settlement. Read the audit trail and accept the existing settlement; do not retry as a second terminal outcome. | +| [`CAMPAIGN_SUSPENDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-campaign-suspended) | transient | Plan outcome reporting is paused pending human review. Wait for resolution and contact the plan operator if the suspension persists. | + +## Related tasks + +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) -- The governance check that authorized the action +- [`report_plan_adjustment`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment) -- Append a later seller-authenticated adjustment to a completed outcome +- [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) -- Push or update the plan +- [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans.mdx b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans.mdx new file mode 100644 index 0000000000..bc871f72a0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans.mdx @@ -0,0 +1,243 @@ +--- +title: sync_plans +description: "sync_plans pushes campaign plans with budget limits, channels, flight dates, and compliance policies to an AdCP governance agent." +"og:title": "AdCP — sync_plans" +--- + + +# sync_plans + + +**Experimental.** Campaign governance (`sync_plans`, [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance), [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome), [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing it MUST declare `governance.campaign` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. + + +Push campaign plans to the governance agent. A plan defines the authorized parameters for a campaign -- budget limits, channels, flight dates, authorized markets, and compliance policies -- and serves as the source of truth for all validation. + +## Request + +```json +{ + "tool": "sync_plans", + "arguments": { + "plans": [ + { + "plan_id": "plan_q1_2026_launch", + "brand": { + "domain": "acmecorp.com" + }, + "objectives": "Drive awareness for spring product launch among 25-54 adults in the US, focusing on premium video and high-impact display.", + "budget": { + "total": 500000, + "currency": "USD", + "reallocation_threshold": 25000, + "per_seller_max_pct": 40, + "allocations": { + "media_buy": { "amount": 400000 }, + "rights_license": { "amount": 75000 }, + "signal_activation": { "amount": 25000 } + } + }, + "channels": { + "required": ["olv"], + "allowed": ["olv", "display", "ctv", "audio"], + "mix_targets": { + "olv": { "min_pct": 40, "max_pct": 70 }, + "display": { "min_pct": 10, "max_pct": 30 }, + "ctv": { "min_pct": 0, "max_pct": 20 }, + "audio": { "min_pct": 0, "max_pct": 10 } + } + }, + "flight": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-06-15T00:00:00Z" + }, + "countries": ["US"], + "policy_categories": ["age_restricted"], + "audience": { + "include": [ + { "type": "description", "description": "Adults 25-54 interested in home improvement" } + ], + "exclude": [ + { "type": "description", "description": "Children under 13" } + ] + }, + "restricted_attributes": ["health_data"], + "min_audience_size": 1000, + "policy_ids": ["us_coppa", "alcohol_advertising"], + "custom_policies": [ + { + "policy_id": "no_competitor_adjacency", + "enforcement": "must", + "policy": "No advertising adjacent to competitor content." + } + ], + "approved_sellers": null, + "ext": {} + } + ] + } +} +``` + +## Response + +```json +{ + "plans": [ + { + "plan_id": "plan_q1_2026_launch", + "status": "active", + "version": 1, + "categories": [ + { "category_id": "budget_authority", "status": "active" }, + { "category_id": "strategic_alignment", "status": "active" }, + { "category_id": "bias_fairness", "status": "active" }, + { "category_id": "regulatory_compliance", "status": "active" }, + { "category_id": "seller_verification", "status": "active" }, + { "category_id": "brand_policy", "status": "active" } + ], + "resolved_policies": [ + { "policy_id": "us_coppa", "source": "explicit", "enforcement": "must", "reason": "Referenced in plan policy_ids" }, + { "policy_id": "alcohol_advertising", "source": "explicit", "enforcement": "should", "reason": "Referenced in plan policy_ids" } + ] + } + ] +} +``` + +## How it works + +Plans originate in external systems -- an agency's planning tool, a brand's budget system, an insertion order. `sync_plans` pushes them to the governance agent so it knows what to validate against. + +Syncing a plan that already exists (same `plan_id`) updates it. The governance agent increments the version and re-evaluates any active campaigns against the updated rules. This handles mid-flight amendments like budget increases or channel additions. Content-standards configurations are separate resources, and their wire contract does not define how running media buys adopt later updates; see [updating content-standards policies](/dist/docs/3.2.0-beta.4/governance/content-standards/index#updating-policies). + +Multiple campaigns (identified by `governance_context` in [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) and [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome)) can reference the same plan. The governance agent tracks budget across all campaigns tied to a plan. + +The plan specifies campaign context -- budget, channels, flight dates, and authorized markets. The governance agent resolves applicable policies from the brand's compliance configuration, but plans can also reference registry policies directly via `policy_ids` and include campaign-specific rules via `custom_policies`. This supports both centralized policy management (brand-level) and campaign-specific overrides when the buying team needs additional requirements for a particular campaign. + +`countries` and `regions` serve two purposes: + +1. **Geo enforcement** -- The governance agent rejects governed actions targeting outside the plan's markets. A plan with `regions: ["US-MA"]` blocks actions that don't explicitly target Massachusetts. +2. **Policy resolution** -- The agent finds all policies whose jurisdictions overlap with the plan's markets. A plan with `countries: ["US"]` is subject to all US federal and state-level policies. A plan with only `regions: ["US-MA"]` is subject to Massachusetts-specific and federal policies. + +These fields use the same ISO codes and semantics as `product-filters`, `offerings`, and [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) -- ensuring consistent geo vocabulary across the protocol. A pharma campaign running nationally uses `countries: ["US"]`; a cannabis campaign limited to legal states uses `regions: ["US-CO", "US-CA", "US-MA"]`. + +## Plan-hash preimage + +Each plan item a buyer supplies here is the preimage the governance agent hashes to produce the `plan_hash` audit-layer claim carried in every [signed `governance_context`](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context). Canonicalization rules, the closed bookkeeping exclusion list, retention obligations, and the full set of reference test vectors are specified in [Plan binding and audit](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit). Governance-agent implementers SHOULD run their hashing code against the eleven vectors under [`static/compliance/source/test-vectors/plan-hash/`](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/test-vectors/plan-hash) before shipping. + +## Fields + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plans` | array | Yes | One or more campaign plans to sync. | +| `plans[].plan_id` | string | Yes | Unique identifier for this plan. | +| `plans[].brand` | BrandRef | Yes | Brand being governed. The governance agent resolves the brand's compliance configuration to determine applicable policies. | +| `plans[].objectives` | string | Yes | Natural language campaign objectives. Used for strategic alignment validation. | +| `plans[].budget` | object | Yes | Budget parameters. | +| `plans[].budget.total` | number | Yes | Total authorized budget. | +| `plans[].budget.currency` | string | Yes | ISO 4217 currency code. | +| `plans[].budget.accounting_mode` | enum | No | `gross_commitment` (default) restores reusable headroom only for verified decommitments. `verified_net_cost` also restores it for verified refunds and credits. Both preserve original gross commitments for anti-fragmentation history. | +| `plans[].budget.reallocation_threshold` | number | Yes | Amount the agent may reallocate without escalation. `0` requires human approval for every reallocation; a value at or above `budget.total` is effectively unlimited. See [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#budget-reallocation). | +| `plans[].budget.per_seller_max_pct` | number | No | Maximum percentage of budget that can go to a single seller. | +| `plans[].budget.allocations` | object | No | Optional per-purchase-type budget partitions. Keys are purchase types (`media_buy`, `rights_license`, `signal_activation`, `creative_services`), values are objects with `amount`. When present, the governance agent validates spend against both the per-type allocation and the overall total. When absent, all spend counts against the single total regardless of purchase type. Allocations are guardrails, not hard partitions -- the sum of allocations MAY differ from the total. | +| `plans[].channels` | object | No | Channel constraints. If omitted, all channels are allowed. | +| `plans[].flight` | object | Yes | Authorized flight dates. Governed actions with dates outside this window are rejected. | +| `plans[].countries` | array | No | ISO 3166-1 alpha-2 country codes for authorized markets. The governance agent rejects governed actions targeting outside these countries and resolves applicable policies by matching against policy jurisdictions. | +| `plans[].regions` | array | No | ISO 3166-2 subdivision codes for authorized sub-national markets (e.g., `US-MA`). When present, restricts buys to these regions rather than the full country. | +| `plans[].policy_categories` | array | No | Regulatory categories that apply to this campaign (e.g., `children_directed`, `fair_housing`). Determines which policy regimes the governance agent enforces. When omitted, governance agents MAY infer from the brand's industries and campaign objectives. | +| `plans[].audience` | object | No | Audience targeting constraints. Defines who the campaign should reach (include) and must not reach (exclude). See [audience constraints](#audience-constraints). | +| `plans[].restricted_attributes` | array | No | Personal data categories that must not be used for targeting (e.g., `health_data`, `racial_ethnic_origin`). GDPR Article 9 special categories. The governance agent flags any audience targeting referencing these attributes. | +| `plans[].restricted_attributes_custom` | array | No | Additional restricted attributes not covered by the enum. Freeform strings for jurisdiction-specific restrictions (e.g., `financial_status`). | +| `plans[].min_audience_size` | integer | No | Minimum audience segment size for k-anonymity. Applies to the estimated intersection audience when multiple criteria are used. | +| `plans[].policy_ids` | array | No | Registry policy IDs to enforce for this plan. Intersected with the plan's countries/regions to activate only geographically relevant policies. | +| `plans[].custom_policies` | array | No | Campaign-specific policies using the `PolicyEntry` shape (`policy_id`, `enforcement`, `policy` text required). Additive only — cannot relax or override registry-sourced policies. See [policy resolution](/dist/docs/3.2.0-beta.4/governance/campaign/specification#policy-resolution). | +| `plans[].approved_sellers` | array/null | No | List of approved seller agent URLs. `null` means any seller. | +| `plans[].delegations` | array | No | Agents authorized to execute against this plan. See [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#delegations). | +| `plans[].delegations[].agent_url` | string | Yes | URL of the delegated agent. | +| `plans[].delegations[].authority` | enum | Yes | `full`, `execute_only`, or `propose_only`. | +| `plans[].delegations[].budget_limit` | object | No | Maximum budget this agent can commit. | +| `plans[].delegations[].markets` | array | No | ISO country/region codes this agent is authorized for. | +| `plans[].delegations[].expires_at` | string | No | ISO 8601 delegation expiration. | +| `plans[].portfolio` | object | No | Portfolio-level governance constraints. See [specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#portfolio-governance). | +| `plans[].portfolio.member_plan_ids` | array | Yes | Plan IDs governed by this portfolio plan. | +| `plans[].portfolio.total_budget_cap` | object | No | Maximum aggregate budget across member plans. | +| `plans[].portfolio.shared_policy_ids` | array | No | Registry policy IDs enforced across all member plans. | +| `plans[].portfolio.shared_exclusions` | array | No | Bespoke exclusion policies applied to all member plans, using the `PolicyEntry` shape (`policy_id`, `enforcement`, `policy` text required). | +| `plans[].ext` | object | No | Extension data. | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `plans` | array | Status for each synced plan. | +| `plans[].plan_id` | string | Plan identifier. | +| `plans[].status` | enum | `active` (sync succeeded) or `error` (sync failed). This is the sync result status, not the plan lifecycle status. | +| `plans[].version` | number | Plan version (increments on each sync). | +| `plans[].categories` | array | Validation categories the governance agent reports as active for this plan. Category labels come from the agent's internal policy model, not [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). | +| `plans[].categories[].category_id` | string | Opaque agent-internal validation label for display and audit. Common vocabulary includes `budget_authority`, `strategic_alignment`, `bias_fairness`, `regulatory_compliance`, `seller_verification`, and `brand_policy`. An agent that actually evaluated accessibility may use the documented label `accessibility_compliance`, but clients MUST NOT treat it as a protocol enum, policy activation, or typed format guarantee. | +| `plans[].categories[].status` | enum | `active` or `inactive`. | +| `plans[].resolved_policies` | array | Policies the governance agent will enforce for this plan. Includes explicitly referenced and auto-applied policies. | +| `plans[].resolved_policies[].policy_id` | string | Registry policy ID. | +| `plans[].resolved_policies[].source` | enum | `explicit` (referenced in config or plan) or `auto_applied` (matched by jurisdiction/policy category). | +| `plans[].resolved_policies[].enforcement` | enum | `must`, `should`, or `may`. | +| `plans[].resolved_policies[].reason` | string | Why this policy was included. | + +## Audience constraints + +Plans can declare audience targeting constraints using the `audience` field. Each constraint is an **audience selector** — either a reference to a specific signal or a natural language description. + +**Signal reference** — points to a specific signal in a data provider's published signal definitions: + +```json +{ + "type": "signal", + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "signals.dataprovider.com", + "signal_id": "likely_ev_buyers" + }, + "value_type": "binary", + "value": true +} +``` + +**Description** — natural language for constraints that don't map to a specific signal: + +```json +{ + "type": "description", + "description": "Adults aged 25-54 in urban areas", + "category": "demographic" +} +``` + +The governance agent evaluates seller targeting against these constraints during [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance). Signal references enable structural matching; descriptions require semantic comparison. + +### Restricted attributes + +The `restricted_attributes` field declares personal data categories that must not be used for targeting. Values are GDPR Article 9 special categories: `racial_ethnic_origin`, `political_opinions`, `religious_beliefs`, `trade_union_membership`, `health_data`, `sex_life_sexual_orientation`, `genetic_data`, `biometric_data`. + +The governance agent matches these against signal definitions that declare their own `restricted_attributes`. Signals with matching attributes are blocked from targeting. For signals without declared attributes, the governance agent falls back to semantic inference from the signal name and description. + +### Policy categories + +The `policy_categories` field declares which regulatory regimes apply. Categories are defined in the [policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) and group related regulations — for example, `children_directed` covers COPPA, UK AADC, and GDPR Article 8. + +Policy categories are distinct from `brand.industries`. Industries describe what a company does; policy categories describe what regulatory regimes apply to a specific campaign. A pharmaceutical company (`industries: ["pharmaceuticals"]`) running a general awareness campaign might not need `pharmaceutical_advertising` as a policy category if the campaign doesn't promote specific drugs. + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | correctable | Plan is missing required fields or has invalid values. `error.field` identifies the offending plan field. | +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | correctable | Brand domain could not be resolved via the Brand Protocol. The governance agent cannot determine applicable compliance policies without a valid brand reference. `error.field` MUST identify the brand field that failed to resolve. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | correctable | Cannot reduce budget below the amount already committed (on plan update). `error.field` identifies the budget field. | + +## Related tasks + +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) -- Validate actions against this plan +- [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) -- Report outcomes back to update plan state +- [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.2.0-beta.4/governance/collection/index.mdx b/dist/docs/3.2.0-beta.4/governance/collection/index.mdx new file mode 100644 index 0000000000..7a29fdfe22 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/collection/index.mdx @@ -0,0 +1,166 @@ +--- +title: Collection Governance +description: "AdCP Collection Governance enables program-level brand safety through collection lists — managed exclusion and inclusion lists for shows, series, and other content programs independent of which properties carry them." +"og:title": "AdCP — Collection Governance" +"og:image": /images/walkthrough/collection-gov-01-spreadsheet.png +sidebarTitle: Overview +--- + +Jordan sits at her desk studying a dense brand safety spreadsheet on her monitor — rows of partner names and excluded programs that need to become machine-readable + +Jordan is staring at a spreadsheet. A holding company just sent Nova Motors' CTV "do not air" list — 200+ programs organized by network, a mix of specific shows, entire genres, and content ratings. Some entries are app-level exclusions. Some are individual programs that air on five different platforms. One section says "ALWAYS EXCLUDE kids programming" and three rows later says "animation rated G or PG is permitted." + +This spreadsheet makes sense to a human trafficking linear TV. It does not make sense to an AI agent managing programmatic CTV across a dozen sellers. + +Jordan needs to turn this into something machines can enforce. Property lists handle the app-level exclusions — she's done that before. But the program-level exclusions? A show doesn't belong to a single app. It airs everywhere. She needs a construct that identifies *the program itself*, independent of where it runs. + +That's what collection lists are for. + +## The gap in brand safety + +Three-layer brand safety diagram — properties on top, collections in the middle, content standards at the bottom — Jordan points at the collection layer she is building + +Before collection lists, AdCP had two brand safety layers: + +- **Property lists** control *where* ads run — which apps, sites, and platforms. Jordan can say "not on this news app" and every seller enforces it. +- **Content standards** control *what content* is adjacent to an ad — per-impression evaluation against a natural language policy. They handle nuance like "exclude kids content except G/PG animation." + +The missing layer is *what program* the ad runs in. A specific crime drama airs on three streaming platforms and cable syndication. Excluding it from one property doesn't exclude it from the others. Jordan needs to say "not in this program, anywhere" — and have every seller understand what she means. + +Collection lists fill this gap. Together with property lists and content standards, they form three composable layers: + +| Layer | Construct | What it controls | When | +|---|---|---|---| +| Property | Property list | Where ads run (apps, sites) | Setup | +| Collection | **Collection list** | What content ads run in (shows, series) | Setup | +| Content | Content standards | Specific content adjacent to the ad | Per-impression | + +Most buyers use one or two layers. A buyer who only needs to exclude specific programs uses a collection list alone. The three-layer model is a composition framework, not a requirement. + +## Resolving program identifiers + +Jordan maps program names to distribution identifiers at a display — green lines connect resolved programs, amber lines show unresolved ones she marks for follow-up + +The spreadsheet lists programs by name. Machines need identifiers. Jordan's buyer agent resolves each program name to a platform-independent [distribution identifier](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments) — an IMDb ID, Gracenote ID, or EIDR ID that uniquely identifies the program regardless of which CTV platform carries it. + +Most programs resolve immediately. A few don't — the agent flags these for Jordan to confirm manually. This is the translation step: human-readable names become machine-readable identifiers that every seller in the ecosystem understands. + +**Gracenote ID guidance:** Use root-level IDs — SH-prefixed for series, MV-prefixed for movies, SP-prefixed for sports programs. Episode-level IDs (EP-prefixed) don't belong in collection lists; episode-level evaluation is a content standards concern. + +## Building the collection list + +A funnel filters collections through rating, genre, and explicit exclusion layers — Jordan reviews the clean resolved list emerging at the bottom + +Jordan's buyer agent creates a collection list on the governance agent, combining explicit program exclusions with structural filters: + +```json +{ + "tool": "create_collection_list", + "arguments": { + "name": "Nova Motors CTV Do Not Air — 2026", + "base_collections": [ + { + "selection_type": "distribution_ids", + "identifiers": [ + { "type": "imdb_id", "value": "tt9999901" }, + { "type": "imdb_id", "value": "tt9999902" }, + { "type": "gracenote_id", "value": "SH000003" } + ] + } + ], + "filters": { + "content_ratings_exclude": [ + { "system": "tv_parental", "rating": "TV-MA" }, + { "system": "bbfc", "rating": "18" } + ], + "genres_exclude": ["news"], + "genre_taxonomy": "iab_content_3.0" + }, + "brand": { "domain": "novamotors.com" } + } +} +``` + +The explicit entries handle the named programs. The filters handle the structural exclusions — no TV-MA content, no news genre. The filters are the safety net: any new TV-MA series on any platform is automatically excluded without Jordan updating the list. + +The "kids vs. G/PG animation" contradiction? That's not a collection list problem — it requires evaluating actual episode content, not metadata. Jordan puts that in [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) where it belongs. + +### How filters compose + +Include filters are allowlists, exclude filters are blocklists. When both are present for the same dimension, include applies first, then exclude narrows further. + +**Example:** `genres_include: ["drama", "comedy"]` + `genres_exclude: ["crime"]` first includes only drama and comedy collections, then removes any also tagged as crime. A collection tagged `["drama", "crime"]` is excluded — the exclude filter wins. + +## Sellers match against their inventory + +Split scene — Jordan's governance agent sends the collection list to Priya at StreamHaus, whose inventory lights up showing matched exclusions + +When Jordan's media buy references the collection list, Priya's sales agent at StreamHaus fetches it, matches entries against StreamHaus's collection inventory, and excludes matched programs from delivery. The matching uses distribution identifiers — StreamHaus declared Gracenote IDs on their collections in `adagents.json`, so the match is automatic. + +Priya's agent reports back: 47 of 200 excluded programs are in StreamHaus's library. 12 additional collections caught by the TV-MA filter. The rest aren't programs StreamHaus carries — acknowledged and ignored. + +The list is cached for a week (collection metadata changes less frequently than property metadata). When the governance agent re-resolves the list — a new season changes a show's content rating, or Jordan adds programs — sellers receive a webhook and refresh their cache. + +## Targeting integration + +Collection lists are referenced in targeting overlays alongside property lists: + +```json +{ + "targeting": { + "property_list": { + "agent_url": "https://governance.pinnacleagency.com", + "list_id": "pl_novamotors_approved_ctv" + }, + "collection_list_exclude": { + "agent_url": "https://governance.pinnacleagency.com", + "list_id": "cl_novamotors_dna_2026" + } + } +} +``` + +| Field | Semantics | Use case | +|---|---|---| +| `collection_list` | Inclusion — only run in these collections | "Only buy pre-roll on these three shows" | +| `collection_list_exclude` | Exclusion — never run in these collections | Brand safety do-not-air lists | + +A media buy can reference both simultaneously — "run in these approved shows, but never in these specific programs even if they appear on the approved list." The exclude list always wins on overlap. + + +**Why two fields for collections but one for properties?** Property lists predate the paired include/exclude pattern now used across other targeting dimensions (geo, audience, device). Collection lists follow the current pattern. A future evolution may add `property_list_exclude` for symmetry. + + +## Jordan's three-layer configuration + +By the time Jordan is done, Nova Motors' CTV brand safety is expressed in three machine-readable artifacts: + +1. **Property list** — excluded apps and approved CTV platforms +2. **Collection list** — excluded programs by distribution identifier + TV-MA and news genre filters +3. **Content standards** — the nuanced kids/animation policy that requires per-episode judgment + +Each layer is independently managed, independently cacheable, and independently enforceable. When the holding company sends an updated do-not-air list next quarter, Jordan's agent diffs it against the existing collection list and updates only what changed. + +No more spreadsheets. No more per-network manual trafficking. One list, enforced everywhere. + +## Relationship to property lists + +Property lists and collection lists are sibling constructs — both are inventory lists managed by governance agents with the same lifecycle pattern (create, get, update, list, delete, webhook). They differ in what they address: + +| Dimension | Property list | Collection list | +|---|---|---| +| What it identifies | Technical surfaces (domains, apps) | Content programs (shows, series) | +| Primary identifier | Property identifiers (domain, bundle ID) | Distribution identifiers (IMDb, Gracenote, EIDR) | +| Filters | Country, channel, property type, features | Content rating, genre, kind, production quality | +| Cache default | 24 hours | 168 hours (one week) | +| Cross-publisher | Via property registry (property_rid) | Via collection registry (collection_rid) | + +## Tasks + +### Collection list management + +- **[create_collection_list](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#create_collection_list)**: Create a new collection list on a governance agent +- **[get_collection_list](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#get_collection_list)**: Retrieve resolved collections (with caching guidance) +- **[update_collection_list](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#update_collection_list)**: Modify filters or base collections +- **[list_collection_lists](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#list_collection_lists)**: List collection lists for an account +- **[delete_collection_list](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#delete_collection_list)**: Remove a collection list diff --git a/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists.mdx b/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists.mdx new file mode 100644 index 0000000000..27173b91e7 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists.mdx @@ -0,0 +1,347 @@ +--- +title: Collection List Management +description: "Collection list tasks in AdCP create, update, get, list, and delete inclusion and exclusion lists for content programs, combining explicit program references with dynamic genre and content rating filters." +"og:title": "AdCP — Collection List Management" +--- + +# Collection list management + +Collection lists are managed, cacheable artifacts that express "these collections, filtered by these criteria." They parallel [property lists](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists) but operate on content programs (shows, series, podcasts) rather than technical surfaces (domains, apps). + +## Architecture + +``` +SETUP TIME BID TIME REFRESH +───────────── ──────── ─────── +Buyer creates list ──► Governance Seller uses cached ◄── Webhook notifies + base_collections agent collection list seller to + + filters resolves re-fetch + & caches +``` + +Collection lists are **setup-time resources**. They are resolved once by the governance agent, cached by sellers, and used in delivery decisions without runtime calls back to the governance agent. + +## Tasks overview + +| Task | Purpose | Response time | +|------|---------|---------------| +| [`create_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#create_collection_list) | Create a new collection list | Seconds | +| [`get_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#get_collection_list) | Fetch list with resolved collections | Seconds (cached) | +| [`update_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#update_collection_list) | Modify base collections or filters | Seconds | +| [`list_collection_lists`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#list_collection_lists) | List collection lists for an account | Seconds | +| [`delete_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#delete_collection_list) | Remove a collection list | Seconds | + +## Base collection sources + +Collection lists start with a base set of collections selected through three patterns: + +### distribution_ids + +Select collections by platform-independent identifiers. The primary mechanism for cross-publisher exclusion — an IMDb ID identifies a program regardless of which CTV platform carries it. + +```json +{ + "selection_type": "distribution_ids", + "identifiers": [ + { "type": "imdb_id", "value": "tt9999901" }, + { "type": "gracenote_id", "value": "SH000001" }, + { "type": "eidr_id", "value": "10.5240/XXXX-XXXX-XXXX-XXXX-XXXX-C" } + ] +} +``` + +### publisher_collections + +Select specific collections within a publisher's `adagents.json` by collection ID. Use when the publisher's internal identifiers are known. + +```json +{ + "selection_type": "publisher_collections", + "publisher_domain": "titanstreaming.com", + "collection_ids": ["danger_zone", "wild_nights"] +} +``` + +### publisher_genres + +Select all collections from a publisher matching genre criteria. Use when excluding entire content categories from a specific publisher. + +```json +{ + "selection_type": "publisher_genres", + "publisher_domain": "streamhaus.com", + "genres": ["news"], + "genre_taxonomy": "iab_content_3.0" +} +``` + +When `base_collections` is omitted, the list applies filters against the governance agent's entire collection database. + +## Filters + +Filters narrow the resolved list after base collection selection: + +| Filter | Type | Logic | Description | +|--------|------|-------|-------------| +| `content_ratings_exclude` | ContentRating[] | OR | Exclude collections with any of these ratings | +| `content_ratings_include` | ContentRating[] | OR | Include only collections with these ratings | +| `genres_exclude` | string[] | OR | Exclude collections tagged with any genre | +| `genres_include` | string[] | OR | Include only collections with any genre | +| `genre_taxonomy` | string | — | Taxonomy for genre filter values | +| `kinds` | string[] | OR | Filter to collection kinds (series, publication, event_series, rotation) | +| `exclude_distribution_ids` | DistributionId[] | OR | Always exclude these specific collections | +| `production_quality` | string[] | OR | Filter by production quality tier | + +**Include vs. exclude**: include filters are allowlists, exclude filters are blocklists. When both are present for the same dimension, include is applied first, then exclude narrows further. + +**Example:** A list with `genres_include: ["drama", "comedy"]` and `genres_exclude: ["crime"]` first includes only drama and comedy collections, then removes any tagged as crime. A collection tagged `["drama", "crime"]` is excluded — the exclude filter wins. A collection tagged `["sports"]` is excluded by the include filter (not in the allowed set). + +**Content ratings are metadata filters, not content evaluation.** `content_ratings_exclude: [{ system: "tv_parental", rating: "TV-MA" }]` excludes all collections *declared* as TV-MA. It doesn't evaluate individual episodes — that's [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). + +**Genre taxonomy** normalizes genre matching between buyers and sellers. Supported taxonomies: `iab_content_3.0`, `iab_content_2.2`, `gracenote`, `eidr`, `apple_genres`, `google_genres`, `roku`, `amazon_genres`, `custom`. The `custom` value is an escape hatch for publisher-defined taxonomies — buyer and seller negotiate the vocabulary out of band. + +## create_collection_list + +Create a new collection list on a governance agent. + +**Request:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/create-collection-list-request.json", + "idempotency_key": "c5d6e7f8-a9b0-4123-c456-123456789012", + "name": "Nova Motors CTV Do Not Air — 2026", + "description": "Programs excluded from Nova Motors CTV advertising", + "base_collections": [ + { + "selection_type": "distribution_ids", + "identifiers": [ + { "type": "imdb_id", "value": "tt9999901" }, + { "type": "imdb_id", "value": "tt9999902" } + ] + }, + { + "selection_type": "publisher_genres", + "publisher_domain": "streamhaus.com", + "genres": ["news", "crime"], + "genre_taxonomy": "iab_content_3.0" + } + ], + "filters": { + "content_ratings_exclude": [ + { "system": "tv_parental", "rating": "TV-MA" }, + { "system": "bbfc", "rating": "18" } + ], + "genres_exclude": ["news"], + "genre_taxonomy": "iab_content_3.0", + "kinds": ["series"] + }, + "brand": { "domain": "novamotors.com" } +} +``` + +**Response:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/create-collection-list-response.json", + "status": "completed", + "list": { + "list_id": "cl_novamotors_dna_2026", + "name": "Nova Motors CTV Do Not Air — 2026", + "collection_count": 247, + "created_at": "2026-04-07T12:00:00Z", + "updated_at": "2026-04-07T12:00:00Z" + }, + "auth_token": "tok_example_store_this_securely" +} +``` + +The `auth_token` is only returned at creation time. Store it — it authorizes sellers to fetch this list. + +## get_collection_list + +Retrieve a collection list with resolved collections. Sellers call this to fetch and cache the list. + +**Request:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/get-collection-list-request.json", + "list_id": "cl_novamotors_dna_2026", + "resolve": true, + "pagination": { + "max_results": 1000 + } +} +``` + +**Response:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/get-collection-list-response.json", + "status": "completed", + "list": { + "list_id": "cl_novamotors_dna_2026", + "name": "Nova Motors CTV Do Not Air — 2026", + "collection_count": 247 + }, + "collections": [ + { + "collection_rid": "019abc12-3d4e-7f5a-ab6c-7d8e9f0a1b2c", + "name": "Danger Zone", + "distribution_ids": [ + { "type": "imdb_id", "value": "tt9999901" } + ], + "content_rating": { "system": "tv_parental", "rating": "TV-MA" }, + "genre": ["comedy", "animation"], + "genre_taxonomy": "iab_content_3.0", + "kind": "series" + } + ], + "pagination": { "has_more": false }, + "resolved_at": "2026-04-07T14:00:00Z", + "cache_valid_until": "2026-04-14T14:00:00Z", + "coverage_gaps": { + "genre": [ + { "type": "imdb_id", "value": "tt9999905" } + ] + } +} +``` + +**Coverage gaps** report collections included in the list despite missing metadata for a filtered dimension. In this example, `tt9999905` was included but has no genre metadata — the governance agent couldn't confirm it matches the genre filter. + +**Caching**: sellers should cache the resolved collections and re-fetch after `cache_valid_until`. The default cache duration is 168 hours (one week) because collection metadata changes less frequently than property metadata. + +## update_collection_list + +Modify an existing collection list. `base_collections` and `filters` are complete replacements, not patches. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/update-collection-list-request.json", + "idempotency_key": "d6e7f8a9-b0c1-4234-d567-234567890123", + "list_id": "cl_novamotors_dna_2026", + "base_collections": [ + { + "selection_type": "distribution_ids", + "identifiers": [ + { "type": "imdb_id", "value": "tt9999901" }, + { "type": "imdb_id", "value": "tt9999902" }, + { "type": "imdb_id", "value": "tt9999903" } + ] + } + ], + "filters": { + "content_ratings_exclude": [ + { "system": "tv_parental", "rating": "TV-MA" } + ] + }, + "webhook_url": "https://governance.pinnacleagency.com/webhooks/collection-lists" +} +``` + +## list_collection_lists + +List collection lists for an account. Returns metadata only, not resolved collections. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/list-collection-lists-request.json", + "account": { "brand": { "domain": "novamotors.com" }, "operator": "pinnacleagency.com" }, + "pagination": { "max_results": 50 } +} +``` + +## delete_collection_list + +Remove a collection list. Sellers with cached copies will stop receiving webhook updates. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/delete-collection-list-request.json", + "idempotency_key": "e7f8a9b0-c1d2-4345-e678-345678901234", + "list_id": "cl_novamotors_dna_2026" +} +``` + +## Webhooks + +When a collection list's resolved collections change (new programs matched, ratings updated, programs removed), the governance agent sends a webhook notification: + +```json +{ + "idempotency_key": "clch_01HW9DEPJ5MN8Q2R4T6V8X0Z2B", + "event": "collection_list_changed", + "list_id": "cl_novamotors_dna_2026", + "list_name": "Nova Motors CTV Do Not Air — 2026", + "change_summary": { + "collections_added": 3, + "collections_removed": 1, + "total_collections": 249 + }, + "resolved_at": "2026-04-08T10:00:00Z", + "cache_valid_until": "2026-04-15T10:00:00Z", + "signature": "..." +} +``` + +Webhooks contain a summary only — recipients must call [`get_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#get_collection_list) for the updated entries. Recipients MUST verify the `signature` before processing and MUST dedupe by `idempotency_key` so retried deliveries of the same change event are ignored. + +## Live sports + +Live sports is one of the largest CTV brand safety concerns. Collection lists handle it through the `event_series` kind: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/collection/create-collection-list-request.json", + "idempotency_key": "f8a9b0c1-d2e3-4456-f789-456789012345", + "name": "Acme Outdoor — Excluded Sports Events", + "base_collections": [ + { + "selection_type": "distribution_ids", + "identifiers": [ + { "type": "gracenote_id", "value": "SP000001" }, + { "type": "gracenote_id", "value": "SP000002" } + ] + } + ], + "filters": { + "kinds": ["event_series"], + "genres_exclude": ["combat_sports"], + "genre_taxonomy": "gracenote" + }, + "brand": { "domain": "acmeoutdoor.com" } +} +``` + +This excludes specific sports programs by Gracenote ID (SP-prefixed for sports) and structurally excludes all combat sports event series. The `event_series` kind filter ensures the list targets live event programming, not documentary series about sports. + +## Security considerations + +Collection lists gate delivery decisions, so the `auth_token` and webhook callbacks need explicit lifecycle rules. General controls in [Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) apply; the collection-list-specific rules: + +**`auth_token` scope, revocation, and log hygiene.** Each token authorizes exactly one `list_id`; do not reuse a token across lists. Governance agents MUST issue a distinct token per seller that receives the list — shared tokens cannot be revoked per relationship and make list-wide rotation the only response to a single compromise. Tokens MUST NOT be written to logs, cache keys, or metric labels, and error responses from [`get_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#get_collection_list) MUST NOT echo the presented token. + +[`delete_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#delete_collection_list) and per-seller revocation differ: + +- **Normal deletion or end-of-relationship**: the token MUST fail subsequent `get_collection_list` calls immediately, but sellers with a cached resolution MAY continue serving from cache until `cache_valid_until`. A natural relationship end is not a compromise. +- **Compromise-driven revocation**: the governance agent MUST signal cache invalidation. Either return a reduced `cache_valid_until` (at or before `now`) on the next poll that the seller still has access to complete, or emit a `collection_list_changed` webhook whose `change_summary` conveys that the list version has been invalidated so cached copies are discarded. Leaving compromised content in seller caches until the scheduled TTL is not acceptable. + +**Webhook URL validation.** The `webhook_url` on [`update_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#update_collection_list) is SSRF-equivalent to any other buyer-provided callback URL. Apply the canonical [Webhook URL validation (SSRF)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) rules — HTTPS only, validated IP ranges (IPv4 and IPv6 including `::ffff:0:0/96`), connection pinning (not just DNS re-resolution), no redirect following, size and timeout caps. + +**Webhook signature algorithm.** The webhook signature MUST follow the [standard webhook signing rules](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-security). By default, the RFC 9421 [webhook callbacks profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks) applies: the governance agent signs with its `adcp_use: "request-signing"` key published at the `jwks_uri` of its `agents[]` entry in its own brand.json; deprecated `webhook-signing` keys remain accepted during the compatibility window. The subscribing seller verifies covered components `@method`, `@target-uri`, `@authority`, `content-type`, `content-digest`, with `tag="adcp/webhook-signing/v1"`. The deprecated HMAC-SHA256 fallback applies only when the subscribing seller populates `authentication.credentials` on the webhook registration; that path follows the [Legacy HMAC-SHA256 fallback](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#legacy-hmac-sha256-fallback-deprecated-removed-in-40) rules, and any body `signature` field under that path is a convenience copy — recipients MUST verify against the headers and MUST NOT trust the body value. + +**Distribution-ID inputs.** Governance agents SHOULD validate identifier format before persisting (IMDb: `^tt\d+$`, EIDR: `10.5240/...`, Gracenote: vendor-prefixed) and SHOULD enforce per-account rate limits on list mutations to prevent list-bloat DoS. Surface unresolved identifiers in `coverage_gaps` rather than silently dropping them. + +## Sharing collection lists with sellers + +The pattern matches [property list sharing](/dist/docs/3.2.0-beta.4/governance/property/index#sharing-property-lists-with-sellers): + +1. Create the collection list on a governance agent +2. Store the `auth_token` from the creation response +3. Pass `collection_list` or `collection_list_exclude` in targeting overlays +4. Sellers fetch and cache the resolved list using the auth token +5. Webhooks notify sellers when the list changes diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/artifacts.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/artifacts.mdx new file mode 100644 index 0000000000..4244a4bc7d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/artifacts.mdx @@ -0,0 +1,324 @@ +--- +title: Content Artifacts +description: "Artifacts in AdCP represent the content context adjacent to ad placements, enabling brand suitability evaluation without exposing raw content." +"og:title": "AdCP — Content Artifacts" +sidebarTitle: Artifacts +--- + +# Artifacts + +An **artifact** is a unit of content adjacent to an ad placement. When evaluating brand suitability, you're asking: "Is this artifact appropriate for my brand's ads?" + +## What Is an Artifact? + +Artifacts represent the content context where an ad appears: + +- A **news article** on a website +- A **podcast segment** between ad breaks +- A **video chapter** in a YouTube video +- A **social media post** in a feed +- A **scene** in a CTV show +- An **AI-generated image** in a chat conversation + +Artifacts are identified by `property_id` + `artifact_id` - the property defines where the content lives, and the artifact_id is an opaque identifier for that specific piece of content. The artifact_id scheme is flexible - it could be a URL path, a platform-specific ID, or any consistent identifier the property owner uses internally. + +## Structure + +**Schema**: [artifact.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/artifact.json) + +Web article: + +```json +{ + "property_id": {"type": "domain", "value": "reddit.com"}, + "artifact_id": "r_fitness_post_abc123", + "assets": [ + {"type": "text", "role": "title", "content": "Best protein sources for muscle building", "language": "en"}, + {"type": "text", "role": "paragraph", "content": "Looking for recommendations on high-quality protein sources...", "language": "en"}, + {"type": "image", "url": "https://cdn.reddit.com/fitness-image.jpg", "alt_text": "Person lifting weights"} + ] +} +``` + +Podcast segment (note: no `url` — the property is identified by `apple_podcast_id`, and the audio asset uses a secured URL): + +```json +{ + "property_id": {"type": "apple_podcast_id", "value": "1234567890"}, + "artifact_id": "episode_42_segment_3", + "assets": [ + {"type": "text", "role": "title", "content": "The Future of Running Shoes", "language": "en"}, + {"type": "audio", "url": "https://cdn.example.com/secured/ep42_seg3.mp3", "transcript": "Today we're talking to Dr. Chen about biomechanics research...", "duration_ms": 480000} + ], + "metadata": { + "json_ld": [{"@type": "PodcastEpisode", "episodeNumber": 42}] + } +} +``` + +CTV scene (the artifact_id encodes show, season, episode, and scene): + +```json +{ + "property_id": {"type": "app_id", "value": "com.streamingservice.tv"}, + "artifact_id": "show_running_s2e5_scene_14", + "assets": [ + {"type": "text", "role": "title", "content": "Championship Race - Final Stretch", "language": "en"}, + {"type": "video", "url": "https://cdn.streaming.example.com/secured/s2e5_scene14.mp4", "transcript": "The runners round the final corner as the crowd erupts...", "duration_ms": 120000} + ] +} +``` + +### Required Fields + +| Field | Description | +|-------|-------------| +| `property_id` | Where this artifact lives - uses standard identifier types (`domain`, `app_id`, `apple_podcast_id`, etc.) | +| `artifact_id` | Unique identifier within the property - the property owner defines their scheme | +| `assets` | Content in document order - text blocks, images, video, audio | + +### Optional Fields + +| Field | Description | +|-------|-------------| +| `variant_id` | Identifies a specific variant (A/B test, translation, temporal version) | +| `format_kind` | Optional canonical media/creative kind associated with the artifact | +| `url` | Web URL if the artifact has one | +| `metadata` | Artifact-level metadata (Open Graph, JSON-LD, author info) | +| `published_time` | When the artifact was published | +| `last_update_time` | When the artifact was last modified | + +## Variants + +The same artifact may have multiple variants: + +- **Translations** - English version vs Spanish version +- **A/B tests** - Different headlines being tested +- **Temporal versions** - Content that changed on Wednesday + +Use `variant_id` to distinguish between them: + +```json +// English version +{ + "property_id": {"type": "domain", "value": "nytimes.com"}, + "artifact_id": "article_12345", + "variant_id": "en", + "assets": [ + {"type": "text", "role": "title", "content": "Breaking News Story", "language": "en"} + ] +} + +// Spanish translation +{ + "property_id": {"type": "domain", "value": "nytimes.com"}, + "artifact_id": "article_12345", + "variant_id": "es", + "assets": [ + {"type": "text", "role": "title", "content": "Noticia de última hora", "language": "es"} + ] +} + +// A/B test variant +{ + "property_id": {"type": "domain", "value": "nytimes.com"}, + "artifact_id": "article_12345", + "variant_id": "headline_test_b", + "assets": [ + {"type": "text", "role": "title", "content": "Alternative Headline Being Tested", "language": "en"} + ] +} +``` + +The combination of `artifact_id` + `variant_id` must be unique within a property. This lets you track which variant a user saw and correlate it with delivery reports. + +## Asset Types + +Assets are the actual content within an artifact. Everything is an asset - titles, paragraphs, images, videos. + +### Text + +```json +{"type": "text", "role": "title", "content": "Article Title", "language": "en"} +{"type": "text", "role": "paragraph", "content": "The article body text...", "language": "en"} +{"type": "text", "role": "description", "content": "A summary of the article", "language": "en"} +{"type": "text", "role": "heading", "content": "Section Header", "heading_level": 2} +{"type": "text", "role": "quote", "content": "A quoted statement"} +``` + +Roles: `title`, `description`, `paragraph`, `heading`, `caption`, `quote`, `list_item` + +Each text asset can have its own `language` tag for mixed-language content. + +### Image + +```json +{ + "type": "image", + "url": "https://cdn.example.com/photo.jpg", + "alt_text": "Description of the image" +} +``` + +### Video + +```json +{ + "type": "video", + "url": "https://cdn.example.com/video.mp4", + "transcript": "Full transcript of the video content...", + "duration_ms": 180000 +} +``` + +### Audio + +```json +{ + "type": "audio", + "url": "https://cdn.example.com/podcast.mp3", + "transcript": "Today we're discussing...", + "duration_ms": 3600000 +} +``` + +## Metadata + +Artifact-level metadata describes the artifact as a whole, not individual assets: + +```json +{ + "metadata": { + "author": "Jane Smith", + "canonical": "https://example.com/article/12345", + "open_graph": { + "og:type": "article", + "og:site_name": "Example News" + }, + "json_ld": [ + { + "@type": "NewsArticle", + "datePublished": "2025-01-15" + } + ] + } +} +``` + +This is separate from assets because it's about the artifact container, not the content itself. + +## Secured Asset Access + +Many assets aren't publicly accessible—AI-generated images, private conversations, and paywalled content are common examples. The artifact schema supports three access methods without requiring every consumer to understand cloud IAM. + +### Choosing an access method + +Use the simplest method that fits the relationship: + +1. **Use `signed_url` by default** for one-off asset delivery. The consumer performs an ordinary HTTPS `GET`; no additional authentication integration is required. +2. **Use `service_account` for established, higher-volume relationships** where the asset origin has already authorized a workload identity controlled by the consumer. +3. **Use `bearer_token` only when the origin cannot support either option.** Tokens must be short-lived and scoped to the individual asset. + +Never place long-lived API keys, service-account private keys, cloud access keys, or other standing credentials in an artifact payload. + +### Signed URLs (recommended) + +For one-off access, place the complete pre-signed URL in the asset's `url` and mark the access method: + +```json +{ + "type": "video", + "url": "https://assets.streamhaus.example/video/scene-14.mp4?expires=...&signature=...", + "access": { + "method": "signed_url" + } +} +``` + +The URL itself is a bearer capability. Producers should scope it to one asset and the shortest practical access window under a documented maximum TTL. Consumers must redact the complete URL from logs, traces, errors, metrics, analytics, model context, and durable storage because providers may place credential material in either its path or query string. Do not forward a signed URL outside its intended recipient or trust boundary. + +### Workload identity + +For ongoing partnerships, the asset origin can authorize an identity already controlled by the component that performs the asset fetch. At fetch time, that component uses its normal cloud credential chain, such as GCP Application Default Credentials or AWS SigV4. No credential is sent in the artifact. If an orchestrator forwards an artifact to a governance agent, it must either fetch the asset itself or arrange out-of-band authorization for the governance agent's identity. + +```json +{ + "type": "audio", + "url": "https://storage.streamhaus.example/episodes/42/segment-3.mp3", + "access": { + "method": "service_account", + "provider": "gcp" + } +} +``` + +The `service_account.credentials` field is deprecated in AdCP 3.2. Its presence denotes only the legacy inline-credential form, not workload-identity authorization. Consumers must continue parsing and validating the field for 3.x wire compatibility, but must not activate received credentials automatically. They may process the legacy form only for a peer explicitly allowlisted for legacy compatibility; otherwise they must reject or quarantine it. New producers must omit it. The field is eligible for removal in 4.0 or later only after the six-month notice and full-release-cycle gates in the deprecation policy are satisfied. + +### Bearer tokens + +When neither signed URLs nor pre-configured workload identity is available, attach a short-lived, asset-scoped token: + +```json +{ + "type": "image", + "url": "https://assets.streamhaus.example/images/frame-382.png", + "access": { + "method": "bearer_token", + "token": "short-lived-asset-token" + } +} +``` + +Send the token only in the `Authorization` header to the HTTPS origin authorized for that asset. Never forward the header across redirects. Redact the token from logs, traces, errors, metrics, analytics, model context, and durable storage. + +For artifacts with many assets, prefer signed URLs or pre-configured workload identity rather than repeating bearer tokens throughout the payload. + +The asset `url` may differ from the artifact's canonical or published URL. For example, a published article at `https://news.pinnacle.example/article/123` might have assets served from `https://assets.pinnacle.example/secured/...`. + +### Safe fetching + +Treat every asset URL and its access metadata as untrusted input. Consumers must require HTTPS and, after DNS resolution and after every redirect, reject loopback, link-local, metadata-service, private, and other locally disallowed destinations unless a specific destination was explicitly approved during authenticated onboarding. Access metadata alone must never select an ambient credential: workload identity is limited to the pre-authorized origin and resource prefix, and bearer tokens are limited to the authorized origin. + +Fail closed on authorization or destination-check failures. Do not retry by switching among signed URLs, workload identity, bearer tokens, or legacy inline credentials. Temporary encrypted caching of signed URLs, tokens, or legacy credentials must end no later than both the credential expiry and the consumer's configured maximum lifetime. + +### Access methods at a glance + +| Method | Use Case | +|--------|----------| +| `signed_url` | Recommended default for one-off access. Ordinary HTTPS fetch; the complete URL is a time-limited secret. | +| `service_account` | Credential-free workload identity for a pre-configured relationship. No keys or access secrets appear in the payload. | +| `bearer_token` | Compatibility path for origins requiring an Authorization header. The token must be short-lived, asset-scoped, and handled as a secret. | + +See [Migrating secured asset access for AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/migration/asset-access) for producer and consumer changes. + +## Property Identifier Types + +The `property_id` uses standard identifier types from the AdCP property schema: + +| Type | Example | Use Case | +|------|---------|----------| +| `domain` | `reddit.com` | Websites | +| `app_id` | `com.spotify.music` | Mobile apps | +| `apple_podcast_id` | `1234567890` | Apple Podcasts | +| `spotify_collection_id` | `4rOoJ6Egrf8K2IrywzwOMk` | Spotify podcasts | +| `youtube_channel_id` | `UCddiUEpeqJcYeBxX1IVBKvQ` | YouTube channels | +| `rss_url` | `https://feeds.example.com/podcast.xml` | RSS feeds | + +## Artifact ID Schemes + +The property owner defines their artifact_id scheme. Examples: + +| Property Type | Artifact ID Pattern | Example | +|---------------|---------------------|---------| +| News website | `article_{id}` | `article_12345` | +| Reddit | `r_{subreddit}_{post_id}` | `r_fitness_abc123` | +| Podcast | `episode_{num}_segment_{num}` | `episode_42_segment_2` | +| CTV | `show_{id}_s{season}e{episode}_scene_{num}` | `show_abc_s3e5_scene_12` | +| Social feed | `post_{id}` | `post_xyz789` | + +The verification agent doesn't need to understand the scheme - it's opaque. The property owner uses it to correlate artifacts with their content. + +## Related + +- [Content Standards Overview](.) - How artifacts fit into the content standards workflow +- [calibrate_content](./tasks/calibrate_content) - Sending artifacts for calibration diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide.mdx new file mode 100644 index 0000000000..250b1af303 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide.mdx @@ -0,0 +1,424 @@ +--- +title: Content Standards Implementation +sidebarTitle: Implementation Guide +description: "Step-by-step guide to implementing AdCP Content Standards — calibration flow, artifact generation, delivery validation, and integration patterns." +"og:title": "AdCP — Content Standards Implementation" +--- + +This guide covers implementation patterns for the Content Standards Protocol from three perspectives: + +1. **Sales agents** accepting and enforcing brand suitability standards +2. **Orchestrators** coordinating content standards across publishers +3. **Governance agents** providing content evaluation services + +## Roles Overview + +Before diving in, understand who does what: + +| Role | Examples | Responsibilities | +|------|----------|-----------------| +| **Orchestrator** | DSP, trading desk, agency platform | Coordinates media buying; passes standards refs to sellers; receives artifacts for validation | +| **Sales Agent** | Publisher ad server, SSP | Accepts standards; calibrates local model; enforces during delivery; pushes artifacts | +| **Governance Agent** | IAS, DoubleVerify, brand suitability service | Hosts standards; implements `calibrate_content` and `validate_content_delivery` | + +The typical flow: + +``` +1. Brand sets up standards with governance agent (via orchestrator) +2. Orchestrator sends standards_ref with get_products/create_media_buy +3. Sales agent accepts or rejects based on capability +4. Sales agent calibrates against governance agent +5. Sales agent enforces during delivery +6. Sales agent provides artifacts (push via webhook or pull via get_media_buy_artifacts) +7. Orchestrator forwards artifacts to governance agent for validation +``` + +--- + +## For Sales Agents + +If you're a sales agent (publisher ad server, SSP, or platform), implementing Content Standards means accepting orchestrator policies and enforcing them during delivery. + +### The Core Model + +When an orchestrator includes a `content_standards_ref` in their request, you must: + +1. **Fetch the standards** from the governance agent and evaluate if you can fulfill them +2. **Accept or reject** the buy based on your capabilities +3. **Calibrate** your evaluation model against the governance agent's expectations +4. **Enforce** the standards during delivery +5. **Provide artifacts** to the orchestrator for validation + +If you cannot fulfill the content standards requirements, **reject the buy**. Don't accept a campaign you can't properly enforce. + +### What You Need to Implement + +**1. Accept content standards references on `get_products` and `create_media_buy`** + +Orchestrators pass their standards via reference: + +```json +{ + "content_standards_ref": { + "standards_id": "nike_emea_brand_safety", + "agent_url": "https://brandsafety.ias.com" + } +} +``` + +When you receive this: +- Fetch the standards document from the governance agent at `agent_url` +- Evaluate whether you can enforce these requirements +- If you cannot meet the standards, reject the request +- If you can, accept and store the association with the media buy + +**2. Decide: Can you fulfill this?** + +The standards document contains: +- Policy (natural language description of acceptable/unacceptable content) +- Calibration exemplars (pass/fail examples to interpret edge cases) +- Floor (reference to external baseline safety standards) + +Review these requirements against your capabilities. Different publishers have different definitions of "adjacency" - Reddit might include comments, YouTube might include related videos, a news site might mean the article body. That's fine - as long as you can meaningfully enforce the brand's intent, accept the buy. + +If you can't - for example, they need adjacency data for a channel where it doesn't apply (like billboards) - reject the buy. + +**3. Build your evaluation capability** + +Use the standards document to train or configure your content evaluation system. This could be: +- An LLM with the rules as system prompt +- A classifier trained on the calibration examples +- A rules engine for deterministic evaluation +- A third-party brand suitability vendor + +The protocol doesn't prescribe your implementation - just that you honor the standards. + +**4. Calibrate against the governance agent** + +After accepting the buy, calibrate your local model by calling `calibrate_content` on the governance agent. You send sample artifacts from your inventory, they tell you how they would rate them: + +```json +// You send examples from your inventory to the governance agent +{ + "standards_id": "nike_emea_brand_safety", + "artifacts": [ + { + "property_id": { "type": "domain", "value": "espn.com" }, + "artifact_id": "article_123", + "assets": [{ "type": "text", "role": "title", "content": "Marathon Runner Collapses at Finish Line" }] + } + ] +} + +// Governance agent responds with their interpretation +{ + "evaluations": [{ + "artifact_id": "article_123", + "suitable": true, + "confidence": 0.9, + "explanation": "Sports injury coverage in athletic context - aligns with brand's sports marketing positioning" + }] +} +``` + +Use these responses to train your local model. If you disagree with a rating, ask follow-up questions to understand the governance agent's reasoning. + +**5. Push artifacts to the orchestrator** + +After delivery, push artifacts to the orchestrator so they can validate against the governance agent. Configure via `artifact_webhook` in the media buy: + +```json +// Artifact webhook payload (you send this to the orchestrator) +{ + "idempotency_key": "artw_01HW9DGRM7NQ0S4U6W8Y0A2C4E", + "media_buy_id": "mb_nike_reddit_q1", + "batch_id": "batch_20250115_001", + "timestamp": "2025-01-15T11:00:00Z", + "artifacts": [ + { + "artifact": { + "property_id": { "type": "domain", "value": "reddit.com" }, + "artifact_id": "r_fitness_abc123", + "assets": [{ "type": "text", "role": "title", "content": "Best protein sources" }] + }, + "delivered_at": "2025-01-15T10:30:00Z", + "impression_id": "imp_abc123" + } + ] +} +``` + +Also support `get_media_buy_artifacts` for orchestrators who prefer to poll. + +### Implementation Checklist + +- [ ] Parse `content_standards_ref` in `get_products` and `create_media_buy` +- [ ] Fetch and evaluate standards documents from governance agents +- [ ] Reject buys you cannot fulfill - don't accept campaigns you can't enforce +- [ ] Build content evaluation against the standards document +- [ ] Call `calibrate_content` on the governance agent to align interpretation +- [ ] Implement `get_media_buy_artifacts` so orchestrators can retrieve content for validation +- [ ] Support `artifact_webhook` for push-based artifact delivery +- [ ] Support `reporting_webhook` for delivery metrics + +--- + +## For Orchestrators + +If you're an orchestrator (DSP, trading desk, or agency platform), you coordinate content standards between brands, governance agents, and publishers. + +### The Orchestration Pattern + +``` +Brand → Orchestrator → Governance Agent (setup) + → Sales Agent (buying) + ← Sales Agent (artifacts) + → Governance Agent (validation) + → Brand (reporting) +``` + +**1. Help brands set up standards with governance agents** + +Brands create content standards through a governance agent. You might facilitate this or the brand may do it directly: + +```json +// Standards stored at the governance agent +{ + "standards_id": "nike_emea_brand_safety", + "name": "Nike EMEA Brand Suitability Policy", + "brand_id": "nike", + "policies": [ + { "policy_id": "no_violence", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid violence." }, + { "policy_id": "no_adult_themes", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid adult themes." }, + { "policy_id": "no_drug_content", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid drug content." } + ], + "calibration_exemplars": { + "pass": [ + { "type": "url", "value": "https://espn.com/nba/story/_/id/12345/lakers-win", "language": "en" } + ], + "fail": [ + { "type": "url", "value": "https://tabloid.example.com/celebrity-scandal", "language": "en" } + ] + } +} +``` + +#### Migrating prose policies to addressable entries + +Brands with existing prose policies have two options: keep everything as one policy entry with the whole prose blob, or split into one entry per rule. Both validate. + +**One-entry-with-prose** (easiest, preserves existing authoring): + +```json +"policies": [ + { + "policy_id": "acme_creative_standards_v1", + "enforcement": "must", + "policy": "No violent imagery. Minimum 72 DPI for display assets. Brand colors must match palette within 5% tolerance." + } +] +``` + +**Multiple addressable entries** (recommended for programmatic fix/retry loops and per-rule versioning): + +```json +"policies": [ + { "policy_id": "no_violent_imagery", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "No violent imagery." }, + { "policy_id": "min_display_dpi", "policy_categories": ["imagery_quality"], "enforcement": "should", "channels": ["display"], "policy": "Minimum 72 DPI for display assets." }, + { "policy_id": "brand_color_tolerance","policy_categories": ["brand_compliance"], "enforcement": "must", "policy": "Brand colors must match palette within 5% tolerance." } +] +``` + +Splitting enables findings to reference specific rules (via `policy_id`), programmatic fix/retry, and stable ids across versions. Use whichever authoring mode fits the workflow. + +#### Registry policies + bespoke policies + +Both `registry_policy_ids` and `policies` can be provided together. The evaluator applies all of them. Bespoke `policy_id` values MUST be flat (no colons or slashes); registry policy ids are always namespaced (e.g., `garm:brand_safety:violence`), so the two namespaces never collide. When a governance finding references a specific policy, `policy_id` on the finding carries either the registry id or the bespoke id — the namespace tells you which. + +**2. Pass standards references when buying** + +When discovering products or creating media buys, include the governance agent reference: + +```json +{ + "product_id": "espn_sports_display", + "packages": [...], + "content_standards_ref": { + "standards_id": "nike_emea_brand_safety", + "agent_url": "https://brandsafety.ias.com" + }, + "artifact_webhook": { + "url": "https://your-platform.com/webhooks/artifacts", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "your-shared-secret-min-32-chars" + }, + "delivery_mode": "batched", + "batch_frequency": "hourly", + "sampling_rate": 0.25 + } +} +``` + +If the publisher cannot fulfill the standards, they should reject the buy. Handle rejections gracefully and find alternative inventory. + +**3. Receive artifacts from sales agents** + +Sales agents push artifacts to your `artifact_webhook` endpoint. Forward them to the governance agent for validation: + +```python +# Receive artifact webhook from sales agent +@app.post("/webhooks/artifacts") +async def receive_artifacts(payload: ArtifactWebhookPayload): + # Forward to governance agent for validation + validation_result = await governance_agent.validate_content_delivery( + standards_id=get_standards_id(payload.media_buy_id), + records=[ + {"artifact": a.artifact, "record_id": a.impression_id} + for a in payload.artifacts + ] + ) + + # Log any failures + for result in validation_result.results: + if any(f.status == "failed" for f in result.features): + log_suitability_incident(payload.media_buy_id, result) + + return {"status": "received", "batch_id": payload.batch_id} +``` + +**4. Report to brands** + +Surface validation results to the brand: +- **Incidents**: Content that didn't meet standards +- **Coverage**: What percentage of delivery was validated +- **Trends**: Changes in content safety over time + +### Implementation Checklist + +- [ ] Facilitate brand setup with governance agents +- [ ] Include `content_standards_ref` in `get_products` and `create_media_buy` requests +- [ ] Configure `artifact_webhook` to receive artifacts from sales agents +- [ ] Handle rejections from publishers who can't fulfill standards +- [ ] Forward artifacts to governance agent via `validate_content_delivery` +- [ ] Build reporting for brands + +--- + +## For Governance Agents + +If you're a governance agent (IAS, DoubleVerify, or brand suitability service), you provide content evaluation as a service. + +### What You Implement + +**1. Host and serve content standards** + +Store standards configurations and expose them via `get_content_standards`: + +```json +// Response to get_content_standards +{ + "standards_id": "nike_emea_brand_safety", + "version": "1.2.0", + "name": "Nike EMEA - all digital channels", + "policies": [ + { "policy_id": "no_violence", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid violence." }, + { "policy_id": "no_adult_themes", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid adult themes." }, + { "policy_id": "prefer_sports_fitness", "policy_categories": ["brand_suitability"], "enforcement": "should", "policy": "Sports and fitness content is ideal." } + ], + "calibration_exemplars": { + "pass": [...], + "fail": [...] + } +} +``` + +**2. Implement `calibrate_content`** + +Sales agents call this to align their local models before campaign execution. They send sample artifacts, you respond with how the brand would rate them: + +```python +def calibrate_content(standards_id: str, artifacts: list) -> dict: + standards = get_standards(standards_id) + evaluations = [] + + for artifact in artifacts: + # Evaluate against brand's policy + result = evaluate_against_policy(artifact, standards) + evaluations.append({ + "artifact_id": artifact["artifact_id"], + "suitable": result.suitable, + "confidence": result.confidence, + "explanation": result.explanation # Help them understand your reasoning + }) + + return {"evaluations": evaluations} +``` + +Calibration is a dialogue - be prepared for follow-up questions and edge cases. + +**3. Implement `validate_content_delivery`** + +Orchestrators call this to validate artifacts after delivery. Batch evaluation at scale: + +```python +def validate_content_delivery(standards_id: str, records: list) -> dict: + standards = get_standards(standards_id) + results = [] + + for record in records: + features = [] + for feature in ["brand_safety", "brand_suitability"]: + evaluation = evaluate_feature(record["artifact"], standards, feature) + features.append({ + "feature_id": feature, + "status": "passed" if evaluation.passed else "failed", + "value": evaluation.value, + "message": evaluation.message if not evaluation.passed else None + }) + results.append({ + "record_id": record["record_id"], + "features": features + }) + + return { + "summary": compute_summary(results), + "results": results + } +``` + +### Implementation Checklist + +- [ ] Implement `create_content_standards` for brands to set up policies +- [ ] Implement `get_content_standards` for sales agents to fetch policies +- [ ] Implement `calibrate_content` for sales agents to align their models +- [ ] Implement `validate_content_delivery` for orchestrators to validate delivery +- [ ] Support dialogue in calibration (follow-up questions, edge cases) + +--- + +## Content Access Pattern + +All three roles may need to exchange content securely. The `content_access` pattern provides authenticated access to a URL namespace: + +```json +{ + "content_access": { + "url_pattern": "https://cache.example.com/*", + "auth": { + "type": "bearer", + "token": "eyJ..." + } + } +} +``` + +- **url_pattern**: URLs matching this pattern use this auth +- **auth.type**: Authentication method (`bearer`, `api_key`, `signed_url`) +- **auth.token**: The credential + +Include this in: +- `get_content_standards` response (governance agent → sales agent: "fetch examples here") +- `get_media_buy_artifacts` response (sales agent → orchestrator: "fetch content here") + +This avoids per-asset tokens and keeps payloads small while enabling secure content exchange. diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/index.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/index.mdx new file mode 100644 index 0000000000..85b7b3767e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/index.mdx @@ -0,0 +1,418 @@ +--- +title: Content Standards +description: "AdCP Content Standards enable privacy-preserving brand suitability evaluation for AI-generated and ephemeral content that cannot leave publisher infrastructure." +"og:title": "AdCP — Content Standards" +sidebarTitle: Overview +--- + +# Content Standards Protocol + +The Content Standards Protocol enables **privacy-preserving brand suitability** for ephemeral and sensitive content that cannot leave a publisher's infrastructure. + +## The Problem + +Traditional brand suitability relies on third-party verification: send your content to IAS or DoubleVerify, they evaluate it, return a verdict. This works for static web pages. It fundamentally cannot work for: + +- **AI-generated content** - ChatGPT responses, DALL-E images that exist only in a user session +- **Private conversations** - Content in messaging apps, private social feeds +- **Ephemeral content** - Stories, live streams, real-time feeds that disappear +- **Privacy-regulated content** - GDPR-protected data that cannot be exported +- **CTV and linear TV** - Ad decisioning in live linear has a sub-second latency budget; there is no room to make a blocking call to a third-party verification service before insertion + +For these platforms, **there is no traditional verification option**. The content simply cannot leave — or cannot wait. OpenAI cannot send user conversations to an external service. A messaging app cannot export private chats. A live broadcaster cannot block insertion on an external API response. + +Yet these are exactly the environments where advertising is growing fastest - and where brands most need suitability guarantees. Without a privacy-preserving approach, brands either avoid these channels entirely or accept unknown risk. + +## The Solution: Calibration-Based Alignment + +Content Standards solves this by **using agents to protect privacy**. It's a three-phase model where no sensitive content ever leaves the publisher's infrastructure: + +| Phase | Where It Runs | What Happens | +|-------|---------------|--------------| +| **1. Calibration** | External (safe data only) | Publisher and verification agent align on policy interpretation using synthetic examples or public samples - no PII, no sensitive content | +| **2. Local Execution** | Inside publisher's walls | Publisher runs evaluation on every impression using a local model trained during calibration - content never leaves | +| **3. Validation** | Statistical sampling | Verification agent audits a sample to detect drift - both parties can verify the system is working without exposing PII | + +This inverts the traditional model. Instead of "send us your content, we'll evaluate it," it's "we'll teach you our standards, you evaluate locally, we'll audit statistically." + +**The key insight**: The execution engine runs entirely inside the publisher's infrastructure. For OpenAI, that means brand suitability evaluation happens within their firewall - user conversations never leave. For a messaging app, it means private content stays private. The calibration and validation phases provide confidence that the local model is working correctly, without ever requiring access to sensitive data. + +**Sellers have full control over how they implement local execution.** A publisher might use a third-party AI vendor, build a custom model, use a rules-based classifier, or apply human editorial review at spot-check scale. What matters is that the implementation is calibrated against the verification agent's standards and that validation samples confirm alignment — the protocol does not mandate how sellers get there. + +## What It Covers + +- **Brand safety** - Is this content safe for *any* brand? (universal thresholds like hate speech, illegal content) +- **Brand suitability** - Is this content appropriate for *my* brand? (brand-specific preferences and tone) + +## Key Concepts + +Content standards evaluation involves four key questions that buyers and sellers negotiate: + +1. **What content?** - What [artifacts](./artifacts) to evaluate (the ad-adjacent content) +2. **How much adjacency?** - How many artifacts around the ad slot to consider +3. **What sampling rate?** - What percentage of traffic to evaluate +4. **How to calibrate?** - How to align on policy interpretation before runtime + +These parameters are negotiated between buyer and seller during product discovery and media buy creation. + +## Workflow + +```mermaid +sequenceDiagram + participant Brand + participant Buyer as Buyer Agent + participant Seller as Seller Agent + participant Verifier as Verification Agent + + Note over Brand,Verifier: 1. SETUP PHASE + Brand->>Verifier: create_content_standards (policy + calibration examples) + Verifier-->>Brand: standards_id + + Note over Brand,Verifier: 2. ACTIVATION PHASE + Brand->>Buyer: "Buy inventory from Reddit, use standards_id X" + Buyer->>Seller: create_media_buy (includes content_standards reference) + + Seller->>Verifier: calibrate_content (sample artifacts) + Verifier-->>Seller: verdict + explanation + Seller->>Verifier: "What about this edge case?" + Verifier-->>Seller: clarification + Note over Seller: Seller builds local model + + Note over Brand,Verifier: 3. RUNTIME PHASE + loop High-volume decisioning + Note over Seller: Local model evaluates artifacts + end + + Buyer->>Seller: get_media_buy_artifacts + Seller-->>Buyer: Content artifacts + Buyer->>Verifier: validate_content_delivery + Verifier-->>Buyer: Validation results +``` + + +**Calibration is required before production use.** Content standards created via `create_content_standards` define what to evaluate, but calibration via [`calibrate_content`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content) aligns the seller's local model with the verification agent's interpretation. Without calibration, the seller's local model produces uncalibrated evaluations — policy violations may go undetected or safe content may be incorrectly blocked. Always calibrate before activating a media buy with content standards. + + +**Key insight**: Runtime decisioning happens locally at the seller (for scale). Buyers pull content samples from sellers and validate against the verification agent. + +## Adjacency + +How much content around the ad slot should be evaluated? + +| Context | Adjacency Examples | +|---------|-------------------| +| **News article** | The article where the ad appears | +| **Social feed** | 1-2 posts above and below the ad slot | +| **Podcast** | The segment before and after the ad break | +| **CTV** | 1-2 scenes before and after the ad pod | +| **Infinite scroll** | Posts within the visible viewport | + +Adjacency requirements are defined by the seller in their product catalog (`get_products`). The buyer can filter products based on adjacency guarantees: + +```json +{ + "product_id": "reddit_feed_standard", + "content_standards_adjacency_definition": { + "before": 2, + "after": 2, + "unit": "posts" + } +} +``` + +### Adjacency Units + +| Unit | Use Case | +|------|----------| +| `posts` | Social feeds, forums, comment threads | +| `scenes` | CTV, streaming video content | +| `segments` | Podcasts, audio content | +| `seconds` | Time-based adjacency in video/audio | +| `viewports` | Infinite scroll contexts | +| `articles` | News sites, content aggregators | + +Different products may offer different adjacency guarantees at different price points. + +## Sampling Rate + +What percentage of traffic should be evaluated by the verification agent? + +| Rate | Use Case | +|------|----------| +| **100%** | Premium brand suitability - every impression validated | +| **10-25%** | Standard monitoring - statistical confidence | +| **1-5%** | Spot checking - drift detection only | + +Sampling rate is negotiated in the media buy: + +```json +{ + "governance": { + "content_standards": { + "agent_url": "https://safety.ias.com/adcp", + "standards_id": "nike_brand_safety", + "sampling_rate": 0.25 + } + } +} +``` + +Higher sampling rates typically cost more but provide stronger guarantees. The seller is responsible for implementing the agreed sampling rate and reporting actual coverage. Buyers retrieve collected artifacts via [get_media_buy_artifacts](./tasks/get_media_buy_artifacts) (pull) or receive them via `artifact_webhook` (push) — both deliver artifacts sampled per the buy agreement. + +## Validation Thresholds + +When a seller calibrates their local model against a verification agent, there's an expected drift - the local model won't match the verification agent 100% of the time. **Validation thresholds** define acceptable drift between local execution and validation samples. + +Sellers advertise their content safety capabilities in their product catalog: + +```json +{ + "product_id": "reddit_feed_premium", + "content_standards": { + "validation_threshold": 0.95, + "validation_threshold_description": "Local model matches verification agent 95% of the time" + } +} +``` + +| Threshold | Meaning | +|-----------|---------| +| **0.99** | Premium - local model is 99% aligned with verification agent | +| **0.95** | Standard - local model is 95% aligned | +| **0.90** | Budget - local model is 90% aligned | + +**This is a contractual guarantee.** If the seller's validation results show more drift than the advertised threshold, buyers can expect remediation (makegoods, refunds, etc.) just like any other delivery discrepancy. + +The threshold answers the key buyer question: "If I accept your local model, how confident can I be that you're enforcing my standards correctly?" + +## Policies + +Content Standards uses **addressable policies** — an array of policy entries, each with a `policy_id`, enforcement level, and natural-language policy text. Policies embedded in AdCP task payloads are inline; registry-published policies use the same policy-entry shape but are served through the policy registry. Validation findings reference `policy_id` to identify which policy triggered: + +### Policy fields + +| Field | Required | Description | +|---|---|---| +| `policy_id` | Yes | Unique policy identifier. Registry IDs are canonical; buyer-authored IDs are unique within their containing standards configuration, plan, or portfolio. | +| `enforcement` | Yes | Violation handling: `must` rejects, `should` warns without blocking, and `may` records informational results. | +| `policy` | Yes | Natural-language requirement, prohibition, or recommendation evaluated by the governance agent. | +| `source` | No | Policy origin: `registry` or `inline` (the default). Policies embedded in task payloads are inline. | +| `version` | No | Semantic version of the policy text; inline policies default to `1.0.0`. | +| `name` | No | Human-readable policy name. | +| `description` | No | Brief summary of the policy, up to 500 characters. | +| `category` | No | Whether the obligation is a `regulation` or a `standard`. | +| `requires_human_review` | No | Whether plans resolved against the policy require human review. Defaults to `false`. | +| `jurisdictions` | No | ISO 3166-1 alpha-2 country codes where the policy applies. | +| `region_aliases` | No | Named jurisdiction groups used when matching the policy to a plan. | +| `policy_categories` | No | One or more regulatory or suitability categories used for automatic matching. | +| `channels` | No | Advertising channels to which the policy applies; omission means all channels. | +| `governance_domains` | No | Governance agent domains that can evaluate the policy. | +| `effective_date` | No | ISO 8601 date when enforcement begins; before this date findings are informational. | +| `sunset_date` | No | ISO 8601 date after which the policy is no longer evaluated. | +| `source_url` | No | Link to the source regulation, standard, or legislation. | +| `source_name` | No | Name of the issuing body. | +| `guidance` | No | Implementation notes for governance-agent developers; not included in evaluation prompts. | +| `exemplars` | No | Structured `pass` and `fail` scenarios used to calibrate policy interpretation. | +| `ext` | No | Vendor-namespaced extension data for partner-specific metadata. | + +Policy entries are closed objects: fields outside this table fail schema validation rather than being silently ignored. Put partner-specific, buyer-visible metadata under a vendor key in `ext` (for example, `ext.acme`) instead of adding sibling fields or encoding structured metadata inside the natural-language `policy` value. + +```json +{ + "policies": [ + { "policy_id": "no_violence", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid content depicting violence, weapons, or physical aggression." }, + { "policy_id": "no_controversial_politics", "policy_categories": ["brand_suitability"], "enforcement": "must", "policy": "Avoid controversial political content." }, + { "policy_id": "no_adult_themes", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid adult, sexual, or mature themes." }, + { "policy_id": "no_hate_speech", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Block hate speech and illegal activities." }, + { "policy_id": "no_sedentary_glorification", "policy_categories": ["brand_suitability"], "enforcement": "should", "policy": "Avoid content that portrays sedentary lifestyle positively." } + ], + "calibration_exemplars": { + "pass": [ + { + "property_id": {"type": "domain", "value": "espn.com"}, + "artifact_id": "nba_championship_recap_2024", + "assets": [{"type": "text", "role": "title", "content": "Championship Game Recap"}] + } + ], + "fail": [ + { + "property_id": {"type": "domain", "value": "tabloid.example.com"}, + "artifact_id": "scandal_story_123", + "assets": [{"type": "text", "role": "title", "content": "Celebrity Scandal Exposed"}] + } + ] + } +} +``` + +The policy prompt enables AI-powered verification agents to understand context and nuance. **Calibration** examples provide a training/test set that helps the agent interpret the policy correctly. + +See [Artifacts](./artifacts) for details on artifact structure and secured asset access. + +## Updating policies + +[`update_content_standards`](./tasks/update_content_standards) updates the supplied scope, registry policy references, bespoke policies, or calibration exemplars for an existing `standards_id`. A supplied `policies` array replaces the existing bespoke policies. Keep each `policy_id` stable across updates so findings and audit records continue to identify the same rule. Use the optional policy-level `version` when consumers need to distinguish revisions of that rule's text. + +The current wire schemas do not define configuration-level version semantics, a policy-level `evaluation_mode`, or media-buy behavior for pinning and adopting later standards revisions. Policy entries accept `version` for revisions of that rule's text, but their closed schema rejects `evaluation_mode`. Unknown configuration or media-buy controls have no interoperable AdCP meaning even where a containing schema permits additional properties. Deployments that require partner-specific revision or mid-flight adoption controls can exchange them under the vendor-namespaced `ext` object, but those controls are outside the interoperable AdCP contract. + +## Scoped Standards + +Buyers typically maintain multiple standards configurations for different contexts - UK TV campaigns have different regulations than US display, and children's brands need stricter safety than adult beverages. + +```json +{ + "standards_id": "uk_tv_zero_calorie", + "name": "UK TV - zero-calorie brands", + "countries_all": ["GB"], + "channels_any": ["ctv", "linear_tv"], + "languages_any": ["en"] +} +``` + + +**Code Format Conventions** + +Country and language codes are **case-insensitive** - implementations must normalize before comparison. Recommended formats follow ISO standards: +- **Countries**: Uppercase ISO 3166-1 alpha-2 (e.g., `GB`, `US`, `DE`) +- **Languages**: Lowercase ISO 639-1 or BCP 47 (e.g., `en`, `de`, `fr`) + + +**The buyer selects the appropriate `standards_id` when creating a media buy.** The seller receives a reference to the resolved standards - they don't need to do scope matching themselves. + +## Calibration + +Before running campaigns, sellers calibrate their local models against the verification agent. This is a **dialogue-based process** that may involve human review on either side: + +1. Seller sends sample artifacts to the verification agent +2. Verification agent returns verdicts with detailed explanations +3. Seller asks follow-up questions about edge cases +4. Process repeats until alignment is achieved + +When a seller surfaces an edge case the verification agent does not handle well, that's signal to the buyer to improve their standards — refining the policy language or adding calibration exemplars. The calibration dialogue is also how publishers communicate what they actually see in their inventory, which is often more nuanced than the policy anticipated. Buyers who revisit calibration periodically get ongoing signal from publishers about real-world inventory nuance. + +**Human-in-the-loop**: Calibration often involves humans on both sides. A brand suitability specialist at the buyer might review edge cases flagged by the verification agent. A content operations team at the seller might curate calibration samples and validate the local model's learning. The protocol supports async workflows where either party can pause for human review before responding. + +```json +// Seller: "Does this pass?" +{ + "artifact": { + "property_id": {"type": "domain", "value": "reddit.com"}, + "artifact_id": "r_news_politics_123", + "assets": [{"type": "text", "role": "title", "content": "Political News Article"}] + } +} + +// Verification agent: "No, because..." +{ + "verdict": "fail", + "explanation": "Political content is excluded by brand policy, even when balanced.", + "features": [ + { + "feature_id": "brand_safety", + "status": "passed", + "explanation": "No hate speech, illegal content, or explicit material." + }, + { + "feature_id": "brand_suitability", + "status": "failed", + "explanation": "Political content is excluded by brand policy, even when balanced." + } + ] +} +``` + +Verdicts are **legible and auditable**, not opaque scores. The top-level `explanation` and per-feature `features[].explanation` fields tell the seller exactly which policy clause was triggered and why — not just a number. This means a publisher can understand decisions, dispute edge cases, and adjust how they classify content. Buyers can audit a sample of verdicts to verify their standards are being interpreted correctly. + +See [calibrate_content](./tasks/calibrate_content) for the full task specification. + +## Tasks + +### Discovery + +| Task | Description | +|------|-------------| +| [list_content_standards](./tasks/list_content_standards) | List available standards configurations | +| [get_content_standards](./tasks/get_content_standards) | Retrieve a specific standards configuration | + +### Management + +| Task | Description | +|------|-------------| +| [create_content_standards](./tasks/create_content_standards) | Create a new standards configuration | +| [update_content_standards](./tasks/update_content_standards) | Update an existing standards configuration | + +### Calibration & Validation + +| Task | Description | +|------|-------------| +| [calibrate_content](./tasks/calibrate_content) | Collaborative dialogue to align on policy interpretation | +| [get_media_buy_artifacts](./tasks/get_media_buy_artifacts) | Retrieve content artifacts from a media buy | +| [validate_content_delivery](./tasks/validate_content_delivery) | Batch validation of content artifacts | + +## Future: Secure Enclaves + +The current model trusts the publisher to faithfully implement the calibrated standards. A future evolution uses **secure enclaves** (Trusted Execution Environments / TEEs) to provide cryptographic guarantees: + +```mermaid +flowchart TB + subgraph VS["Verification Service"] + Models["Models & Calibration Data"] + Results["Aggregate Results"] + end + + subgraph PUB["Publisher Infrastructure"] + subgraph TEE["Secure Enclave (TEE)"] + Agent["Containerized
Governance Agent"] + end + Content["Content Artifacts"] + end + + Models -->|"Pinhole IN:
models, policy, examples"| Agent + Agent -->|"Pinhole OUT:
pass rates, drift metrics"| Results + Content -->|"evaluate"| Agent + Agent -->|"pass/fail verdict"| Content + + style TEE fill:#e8f5e9,stroke:#4caf50 + style Agent fill:#c8e6c9,stroke:#388e3c + style PUB fill:#fafafa,stroke:#9e9e9e +``` + +**Content never crosses the pinhole** - only models flow in, only aggregates flow out. + +### The Pinhole Interface + +The enclave maintains a narrow, well-defined interface to the verification service: + +**Inbound (verification service → enclave):** +- Updated brand suitability models +- Policy changes and calibration exemplars +- Configuration updates + +**Outbound (enclave → verification service):** +- Aggregated validation results (pass rates, drift metrics) +- Statistical summaries +- Attestation proofs + +**Never crosses the boundary:** +- Raw content artifacts +- User data or PII +- Individual impression-level data + +This pinhole is the interface that needs standardization - it defines exactly what flows in and out while keeping sensitive content locked inside the publisher's walls. + +### Why This Matters + +- **Publisher** hosts a secure enclave inside their infrastructure +- **Governance agent** (from IAS, DoubleVerify, etc.) runs as a container within the enclave +- **Content** flows into the enclave for evaluation but never leaves the publisher's walls +- **Both parties** can verify the governance code is running unmodified via attestation +- **Models stay current** - the enclave can receive updates without exposing content + +This provides the same privacy guarantees as local execution, but with cryptographic proof that the correct algorithm is running. The brand knows their standards are being enforced faithfully. The publisher proves compliance without exposing content. + +This architecture aligns with the [IAB Tech Lab ARTF (Agentic RTB Framework)](https://iabtechlab.com/standards/artf/), which defines how service providers can package offerings as containers deployed into host infrastructure. ARTF enables hosts to "provide greater access to data and more interaction opportunities to service agents without concerns about leakage, misappropriation or latency" - exactly the model Content Standards requires for privacy-preserving brand suitability. + +## Related + +- [Artifacts](./artifacts) - What artifacts are and how to structure them +- [Brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) - Brand identity that can link to standards agents diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content.mdx new file mode 100644 index 0000000000..c413108f16 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content.mdx @@ -0,0 +1,254 @@ +--- +title: calibrate_content +description: "calibrate_content aligns buyers and sellers on brand suitability standards through structured dialogue before AdCP campaign execution begins." +"og:title": "AdCP — calibrate_content" +--- + +# calibrate_content + +Collaborative calibration task for aligning on content standards interpretation. Used during setup to help sellers understand and internalize a buyer's content policies before campaign execution. + +Unlike high-volume runtime evaluation, calibration is a **dialogue-based process** where parties exchange examples and explanations until aligned. + +## When to Use + +- **Seller onboarding**: When a seller first receives content standards from a buyer +- **Policy clarification**: When a seller needs to understand why specific content passes or fails +- **Model training**: When building a local model to run against the standards +- **Drift detection**: Periodic re-calibration to ensure continued alignment + +## Request + +**Schema**: [calibrate-content-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/calibrate-content-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `standards_id` | string | Yes | Standards configuration to calibrate against | +| `artifact` | artifact | Yes | Artifact to evaluate | + +### Artifact + +**Schema**: [artifact.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/artifact.json) + +An artifact represents content context where ad placements occur - identified by `property_rid` + `artifact_id` and represented as a collection of assets: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/artifact.json", + "property_rid": "01916f3a-a1d3-7000-8000-000000000040", + "artifact_id": "r_fitness_abc123", + "assets": [ + {"type": "text", "role": "title", "content": "Best protein sources for muscle building", "language": "en"}, + {"type": "text", "role": "paragraph", "content": "Looking for recommendations on high-quality protein sources for recovery", "language": "en"}, + {"type": "text", "role": "paragraph", "content": "I've been lifting for 6 months and want to optimize my diet.", "language": "en"}, + {"type": "image", "url": "https://cdn.reddit.com/fitness-image.jpg", "alt_text": "Person lifting weights"} + ] +} +``` + +## Response + +**Schema**: [calibrate-content-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/calibrate-content-response.json) + +### Passing Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/calibrate-content-response.json", + "status": "completed", + "verdict": "pass", + "explanation": "This content aligns well with the brand's fitness-focused positioning. Health and fitness content is explicitly marked as 'ideal' in the policy. The discussion is constructive and educational.", + "features": [ + { + "feature_id": "brand_safety", + "status": "passed", + "explanation": "No safety concerns. Content is user-generated but constructive fitness discussion." + }, + { + "feature_id": "brand_suitability", + "status": "passed", + "explanation": "Fitness content matches brand's athletic positioning." + } + ] +} +``` + +### Failing Response with Detailed Explanation + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/calibrate-content-response.json", + "status": "completed", + "verdict": "fail", + "explanation": "This content discusses political topics which the policy explicitly excludes. While the article itself is balanced journalism, the brand has requested to avoid all controversial political content regardless of tone.", + "features": [ + { + "feature_id": "brand_safety", + "status": "passed", + "explanation": "No hate speech, illegal content, or explicit material." + }, + { + "feature_id": "brand_suitability", + "status": "failed", + "explanation": "Political content is excluded by brand policy, even when balanced." + } + ] +} +``` + +### Response Fields + +| Field | Required | Description | +|-------|----------|-------------| +| `verdict` | Yes | Overall `pass` or `fail` decision | +| `explanation` | No | Detailed natural language explanation of the decision | +| `features` | No | Per-feature breakdown with explanations | +| `confidence` | No | Model confidence in the verdict (0-1), when available | + +## Dialogue Flow + +Calibration supports a sequence of typed evaluations using A2A conversation +correlation. Each turn remains a complete `calibrate_content` invocation; a +`contextId` groups the evaluations but does not make free text authoritative. + +### A2A Example + +```javascript +// Seller sends artifact to evaluate +const response1 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "calibrate_content", + input: { + idempotency_key: crypto.randomUUID(), + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_news_politics_123", + assets: [ + { type: "text", role: "title", content: "Political News Article" } + ] + } + } + } + }] + } +}); +// Response: verdict=fail with feature breakdown + +// Seller tests a more explicitly balanced version in the same context. +const response2 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + contextId: response1.contextId, + role: "ROLE_USER", + parts: [{ + data: { + skill: "calibrate_content", + input: { + idempotency_key: crypto.randomUUID(), + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_news_balanced_124", + assets: [ + { type: "text", role: "title", content: "Balanced Political News Analysis" } + ] + } + } + } + }] + } +}); +// Verification agent still reports the policy boundary through typed output. + +// Seller tries different artifact +const response3 = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + contextId: response1.contextId, + role: "ROLE_USER", + parts: [{ + data: { + skill: "calibrate_content", + input: { + idempotency_key: crypto.randomUUID(), + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_running_tips_456", + assets: [ + { type: "text", role: "title", content: "Running Tips" } + ] + } + } + } + }] + } +}); +// Response: verdict=pass - now seller understands the boundaries +``` + +### MCP Example + +```javascript +// Initial calibration request +const response1 = await mcp.call('calibrate_content', { + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_news_politics_123", + assets: [ + { type: "text", role: "title", content: "Political News Article" } + ] + } +}); +// Response includes context_id for conversation continuity + +// Continue dialogue with follow-up question +const response2 = await mcp.call('calibrate_content', { + context_id: response1.context_id, + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_news_politics_123", + assets: [ + { type: "text", role: "title", content: "Political News Article" } + ] + } +}); +// Include text message in the protocol envelope asking about balanced journalism + +// Try different artifact in same conversation +const response3 = await mcp.call('calibrate_content', { + context_id: response1.context_id, + standards_id: "nike_brand_safety", + artifact: { + property_rid: "01916f3a-a1d3-7000-8000-000000000040", + artifact_id: "r_running_tips_456", + assets: [ + { type: "text", role: "title", content: "Running Tips" } + ] + } +}); +``` + +The key insight is that the dialogue happens at the **protocol layer**, not the task layer. The verification agent maintains conversation context and can respond to follow-up questions, disagreements, or requests for clarification - just like any agent-to-agent conversation. + +## Calibration vs Runtime + +| Aspect | calibrate_content | Runtime (local model) | +|--------|-------------------|----------------------| +| **Purpose** | Alignment & understanding | High-volume decisioning | +| **Volume** | Low (setup/periodic) | High (every impression) | +| **Response** | Verbose explanations | Pass/fail only | +| **Latency** | Seconds acceptable | Milliseconds required | +| **Dialogue** | Multi-turn conversation | Stateless | + +## Related Tasks + +- [get_content_standards](./get_content_standards) - Retrieve the policies being calibrated against +- [validate_content_delivery](./validate_content_delivery) - Post-campaign delivery validation diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards.mdx new file mode 100644 index 0000000000..35d95d6d04 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards.mdx @@ -0,0 +1,127 @@ +--- +title: create_content_standards +description: "create_content_standards defines a brand suitability configuration with content policies, risk thresholds, and category rules for AdCP campaigns." +"og:title": "AdCP — create_content_standards" +--- + +# create_content_standards + +Create a new content standards configuration. + +**Response time**: < 1s + +## Request + +**Schema**: [create-content-standards-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/create-content-standards-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `scope` | object | Yes | Where this standards configuration applies (must include `languages_any`) | +| `policies` | PolicyEntry[] | One-of | Bespoke policies, same shape as registry entries. Each has `{policy_id, enforcement, policy, ...optional: version/name/category/policy_categories/channels/jurisdictions/exemplars}`. At least one of `policies` or `registry_policy_ids` is required. | +| `registry_policy_ids` | string[] | One-of | References to shared policies in the registry. Combines with `policies` when both are provided. At least one of `policies` or `registry_policy_ids` is required. | +| `calibration_exemplars` | object | No | Training set of pass/fail artifacts for calibration | + + +**Brand Safety Floor Requirement** + +Implementors MUST apply a brand safety floor regardless of what policy is defined in content standards. Content that violates the floor (hate speech, illegal content, etc.) must be excluded even when no content standards are specified. AdCP does not define the floor specification; this is left to implementors and industry standards (e.g., GARM categories). + + +### Example Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/create-content-standards-request.json", + "idempotency_key": "a9b0c1d2-e3f4-4567-a890-567890123456", + "scope": { + "countries_all": ["GB", "DE", "FR"], + "channels_any": ["display", "olv", "ctv"], + "languages_any": ["en", "de", "fr"], + "description": "EMEA - all digital channels" + }, + "policies": [ + { + "policy_id": "no_violence", + "policy_categories": ["brand_safety"], + "enforcement": "must", + "policy": "Avoid content depicting violence, weapons, or physical aggression." + }, + { + "policy_id": "no_controversial_politics", + "policy_categories": ["brand_suitability"], + "enforcement": "must", + "policy": "Avoid controversial political content and ongoing partisan disputes." + }, + { + "policy_id": "no_adult_themes", + "policy_categories": ["brand_safety"], + "enforcement": "must", + "policy": "Avoid adult, sexual, or mature themes." + }, + { + "policy_id": "no_sedentary_glorification", + "policy_categories": ["brand_suitability"], + "enforcement": "should", + "policy": "Avoid content that portrays sedentary lifestyle positively; conflicts with brand positioning." + } + ], + "calibration_exemplars": { + "pass": [ + { "type": "url", "value": "https://espn.com/nba/story/_/id/12345/lakers-championship", "language": "en" }, + { "type": "url", "value": "https://healthline.com/fitness/cardio-workout", "language": "en" } + ], + "fail": [ + { "type": "url", "value": "https://tabloid.example.com/celebrity-scandal", "language": "en" }, + { "type": "url", "value": "https://news.example.com/controversial-politics-article", "language": "en" } + ] + } +} +``` + +## Response + +**Schema**: [create-content-standards-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/create-content-standards-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/create-content-standards-response.json", + "status": "completed", + "standards_id": "emea_digital_safety" +} +``` + +### Error Responses + +**Scope Conflict:** + +```json +{ + "errors": [ + { + "code": "SCOPE_CONFLICT", + "message": "Standards already exist for country 'DE' on channel 'display'", + "conflicting_standards_id": "emea_digital_safety" + } + ] +} +``` + +## Scope Conflict Handling + +Multiple standards cannot have overlapping scopes for the same country/channel/language combination. When creating standards that would conflict: + +1. **Check existing standards** - Use [list_content_standards](./list_content_standards) filtered by your scope +2. **Update rather than create** - If standards already exist, use [update_content_standards](./update_content_standards) +3. **Narrow the scope** - Adjust countries or channels to avoid overlap + +## Related Tasks + +- [list_content_standards](./list_content_standards) - List all configurations +- [update_content_standards](./update_content_standards) - Update a configuration +- [calibrate_content](./calibrate_content) - Calibrate seller's local model against these standards + + +**Calibrate before production use.** After creating content standards, sellers MUST calibrate their local evaluation models via [`calibrate_content`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content) before using the standards in production. Uncalibrated standards produce inconsistent evaluations — the verification agent and the seller's local model may interpret the same policy differently without alignment. See the [Calibration section](/dist/docs/3.2.0-beta.4/governance/content-standards/index#calibration) for the full workflow. + diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards.mdx new file mode 100644 index 0000000000..1ba382e2c3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards.mdx @@ -0,0 +1,88 @@ +--- +title: get_content_standards +description: "get_content_standards retrieves the full content safety policy configuration for a specific standards ID in AdCP." +"og:title": "AdCP — get_content_standards" +--- + +# get_content_standards + +Retrieve content safety policies for a specific standards configuration. + +## Request + +**Schema**: [get-content-standards-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/get-content-standards-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `standards_id` | string | Yes | Identifier for the standards configuration | + +## Response + +**Schema**: [get-content-standards-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/get-content-standards-response.json) + +### Success Response + +```json +{ + "standards_id": "emea_digital_safety", + "name": "EMEA - all digital channels", + "countries_all": ["GB", "DE", "FR"], + "channels_any": ["display", "olv", "ctv"], + "languages_any": ["en", "de", "fr"], + "policies": [ + { "policy_id": "no_violence", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid content depicting violence, weapons, or physical aggression." }, + { "policy_id": "no_controversial_politics", "policy_categories": ["brand_suitability"], "enforcement": "must", "policy": "Avoid controversial political content." }, + { "policy_id": "no_adult_themes", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Avoid adult, sexual, or mature themes." }, + { "policy_id": "no_hate_speech", "policy_categories": ["brand_safety"], "enforcement": "must", "policy": "Block hate speech and illegal activities." }, + { "policy_id": "no_athlete_disparagement", "policy_categories": ["brand_suitability"], "enforcement": "must", "policy": "Block content disparaging athletes." }, + { "policy_id": "no_sedentary_glorification", "policy_categories": ["brand_suitability"], "enforcement": "should", "policy": "Avoid content that portrays sedentary lifestyle positively." } + ], + "calibration_exemplars": { + "pass": [ + { "type": "url", "value": "https://espn.com/nba/story/_/id/12345/lakers-championship", "language": "en" }, + { "type": "url", "value": "https://healthline.com/fitness/cardio-workout", "language": "en" } + ], + "fail": [ + { "type": "url", "value": "https://tabloid.example.com/celebrity-scandal", "language": "en" }, + { "type": "url", "value": "https://news.example.com/controversial-politics-article", "language": "en" } + ] + } +} +``` + +### Fields + +| Field | Description | +|-------|-------------| +| `standards_id` | Unique identifier for this standards configuration | +| `name` | Human-readable name | +| `countries_all` | ISO 3166-1 alpha-2 country codes (case-insensitive, uppercase recommended) - standards apply in ALL listed countries | +| `channels_any` | Ad channels - standards apply to ANY of the listed channels | +| `languages_any` | ISO 639-1 or BCP 47 language tags (case-insensitive, lowercase recommended) - standards apply to content in ANY of these languages | +| `policy` | Natural language policy describing acceptable and unacceptable content contexts | +| `calibration_exemplars` | Training/test set of content contexts (pass/fail) to calibrate policy interpretation | + + +**Brand Safety Floor Requirement** + +Implementors MUST apply a brand safety floor regardless of what policy is defined. AdCP does not define the floor specification. + + +### Error Response + +```json +{ + "errors": [ + { + "code": "REFERENCE_NOT_FOUND", + "field": "standards_id", + "message": "Referenced resource does not exist or is not accessible" + } + ] +} +``` + +## Related Tasks + +- [calibrate_content](./calibrate_content) - Collaborative calibration against these standards +- [list_content_standards](./list_content_standards) - List available standards configurations diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts.mdx new file mode 100644 index 0000000000..c87e559afb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts.mdx @@ -0,0 +1,286 @@ +--- +title: get_media_buy_artifacts +description: "get_media_buy_artifacts retrieves content context records from a media buy for post-delivery brand suitability validation in AdCP." +"og:title": "AdCP — get_media_buy_artifacts" +--- + +# get_media_buy_artifacts + +Retrieve content artifacts from a media buy for validation. This is separate from [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) which returns performance metrics - artifacts contain the actual content (text, images, video) where ads were placed. + +**Response time**: < 5s (batch of 1,000 artifacts) + +## Data Flow + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant Seller as Seller Agent + participant Verifier as Verification Agent + + Buyer->>Seller: get_media_buy_artifacts + Seller-->>Buyer: Collected artifacts + Buyer->>Verifier: validate_content_delivery + Verifier-->>Buyer: Validation results +``` + +The buyer retrieves artifacts the seller has collected per the sampling configuration agreed at buy creation time. Sellers may also push artifacts via webhook — `get_media_buy_artifacts` is the pull-based alternative. The buyer forwards artifacts to the verification agent for validation. + +## Request + +**Schema**: [get-media-buy-artifacts-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/get-media-buy-artifacts-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. Only returns artifacts for media buys belonging to this account. When omitted, returns artifacts across all accessible accounts. | +| `media_buy_id` | string | Yes | Media buy to get artifacts from | +| `package_ids` | array | No | Filter to specific packages | +| `failures_only` | boolean | No | Only return artifacts where the seller's local model returned `local_verdict: "fail"` (see [behavior with unevaluated records](#failures_only-and-unevaluated-records)) | +| `time_range` | object | No | Filter to specific time period | +| `pagination` | object | No | Pagination parameters (see below) | + + +**Sampling is configured at buy creation time**, not at retrieval time. The sampling rate, method, and per-channel configuration are part of the media buy's `governance.content_standards` agreement. `get_media_buy_artifacts` retrieves artifacts that the seller has already collected per that agreement. For push-based delivery, configure `artifact_webhook` in [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). + + +### Pagination + +Uses higher limits than standard pagination because artifact result sets can be very large. + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `pagination.max_results` | integer | 1000 | Maximum artifacts per page (1-10,000) | +| `pagination.cursor` | string | - | Opaque cursor from a previous response | + +## Response + +**Schema**: [get-media-buy-artifacts-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/get-media-buy-artifacts-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/get-media-buy-artifacts-response.json", + "status": "completed", + "media_buy_id": "mb_nike_reddit_q1", + "artifacts": [ + { + "record_id": "imp_12345", + "timestamp": "2025-01-15T10:30:00Z", + "package_id": "pkg_feed_standard", + "artifact": { + "property_rid": "01916f3a-a1d3-7000-8000-000000000040", + "artifact_id": "r_fitness_abc123", + "assets": [ + {"type": "text", "role": "title", "content": "Best protein sources for muscle building", "language": "en"}, + {"type": "text", "role": "paragraph", "content": "Looking for recommendations on high-quality protein sources for recovery", "language": "en"}, + {"type": "image", "url": "https://cdn.reddit.com/fitness-image.jpg", "alt_text": "Person lifting weights"} + ] + }, + "country": "US", + "channel": "social", + "brand_context": {"brand_id": "nike_global", "sku_id": "air_max_2025"}, + "local_verdict": "pass" + }, + { + "record_id": "imp_12346", + "timestamp": "2025-01-15T10:35:00Z", + "package_id": "pkg_feed_standard", + "artifact": { + "property_rid": "01916f3a-a1d3-7000-8000-000000000040", + "artifact_id": "r_news_politics_456", + "assets": [ + {"type": "text", "role": "title", "content": "Election Results Analysis", "language": "en"}, + {"type": "text", "role": "paragraph", "content": "The latest polling data shows a tight race between candidates", "language": "en"} + ] + }, + "country": "US", + "channel": "social", + "brand_context": {"brand_id": "nike_global", "sku_id": "air_max_2025"}, + "local_verdict": "fail" + } + ], + "collection_info": { + "total_deliveries": 100000, + "total_collected": 1000, + "returned_count": 1000, + "effective_rate": 0.01 + }, + "pagination": { + "cursor": "eyJvZmZzZXQiOjEwMDB9", + "has_more": true + } +} +``` + +### Response Fields + +| Field | Description | +|-------|-------------| +| `artifacts` | Array of delivery records with full artifact content | +| `artifacts[].country` | ISO 3166-1 alpha-2 country code where delivery occurred | +| `artifacts[].channel` | Channel type (display, olv, ctv, podcast, social, etc.) | +| `artifacts[].brand_context` | Brand/SKU information for policy evaluation (schema TBD) | +| `artifacts[].local_verdict` | Seller's local model verdict (pass/fail/unevaluated) | +| `collection_info` | Artifact collection statistics — what the seller collected per the buy agreement | +| `pagination` | Cursor for fetching more results | + +## Use Cases + +### Validate Collected Artifacts + +```python +# Get artifacts from seller (sampling was configured at buy creation time) +artifacts_response = seller_agent.get_media_buy_artifacts( + media_buy_id="mb_nike_reddit_q1" +) + +# Convert to validation records +records = [ + { + "record_id": a["record_id"], + "timestamp": a["timestamp"], + "media_buy_id": artifacts_response["media_buy_id"], + "artifact": a["artifact"], + "country": a.get("country"), + "channel": a.get("channel"), + "brand_context": a.get("brand_context") + } + for a in artifacts_response["artifacts"] +] + +# Validate against verification agent +validation = verification_agent.validate_content_delivery( + standards_id="nike_brand_safety", + records=records +) + +# Check for drift between local and verified verdicts +for i, result in enumerate(validation["results"]): + local = artifacts_response["artifacts"][i]["local_verdict"] + verified = result["verdict"] + if local != verified: + print(f"Drift detected: {result['record_id']} - local={local}, verified={verified}") +``` + +### Focus on Local Failures + +```python +# Get only artifacts that failed local evaluation +failures = seller_agent.get_media_buy_artifacts( + media_buy_id="mb_nike_reddit_q1", + failures_only=True, + pagination={"max_results": 100} +) + +# Verify these were correctly flagged +validation = verification_agent.validate_content_delivery( + standards_id="nike_brand_safety", + records=[{"record_id": a["record_id"], "artifact": a["artifact"]} + for a in failures["artifacts"]] +) + +# Check false positive rate +false_positives = sum(1 for r in validation["results"] if r["verdict"] == "pass") +print(f"False positive rate: {false_positives / len(failures['artifacts']):.1%}") +``` + +## failures_only and Unevaluated Records + +When a seller does not run a local evaluation model, all records have `local_verdict: "unevaluated"`. In this case, `failures_only` returns an empty result set — there are no failures to return. + +Governance agents receiving validation results where every `local_verdict` is `"unevaluated"` should treat this as **no local enforcement**. The validation still works — the verification agent evaluates the artifacts normally — but there is no drift comparison to perform. Buyers can check `content_standards.supports_local_evaluation` in [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#content_standards) to know whether `failures_only` will be useful before creating a buy. + +| `local_verdict` | `failures_only` returns? | Drift comparison possible? | +|-----------------|--------------------------|---------------------------| +| `fail` | Yes | Yes | +| `pass` | No | N/A (not in result set) | +| `unevaluated` | No | No — omit `failures_only` to retrieve all collected artifacts | + +## Non-Web Artifact Examples + +### Podcast + +```json +{ + "record_id": "imp_podcast_001", + "timestamp": "2025-02-10T08:00:00Z", + "package_id": "pkg_mid_roll", + "artifact": { + "property_id": {"type": "apple_podcast_id", "value": "1234567890"}, + "artifact_id": "episode_42_segment_3", + "assets": [ + {"type": "text", "role": "title", "content": "The Future of Running Shoes", "language": "en"}, + {"type": "audio", "url": "https://cdn.example.com/secured/ep42_seg3.mp3", "transcript": "Today we're talking to Dr. Chen about biomechanics research and how it's changing shoe design for marathon runners...", "duration_ms": 480000} + ], + "metadata": { + "json_ld": [{"@type": "PodcastEpisode", "episodeNumber": 42, "name": "The Future of Running Shoes"}] + } + }, + "country": "US", + "channel": "podcast", + "brand_context": {"brand_id": "nike_global", "sku_id": "vaporfly_next"}, + "local_verdict": "pass" +} +``` + +### CTV + +```json +{ + "record_id": "imp_ctv_001", + "timestamp": "2025-02-10T20:15:00Z", + "package_id": "pkg_premium_ctv", + "artifact": { + "property_id": {"type": "app_id", "value": "com.streamingservice.tv"}, + "artifact_id": "show_running_s2e5_scene_14", + "assets": [ + {"type": "text", "role": "title", "content": "Championship Race - Final Stretch", "language": "en"}, + {"type": "video", "url": "https://cdn.streaming.example.com/secured/s2e5_scene14.mp4", "transcript": "The runners round the final corner as the crowd erupts. Commentary: 'And she's pulling ahead now, this is going to be close...'", "duration_ms": 120000} + ] + }, + "country": "US", + "channel": "ctv", + "brand_context": {"brand_id": "nike_global"}, + "local_verdict": "pass" +} +``` + +### AI-Generated Content + +```json +{ + "record_id": "imp_ai_001", + "timestamp": "2025-02-10T14:22:00Z", + "package_id": "pkg_conversational", + "artifact": { + "property_id": {"type": "domain", "value": "chat.example.com"}, + "artifact_id": "session_x7k9_turn_15", + "assets": [ + {"type": "text", "role": "paragraph", "content": "Based on your training schedule, I'd recommend increasing your long run distance by 10% each week. Here's a 12-week half-marathon plan...", "language": "en"} + ] + }, + "country": "GB", + "channel": "display", + "brand_context": {"brand_id": "nike_global", "sku_id": "pegasus_41"}, + "local_verdict": "unevaluated" +} +``` + +Note: The AI-generated content example has `local_verdict: "unevaluated"` because the content is ephemeral and the platform relies on post-delivery validation rather than a local model. + +## Delivery vs Artifacts + +| Aspect | get_media_buy_delivery | get_media_buy_artifacts | +|--------|------------------------|-------------------------| +| **Purpose** | Performance reporting | Content validation | +| **Data size** | Small (metrics) | Large (full content) | +| **Frequency** | Regular reporting | Sampled validation | +| **Contains** | Impressions, clicks, spend | Text, images, video | +| **Consumer** | Buyer for optimization | Verification agent | + +## Related Tasks + +- [validate_content_delivery](./validate_content_delivery) - Validate the artifacts +- [calibrate_content](./calibrate_content) - Understand why artifacts pass/fail +- [get_media_buy_delivery](../../../media-buy/task-reference/get_media_buy_delivery) - Get performance metrics diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards.mdx new file mode 100644 index 0000000000..343b270e7e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards.mdx @@ -0,0 +1,71 @@ +--- +title: list_content_standards +description: "list_content_standards returns available content safety configurations with optional filtering and pagination in AdCP." +"og:title": "AdCP — list_content_standards" +--- + +# list_content_standards + +List available content standards configurations. + +**Response time**: < 500ms + +## Request + +**Schema**: [list-content-standards-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/list-content-standards-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `countries` | array | No | Filter by ISO 3166-1 alpha-2 country codes (case-insensitive) | +| `channels` | array | No | Filter by channels | +| `languages` | array | No | Filter by ISO 639-1 or BCP 47 language tags (case-insensitive) | +| `pagination` | object | No | Pagination: `max_results` (1-100, default 50) and `cursor` (opaque cursor from previous response) | + +## Response + +**Schema**: [list-content-standards-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/list-content-standards-response.json) + +Returns an abbreviated list of standards configurations. Use [get_content_standards](./get_content_standards) to retrieve full details including policy text and calibration data. + +### Success Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/list-content-standards-response.json", + "status": "completed", + "standards": [ + { + "standards_id": "emea_digital_safety", + "name": "EMEA - all digital channels", + "countries_all": ["GB", "DE", "FR"], + "channels_any": ["display", "olv", "ctv"], + "languages_any": ["en", "de", "fr"] + }, + { + "standards_id": "us_display_only", + "name": "US - display only", + "countries_all": ["US"], + "channels_any": ["display"], + "languages_any": ["en"] + } + ] +} +``` + +### Error Response + +```json +{ + "errors": [ + { + "code": "UNAUTHORIZED", + "message": "Invalid or expired token" + } + ] +} +``` + +## Related Tasks + +- [get_content_standards](./get_content_standards) - Get a specific standards configuration +- [create_content_standards](./create_content_standards) - Create a new configuration diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards.mdx new file mode 100644 index 0000000000..0764697dbc --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards.mdx @@ -0,0 +1,106 @@ +--- +title: update_content_standards +description: "update_content_standards modifies an existing content standards configuration in AdCP, creating a new version for audit purposes." +"og:title": "AdCP — update_content_standards" +--- + +# update_content_standards + +Update an existing content standards configuration. Creates a new version. + +**Response time**: < 1s + +## Request + +**Schema**: [update-content-standards-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/update-content-standards-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `standards_id` | string | Yes | ID of the standards configuration to update | +| `scope` | object | No | Updated scope | +| `policies` | PolicyEntry[] | No | Updated array of policies. Replaces existing policies; use stable `policy_id` values to track policies across versions. | +| `calibration_exemplars` | object | No | Updated training exemplars (pass/fail) | + +### Example Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/update-content-standards-request.json", + "idempotency_key": "b0c1d2e3-f4a5-4678-b901-678901234567", + "standards_id": "nike_emea_safety", + "policies": [ + { + "policy_id": "no_violence", + "policy_categories": ["brand_safety"], + "enforcement": "must", + "policy": "Avoid content depicting violence, weapons, or physical aggression." + }, + { + "policy_id": "no_controversial_politics", + "policy_categories": ["brand_suitability"], + "enforcement": "must", + "policy": "Avoid controversial political content." + }, + { + "policy_id": "no_adult_themes", + "policy_categories": ["brand_safety"], + "enforcement": "must", + "policy": "Avoid adult, sexual, or mature themes." + }, + { + "policy_id": "no_hate_speech", + "policy_categories": ["brand_safety"], + "enforcement": "must", + "policy": "Block hate speech and illegal activities." + } + ], + "calibration_exemplars": { + "pass": [ + { "type": "url", "value": "https://espn.com/nba/story/_/id/12345/lakers-win", "language": "en" }, + { "type": "url", "value": "https://healthline.com/fitness/cardio-workout", "language": "en" }, + { "type": "url", "value": "https://runnersworld.com/training/marathon-tips", "language": "en" } + ], + "fail": [ + { "type": "url", "value": "https://tabloid.example.com/celebrity-scandal", "language": "en" }, + { "type": "url", "value": "https://gambling.example.com/betting-guide", "language": "en" } + ] + } +} +``` + +## Response + +**Schema**: [update-content-standards-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/update-content-standards-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/update-content-standards-response.json", + "status": "completed", + "success": true, + "standards_id": "nike_emea_safety" +} +``` + +### Error Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/update-content-standards-response.json", + "status": "completed", + "success": false, + "errors": [ + { + "code": "REFERENCE_NOT_FOUND", + "field": "standards_id", + "message": "Referenced resource does not exist or is not accessible" + } + ] +} +``` + +## Related Tasks + +- [get_content_standards](./get_content_standards) - Get current configuration +- [create_content_standards](./create_content_standards) - Create a new configuration diff --git a/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery.mdx b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery.mdx new file mode 100644 index 0000000000..8dfa56e644 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery.mdx @@ -0,0 +1,185 @@ +--- +title: validate_content_delivery +description: "validate_content_delivery batch-evaluates delivery records against content safety policies asynchronously in AdCP." +"og:title": "AdCP — validate_content_delivery" +--- + +# validate_content_delivery + +Validate delivery records against content safety policies. Designed for batch auditing of where ads were actually delivered. + +**Asynchronous**: Accept immediately, process in background. Returns a `validation_id` for status polling. + +## Data Flow + +Content artifacts are separate from delivery metrics. Use [`get_media_buy_artifacts`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts) to retrieve content for validation: + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant Seller as Seller Agent + participant Verifier as Verification Agent + + Buyer->>Seller: get_media_buy_artifacts + Seller-->>Buyer: Collected artifacts + Buyer->>Verifier: validate_content_delivery + Verifier-->>Buyer: Validation results +``` + +**Why through the buyer?** + +- The **buyer** owns the media buy and knows which `standards_id` applies +- The **buyer** requests artifacts from sellers (separate from performance metrics) +- The **buyer** is accountable for brand safety compliance +- The **verification agent** works on behalf of the buyer + +This keeps responsibilities clear: sellers provide content samples via `get_media_buy_artifacts`, buyers validate samples against the verification agent. + +## Request + +**Schema**: [validate-content-delivery-request.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/validate-content-delivery-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `standards_id` | string | Yes | Standards configuration to validate against | +| `records` | array | Yes | Delivery records to validate (max 10,000) | +| `feature_ids` | array | No | Specific features to evaluate (defaults to all) | +| `include_passed` | boolean | No | Include passed records in results (default: true) | + +### Delivery Record + +```json +{ + "record_id": "imp_12345", + "timestamp": "2025-01-15T10:30:00Z", + "media_buy_id": "mb_nike_reddit_q1", + "artifact": { + "property_id": {"type": "domain", "value": "example.com"}, + "artifact_id": "article_12345", + "assets": [ + {"type": "text", "role": "title", "content": "Article Title"} + ] + }, + "country": "US", + "channel": "display", + "brand_context": { + "brand_id": "nike_global", + "sku_id": "air_max_2025" + } +} +``` + +| Field | Required | Description | +|-------|----------|-------------| +| `record_id` | Yes | Unique identifier for this delivery record | +| `artifact` | Yes | Content artifact where ad was delivered | +| `media_buy_id` | No | Media buy this record belongs to (for multi-buy batches) | +| `timestamp` | No | When the delivery occurred | +| `country` | No | ISO 3166-1 alpha-2 country code for targeting context | +| `channel` | No | Channel type (display, video, audio, social) | +| `brand_context` | No | Brand/SKU information for policy evaluation (schema TBD) | + +## Response + +**Schema**: [validate-content-delivery-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/validate-content-delivery-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/content-standards/validate-content-delivery-response.json", + "status": "completed", + "summary": { + "total_records": 1000, + "passed_records": 950, + "failed_records": 50 + }, + "results": [ + { + "record_id": "imp_12345", + "verdict": "pass", + "features": [ + { + "feature_id": "brand_safety", + "status": "passed", + "value": "safe" + } + ] + }, + { + "record_id": "imp_12346", + "verdict": "fail", + "features": [ + { + "feature_id": "brand_safety", + "status": "failed", + "value": "high_risk", + "message": "Content contains violence" + } + ] + } + ] +} +``` + +## Use Cases + +### Post-Campaign Audit + +```python +def audit_campaign_delivery(campaign_id, standards_id, content_standards_agent): + """Audit all delivery records from a campaign.""" + # Fetch delivery records from your ad server + records = fetch_delivery_records(campaign_id) + + # Validate in batches + batch_size = 10000 + all_results = [] + + for i in range(0, len(records), batch_size): + batch = records[i:i + batch_size] + response = content_standards_agent.validate_content_delivery( + standards_id=standards_id, + records=batch + ) + all_results.extend(response["results"]) + + return all_results +``` + +### Real-Time Monitoring Sample + +```python +import random + +def sample_and_validate(records, standards_id, sample_size=1000): + """Validate a random sample for real-time monitoring.""" + sample = random.sample(records, min(sample_size, len(records))) + return content_standards_agent.validate_content_delivery( + standards_id=standards_id, + records=sample + ) +``` + +### Filter for Issues Only + +```python +# Only get failed records to reduce response size +response = content_standards_agent.validate_content_delivery( + standards_id="nike_emea_safety", + records=delivery_records, + include_passed=False # Only return failures +) + +for result in response["results"]: + print(f"Issue with {result['record_id']}") + for feature in result["features"]: + if feature["status"] == "failed": + print(f" - {feature['feature_id']}: {feature['message']}") +``` + +## Related Tasks + +- [get_media_buy_artifacts](./get_media_buy_artifacts) - Get content artifacts from seller +- [calibrate_content](./calibrate_content) - Understand why artifacts pass/fail +- [get_content_standards](./get_content_standards) - Retrieve the policies diff --git a/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features.mdx b/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features.mdx new file mode 100644 index 0000000000..c5b0bfb487 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features.mdx @@ -0,0 +1,228 @@ +--- +title: get_creative_features +description: "get_creative_features evaluates a creative manifest against a governance agent and returns feature values for brand safety and compliance in AdCP." +"og:title": "AdCP — get_creative_features" +--- + +# get_creative_features + +Evaluates a creative manifest and returns feature values from a creative governance agent. + +## Use cases + +- **Security scanning**: Detect malware, auto-redirects, credential harvesting, cloaking +- **Creative quality**: Evaluate brand consistency, platform optimization, guideline adherence +- **Content categorization**: Classify creative content against IAB Content Taxonomy or other standards +- **Accessibility**: Check WCAG compliance, screen reader compatibility + +## Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-request.json", + "creative_manifest": { + "format_kind": "display_tag", + "assets": { + "tag_url": { + "asset_type": "url", + "url": "https://cdn.agency.com/creative/abc123.html" + } + } + }, + "feature_ids": ["auto_redirect", "credential_harvest", "cloaking"] +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `creative_manifest` | object | Yes | Canonical creative manifest with `format_kind`, optional `format_option_ref`, and typed `assets` | +| `feature_ids` | string[] | No | Filter to specific features. If omitted, evaluates all features the agent supports. | + +### Authentication when used as a build evaluator + +`get_creative_features` is also the evaluator contract used when `build_creative.evaluator.agent_url` or `build_creative.evaluator.feature_agent.agent_url` points at an external evaluator. In that flow, the creative/seller agent is the caller and the evaluator authenticates it on the transport: RFC 9421 request signing with JWKS discovery is preferred, and mTLS or a pre-provisioned Bearer/API-key credential are acceptable when both parties have arranged them. + +The request payload is not an authentication channel. Evaluators MUST NOT treat `agent_url`, `account`, `context`, `ext`, or fields inside `creative_manifest` as proof of caller identity, and callers MUST NOT put evaluator credentials or caller-supplied trust material in those fields. Credential- or trust-material payload keys such as `api_key`, `client_secret`, `bearer`, `authorization`, `jwk`, `jwks`, or `jwks_uri` are non-conforming and should be rejected with [`CREDENTIAL_IN_ARGS`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#authentication-and-access). + +After authenticating the transport, the evaluator maps the caller to its allowed creative agent/account configuration. A request signed by, or carrying credentials for, an unrecognized creative agent should fail authentication or authorization; it should not be accepted because the payload names an expected account. + +When this call was initiated by [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) and the evaluator is unreachable or rejects the producing agent's transport authentication, the buyer-visible build should fall back to seller-default ranking with an advisory `errors[]` note rather than failing solely because evaluation was unavailable. + +## Response + + +```json Security scanner (clean) +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-response.json", + "status": "completed", + "results": [ + { "feature_id": "auto_redirect", "value": false }, + { "feature_id": "credential_harvest", "value": false }, + { "feature_id": "cloaking", "value": false } + ], + "detail_url": "https://scanner.example.com/reports/ctx_abc123" +} +``` + +```json Security scanner (threat detected) +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-response.json", + "status": "completed", + "results": [ + { "feature_id": "auto_redirect", "value": true, "confidence": 0.97 }, + { "feature_id": "credential_harvest", "value": true, "confidence": 0.91 }, + { "feature_id": "cloaking", "value": false } + ], + "detail_url": "https://scanner.example.com/reports/ctx_def456" +} +``` + +```json Creative quality platform +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-response.json", + "status": "completed", + "results": [ + { "feature_id": "brand_consistency", "value": 87, "unit": "percentage" }, + { "feature_id": "platform_optimized", "value": true }, + { "feature_id": "creative_quality_score", "value": 92, "unit": "score" } + ], + "detail_url": "https://quality.example.com/reports/ctx_ghi789" +} +``` + +```json Content categorizer +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-response.json", + "status": "completed", + "results": [ + { "feature_id": "iab_casinos_gambling", "value": true, "confidence": 0.95 }, + { "feature_id": "iab_automotive", "value": false, "confidence": 0.12 } + ], + "detail_url": "https://categorizer.example.com/reports/ctx_jkl012" +} +``` + +```json Provenance audit observation +{ + "$schema": "/schemas/3.2.0-beta.4/creative/get-creative-features-response.json", + "status": "completed", + "results": [ + { "feature_id": "ai_generated", "value": true, "confidence": 0.94 } + ], + "audit_observations": [ + { + "code": "OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED", + "severity": "audit-worthy", + "recovery": "informational", + "field": "creative_manifest.provenance.disclosure.required", + "message": "Creative claims human-directed AI output does not require disclosure; retain for audit review.", + "details": { + "agent_url": "https://governance.encypher.seller.example", + "feature_id": "ai_generated", + "claimed_value": { + "human_oversight": "directed", + "disclosure_required": false + }, + "observed_value": true, + "confidence": 0.94 + } + } + ] +} +``` + + +### Response fields + +| Field | Description | +|-------|-------------| +| `results` | Array of feature evaluation results | +| `results[].feature_id` | Which feature was evaluated | +| `results[].value` | Feature value: boolean (binary), number (quantitative), or string (categorical) | +| `results[].confidence` | Confidence score (0-1), when applicable | +| `results[].unit` | Unit for quantitative values (e.g., `percentage`, `score`) | +| `results[].expires_at` | When this evaluation expires and should be refreshed | +| `results[].measured_at` | When this feature was evaluated | +| `results[].methodology_version` | Version of methodology used | +| `results[].details` | Vendor-specific details | +| `detail_url` | URL to vendor's full assessment. Access-controlled by the vendor. | +| `audit_observations[]` | Non-blocking observations for audit routing. These are not rejection signals by themselves. | +| `audit_observations[].code` | Machine-readable observation code, such as `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED` | +| `audit_observations[].severity` | Routing severity; currently `audit-worthy` | +| `audit_observations[].recovery` | Caller recovery category; currently `informational` | +| `audit_observations[].field` | Resolved creative manifest path for the risky claim side of the observation. Multi-field observations anchor the primary claim path, not necessarily every trigger field. | +| `audit_observations[].message` | Human-readable audit queue summary; do not include PII, cross-tenant data, or vendor-only report details | +| `audit_observations[].details` | Audit-safe details limited to `{ agent_url, feature_id, claimed_value, observed_value, confidence, substituted_for }` | +| `audit_observations[].details.claimed_value` | For `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED`, a compact object `{ human_oversight, disclosure_required }`; `disclosure_required` is the flattened alias for `creative_manifest.provenance.disclosure.required`. | + +`feature_ids` filters `results[]`; `audit_observations[]` may still appear when the submitted provenance itself is audit-worthy. `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED` fires when `human_oversight` is `edited` or `directed` and `disclosure.required` is `false`; verifier observations such as `observed_value` and `confidence` are optional audit context. + +### Error response + +```json +{ + "errors": [ + { + "code": "CREATIVE_INACCESSIBLE", + "message": "Could not retrieve creative assets for evaluation" + } + ] +} +``` + +## Async evaluation + +Some evaluations (e.g., sandboxed malware scanning) take time. The agent returns `status: "working"` and delivers results via webhook when complete. This uses the standard [async task pattern](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) — no custom status values needed. + +## Orchestrator logic + +The orchestrator applies feature requirements on the client side, the same way property list feature requirements work: + +```javascript +const result = await agent.getCreativeFeatures({ + creative_manifest: manifest +}); + +if (result.errors) { + // Handle error - reject or retry + return; +} + +// Apply security requirements +const threats = result.results.filter( + f => ['auto_redirect', 'credential_harvest', 'cloaking'].includes(f.feature_id) + && f.value === true +); +if (threats.length > 0) { + // Reject - security threat detected + return; +} + +// Apply quality requirements +const quality = result.results.find(f => f.feature_id === 'brand_consistency'); +if (quality && quality.value < 80) { + // Reject - below quality threshold + return; +} + +for (const observation of result.audit_observations ?? []) { + if (observation.severity === 'audit-worthy') { + // Retain or route for review; do not reject solely on this signal. + recordAuditObservation(observation); + } +} +``` + +## Relationship to property governance + +Creative governance follows the same pattern as property governance: + +| Concept | Property governance | Creative governance | +|---------|-------------------|-------------------| +| **What's evaluated** | Properties (websites, apps) | Creatives (manifests) | +| **Feature declarations** | `governance.property_features` | `governance.creative_features` | +| **Evaluation task** | Property list filters | `get_creative_features` | +| **Feature values** | `property-feature-value` schema | Same fields (value, confidence, expires_at, etc.) | +| **Detailed intelligence** | Behind `detail_url` / `methodology_url` | Behind `detail_url` / `methodology_url` | diff --git a/dist/docs/3.2.0-beta.4/governance/creative/index.mdx b/dist/docs/3.2.0-beta.4/governance/creative/index.mdx new file mode 100644 index 0000000000..ab34dad805 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/creative/index.mdx @@ -0,0 +1,206 @@ +--- +title: Creative Governance +description: "AdCP Creative Governance provides standardized creative evaluation — security scanning, AI provenance verification, and accessibility compliance checks." +"og:title": "AdCP — Creative Governance" +sidebarTitle: Overview +--- + +Creative Governance standardizes how creatives are evaluated by specialized governance agents. It applies the same feature-based pattern as [Property Governance](../property/index) — agents declare features they can evaluate, accept creative manifests, and return feature values. + +## Overview + +Creative governance agents evaluate creatives and return feature values. Different agents evaluate different features: + +| Agent type | Example features | Feature type | +|------------|-----------------|--------------| +| **Security scanner** | `auto_redirect`, `credential_harvest`, `cloaking` | Binary | +| **Creative quality** | `brand_consistency`, `platform_optimized`, `creative_quality_score` | Quantitative, binary | +| **Content categorization** | `iab_casinos_gambling`, `iab_automotive` | Binary (with confidence) | + +The protocol doesn't define a fixed feature taxonomy. Vendors declare what they evaluate via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) and compete on coverage. + +## How it works + +### 1. Agent declares features + +A creative governance agent advertises its capabilities using the same feature definition pattern as property governance: + + +```json Security scanner +{ + "governance": { + "creative_features": [ + { + "feature_id": "auto_redirect", + "type": "binary", + "description": "Unauthorized navigation away from publisher context without user interaction", + "methodology_url": "https://scanner.example.com/methodology" + }, + { + "feature_id": "credential_harvest", + "type": "binary", + "description": "Phishing techniques to gather user credentials or PII", + "methodology_url": "https://scanner.example.com/methodology" + }, + { + "feature_id": "cloaking", + "type": "binary", + "description": "Creative masks or misrepresents content to evade detection", + "methodology_url": "https://scanner.example.com/methodology" + } + ] + } +} +``` + +```json Creative quality platform +{ + "governance": { + "creative_features": [ + { + "feature_id": "brand_consistency", + "type": "quantitative", + "range": { "min": 0, "max": 100 }, + "description": "Adherence to brand guidelines including logo placement, colors, and typography", + "methodology_url": "https://quality.example.com/methodology" + }, + { + "feature_id": "platform_optimized", + "type": "binary", + "description": "Creative meets platform-specific best practices (aspect ratio, text overlay limits)", + "methodology_url": "https://quality.example.com/methodology" + } + ] + } +} +``` + +```json Content categorizer +{ + "governance": { + "creative_features": [ + { + "feature_id": "iab_casinos_gambling", + "type": "binary", + "description": "Creative contains casinos or gambling content (IAB Content Taxonomy 3.1, ID 181)", + "methodology_url": "https://categorizer.example.com/methodology" + }, + { + "feature_id": "iab_automotive", + "type": "binary", + "description": "Creative contains automotive content (IAB Content Taxonomy 3.1, ID 1)", + "methodology_url": "https://categorizer.example.com/methodology" + } + ] + } +} +``` + + +The orchestrator reads these declarations via `get_adcp_capabilities` before evaluating any creative. If a required feature is absent from an agent's declaration, the orchestrator surfaces the gap immediately rather than discovering it mid-evaluation. + +### 2. Orchestrator evaluates a creative + +The orchestrator calls [`get_creative_features`](./get_creative_features) with a creative manifest: + +```json +{ + "creative_manifest": { + "format_kind": "display_tag", + "assets": { + "tag_url": { + "asset_type": "url", + "url": "https://cdn.agency.com/creative/abc123.html" + } + } + } +} +``` + +### 3. Agent returns feature values + +The agent evaluates the creative and returns feature values. The response shape is the same regardless of agent type: + +```json +{ + "results": [ + { "feature_id": "auto_redirect", "value": true, "confidence": 0.97 }, + { "feature_id": "credential_harvest", "value": false }, + { "feature_id": "cloaking", "value": false } + ], + "detail_url": "https://scanner.example.com/reports/ctx_abc123" +} +``` + +### 4. Orchestrator applies requirements + +The orchestrator evaluates the feature values against buyer-defined requirements — the same pattern as property list feature requirements: + +- Security: reject if `auto_redirect` is `true` +- Quality: reject if `brand_consistency` is below 80 +- Categorization: reject if `iab_casinos_gambling` is `true` and campaign excludes gambling + +## Design principles + +**Feature IDs enforce strictness, not schema rigidity.** A categorization agent that declares `iab_casinos_gambling` using IAB Content Taxonomy 3.1 ID 181 is as strict as any custom schema — the discipline lives in the agent's methodology, not in the wire format. An orchestrator that requires `iab_casinos_gambling: false` gets a binary pass/fail answer regardless of how the agent detected the content. The feature ID is the contract. The protocol staying schema-agnostic means adding a new IAB category or scanning technique does not require a protocol change. + +**Confidence is opt-in, not mandatory.** The `confidence` field on a feature result is optional. Security scanners typically omit it — a creative either contains a credential harvesting pattern or it does not. Categorization agents include it because content detection is probabilistic: a creative may be 94% likely to contain gambling content. The agent decides what to disclose. An orchestrator that cannot tolerate ambiguity requires `value: false` and ignores confidence entirely; an orchestrator that wants to threshold probabilistic results uses it. This is the same field that exists on `property-feature-value` for property governance. + +**Orchestrator-enforced consistency.** An orchestrator that requires `iab_casinos_gambling` from its categorization agent discovers at capability-check time — before any creative is evaluated — whether the agent supports that feature. If it does not, the orchestrator fails fast and surfaces the gap. This mirrors how property governance works: IAS and DoubleVerify evaluate different property features; the orchestrator determines which features are required and routes accordingly. Mandating a fixed feature set in the protocol schema would mean every new IAB category or custom brand requirement requires a protocol revision. The protocol defines the enforcement mechanism; the orchestrator defines the requirements. + +**Opaque detailed intelligence.** Feature values on the wire are pass/fail (binary) or scores (quantitative). Detection methodology, threat intelligence, and detailed scoring breakdowns stay behind the vendor's access-controlled `detail_url` and `methodology_url`. + +## Multi-agent collaboration + +Creative governance evaluations typically involve multiple specialist agents working in parallel — the same pattern property governance uses for sustainability, quality, and suitability agents. + +| Agent | Features returned | Orchestrator requirement | +|-------|------------------|------------------------| +| Security scanner | `auto_redirect`, `cloaking` | Block if any are `true` | +| Creative quality platform | `brand_consistency`, `platform_optimized` | Block if score below threshold | +| Content categorizer | `iab_casinos_gambling`, `iab_automotive` | Block if excluded category is `true` | + +Each agent uses the same `get_creative_features` task. The orchestrator calls them in parallel, collects independent result sets, and applies its requirements across all of them. No agent needs to know about the others. + +This means a buyer can: +- Add a new specialist agent without changing existing agents or the evaluation protocol +- Apply different confidence thresholds per agent type +- Replace one vendor with another without changing the evaluation logic for other agents + +The orchestrator's feature requirements — not the protocol schema — define what "complete" creative governance means for a given campaign. + +```mermaid +flowchart TB + subgraph Orchestrator["ORCHESTRATOR"] + O1[Calls get_creative_features on each agent] + O2[Aggregates results] + O3[Applies feature requirements] + end + + subgraph Agents["CREATIVE GOVERNANCE AGENTS"] + SEC["Security Scanner
auto_redirect
cloaking
credential_harvest"] + QUA["Creative Quality
brand_consistency
platform_optimized"] + CAT["Content Categorizer
iab_casinos_gambling
iab_automotive"] + end + + Creative["Creative Manifest"] --> O1 + O1 --> SEC + O1 --> QUA + O1 --> CAT + SEC --> O2 + QUA --> O2 + CAT --> O2 + O2 --> O3 +``` + +## Pricing + +Creative governance agents that charge for evaluations use the same vendor pricing pattern as other AdCP vendor services. When the buyer provides `account` on the `get_creative_features` request, the response includes `pricing_option_id`, `vendor_cost`, `currency`, and optionally `consumption` details (e.g., `tokens` for LLM-based scanning). + +The buyer reports usage via [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) with `standards_id` and `pricing_option_id` for billing reconciliation. This is the same discover-execute-report loop used by [creative agents](/dist/docs/3.2.0-beta.4/creative/specification#pricing), [signals agents](/dist/docs/3.2.0-beta.4/signals/specification), and [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). + +Governance agents that charge MUST implement the [Accounts Protocol](/dist/docs/3.2.0-beta.4/accounts/overview). + +## Async evaluation + +If evaluation takes time (e.g., sandboxed execution for malware scanning), the agent returns `status: "working"` and delivers results via the standard webhook mechanism. No custom status values or webhook events needed — the existing [async task pattern](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) handles this. diff --git a/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification.mdx b/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification.mdx new file mode 100644 index 0000000000..cd6c9ffd2b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification.mdx @@ -0,0 +1,585 @@ +--- +title: Provenance verification +description: "How AI provenance claims travel with creatives in AdCP and get independently verified at each enforcement point in the delivery chain." +"og:title": "AdCP — Provenance verification" +sidebarTitle: Provenance verification +--- + +When a creative arrives with a provenance claim, the receiving party needs to decide whether to trust it. This page describes how AdCP handles that decision: provenance claims travel with the creative from buyer to seller, and each enforcement point — the publisher, the SSP, the verification vendor — runs its own independent check. No single party's attestation is taken at face value. This separation between declaration and verification is what makes the system work when the parties involved have competing incentives. + + + This creative-provenance model remains the operative AdCP mechanism for AI provenance. The structured `Provenance` fields and C2PA or media-level bindings describe and bind a creative's origin. Portable attestations complement that work by carrying independently issued, evaluator-checked claims; they do not replace C2PA or turn an unbound credential into media provenance. In the current protocol, portable attestations are wired only into audience evidence and signal-governance evaluation. There is no portable-attestation attachment on a creative or its `Provenance` object yet. + + +## Three-moment lifecycle + +AI provenance flows through three distinct moments, each handled by existing AdCP tasks. + +```mermaid +flowchart LR + subgraph declare["1. DECLARATION"] + direction TB + D1["sync_creatives / build_creative"] + D2["Buyer attaches provenance
to creative manifest or assets"] + D1 --> D2 + end + + subgraph verify["2. VERIFICATION"] + direction TB + V1["get_creative_features /
calibrate_content"] + V2["Governance agent evaluates
content independently"] + V1 --> V2 + end + + subgraph enforce["3. ENFORCEMENT"] + direction TB + E1["creative_policy /
validate_content_delivery"] + E2["Seller/publisher applies rules
and accepts or rejects"] + E1 --> E2 + end + + declare --> verify --> enforce +``` + +| Moment | When | Who | Task | +|--------|------|-----|------| +| **Declaration** | Creative submission | Buyer, agency, or creative tool | `sync_creatives`, `build_creative` | +| **Verification** | Before trafficking or during calibration | Seller's governance agent | `get_creative_features`, `calibrate_content` | +| **Enforcement** | Acceptance decision or post-delivery audit | Seller agent, buyer agent | `creative_policy`, `validate_content_delivery` | + +Each moment is independent. A buyer can declare provenance without any verification having occurred. A seller can verify without requiring a declaration. Enforcement can happen with or without both. + +## What buyers can declare + +Provenance carries three families of evidence. Each survives a different set of supply-chain operations. + +| Field | What it carries | Survives transcoding? | +|---|---|---| +| `c2pa.manifest_url` | Sidecar reference to a detached cryptographic manifest | No — file-level bindings break under ad-server transcoding, resize, and re-encode | +| `embedded_provenance[]` | Provenance metadata embedded *within* the content stream (manifest wrapper or invisible markers) | Yes — designed to persist through CMS ingestion, copy-paste, reformatting, and CDN re-encoding | +| `watermarks[]` | Identifier or fingerprint encoded into the content (audio, image, video, or text watermark) | Yes — survives transformations that preserve perceptual content | + +`embedded_provenance` carries a structured provenance record (the chain of custody). `watermarks` encode an identifier (who generated it, who owns it). A single asset may carry both; pick the right field for what you actually attached. + +## The verifier contract: seller publishes, buyer represents, seller confirms + +Earlier drafts of this work imagined buyers nominating verification endpoints unilaterally. That pattern shipped SSRF risk, vendor sprawl, and a fundamentally wrong trust model: the seller is the verifier-of-record because the seller bears the regulatory liability for what it publishes. The protocol now reflects that. + +The contract is three steps, each with a clear actor: + +1. **Seller publishes** the governance agents it accepts on `creative_policy.accepted_verifiers[]` (returned by `get_products`). Each entry carries `agent_url`, optional `feature_id` (which feature the seller will request against the agent), and optional `providers[]` (which `provider` labels the agent covers). The seller has already vetted these endpoints; calls to them are inside the seller's allowlist. +2. **Buyer represents** which of those agents was used by attaching a `verify_agent: { agent_url, feature_id? }` pointer on each `embedded_provenance[]` or `watermarks[]` entry. The buyer's `agent_url` MUST match (canonicalized) one of the seller's published `accepted_verifiers[].agent_url`. This is buyer-supplied evidence, not buyer-driven routing. +3. **Seller confirms** by cross-checking the buyer's `verify_agent.agent_url` against the published list (rejecting off-list URLs with `PROVENANCE_VERIFIER_NOT_ACCEPTED` before any outbound call), then invoking `get_creative_features` against the matching on-list agent and reconciling the result against the buyer's claim. The seller MAY use a different on-list agent than the buyer nominated; the seller is the verifier-of-record. When it does substitute, `error.details` carries both the agent it called and `substituted_for` so the buyer can audit. + +```json +// 1. Seller publishes — returned by get_products on each Product +{ + "creative_policy": { + "accepted_verifiers": [ + { + "agent_url": "https://governance.encypher.seller.example", + "feature_id": "encypher.markers_present_v2", + "providers": ["Encypher"] + }, + { + "agent_url": "https://governance.imatag.seller.example", + "feature_id": "imatag.watermark_detected", + "providers": ["Imatag"] + } + ] + } +} + +// 2. Buyer represents — attached to creative on sync_creatives +{ + "embedded_provenance": [ + { + "method": "provenance_markers", + "provider": "Encypher", + "verify_agent": { + "agent_url": "https://governance.encypher.seller.example", + "feature_id": "encypher.markers_present_v2" + } + } + ] +} + +// 3. Seller confirms — cross-check, then call, then reconcile. +// Off-list URL → PROVENANCE_VERIFIER_NOT_ACCEPTED, no outbound call. +// On-list URL with contradicting verifier result → PROVENANCE_CLAIM_CONTRADICTED. +``` + +Sellers MUST NOT call URLs that are not in `accepted_verifiers` — that closes the buyer-controlled-URL trust gap. Buyers that omit `verify_agent` (e.g., on a self-verifiable C2PA text manifest with a public key the seller already trusts) leave the agent selection entirely to the seller's discovery. + +## What sellers can require + +Sellers express what they need on `creative_policy`, returned by `get_products` so buyers see requirements before submitting: + +| Field | Effect | +|---|---| +| `provenance_required: true` | Creative MUST carry *some* provenance object, anywhere in the inheritance chain. Submission without provenance is rejected with `PROVENANCE_REQUIRED`. | +| `provenance_requirements.{require_digital_source_type, require_synthetic_depiction, require_disclosure_metadata, require_embedded_provenance}` | Field-level requirements. Submission missing the named field is rejected with the corresponding `PROVENANCE_*_MISSING` code. Both boolean values satisfy `require_synthetic_depiction`; omission means unassessed. Field-level requirements are seller-enforced — JSON Schema validation does not check them. | +| `accepted_verifiers[]` | Governance agents the seller will call to verify provenance claims. Buyers' `verify_agent` references MUST be a canonicalized match of one of these `agent_url` values. | + +Sellers that publish a requirement MUST enforce it on `sync_creatives` — that's the structural-rejection contract. The truth-of-claim contract (does the buyer's `digital_source_type` actually match the content?) lives in `get_creative_features` and surfaces as `PROVENANCE_CLAIM_CONTRADICTED`. + +### Rejection error codes + +When `sync_creatives` rejects a creative for provenance reasons, the per-creative result carries a structured error with one of: + +| Code | Meaning | `error.field` points at | +|---|---|---| +| `PROVENANCE_REQUIRED` | No provenance object anywhere on the creative, but `provenance_required: true` | The manifest path where provenance was expected | +| `PROVENANCE_DIGITAL_SOURCE_TYPE_MISSING` | Resolved provenance has no `digital_source_type` | The resolved `provenance.digital_source_type` path | +| `PROVENANCE_SYNTHETIC_DEPICTION_MISSING` | Resolved provenance has no assessed `synthetic_depiction` boolean | The resolved `provenance.synthetic_depiction` path | +| `PROVENANCE_DISCLOSURE_MISSING` | Resolved provenance has no `disclosure.required` (or true without jurisdictions) | The resolved `provenance.disclosure` path | +| `PROVENANCE_EMBEDDED_MISSING` | Resolved provenance has no `embedded_provenance` entry | The resolved `provenance.embedded_provenance` path | +| `PROVENANCE_VERIFIER_NOT_ACCEPTED` | `verify_agent.agent_url` is not on the seller's `accepted_verifiers` list | The offending `verify_agent.agent_url` path | +| `PROVENANCE_CLAIM_CONTRADICTED` | Verifier (called from `accepted_verifiers`) actively refutes the buyer's claim | The provenance field whose claim was refuted; `error.details` is limited to `{ agent_url, feature_id, claimed_value, observed_value, confidence }` plus `substituted_for` when the seller used an on-list agent other than the one the buyer nominated | + +Buyers receiving these codes can self-correct without negotiating with the seller — the failure is machine-readable. Auto-retry without correction will not pass. + +### Audit observations, not rejections + +Some provenance claims deserve audit routing even when the verifier has not refuted them. The canonical case is `provenance.human_oversight` set to `edited` or `directed` while `provenance.disclosure.required` is `false`. That combination may be legitimate when the declaring party invokes an editorial-responsibility carve-out, but the verifier cannot adjudicate the legal prerequisites from schema fields alone. + +Governance agents SHOULD surface that claim combination on successful `get_creative_features` responses as `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED`. The observation is claim-driven: verifier observations such as `observed_value` and `confidence` are useful audit context when available, but they are not required for the observation to fire. `field` anchors the risky claim side of the multi-field combination, so the canonical path is `creative_manifest.provenance.disclosure.required`. + +```json +{ + "audit_observations": [ + { + "code": "OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED", + "severity": "audit-worthy", + "recovery": "informational", + "field": "creative_manifest.provenance.disclosure.required", + "message": "Creative claims human-directed AI output does not require disclosure; retain for audit review.", + "details": { + "agent_url": "https://governance.encypher.seller.example", + "feature_id": "ai_generated", + "claimed_value": { + "human_oversight": "directed", + "disclosure_required": false + }, + "observed_value": true, + "confidence": 0.94 + } + } + ] +} +``` + +This observation is not `PROVENANCE_CLAIM_CONTRADICTED`, and it is not grounds for rejection on its own. Sellers MAY accept the creative while retaining the observation for audit, routing it to a human reviewer, or asking the declaring party for corroborating evidence out of band. As with contradiction errors, `audit_observations[].details` is limited to the audit-safe allowlist `{ agent_url, feature_id, claimed_value, observed_value, confidence, substituted_for }`; for `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED`, `claimed_value` is `{ human_oversight, disclosure_required }`, with `disclosure_required` as the flattened alias for `creative_manifest.provenance.disclosure.required`. Sellers MUST NOT copy arbitrary verifier extension fields, `detail_url`, or cross-tenant report data into their own buyer-facing responses. + +## AI detection via get_creative_features + +AI detection is a creative governance feature, evaluated by specialist agents through `get_creative_features` -- the same task used for security scanning, creative quality, and content categorization. AI detection does not require a separate protocol or workflow. + +### Agent declares AI detection capabilities + +An AI detection agent advertises its features via `get_adcp_capabilities`: + +```json +{ + "governance": { + "creative_features": [ + { + "feature_id": "ai_generated", + "type": "binary", + "description": "Whether the creative contains AI-generated content", + "methodology_url": "https://detector.example.com/methodology" + }, + { + "feature_id": "ai_modified", + "type": "binary", + "description": "Whether the creative contains AI-modified elements", + "methodology_url": "https://detector.example.com/methodology" + }, + { + "feature_id": "ai_confidence", + "type": "quantitative", + "range": { "min": 0, "max": 1 }, + "description": "Confidence score for AI detection result", + "methodology_url": "https://detector.example.com/methodology" + } + ] + } +} +``` + +### Seller evaluates a creative + +The seller sends the creative manifest to the AI detection agent: + +```json +{ + "creative_manifest": { + "format_kind": "image", + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.novabrands.example.com/hero.jpg", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Nutrition dogs love" + } + } + }, + "feature_ids": ["ai_generated", "ai_modified", "ai_confidence"] +} +``` + +### Agent returns detection results + +```json +{ + "results": [ + { "feature_id": "ai_generated", "value": true, "confidence": 0.94 }, + { "feature_id": "ai_modified", "value": false }, + { "feature_id": "ai_confidence", "value": 0.94 } + ], + "detail_url": "https://detector.example.com/reports/ctx_xyz789" +} +``` + +### Seller applies enforcement logic + +The seller compares the detection result against the buyer's provenance claim: + +```javascript +const provenance = creative.manifest.provenance; +const detection = await detectionAgent.getCreativeFeatures({ + creative_manifest: creative.manifest, + feature_ids: ['ai_generated'] +}); + +if (detection.errors) { + // Detection failed - handle based on policy + return; +} + +const aiDetected = detection.results.find( + f => f.feature_id === 'ai_generated' +); +const claimsDisclosureCarveout = + ['edited', 'directed'].includes(provenance?.human_oversight) && + provenance?.disclosure?.required === false; + +// Case 1: Provenance claims non-AI, detection says AI +if ( + provenance?.digital_source_type === 'digital_capture' && + aiDetected?.value === true && + aiDetected?.confidence > 0.9 +) { + // Reject - provenance claim contradicts detection + return; +} + +// Case 2: AI content with a declared editorial-responsibility carve-out +if ( + aiDetected?.value === true && + claimsDisclosureCarveout +) { + // Accept or continue review; retain audit_observations[] for audit routing + recordAuditObservations(detection.audit_observations ?? []); + return; +} + +// Case 3: AI content without disclosure metadata or a carve-out claim +if ( + aiDetected?.value === true && + !provenance?.disclosure?.required +) { + // Reject - AI content without required disclosure metadata + return; +} +``` + +### Multi-agent evaluation + +AI detection fits naturally into the multi-agent creative governance pattern. A seller evaluating a creative can call multiple specialist agents in parallel: + +| Agent | Features | Provenance relevance | +|-------|----------|---------------------| +| Security scanner | `auto_redirect`, `cloaking` | None -- independent concern | +| AI detection | `ai_generated`, `ai_modified` | Verifies provenance claims | +| Content categorizer | `iab_casinos_gambling` | None -- independent concern | +| Creative quality | `brand_consistency` | None -- independent concern | + +The orchestrator calls all agents via `get_creative_features`, aggregates results, and applies its requirements across all of them. AI detection is one column in the evaluation matrix, not a separate workflow. + +## Content standards integration + +For publisher content (artifacts), provenance verification uses the content standards infrastructure: `calibrate_content` for alignment and `validate_content_delivery` for auditing. + +### Artifact provenance + +Publishers declare provenance on artifacts the same way buyers declare it on creatives: + +```json +{ + "property_id": { "type": "domain", "value": "newssite.example.com" }, + "artifact_id": "article_trends_2026", + "provenance": { + "digital_source_type": "digital_creation", + "declared_by": { "role": "platform" } + }, + "assets": [ + { + "type": "text", + "role": "title", + "content": "Industry trends to watch in 2026" + }, + { + "type": "image", + "url": "https://cdn.newssite.example.com/ai-illustration.jpg", + "alt_text": "Conceptual illustration", + "provenance": { + "digital_source_type": "trained_algorithmic_media", + "ai_tool": { "name": "Midjourney", "version": "v7" }, + "declared_by": { "role": "platform" } + } + } + ] +} +``` + +### Calibration for AI provenance + +During `calibrate_content`, the verification agent can evaluate whether artifact provenance claims are accurate. This uses the same calibration dialogue as brand suitability -- the verification agent returns verdicts with explanations: + +```json +{ + "verdict": "fail", + "explanation": "The article's hero image shows strong indicators of AI generation (GAN artifacts, inconsistent lighting) but is marked as digital_creation. The provenance claim does not match detection results.", + "features": [ + { + "feature_id": "provenance_accuracy", + "status": "failed", + "explanation": "Image asset provenance claims digital_creation but AI detection confidence is 0.92." + }, + { + "feature_id": "brand_safety", + "status": "passed", + "explanation": "No safety concerns with the content itself." + } + ] +} +``` + +### Post-delivery validation + +Buyers can audit AI provenance in delivered content through `validate_content_delivery`, the same task used for brand suitability auditing: + +```json +{ + "standards_id": "acme_ai_disclosure_policy", + "records": [ + { + "record_id": "imp_54321", + "media_buy_id": "mb_acme_q1", + "artifact": { + "property_id": { "type": "domain", "value": "newssite.example.com" }, + "artifact_id": "article_trends_2026", + "provenance": { + "digital_source_type": "digital_creation", + "declared_by": { "role": "platform" } + }, + "assets": [ + { + "type": "image", + "url": "https://cdn.newssite.example.com/ai-illustration.jpg" + } + ] + } + } + ] +} +``` + +## Compliance profiles + +Different regulatory environments require different levels of provenance enforcement. Here are example configurations. + + +```json EU (strict) +{ + "profile": "eu_strict", + "creative_policy": { + "provenance_required": true + }, + "enforcement_rules": { + "ai_detection_required": true, + "ai_detection_confidence_threshold": 0.85, + "disclosure_required_for": [ + "trained_algorithmic_media", + "composite_with_trained_algorithmic_media", + "human_edits" + ], + "reject_on_mismatch": true, + "jurisdictions": [ + { + "country": "DE", + "regulation": "eu_ai_act_article_50", + "label_text": "KI-generiert" + }, + { + "country": "FR", + "regulation": "eu_ai_act_article_50", + "label_text": "Contenu généré par l'IA" + } + ] + } +} +``` + +```json US/California (moderate) +{ + "profile": "us_california", + "creative_policy": { + "provenance_required": true + }, + "enforcement_rules": { + "ai_detection_required": true, + "ai_detection_confidence_threshold": 0.90, + "disclosure_required_for": [ + "trained_algorithmic_media", + "composite_with_trained_algorithmic_media" + ], + "reject_on_mismatch": true, + "jurisdictions": [ + { + "country": "US", + "region": "CA", + "regulation": "ca_sb_942", + "label_text": "Created with AI" + } + ] + } +} +``` + +```json Permissive +{ + "profile": "permissive", + "creative_policy": { + "provenance_required": false + }, + "enforcement_rules": { + "ai_detection_required": false, + "log_provenance_if_present": true, + "reject_on_mismatch": false + } +} +``` + + + +These profiles are illustrative configurations, not schema-defined objects. Each seller implements enforcement logic suited to their regulatory requirements. The AdCP schemas provide the data model; the enforcement rules are implementation decisions. + + +## For regulators + +AdCP provides a machine-readable, protocol-level mechanism for AI disclosure in programmatic advertising. Every creative and content artifact in the supply chain can carry structured provenance metadata that declares the digital source type, the AI tools used, the level of human oversight, and the applicable disclosure requirements by jurisdiction — including specific regulation identifiers such as `eu_ai_act_article_50`, `ca_sb_942`, and `cn_deep_synthesis`. + +This metadata uses the IPTC digital source type vocabulary, the same classification system adopted by C2PA Content Credentials, Meta, and Google for AI content labeling. AdCP does not invent a new taxonomy. It carries an existing, widely adopted one through the advertising supply chain where it has not previously been available in structured form. + +### Verification is independent, not self-reported + +Provenance in AdCP is explicitly a claim, not a certification. The declaring party — typically the advertiser or their agency — attaches provenance when submitting a creative. The enforcing party — typically the publisher or their supply-side platform — verifies that claim independently using AI detection services, C2PA manifest validation, or both. This verification happens through existing AdCP governance mechanisms (`get_creative_features` for creatives, `calibrate_content` for publisher content) and does not require new infrastructure. + +This architecture addresses a structural problem in advertising compliance: the party submitting the creative has an incentive to understate AI involvement (to avoid placement restrictions or disclosure requirements), while the party publishing the creative bears the regulatory liability for non-disclosure. By treating provenance as a verifiable claim rather than a trusted assertion, the protocol ensures that compliance does not depend on the good faith of any single participant. + +### Mapping to regulatory requirements + +**EU AI Act Article 50**: Imposes obligations on the providers of generative AI systems (Art 50(2)) and on the deployers who put AI-generated content into circulation (Art 50(4)), with a user-facing disclosure obligation at first exposure (Art 50(5)). The deployer in an advertising flow is typically the advertiser or agency, not the publisher. AdCP carries the machine-readable signals that make Article 50 evidence operable — `digital_source_type` classifies AI involvement at the asset level, `disclosure.jurisdictions` carries jurisdiction-specific label text and render guidance, and `human_oversight` records the level of human involvement relevant to the Art 50(4) editorial-responsibility carve-out. Enforcement points can filter or flag creatives based on `digital_source_type` values that indicate AI generation (`trained_algorithmic_media`, `composite_with_trained_algorithmic_media`). The protocol does not perform the regulatory analysis or determine which party is the deployer. + +**California SB 942**: Imposes disclosure obligations on covered platforms (defined by MAU threshold) when content is generated or substantially modified by AI. The `digital_source_type` and `human_oversight` fields carry the factual signals the covered party uses to make its disclosure determination, and `disclosure.required` carries the declaring party's resulting claim. The flag is a *declared* signal in the supply chain — useful as a routing and audit input — not a substitute for the covered party's own analysis. A seller relying on `disclosure.required: false` without verification is relying on the buyer's claim, not a determination the protocol made. + +**Platform mandates (Meta, Google, TikTok)**: Major platforms already require AI content labeling using IPTC-aligned metadata. AdCP's provenance structure is directly compatible with these requirements because it uses the same underlying vocabulary. + +AdCP does not determine which regulations apply to a given creative. It provides the structured metadata that allows each enforcement point to apply its own jurisdictional rules. The protocol carries the data; the enforcing party makes the compliance decision. + +### Verification flow + +```mermaid +flowchart TB + subgraph creative["Advertising creatives"] + C1["Buyer declares provenance
on creative manifest"] + C2["Seller requires provenance
via creative_policy"] + C3["AI detection agent evaluates
via get_creative_features"] + C4["Seller compares claim vs detection
accepts or rejects"] + C1 --> C2 --> C3 --> C4 + end + + subgraph content["Publisher content"] + P1["Publisher declares provenance
on artifact and assets"] + P2["Verification agent calibrates
via calibrate_content"] + P3["Buyer audits delivery
via validate_content_delivery"] + P1 --> P2 --> P3 + end +``` + +## Implementation checklist + +### Buyers (brands and agencies) + +| Requirement | Description | +|-------------|-------------| +| Attach provenance to creatives | Set `provenance` on `creative-asset` or `creative-manifest` when submitting via `sync_creatives` | +| Classify AI involvement | Use the correct `digital_source_type` for each creative and asset | +| Declare AI tooling | Populate `ai_tool` when AI systems were used in production | +| Set human oversight level | Indicate `human_oversight` when AI is involved | +| Declare disclosure obligations | Populate `disclosure.jurisdictions` for each applicable regulation | +| Preserve C2PA references | Include `c2pa.manifest_url` when content credentials exist | +| Use transcoding-resilient declarations | When the pipeline includes intermediaries that transcode or re-encode assets, attach `embedded_provenance[]` and/or `watermarks[]` rather than relying on `c2pa.manifest_url` alone | +| Represent the verifier from the seller's allowlist | Populate `verify_agent.agent_url` on `embedded_provenance[]` / `watermarks[]` entries with a value drawn from the product's `creative_policy.accepted_verifiers[].agent_url`. Off-list URLs are rejected without an outbound call | +| Read seller requirements upfront | Inspect `creative_policy.provenance_required`, `creative_policy.provenance_requirements`, and `creative_policy.accepted_verifiers` from `get_products` and pre-flight your creative shape before calling `sync_creatives` | +| Handle rejection codes | Treat `PROVENANCE_REQUIRED`, `PROVENANCE_*_MISSING`, `PROVENANCE_VERIFIER_NOT_ACCEPTED`, and `PROVENANCE_CLAIM_CONTRADICTED` as machine-readable correctable errors — auto-retry without correction will not pass | +| Run pre-submission detection | Optionally attach `verification` results from your own detection services | + +### Sellers (publishers and platforms) + +| Requirement | Description | +|-------------|-------------| +| Set creative policy | Add `provenance_required: true` to `creative-policy` if provenance is required | +| Publish field-level requirements | Set `provenance_requirements.require_*` flags for fields you intend to enforce — buyers read these from `get_products` and self-correct before submission | +| Publish accepted verifiers | Populate `creative_policy.accepted_verifiers[]` with the governance agents you operate or have allowlisted. Buyers' `verify_agent` references MUST be a canonicalized match of one of these `agent_url` values | +| Enforce structural requirements | Reject `sync_creatives` submissions that omit any required field with the matching `PROVENANCE_*` error code (per-creative `errors[]`, `error.field` pointing at the missing path) | +| Cross-check `verify_agent` before calling | Confirm the buyer's `verify_agent.agent_url` is on `accepted_verifiers` (canonicalized) before any outbound call. Off-list URLs MUST be rejected with `PROVENANCE_VERIFIER_NOT_ACCEPTED` and never called | +| Run AI detection | Call `get_creative_features` against the on-list governance agent that matches the buyer's representation (or one you select from `accepted_verifiers` if the buyer omits `verify_agent`) | +| Compare claims vs detection | Implement logic to compare `digital_source_type` against `ai_generated` feature results | +| Reject contradictions | Use `PROVENANCE_CLAIM_CONTRADICTED` with `error.details` limited to `{ agent_url, feature_id, claimed_value, observed_value, confidence }` (and `substituted_for` when you called an on-list agent other than the one the buyer nominated) | +| Record audit observations | Preserve `get_creative_features.audit_observations[]` for downstream audit routing; do not reject solely because `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED` is present | +| Enforce disclosure | Verify that AI content includes appropriate `disclosure` metadata for target jurisdictions | +| Declare artifact provenance | Attach `provenance` to content artifacts submitted via content standards | + +### Creative agents + +| Requirement | Description | +|-------------|-------------| +| Attach provenance to generated content | When `build_creative` generates AI content, attach provenance with `digital_source_type`, `ai_tool`, and `human_oversight` | +| Set `declared_by` role to `tool` | Creative agents that attach provenance should identify themselves with role `tool` | +| Carry through C2PA | If source assets have C2PA manifests, carry the reference through to the generated manifest | + +### Governance agents (AI detection) + +| Requirement | Description | +|-------------|-------------| +| Declare detection features | Advertise `ai_generated` and related features via `get_adcp_capabilities` | +| Implement `get_creative_features` | Accept creative manifests and return detection results | +| Return confidence scores | Include `confidence` on detection results for probabilistic assessments | +| Surface audit-worthy carve-out claims | Emit `audit_observations[]` with `OVERSIGHT_DISCLOSURE_CARVEOUT_CLAIMED` when `human_oversight` is `edited` or `directed` and `disclosure.required` is `false` | +| Provide detail URLs | Link to full reports via `detail_url` for audit trails | + +## Related + +- [AI provenance and disclosure](/dist/docs/3.2.0-beta.4/creative/provenance) -- The provenance schema reference, digital source type enum, and inheritance model +- [Creative Governance](/dist/docs/3.2.0-beta.4/governance/creative/index) -- Feature-based creative evaluation via `get_creative_features` +- [`get_creative_features`](/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features) -- Task reference for creative feature evaluation +- [Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) -- Privacy-preserving brand suitability for publisher content +- [`calibrate_content`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content) -- Calibration task for content standards alignment +- [`validate_content_delivery`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery) -- Post-delivery content validation diff --git a/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment.mdx b/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment.mdx new file mode 100644 index 0000000000..aa2105cf93 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment.mdx @@ -0,0 +1,550 @@ +--- +title: Embedded human judgment +sidebarTitle: Embedded human judgment +"og:image": /images/concepts/three-party-governance.png +description: "Embedded Human Judgment (EHJ) is a set of principles and an oversight framework for keeping humans accountable when AI agents allocate capital, shape information environments, and execute advertising decisions at scale." +"og:title": "AdCP — Embedded human judgment" +--- + +*Principles for agentic advertising accountability — followed by the EHJ oversight framework.* + +## The five principles + +### 1. Humans remain the locus of judgment and accountability + +AI systems can analyze, predict, and execute. But responsibility cannot be delegated to software. + +Any system that allocates capital, shapes information environments, or affects public trust must retain human-owned judgment. + +Humans define intent, acceptable risk, and reasonable trade-offs — even when execution is automated. Accountability must remain legible at every stage of automation. Oversight must operate under uncertainty. Human judgment defines what is reasonable, not what is perfect. + +### 2. Automated decisioning without abdication + +As we embrace autonomous advertising agents, we need to scale execution without diluting accountability. + +Automation should: + +- Scale execution +- Increase precision in allocation decisions +- Navigate complex systems to identify optimal execution paths +- Reduce manual operational friction + +But automation must not remove authorship and responsibility for value judgments. Humans remain accountable for decisions that define risk, intent, and societal impact. Advanced automation is acceptable only when accountability remains intact. + +### 3. Optimization is not intelligence + +Not all decisions can be reduced to metrics. + +Certain classes of decisions must remain human-owned by design because they involve: + +- Values +- Strategy +- Legitimacy +- Trust + +These judgments exist precisely because optimization cannot resolve them. System design must recognize how and when a decision exceeds mere optimization and requires human judgment. + +### 4. Oversight must be architectural, not procedural + +Human oversight must be embedded in system design. This requires: + +- Explicit decision boundaries +- Escalation triggers +- Auditability +- Explainability +- Identifiable human owners + +Systems must be built so that control cannot silently migrate away from humans over time. + +### 5. Efficiency does not override legitimacy + +Speed, scale, and optimization cannot justify: + +- Loss of accountability +- Erosion of judgment +- Opaque decision chains + +The goal is to ensure they remain governable to avoid loss of legitimacy over time. + +--- + +## Humans are the locus of judgment and accountability + +AI agents exist to support, inform, and execute decisions, but they do not replace human ownership where risk tolerance, intent, or values judgments are at stake. + +Embedded Human Judgment (EHJ) ensures that certain decisions remain human-owned by design, even as agents automate analysis, optimization, and execution at scale. + +This is not an after-the-fact review process. It is about structurally designing accountability into the system. + +### EHJ in the AdCP architecture + +EHJ operates at the protocol layer, not inside any individual agent and not at the execution layer. + +The protocol defines decision boundaries: which decisions require human judgment, when escalation is triggered, and what must be logged and explainable. Agents implement their own internal logic and operate autonomously within those boundaries. + +Execution happens continuously and at speed within the structure the protocol defines. + +### What EHJ is not + +EHJ is not: + +- A temporary safety phase while AI "matures" +- A UI approval system bolted on afterward +- A mandate for humans to control execution +- An attempt to eliminate agent autonomy + +EHJ is a permanent design constraint for accountable systems. + +## Why embedded human judgment matters + +Agentic systems will make mistakes. The question is not *if*, but *when* — and how costly. + +Key assumptions: + +- Agents can be technically correct but strategically wrong +- Training data never covers all edge cases +- Novel situations require judgment, not optimization +- A single bad decision can outweigh years of efficiency gains + +EHJ exists to ensure that accountability attaches to intent and risk tolerance, not to the illusion of perfect outcomes. + +## Foundational principles + +### Human judgment without human bottlenecks + +The goal is not maximum human involvement, but human ownership where it structurally matters. + +| Dimension | How EHJ handles it | +|---|---| +| **Autonomy** | Agents handle the majority of routine decisions | +| **Accountability** | Humans retain authority over brand, budget, legality, and ethics | +| **Efficiency** | Oversight does not recreate approval hell | +| **Transparency** | Every decision is auditable and explainable | + +### Human roles in the system + +"Human" refers to accountable roles, not individuals: + +- **Advertiser and publisher decision owners** — brand, budget, ethics. "Brand" refers to both buyers and sellers of media. +- **Agency decision owners** — strategy, planning, execution +- **Platform owners** — compliance, infrastructure +- **Legal and regulatory authorities** + +Some decisions are human-owned permanently, by definition — not because AI is weak, but because accountability must remain human. + +## Domains of human-owned judgment + +EHJ defines decision domains where human ownership is required, even if agents provide analysis and recommendations: + +- Budget and capital allocation +- Distribution and monetization partners +- Brand suitability and context +- Creative and messaging +- Targeting and audience strategy +- Pacing and performance monitoring + +### Budget and capital allocation + +**Principle.** Budget deployment beyond defined bounds is a human decision. + +Agents may: + +- Forecast outcomes +- Optimize pacing +- Propose reallocations + +Humans must decide when: + +- Spend exceeds absolute or relative thresholds +- Cumulative spend accelerates unexpectedly +- Pacing materially diverges from intent + +Accountability attaches to risk tolerance and intent, not perfect pacing. + +### Distribution and monetization partners + +**Principle.** New relationships imply new risk. Trusted execution with streamlined oversight is allowed for established, vetted partners. + +Human approval is required for: + +- First-time publishers or platforms +- New contracts or personal data-sharing agreements +- Quality or fraud concerns +- Cross-border activations of personal data + +### Brand suitability and context + +**Principle.** Acceptable context and risk tolerance are human-defined. + +Humans define: + +- What is unacceptable +- What requires review +- What level of uncertainty is tolerable + +Agents classify and score risk probabilistically based on human-defined judgments. Decisions are tiered: + +- **Hard blocks** — always rejected +- **Probabilistic review** — mandatory human decision +- **Pre-campaign and post-placement audit** — logged and reviewable + +Escalation occurs whenever a reasonable human would want to decide. + +### Creative and messaging + +**Principle.** Messaging intent and claims remain human-owned. + +Trusted execution with streamlined oversight is allowed for: + +- Variations within approved templates +- Localization using approved guidelines +- DCO within guardrails + +Human validation is required for: + +- New core messaging +- Claims with legal or reputational risk +- Creative tied to current events +- Assets that feel "technically on-brand but wrong" + +EHJ acknowledges that creative outcomes are probabilistic and context-dependent. + +### Targeting and audience strategy + +**Principle.** Targeting intent and acceptable risk are human-defined. + +Agents may optimize within approved strategies. Human review is required for: + +- New data sources +- Sensitive or regulated attributes +- Material shifts in targeting intent +- Potentially discriminatory strategies + +In these cases, compliance, ethics, and jurisdictional risk override pure performance optimization. + +### Pacing and performance monitoring + +**Principle.** Significant deviations from expectations require explicit judgment. + +Agents must alert, escalate, and proportionally throttle activities when: + +- Performance collapses beyond thresholds +- Fraud signals (IVT, click-fraud, publisher fraud) exceed tolerance +- Budget exhaustion is imminent +- Cross-platform metric discrepancies surpass thresholds + +Humans decide whether to continue, modify, or terminate. For termination, it would be advisable to include a description as to why. + +Not every anomaly is failure — but major deviations from intent must remain human-governed. + +## Governance architecture + +EHJ operates through a layered governance model that allows policy composition across organizations, brand portfolios, and campaigns. + +### Governance layers + +**Protocol layer.** Defines universal standards applied across the ecosystem: escalation requirements, confidence scoring rules, regulatory policy registry, minimum audit and logging standards. These rules apply to all participating agents. The registry is maintained as a shared ecosystem resource — organizations reference standardized policies by ID rather than maintaining independent compliance definitions. + +**Corporate governance layer.** Large organizations may define corporate-level policies that apply across a brand portfolio: regulatory compliance requirements, global brand safety standards, prohibited targeting categories, data protection policies. Corporate policies act as baseline constraints for all brands within the organization. + +**Brand governance layer.** Individual brands may define additional policies reflecting brand identity, positioning, and risk tolerance. A luxury brand may impose stricter placement rules; a mass-market brand may allow broader contextual environments; product categories may impose additional compliance constraints. Brand policies inherit corporate standards but may introduce stricter constraints or specialized rules. + +**Campaign governance layer.** Campaign-level configuration provides temporary execution parameters: budget thresholds, pacing constraints, creative eligibility rules, audience definitions. Campaign rules operate within the boundaries established by corporate and brand governance. Execution may be delegated to authorized agents operating within these constraints. + +### Policy composition + +Governance rules are applied hierarchically: + +``` +Corporate Governance + ↓ +Brand Governance + ↓ +Campaign Configuration +``` + +Each layer may add restrictions but cannot override higher-level governance constraints. If a lower governance layer attempts to relax or override a constraint defined by a higher layer, the governance agent treats the higher-level constraint as authoritative, rejects the conflicting rule, and records the conflict in the audit log. + +This structure allows organizations with large brand portfolios to operate multiple governance profiles simultaneously while maintaining consistent regulatory and ethical standards. + +### Accountability across layers + +Accountability remains explicit at each layer: + +- Protocol designers define system safeguards +- Corporate owners define enterprise risk tolerance +- Brand teams define positioning constraints +- Campaign operators manage execution + +All decisions remain traceable through the audit framework. + +### Delegated execution and authorized operators + +Brands may delegate campaign execution authority to external agencies or authorized agent operators. Delegation does not transfer governance authority. Delegated and authorized operators may rely on stricter policies than what brands have delegated. + +Authorized agents operate within the governance constraints defined by the corporate and brand policy layers. The brand remains the accountable entity for campaign intent and policy configuration, while the delegated operator executes decisions within those defined boundaries. + +## Data protection and regulatory compliance + +Data protection and regulatory compliance are treated as governance constraints within the protocol, not as external policy considerations. Agents must validate decisions against the policy registry during governance evaluation before execution occurs. + +### Regulatory policy registry + +The protocol maintains a policy registry containing machine-readable references to regulatory frameworks and jurisdiction-specific rules, including but not limited to: + +- GDPR +- COPPA +- CCPA / CPRA +- LGPD +- APAC jurisdictional frameworks + +Each policy entry specifies: + +- Applicable jurisdiction +- Relevant data classifications +- Sensitive data definitions +- Enforcement requirements + +The policy registry may also list contracts created by trade bodies or collective-bargaining groups to communicate among participants. Agents and platforms must reference the policy registry during decision validation. + +### Personal and non-personal data + +Data protection regulations apply when personal data is processed. In the EEA, the ePrivacy Directive applies to device access and storage, but the AdCP protocol is communication between software systems — whether agent-to-agent (via A2A) or client-to-server tool calls (via MCP) — not consumer devices. + +Within AdCP workflows: + +- Planning and negotiation layers typically exchange non-personal contextual information and campaign parameters. +- Real-time execution layers may involve device-level signals that can qualify as personal data depending on jurisdiction and recipient capability. + +The protocol must specify whether a recipient agent is reasonably capable of re-identifying an individual or household using the exchanged data. If re-identification is reasonably possible, the data must be treated as personal data and processed according to the applicable regulatory framework. + +### Sensitive data classification + +Sensitive information refers to categories of data that may expose individuals to discrimination or material harm. Because definitions vary by jurisdiction, the protocol must reference jurisdiction-specific definitions from the policy registry. + +Agents must classify whether a decision involves sensitive information based on: + +- The data attributes used +- The intended delivery geography +- The applicable regulatory framework + +If sensitive data is involved, stricter governance rules apply. + +Consumer protection laws apply when sensitive information is being handled. Different jurisdictions define specific categories of sensitive information differently, but one commonality is when the information has historically been used to illegally discriminate or cause material harm to individuals. + +Most online advertising does not involve sensitive information, but it is important for actors to classify when data exchanged does qualify as sensitive. The protocol must specify whether the information used by a recipient agent will or will not involve sensitive information. The geography associated with the intended content delivery should govern which region-specific definition of sensitive information applies. For example, if the intended delivery is within the European Economic Area, GDPR's definition should apply. + +### Jurisdictional compliance validation + +Before execution, agents must validate decisions using the protocol's governance validation process (for example, [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance)). + +Validation includes: + +- Applicable jurisdiction based on delivery geography +- Applicable regulatory policies from the policy registry +- Classification of the data used in the decision +- Determination of whether sensitive data rules apply + +If a decision violates applicable regulatory policies, the system must: + +- Escalate for human review +- Restrict execution +- Or block the decision entirely, depending on risk tier + +### Intent and exposure + +AdCP records the intent of decision-makers as part of the protocol. This allows systems to distinguish between: + +- **Intentional targeting** +- **Incidental exposure** + +For example, a campaign intended for adults may still appear in environments accessible to minors. Because the targeting intent is recorded, compliance evaluation can distinguish between intentional violations and unintended exposure. This design aligns accountability with reasonable intent rather than perfect outcomes. + +## Governance and decision framework + +### Decision types + +All agent decisions must be classifiable: + +| Type | Description | +|---|---| +| **AI-owned, deterministic** | Rule-based, predictable outcomes | +| **AI-led, human-bounded** | Probabilistic optimization with thresholds | +| **Human-owned, strategic** | Trade-offs, intent, ethics, and values | +| **Human-owned by necessity (novel)** | Unknown situations agents cannot confidently resolve | + +The decision type determines whether and how escalation occurs. + +### Confidence and escalation + +Every agent recommendation must include: + +- A confidence score +- An explanation of uncertainty +- A defined escalation rule + +Confidence scores must reflect the agent's assessment of how reliably the recommendation aligns with the defined campaign intent and expected outcomes. This assessment should consider factors such as data completeness, model certainty, similarity to historical decisions, and variance in predicted outcomes. + +Confidence scores should be accompanied by a brief explanation of uncertainty, including factors such as: + +- Limited or incomplete data +- Conflicting signals +- Novel or out-of-distribution scenarios +- Unusually high variance in predicted results + +Escalation decisions should follow a risk-aware framework. Agents must evaluate recommendations based on both: + +- **Decision confidence** — how certain the agent is +- **Decision risk** — the potential impact if the decision is incorrect + +Risk may include financial exposure, brand safety implications, regulatory sensitivity, scale of audience reach, or deviation from defined campaign intent. + +Human decision owners define acceptable risk levels and associated confidence thresholds. When confidence is insufficient for the level of risk involved, agents must escalate to human oversight rather than execute autonomously. + +Escalation triggers may include: + +- Confidence below defined thresholds for the risk level +- Material deviation from defined campaign intent +- Changes in data quality or signal reliability +- Inability to provide a clear explanation of the recommendation + +Thresholds may be based on: + +- Metric-driven limits (for example, financial spend or exposure) +- Execution deviation from intent (for example, geographic targeting or audience constraints) + +When escalation occurs, the agent must present: + +- The recommended action +- The confidence score +- The explanation of uncertainty +- The specific rule that triggered escalation + +This ensures that human oversight focuses on decisions where uncertainty or potential impact exceeds predefined governance boundaries, rather than routine execution. + +### Escalation mechanics + +EHJ defines how human judgment is invoked: + +| Mode | Behavior | +|---|---| +| **Synchronous** | Block until human decides | +| **Asynchronous** | Proceed conservatively, allow override | +| **Audit-only** | Act, log, review later | + +### Timeout and fallback handling + +Timeouts follow a risk-tiered approach: + +- **Low-risk decisions** — execution may proceed within predefined guardrails +- **Medium-risk decisions** — agents apply conservative defaults or limited execution while notifying human owners +- **High-risk decisions** — agents escalate for human review or temporarily restrict execution until guidance is received + +This approach ensures that operational continuity is maintained where risk is limited, while decisions with greater potential impact receive appropriate human oversight. In cases of uncertainty, systems prioritize governable outcomes over maximum speed, recognizing that occasional opportunity cost is an acceptable trade-off for maintaining accountability. + +## Protocol and runtime distinctions + +AdCP separates two operational layers: the **protocol layer**, where governance and decision constraints are defined, and the **runtime layer**, where real-time execution occurs. + +### Protocol layer + +The protocol layer defines the structure and governance of decision-making. It includes: + +- JSON schemas and task definitions +- Governance rules and escalation policies +- [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) and [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents) declarations +- Confidence scoring standards +- Policy registry and regulatory constraints + +At this layer, planning and negotiation agents define campaign goals, constraints, and acceptable risk boundaries. These parameters are authored and maintained by human operators but exchanged between agents to establish a machine-readable contract. + +This layer determines what decisions are permitted and when human judgment must be invoked. + +### Runtime layer + +The runtime layer executes decisions in real time, including: + +- Bid evaluation +- Creative rendering +- Audience activation +- Pacing and budget allocation + +Real-time agents operate within the boundaries defined by the protocol layer. Human operators define governance constraints in advance and intervene only through configured escalation checkpoints. + +In short: + +- The **protocol layer** governs the rules of decision-making. +- The **runtime layer** executes those decisions at speed. + +## Audit, transparency, and learning + +Governable automation requires that all significant decisions remain observable, explainable, and reconstructable. + +### Audit trail + +Every high-impact decision must generate an auditable record including: + +- Decision inputs +- Confidence score +- Agent reasoning +- Human interventions +- Execution outcome + +Organizations retain their own logs to satisfy internal governance and regulatory compliance requirements. + +### Explainability + +Decisions must be explainable at multiple levels depending on the audience: + +| Audience | Detail level | +|---|---| +| **Approvers and oversight** | Summary level | +| **System operators and campaign managers** | Operational level | +| **Auditors and compliance reviewers** | Technical level | + +Decision intent is captured by design within the protocol for each message and targeting instruction. + +### Log attributes + +| Dimension | Attribute | +|---|---| +| **When** | Timestamp (millisecond precision) | +| **Which** | Decision ID (unique, traceable across systems) | +| **Who** | Agent ID (which agent made the decision); human ID (who reviewed, if applicable); advertiser responsible for the message; actor responsible for payment; actor owed payment for the decision; publisher responsible for delivery (for final steps in the supply chain) | +| **What** | Input (full context), decision type and classification | +| **How well** | Observed execution result | + +Consistent definitions of actors are described in the following protocols: + +- **Advertiser responsible for the message** — declared in [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json), including the brand's `keller_type` (`master`, `sub_brand`, `endorsed`, or `independent`) and its `parent_brand` where applicable. +- **Actor responsible for payment** — declared in [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) (the brand itself or its operator). +- **Actor owed payment for the decision** — declared in [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents), via `seller_id` and the authorized `property_id`(s). +- **Publisher responsible for delivery** — the property associated with the final impression, identified by `property_id` in `adagents.json`. + +## How this maps to AdCP today + +The framework above is implementation-agnostic. For readers landing here to implement against AdCP, the principles currently surface through these protocol mechanisms: + +| Framework concept | AdCP mechanism | +|---|---| +| Humans define boundaries (budget, review) | [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) — `budget.reallocation_threshold`, `plan.human_review_required` | +| Governance invocation on every spend-commit | [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) — called by orchestrator (intent check) and seller (execution check) | +| Three-party separation of duties | [Safety model](/dist/docs/3.2.0-beta.4/governance/campaign/safety-model) — orchestrator, governance agent, seller | +| Escalation to human via async task | `check_governance` returns async, resolves `approved` or `denied` once the human acts | +| Audit trail and explainability | [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) | +| Regulatory policy registry | [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) | + +## Policy Registry + +The [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) is a community-maintained library of standardized, machine-readable advertising policies — regulations like COPPA, GDPR, and UK HFSS, as well as industry standards. + +It gives governance agents a shared vocabulary to reference by policy ID, rather than each agent defining the same rules independently. The registry page covers how policies are structured, the difference between hard regulations (must) and best-practice standards (should), how governance agents resolve and apply them at runtime, and how to contribute new policies. + + + + See EHJ principles in action across a complete campaign scenario + + + Shared library of machine-readable regulations and industry standards + + diff --git a/dist/docs/3.2.0-beta.4/governance/overview.mdx b/dist/docs/3.2.0-beta.4/governance/overview.mdx new file mode 100644 index 0000000000..269fe83690 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/overview.mdx @@ -0,0 +1,309 @@ +--- +title: Governance protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/governance-01-no-oversight.png +description: "AdCP governance ensures human oversight of autonomous AI advertising through three-party validation, budget controls, and brand safety enforcement." +"og:title": "AdCP — Governance protocol" +--- + +A robot arm reaches for a glowing red BUY button marked $50,000 — no human is present, warning lights blink in the dim room, and unchecked documents pile up nearby + +An AI agent is about to spend \$50,000 on advertising. No human reviewed the plan. No system checked the budget. No policy filtered the inventory. The agent has credentials, a brief, and a BUY button. + +Jordan is a campaign operations manager at Pinnacle Agency. This is her nightmare. Not because the technology failed — because nobody was accountable. Responsibility cannot be delegated to software. + +She doesn't want to slow agents down — they're faster and more thorough than her team at managing cross-platform campaigns. But she needs to know that when an agent buys media for Acme Outdoor, it stays within budget, runs on approved publishers, and meets Canadian privacy rules. She needs to know that if something exceeds authority, a human gets asked — not after the fact, but before the money moves. + +AdCP's governance system is built on a principle: [human judgment must be embedded in system design](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment), not bolted on afterward. Oversight is architectural — the system cannot operate without it. + +This walkthrough follows Jordan as she sets up governance for Sam's \$50K campaign and watches it work. + + +**Regulated verticals.** Campaigns for credit, insurance, employment, or housing fall under GDPR Article 22 and EU AI Act Annex III — automated decisions affecting data subjects require human oversight. See [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) for what AdCP provides and what the deployer is responsible for. + +The AdCP policy registry ships seeded with regulatory policies across US (FHA, ECOA, EEOC, COPPA, FDA, FTC, TTB), EU (DSA, prescription DTC), and platform-specific categories — alongside GDPR Article 9 restricted-attribute definitions that governance agents evaluate programmatically. The seeded registry is a starting point, not an exhaustive list; deployers extend it for their own jurisdictions and brand rules. + + +## The three-party model + +A triangle diagram with humans at the top setting policies, and three agents below — orchestrator proposes, governance validates, seller fulfills — connected by lines showing separation of duties + +AdCP governance works because humans define the boundaries and no single party controls the full workflow: + +| Party | Role | Cannot do | +|---|---|---| +| **Orchestrator** | Proposes campaign plans, executes buys | Set its own spending limits or approve its own plans | +| **Governance agent** | Validates plans against policies, tracks budgets | Execute buys or modify campaigns | +| **Seller** | Fulfills media buys, reports delivery | Override governance decisions or modify budgets | + +The agent that spends money isn't the agent that sets the rules. This isn't three agents checking each other — it's a structure designed so that human-defined policies govern every transaction, and no agent can act outside the authority a human granted it. + +## Step 0: Sync governance agents + +Before registering the plan, the buyer syncs governance agents with the seller via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance). This gives the seller the endpoints and credentials needed to call `check_governance` independently when processing media buys. + +## Step 1: Register the plan + +A buying robot creates a glowing campaign plan document that floats across to a governance robot sitting behind a security desk with a shield emblem — the governance robot examines it carefully + +Before Sam's orchestrator executes any buy, Jordan's governance setup requires it to register the campaign plan: + +```javascript +const plan = await governance.syncPlans({ + plans: [{ + plan_id: "acme-q2-trail-pro", + brand: { domain: "acmeoutdoor.com" }, + objectives: "Q2 Trail Pro 3000 launch across sports and outdoor lifestyle publishers", + budget: { total: 50000, currency: "USD", reallocation_threshold: 5000 }, + flight: { start: "2026-04-01T00:00:00Z", end: "2026-06-30T23:59:59Z" }, + countries: ["US", "CA"] + }] +}); +``` + +The governance agent now knows about this plan. It resolves applicable policies — brand safety rules, budget limits, regulatory requirements for US and Canada, and Acme Outdoor's brand-specific restrictions from `brand.json`. + +No money has moved. The plan is registered, not executed. + +Notice `reallocation_threshold: 5000` — Jordan chose this setting. It means the orchestrator can reallocate budget up to $5,000 on its own, but any larger move requires human approval. This boundary is a human decision, not a technical default. The agent cannot change it. + + + +The governance agent pulls policies from multiple sources: + +- **Budget limits**: Reallocation threshold caps how much budget the agent may move without human approval +- **Brand safety**: Acme Outdoor's `brand.json` specifies approved and excluded publisher categories +- **Regulatory**: US and CA jurisdictions trigger COPPA, PIPEDA, and state privacy rules +- **Industry**: AgenticAdvertising.org's policy registry provides standardized regulations + +Jordan configured these policies once. They apply automatically to every campaign for this brand. + + + +## Step 2: Check before spending + +The governance robot reviews three inspection panels side by side — budget (showing a bar chart nearly at limit), brand safety (green checkmark), and compliance (green checkmark) — the budget panel glows amber as a warning + +When the orchestrator is ready to buy, it calls `check_governance` before executing: + +```javascript +const check = await governance.checkGovernance({ + plan_id: "acme-q2-trail-pro", + caller: "https://orchestrator.pinnacle-agency.example", + tool: "create_media_buy", + payload: { + seller: "https://streamhaus.example", + amount: 25000, + currency: "USD" + } +}); +``` + +The governance agent evaluates the proposed action against every applicable policy: + +| Check | Status | Detail | +|---|---|---| +| Budget within plan limit | Passed | \$25K of \$50K available | +| Budget within agent authority | **Warning** | Agent authorized up to \$20K per transaction | +| Brand safety | Passed | StreamHaus on approved list | +| Regulatory compliance | Passed | Targeting meets US/CA requirements | +| Creative provenance | Passed | All creatives carry required metadata | + +The response isn't pass/fail — it returns structured findings with severity levels (`must`, `should`, `may`) and confidence scores. The orchestrator knows exactly what passed, what failed, and why. + +## Step 3: Escalation + +The governance robot raises an amber flag and routes the campaign plan along a glowing path to a human reviewer — a woman with dark hair sitting at a glass desk, who examines the flagged document thoughtfully + +The \$25,000 transaction exceeds the agent's \$20,000 authority limit. The governance agent flags it with `must` severity — the orchestrator cannot proceed without resolution. + +This is not a failure — it is the system working as designed. The agent doesn't need to remember to check; the architecture requires it. Oversight is structural, not procedural. + +Two options: +1. **Reduce the transaction** to \$20,000 or less +2. **Wait for human approval** — the governance agent handles this internally + +The governance agent determines that human review is needed. It holds the `check_governance` request async — the orchestrator sees standard async task status (`submitted`, `working`) while Jordan receives the flagged plan with full context: what the agent wants to buy, why it was flagged, and which policy triggered it. + + + +The `check_governance` task goes async. The orchestrator polls or receives a webhook when it resolves. Internally, the governance agent routes to Jordan for approval. Once she acts, the task completes with `approved` or `denied`. + +```json +{ + "check_id": "chk-q2-ctv-001", + "check_type": "intent", + "verdict": "denied", + "plan_id": "acme-q2-trail-pro", + "explanation": "Budget authority exceeded. Transaction amount $25,000 exceeds agent authority limit of $20,000.", + "findings": [ + { + "category_id": "budget", + "policy_id": "budget-authority-limit", + "severity": "must", + "explanation": "Transaction amount $25,000 exceeds agent authority limit of $20,000.", + "confidence": 1.0 + } + ] +} +``` + +If Jordan approves (potentially with conditions), the governance agent returns `approved` instead. + + + +## Step 4: Human approval + +Jordan stamps the campaign plan with a green approval seal and attaches a yellow condition tag reading 'weekly reporting required' — the approved plan flows back through the governance robot to an open ledger + +Jordan reviews the plan and approves — with a condition: the agent must report delivery weekly instead of at flight end. + +She isn't rubber-stamping. She reviewed the context, assessed the risk, and exercised judgment by adding a constraint the agent didn't request. This is the human remaining the locus of accountability — the agent proposed, the human decided. + +This approval is recorded in the governance system. The governance agent updates the plan's delegation — the orchestrator now has temporary authority for this specific transaction, with the added reporting constraint. The governance agent records who approved, when, and under what conditions. + +## Step 5: Campaign runs under watch + +A cityscape with ads running on billboards, phone screens, and TV displays — above it all, the governance robot monitors from a watchtower, scanning the scene with a teal beam as metrics stream upward + +The campaign is live. Governance doesn't stop at purchase — it monitors delivery against the approved plan: + +- **Budget tracking**: As `report_plan_outcome` data flows in, the governance agent tracks actual spend against committed budget +- **Drift detection**: If delivery diverges from the plan — wrong publisher, unexpected creative, budget overrun — governance flags it +- **Policy updates**: Governance can re-evaluate active plans when their synced plan changes. Content-standards updates do not define interoperable mid-flight adoption or pinning behavior; see [updating content-standards policies](/dist/docs/3.2.0-beta.4/governance/content-standards/index#updating-policies). + +First, the orchestrator reports that the seller accepted the purchase and committed budget: + +```javascript +await governance.reportPlanOutcome({ + idempotency_key: "outcome-acme-q2-ctv-0001", + plan_id: "acme-q2-trail-pro", + check_id: "chk-q2-ctv-001", + governance_context: check.governance_context, + outcome: "completed", + seller_response: { + media_buy_id: "mb-streamhaus-001", + committed_budget: 25000 + } +}); +``` + +Then, as delivery data comes in, the orchestrator reports delivery outcomes so governance can track actual spend against the committed budget: + +```javascript +await governance.reportPlanOutcome({ + idempotency_key: "delivery-acme-q2-ctv-0001", + plan_id: "acme-q2-trail-pro", + check_id: "chk-q2-ctv-001", + governance_context: check.governance_context, + outcome: "delivery", + delivery: { + media_buy_id: "mb-streamhaus-001", + reporting_period: { + start: "2026-04-01T00:00:00Z", + end: "2026-06-30T23:59:59Z" + }, + impressions: 887000, + spend: 24850 + } +}); +``` + +The \$25,000 buy remains the committed obligation, and the \$24,850 delivery snapshot is recorded as audit evidence without being counted again. Seller-originated delivery monitoring uses `check_governance` with `phase: "delivery"`. + +## Step 6: The audit trail + +A horizontal timeline ribbon showing decision nodes — plan created, check flagged, human reviewed, approved, launched, delivered — with the governance robot presenting a detailed log book to a team of three humans + +Six months later, Acme Outdoor's procurement team asks: "Who approved that \$25,000 CTV buy?" Jordan pulls the complete decision history: + +```javascript +const audit = await governance.getPlanAuditLogs({ + plan_ids: ["acme-q2-trail-pro"], + include_entries: true +}); +``` + +Every event, in sequence: + +1. **Plan registered** — orchestrator synced plan with \$50K budget +2. **Governance check** — \$25K buy flagged for exceeding agent authority +3. **Escalation** — Jordan reviewed, approved with weekly reporting condition +4. **Buy executed** — StreamHaus media buy created +5. **Delivery reported** — \$24,850 actual spend, 887K impressions +6. **Budget updated** — \$25,150 remaining + +Every decision, every approval, every outcome — structured, timestamped, attributable. Accountability requires legibility. This isn't a log file buried in a server — it's a first-class audit record designed to answer the question "who decided this and why?" at any point in the future. + +## Crawl, walk, run + +Jordan didn't start with full enforcement. She configured the governance agent to start in audit mode — it evaluated every check fully but always returned `approved`, attaching findings for her to review. After two weeks she reviewed the logs, tuned policies to reduce false positives, and moved to advisory. In advisory mode, the governance agent returned real `denied` statuses but Jordan's team treated them as non-blocking. When she trusted the system, she switched to enforce. + +The callers (orchestrator, sellers) never changed their code. They always acted on the status they received. The mode was entirely the governance agent's internal configuration. + + + +Three-step diagram showing proposed (dotted outline, hypothetical check), execute (solid tag, budget reserved), and committed (ledger records actual spend) + +Budget tracking has three phases: + +1. **Proposed**: `check_governance` evaluates whether the amount fits within the plan. No money reserved — this is a hypothetical check. +2. **Execute**: The seller runs the campaign. The governance agent tracks the authorized amount as reserved, but actual spend may differ. +3. **Committed**: `report_plan_outcome` settles the authorization. The ledger uses governance-owned approved state; a seller-side purchase execution check can narrow the amount before commit, while a buyer report alone cannot restore headroom. + +A \$25,000 intent that the seller prepares at \$24,850 frees the \$150 only when that prepared amount passes the seller-side purchase execution check. A buyer-reported lower number alone is audit evidence, not authority to release budget. + + + + +**Embedded human judgment** + +Every step in this walkthrough reflects a principle from the [Embedded Human Judgment manifesto](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) — the framework that ensures humans remain accountable when AI agents operate autonomously. [Read the five principles →](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) + + +## Protocol domains + +The Governance Protocol covers six domains: + + + + Community-maintained library of standardized advertising regulations and industry standards, consumed by all governance domains. + + + Control where ads can run with property lists, compliance filtering, and publisher authorization via adagents.json. + + + Control what content ads run in with collection lists — program-level brand safety for shows, series, and podcasts across platforms. + + + Privacy-preserving brand suitability through calibration-based content evaluation and validation. + + + Security scanning, creative quality, and content categorization through specialist agents via get_creative_features. + + + Automated validation of buy-side transactions against authorized plans, budgets, and brand compliance configuration. + + + +### Sponsored Intelligence (Planned) + +Full protocol-level governance integration for [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) is under development. When available, SI platforms will support: + +1. **Campaign registration** via `sync_plans` — register SI campaigns with governance agents +2. **Session-lifecycle governance** via `check_governance` — validate actions during SI sessions +3. **Content standards for AI-generated content** — apply brand suitability to LLM-generated sponsored responses +4. **Property governance for AI assistant placements** — validate that AI platforms are authorized delivery surfaces + +Today, SI platforms enforce governance at the application layer using [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) and [brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json). The informal governance references in SI documentation reflect this application-layer integration, not protocol-level governance tasks. + +## Go deeper + +- **Safety model**: [Three-party trust in depth](/dist/docs/3.2.0-beta.4/governance/campaign/safety-model) — separation of duties, delegation, and escalation patterns +- **Campaign specification**: [Full data model](/dist/docs/3.2.0-beta.4/governance/campaign/specification) — plans, checks, outcomes, and policy resolution +- **Content standards**: [Brand suitability](/dist/docs/3.2.0-beta.4/governance/content-standards/index) — privacy-preserving calibration for content evaluation +- **Property governance**: [Where ads can run](/dist/docs/3.2.0-beta.4/governance/property/index) — property lists, adagents.json, and publisher authorization +- **Collection governance**: [What content ads run in](/dist/docs/3.2.0-beta.4/governance/collection/index) — collection lists for program-level brand safety across platforms +- **Policy registry**: [Community policies](/dist/docs/3.2.0-beta.4/governance/policy-registry) — standardized regulations and brand safety policies +- **Get certified**: [Specialist governance modules](/dist/docs/3.2.0-beta.4/learning/specialist/governance) teach the full governance system through interactive scenarios +- **RFC process**: [How to propose changes](/dist/docs/3.2.0-beta.4/governance/rfc-process) — lifecycle, proposal template, and decision-record format for protocol contributions diff --git a/dist/docs/3.2.0-beta.4/governance/policy-attribution.mdx b/dist/docs/3.2.0-beta.4/governance/policy-attribution.mdx new file mode 100644 index 0000000000..ac852f54eb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/policy-attribution.mdx @@ -0,0 +1,163 @@ +--- +title: Policy Attribution +description: "How producers tag mechanism-level filters and measurements with the authorizing policy, so audit trails and governance findings can trace back to why a specific threshold or evaluation exists." +"og:title": "AdCP — Policy Attribution" +sidebarTitle: Policy Attribution +--- + +When a buyer caps audience children-composition at 15%, the threshold itself doesn't explain why. The number is mechanical; the *reason* (UK HFSS) lives elsewhere. Without attribution, an auditor reading a property list six months later can't answer "why does this list exclude high-children-composition properties?" without human interpretation. + +Policy attribution closes that gap. Producers tag mechanism-level filters and measurements with `policy_id` to record the authorizing policy. Governance findings echo the same `policy_id` when emitting denials, so the trace runs end-to-end. + +## Three surfaces, one pattern + +| Surface | Producer | Use | +|---|---|---| +| [`core/feature-requirement.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/feature-requirement.json) | Buyer (or buyer's compliance tooling) | Tag a buyer-authored threshold predicate with the policy that authorized it | +| [`creative/creative-feature-result.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/creative-feature-result.json) | Creative agent / seller | Tag a measurement record with the policy that motivated the evaluation | +| [`property/validation-result.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/property/validation-result.json) `features[].policy_id` | Property-list agent | Tag a per-feature validation result with the policy that triggered the check | + +All three fields are optional. The first two were reserved in 3.0 GA; populating them in 3.1 is non-breaking for strict 3.0 validators. The third has been present on validation-result since 3.0. + +## When to populate `policy_id` + +Populate `policy_id` when **the filter or measurement exists because of a specific authorizing policy** — and the producer chose the specific mechanism as their encoding of that policy. + +Do **not** populate `policy_id` when the policy merely applies in general. Plan-level policy applicability is declared on the plan itself via `policy_ids[]` (sent to the buyer's governance agent through `sync_plans`). The filter-level field is for mechanism authorship, not blanket applicability. + +### Plan-level vs filter-level + +These are different jobs: + +| Buyer says | Where it lives | Who picks the mechanism | +|---|---|---| +| "Apply COPPA — governance figures out who qualifies" | `plan.policy_ids: ["us_coppa"]` | Buyer's governance agent | +| "Compliance with COPPA means: require properties to attest to it" | `feature_requirements: [{feature_id: "registry:us_coppa", value: true}]` | Buyer, delegating measurement to the seller's `registry:` feature | +| "I'm encoding HFSS as ≤15% children composition" | `feature_requirements: [{feature_id: "audience_children_composition", max_value: 15, policy_id: "uk_hfss"}]` | Buyer, picking the threshold themselves | + +Only the third row carries filter-level `policy_id`. The first two rows already capture intent at higher abstraction levels — the registry feature ID is itself the policy reference in the second case. + +## Round-trip via governance findings + +The attribution loop runs filter → governance agent → finding → audit. The agent acting on the buyer's plan calls `check_governance`; depending on `phase`, this is either an **intent check** (orchestrator-side, before commitment) or an **execution check** (seller-side, before binding planned delivery). Both paths produce findings with the same shape. + +``` +Buyer's property list (stored at the property-list agent) + feature_requirements: + - feature_id: audience_children_composition + max_value: 15 + policy_id: uk_hfss ← authored here + │ + │ Acting agent resolves the property list, sees policy_id as pass-through metadata + ▼ +Planned action would violate the requirement + │ + │ check_governance(plan_id, payload | planned_delivery, governance_context) + │ - orchestrator on intent check (tool + payload) + │ - seller on execution check (planned_delivery) + ▼ +Buyer's Governance agent emits a finding: + findings: + - category_id: regulatory_compliance + policy_id: uk_hfss ← echoed from the originating requirement + severity: block + explanation: "Planned targeting exceeds the 15% children-composition cap." + │ + ▼ +Audit: "why was this denied?" → uk_hfss → grep buyer's filters → find the originating requirement. +``` + +The acting agent (orchestrator or seller, depending on phase) is a transit point — it does not produce findings. The buyer's governance agent is the producer, and it has direct access to the buyer's filters (same trust boundary), so it can populate `policy_id` on findings by reading the underlying requirement. + +## Contract for producers + +**Buyer (or buyer's compliance tooling) authoring `feature-requirement`:** +- SHOULD populate `policy_id` when the requirement encodes a specific policy threshold the buyer chose. +- SHOULD NOT populate `policy_id` when the requirement is a general feature filter unrelated to any policy. +- MUST reference a `policy_id` that resolves either in the policy registry or in the plan's `custom_policies[]`. + +**Creative agent or seller authoring `creative-feature-result`:** +- SHOULD populate `policy_id` when the feature was measured for the purpose of a specific policy evaluation. +- SHOULD NOT populate `policy_id` when the feature is a generic measurement (carbon score, brand consistency) unrelated to any policy. + +**Governance agent emitting findings:** +- SHOULD echo `policy_id` on findings when the underlying violation traces to a filter or measurement carrying `policy_id`. +- MUST NOT invent a `policy_id` that wasn't present on the originating filter — finding `policy_id` is for traceability, not for declaring new policy applicability (that belongs in `policies_evaluated[]`). + +## Worked examples + +### UK HFSS — buyer-encoded threshold + +The buyer's compliance team interprets UK HFSS as "audience must be less than 15% children." They encode that interpretation as a feature requirement: + +```json +{ + "feature_requirements": [ + { + "feature_id": "audience_children_composition", + "max_value": 15, + "policy_id": "uk_hfss" + } + ] +} +``` + +If a different team later asks "why 15? why not 20?", the policy_id points at the registry entry for UK HFSS, where the rationale and exemplars live. + +### COPPA — delegated to the seller's registry feature + +The buyer doesn't pick a threshold for COPPA — they delegate the evaluation entirely. The `registry:` prefix is a feature-naming convention (see [`property-feature-definition`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/property/property-feature-definition.json) and [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry#feature-prefix-convention)) where the feature ID `registry:` references a standardized policy directly: + +```json +{ + "feature_requirements": [ + { + "feature_id": "registry:us_coppa", + "value": true + } + ] +} +``` + +The feature ID *is* the policy reference. Adding `policy_id: "us_coppa"` here would be redundant — and would imply the buyer authored the mechanism, when in fact they delegated it. + +### Creative measurement — agent records the why + +A creative agent evaluates a creative for HFSS compliance and records: + +```json +{ + "feature_id": "uk_hfss_compliance", + "value": false, + "policy_id": "uk_hfss", + "methodology_version": "v2.1", + "measured_at": "2026-05-17T14:00:00Z" +} +``` + +The `policy_id` answers "why did this evaluation run?" Anyone reviewing the creative's measurement history can correlate this result with the originating policy. + +When this result fails the creative-level governance check, the governance agent's finding echoes the same `policy_id`: + +```json +{ + "category_id": "regulatory_compliance", + "policy_id": "uk_hfss", + "severity": "block", + "explanation": "Creative failed UK HFSS compliance evaluation." +} +``` + +The buyer can correlate the finding back to the originating measurement by matching `policy_id` across both records. + +## What attribution does not cover + +- **Top-down policy declaration from buyer to seller.** When the buyer wants the seller to apply specialized handling for a policy (HIPAA vendor, COPPA dataset) without the buyer encoding the mechanism, that's a separate surface tracked in [#4629](https://github.com/adcontextprotocol/adcp/issues/4629). +- **Per-criterion attribution on audience selectors.** Audience exclusions in a plan should be derived from plan-level `policy_ids[]` by the buyer's governance agent — not hand-authored by buyers and tagged with policy authority. Audience-selector schemas do not carry `policy_id`. +- **Per-criterion attribution on the targeting overlay.** Targeting fields (`geo_countries_exclude`, age restrictions, device platforms) use flat arrays without a per-entry shape; per-criterion attribution would require schema restructuring. Use plan-level declaration for these constraints. + +## See also + +- [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) — the shared library of `policy_id`s +- [Policy Registry Sync](/dist/docs/3.2.0-beta.4/governance/policy-registry-sync) — how plans reference policies via `policy_ids[]` and `custom_policies[]` +- [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) — where findings are emitted with `policy_id` traceability diff --git a/dist/docs/3.2.0-beta.4/governance/policy-registry-sync.mdx b/dist/docs/3.2.0-beta.4/governance/policy-registry-sync.mdx new file mode 100644 index 0000000000..0f8b9f1b81 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/policy-registry-sync.mdx @@ -0,0 +1,113 @@ +--- +title: "Policy Registry: Sync and versioning" +sidebarTitle: Sync and versioning +description: "Operational pattern for keeping campaign plans synchronized with the AdCP Policy Registry — version pinning, registry version bumps, effective_date adoption, sunset behavior, and the additive-only invariant on inline policies." +"og:title": "AdCP — Policy Registry sync and versioning" +--- + +Working groups designing campaign governance ask the same set of questions about how policies stay synchronized between buyers, sellers, and governance agents. This page captures the operational pattern, in five sections plus an FAQ. + +## Can I pin a policy version on my plan? + +**No — `policy_ids[]` carries no version qualifier today.** A campaign plan references registry policies by ID alone: + +```json +{ + "plan_id": "plan_q1_2027_acme", + "policy_ids": ["us_coppa", "alcohol_advertising"], + "policy_categories": ["age_restricted"] +} +``` + +At every [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) call, the governance agent resolves each ID against the registry and uses **whatever version is current**. There is no plan-level version pin field. If a registry policy version-bumps between two checks on the same plan, the second check evaluates against the new version. + +If you need a deterministic policy text for the duration of a buy, copy the registry policy into [`custom_policies[]`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) on the plan — see [Pinning by inline copy](#pinning-by-inline-copy) below. The audit trail records `policies_evaluated[]` on every check, so the historical version is recoverable per-check via [`/api/policies/history`](https://adcontextprotocol.org/api/policies/history). + +This is the same posture taken by other ad-tech protocols (TCF v2's TC string, OpenRTB GPP) — versions resolve at evaluation time, not at request authoring time. It keeps buyers out of the version-dependency-management business in the 99% case where latest-at-resolution is correct. + +## Pinning by inline copy + +When a deterministic policy text is required — a regulator pre-clearance, a frozen brand-safety contract, a multi-month brand campaign that must be evaluated against the policy as it was on day one — the available pattern is to copy the registry policy into `custom_policies[]` at plan creation under a **different `policy_id`**: + +```json +{ + "plan_id": "plan_q1_2027_acme", + "policy_ids": ["us_coppa"], + "custom_policies": [ + { + "policy_id": "alcohol_advertising_pinned_2026Q4", + "version": "2.1.0", + "name": "Alcohol Advertising Standards (pinned to v2.1.0)", + "category": "standard", + "enforcement": "must", + "policy": "", + "exemplars": { "...": "copied from registry" } + } + ] +} +``` + +**Use a different `policy_id` from the registry one.** If the buyer reuses the canonical ID `alcohol_advertising` in `custom_policies`, governance-agent behavior is undefined by the spec — the [policy-entry schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/governance/policy-entry.json)'s additive-only rule pins registry text as authoritative for that ID. A pinning ID like `alcohol_advertising_pinned_2026Q4` (or your internal versioning convention) sidesteps the conflict. + +The plan revision now carries the frozen text. The `version` field on the inline policy is informational — the text is what gets evaluated — but worth setting for forensic traceability so an auditor can correlate the inline copy back to a specific registry release. + +**Lifecycle.** The inline copy is preserved as long as the buyer keeps the entry in `custom_policies` on each re-sync of the plan. The governance agent's append-only `revisionHistory` archives prior plan revisions for audit, but the live evaluation always uses whatever is in the most recent `sync_plans` payload — so a buyer who drops the inline policy on a re-sync loses the pin on the next check. + +**Tradeoff.** Pinned policies don't pick up registry corrections. If `alcohol_advertising` v2.2.0 ships a clarification, the pinned plan keeps evaluating against v2.1.0 until someone manually re-syncs `custom_policies` with new text. That's the price of stability. + +## Inline policies are additive-only relative to registry + +Inline `custom_policies[]` carry a hard invariant from the [policy-entry schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/governance/policy-entry.json): they may only **add** restrictions on top of registry-sourced policies. Inline policies MUST NOT relax `enforcement` levels of registry policies, exempt categories that a registry policy mandates, or otherwise weaken the registry baseline. A buyer-authored inline policy that doesn't intersect with any registry policy is unconstrained — only the relationship to registry policies is governed. + +Concretely, a governance agent evaluating a plan with both `policy_ids: ["us_coppa"]` and a `custom_policies` entry can pin or extend `us_coppa` (e.g., a brand-specific exemplar set under a renamed ID), but cannot add an inline policy that says "ignore COPPA for this campaign." Counterparties seeing `policies_evaluated: ["us_coppa"]` on an audit entry can therefore trust that the registry version of `us_coppa` was applied at its declared `must` level — the buyer did not silently downgrade it. + +Counterparties who want to verify this can request the plan revision and recompute the `plan_hash` ([Campaign Governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#plan-binding-and-audit)). The plan binding is the cryptographic surface that makes the additive-only invariant verifiable rather than merely declared. The agent-side enforcement is what prevents a downgrade from happening; the hash is what makes the decision provable after the fact. + +## Handling registry version bumps mid-campaign + +When a registry policy version-bumps while a plan is active: + +| Plan state | Behavior | +|---|---| +| Plan references the policy via `policy_ids` only | Next `check_governance` resolves the new version. Buys already committed remain committed (their audit entry recorded the old version's resolution timestamp). New checks evaluate against the new text. | +| Plan pinned the policy via `custom_policies` (under a renamed ID) | Plan keeps evaluating against the inline text. The registry change has no effect on this plan until the buyer re-syncs `custom_policies` with new text. | +| Plan was deleted or completed | No ongoing checks; no evaluation. The audit log retains `policies_evaluated[]` for forensic recovery. | + +Buyers who care about the version stability of completed buys do not need to do anything — the audit trail captures what was evaluated. Buyers who care about stability for *active, in-flight* buys should use the inline-copy pattern. + +## `effective_date` for staged adoption + +The "minimal restrictions initially" pattern is the registry's documented behavior, not a per-plan setting. Governance agents honor `effective_date` automatically across every plan that references the policy ID: + +1. **Day 0** — community agrees on a draft policy. Publish it to the registry with `effective_date` 60+ days in the future. +2. **Day 0–60** — every governance agent evaluating any plan that references the policy ID emits informational findings. Buyers and sellers see exactly what would have been flagged. No buys are blocked. +3. **Day 60** — `effective_date` passes. The same evaluation now blocks at the policy's declared `enforcement` level. No configuration change required on any plan. +4. **Day 60+** — buyers in the staged-adoption window had two months of telemetry to adjust their inventory and creatives. Late starters get a hard cutover. + +`effective_date` is the time axis of staged adoption. **Scope-based staging** — phasing by channel, jurisdiction, or `policy_categories` subset — is a separate move done at the registry level: publish a narrower-jurisdiction or narrower-category policy first, then a broader one. The two axes compose; a single policy can sit in a scope-narrowed and time-staged window simultaneously. + +## Sunset behavior + +When a registry policy reaches its `sunset_date`, governance agents stop evaluating it on subsequent checks. Existing audit entries that recorded the policy in `policies_evaluated[]` are unchanged — the trail tells the truth about what was evaluated when. No action is required from buyers; sunsetted policies fall out of every active plan automatically. + +If a sunsetted policy is replaced by a successor (e.g., a regulation supersedes another), the registry contributor publishes both: the old entry with `sunset_date` set, the new entry with `effective_date` set. Buyers update their `policy_ids[]` in the next plan revision to reference the new entry — the old ID continues evaluating until its sunset date and then quietly stops. + +## Common questions + +**What happens to in-flight buys when a regulation changes mid-campaign?** The table under [Handling registry version bumps mid-campaign](#handling-registry-version-bumps-mid-campaign) is the answer. Short version: committed buys remain committed; the next check resolves whatever is current; pinning via `custom_policies` is the way to freeze a specific text. + +**Does my plan re-evaluate when I add a new objective?** A plan revision (`plan_version` on the audit-log entry, recorded each time the plan re-syncs) doesn't refresh resolved policy text on its own — the next `check_governance` still hits the registry as configured. To refresh policy text on a revision, change `policy_ids[]` (or the inline copy in `custom_policies`) on the new plan revision. + +**How do I prove to a counterparty which version was applied?** Three layers: (1) the seller's `governance_context` token correlates a specific check, (2) the audit-log entry for that check carries `policies_evaluated[]` and `plan_hash`, (3) the registry's [`/api/policies/history`](https://adcontextprotocol.org/api/policies/history) endpoint returns the full revision sequence for any `policy_id` so an auditor can replay which version was active at a historical timestamp. + +**Per-jurisdiction overrides.** Declare both the global standard and a jurisdiction-specific tightening (e.g., `policy_ids: ["alcohol_advertising", "alcohol_advertising_norway"]`). The governance agent evaluates both; the additive-only rule means the more restrictive of the two wins. + +**Brand-specific extensions.** Use `custom_policies[]` for rules that don't belong in the shared registry (competitor exclusions, brand voice guidelines, internal compliance frameworks). Reference them alongside `policy_ids[]`. + +## Related + +- [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) — registry concepts, policy structure, seeded policies, restricted attributes +- [Campaign Governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification) — plan binding, `plan_hash`, governance context lifecycle +- [audit trail: internal vs shareable views](/dist/docs/3.2.0-beta.4/governance/campaign/audit-trail) — how to surface evaluation history to counterparties +- [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) — `policy_ids`, `policy_categories`, `custom_policies` +- [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) — when human review is required diff --git a/dist/docs/3.2.0-beta.4/governance/policy-registry.mdx b/dist/docs/3.2.0-beta.4/governance/policy-registry.mdx new file mode 100644 index 0000000000..192b92089a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/policy-registry.mdx @@ -0,0 +1,365 @@ +--- +title: Policy Registry +description: "The AdCP Policy Registry is a shared library of machine-readable compliance policies that governance agents reference by ID during campaign validation." +"og:title": "AdCP — Policy Registry" +sidebarTitle: Policy Registry +--- + + +The Policy Registry is a community-maintained library of standardized, machine-readable advertising policies. It provides a shared vocabulary of regulations and industry standards that any governance domain can reference by ID. + +## Quick start + +Fetch a policy by ID: + +```bash +curl https://adcontextprotocol.org/api/policies/resolve?policy_id=us_coppa +``` + +List all regulation-category policies: + +```bash +curl https://adcontextprotocol.org/api/policies/registry?category=regulation +``` + +Bulk-resolve policies for an LLM evaluation prompt: + +```bash +curl -X POST https://adcontextprotocol.org/api/policies/resolve/bulk \ + -H "Content-Type: application/json" \ + -d '{"policy_ids": ["us_coppa", "eu_gdpr_advertising", "uk_hfss"]}' +``` + +Use the `policy` text and `exemplars` from the response in your governance agent's evaluation prompt. The exemplars calibrate the agent's interpretation of the policy -- include them as few-shot examples. + +## Why a shared registry + +Advertising compliance involves the same regulations and standards across many campaigns, brands, and governance agents. Without a shared registry, every governance agent would independently define policies for COPPA, GDPR, HFSS, and other well-known regulations -- creating inconsistency and duplication. + +The registry solves this by providing: + +- **Standardized policy definitions** with structured metadata (jurisdiction, policy category, enforcement level) +- **Natural language policy text** that governance agents (LLMs) use directly for evaluation +- **Calibration exemplars** (pass/fail scenarios) that align agent behavior +- **Version tracking** so brands can pin to specific policy versions + +## Policy categories + +Policies fall into two categories based on the nature of the obligation: + +| Category | Enforcement | Description | +|----------|-------------|-------------| +| **Regulation** | `must` | Legal requirements with jurisdiction scope. Violations have legal consequences. Governance agents reject actions that violate these policies. | +| **Standard** | `should` | Industry best practices, voluntary but recommended. Protects brand value and campaign effectiveness. Governance agents warn on violations but do not block. | + +Enforcement levels follow RFC 2119 keywords: + +- **`must`** -- Legal requirement. Governance agents reject violations. +- **`should`** -- Best practice. Governance agents warn but do not block. +- **`may`** -- Recommendation. Governance agents log for informational purposes only. + +## How governance agents use policies + +Governance agents are LLMs that interpret natural language policy text -- the same pattern used by [Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). The registry's value is in structured metadata and calibration exemplars, not a custom rule language. + +1. **Resolve applicable policies** from the brand's compliance configuration or buyer request +2. **Bulk-resolve from the registry** via `POST /api/policies/resolve/bulk` +3. **Filter by context** -- intersect policy jurisdictions/policy categories/channels with campaign parameters +4. **Include policy text + exemplars** in the evaluation prompt +5. **Apply enforcement level** -- `must` violations result in rejection, `should` violations result in warnings + +## Policy structure + +Each policy in the registry follows the [policy-entry schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/governance/policy-entry.json): + +```json +{ + "policy_id": "uk_hfss", + "version": "1.0.0", + "name": "UK HFSS Advertising Restrictions", + "description": "UK ban on paid online advertising of less healthy food and drink products.", + "category": "regulation", + "enforcement": "must", + "jurisdictions": ["GB"], + "policy_categories": ["health_wellness"], + "governance_domains": ["campaign", "property", "content_standards"], + "effective_date": "2025-10-01", + "source_url": "https://www.legislation.gov.uk/ukpga/2022/17/contents", + "source_name": "UK Parliament", + "policy": "The UK Health and Social Care Act 2022 restricts paid online advertising of food and drink products classified as 'less healthy' under the Nutrient Profiling Model...", + "exemplars": { + "pass": [ + { + "scenario": "A breakfast cereal brand runs a display ad featuring their low-sugar granola (NPM score 2) on UK websites.", + "explanation": "The product scores below the NPM threshold (4 for food), so it is not classified as less healthy." + } + ], + "fail": [ + { + "scenario": "A large snack company runs paid Instagram ads in the UK featuring their crisps (NPM score 8) at 2:00 PM.", + "explanation": "The product is less healthy (NPM >= 4), the company has 250+ employees, and paid online ads are prohibited." + } + ] + } +} +``` + +## Temporal enforcement + +Policies have optional `effective_date` and `sunset_date` fields. Governance agents use these dates to determine enforcement behavior automatically: + +| Condition | Behavior | +|-----------|----------| +| Before `effective_date` | Evaluate but treat as informational. Findings are reported at `info` severity regardless of the policy's declared enforcement level. | +| Between `effective_date` and `sunset_date` (or no `sunset_date`) | Enforce at the declared level (`must` = reject, `should` = warn). | +| After `sunset_date` | Stop evaluating. The policy no longer applies. | +| No `effective_date` | Enforce immediately (the policy has always been in effect). | + +This means brands can reference upcoming regulations before they take effect. The governance agent evaluates them and reports what *would* have been flagged, without blocking campaigns. Once the effective date passes, enforcement activates automatically -- no configuration change needed. + +For example, the EU AI Act Article 50 has `effective_date: "2026-08-02"`. A brand referencing this policy before August 2026 sees informational findings about AI disclosure compliance. After August 2026, violations are rejected. + +For the operational pattern — how to pin a policy version, what happens when a registry policy version-bumps mid-campaign, how to use `effective_date` for staged adoption, the additive-only rule for inline `custom_policies`, and a working-group FAQ — see [Sync and versioning](/dist/docs/3.2.0-beta.4/governance/policy-registry-sync). + +## Three tiers of policy application + +| Tier | Source | Example | +|------|--------|---------| +| **Always-on** | Regulations that apply automatically based on brand category and campaign jurisdictions | COPPA for US children's brands, GDPR for EU campaigns | +| **Best practices** | Standards that brands opt into based on their industry | Alcohol advertising standards for beverage brands | +| **Brand-specific** | Custom policies in the brand's compliance configuration | Brand-specific competitor exclusions, custom content rules | + +## Brand compliance configuration + +Brands reference registry policies through their compliance configuration. See the [Campaign Governance specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification#brand-compliance-configuration) for the conceptual model. + +## Integration across governance domains + +The registry is a shared resource consumed by all governance domains: + +| Domain | How it uses registry policies | +|--------|------------------------------| +| **[Campaign Governance](/dist/docs/3.2.0-beta.4/governance/campaign/index)** | Resolves policies via brand compliance config, evaluates actions against policy text in `check_governance` | +| **[Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index)** | Creates content standards from registry policies using `registry_policy_ids` | +| **[Property Governance](/dist/docs/3.2.0-beta.4/governance/property/index)** | Declares `registry:` prefixed features in `get_adcp_capabilities`, evaluates properties against policy text | +| **[Creative Governance](/dist/docs/3.2.0-beta.4/governance/creative/index)** | Declares `registry:` prefixed creative features, evaluates creatives for AI disclosure and content compliance | +| **[Media Buy](/dist/docs/3.2.0-beta.4/media-buy/index)** | Sellers declare `enforced_policies` on products, buyers send `required_policies` in requests | + +## Governance domains + +Each policy declares which governance sub-domains it applies to via `governance_domains`. This determines which types of governance agents can evaluate and declare the policy as a feature. + +| Domain | Description | +|--------|-------------| +| `campaign` | Campaign governance agents evaluate this policy during `check_governance` | +| `property` | Property governance agents can declare this policy as a property feature | +| `creative` | Creative governance agents can evaluate creatives against this policy | +| `content_standards` | Content standards agents can create standards from this policy | + +For example, `eu_ai_act_article_50` has `governance_domains: ["creative", "content_standards"]` because it's about AI-generated content disclosure -- relevant to creative evaluation and content standards, but not to property or campaign-level governance. + +Filter by domain via the API: `GET /api/policies/registry?domain=creative` + +## The `registry:` prefix + + + +Governance agents declare standardized capabilities using `registry:` prefixed feature IDs. This creates a shared vocabulary so buyers searching for "EU AI Act compliance" find agents using the same terminology. + +**Convention:** `registry:{policy_id}` maps a feature ID to a registry policy. Unprefixed feature IDs are agent-defined. + + +The `registry:` convention is the **delegated** form of policy reference — buyer asks the seller's governance agent to evaluate the policy as a binary feature. The complementary **attribution** pattern, where producers tag mechanism-level filters and measurements with `policy_id` to record buyer-chosen thresholds and motivated evaluations, lives at [Policy Attribution](/dist/docs/3.2.0-beta.4/governance/policy-attribution). + + +**Property governance agent declares:** +```json +{ + "governance": { + "property_features": [ + { "feature_id": "registry:us_coppa", "type": "binary", "name": "COPPA compliance" }, + { "feature_id": "registry:uk_hfss", "type": "binary", "name": "UK HFSS compliance" } + ] + } +} +``` + +**Creative governance agent declares:** +```json +{ + "governance": { + "creative_features": [ + { "feature_id": "registry:eu_ai_act_article_50", "type": "binary", "name": "EU AI Act Article 50 compliance" }, + { "feature_id": "registry:ca_sb_942", "type": "binary", "name": "California SB 942 compliance" } + ] + } +} +``` + +**Buyer filters by feature:** +```json +{ + "feature_requirements": [ + { "feature_id": "registry:us_coppa", "allowed_values": [true] } + ] +} +``` + +The governance agent fetches the policy text and exemplars from the registry to evaluate against. The buyer just references the policy ID. The `governance_domains` field on the policy validates that the agent type is appropriate for the policy. + +## Buyer-seller transparency + +Buyers list enforced policies in media buy requests. Sellers declare which policies they already enforce on their products. + +**Buyer requests policies:** +```json +{ + "tool": "get_products", + "arguments": { + "brief": "UK video inventory for Q1", + "required_policies": ["uk_hfss", "eu_gdpr_advertising"] + } +} +``` + +**Seller declares enforcement:** +```json +{ + "product_id": "premium_video_uk", + "enforced_policies": ["uk_hfss", "eu_gdpr_advertising"] +} +``` + +## API + +The registry is served via the AgenticAdvertising.org API: + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/api/policies/registry` | GET | List policies with filtering by category, jurisdiction, policy_categories, domain | +| `/api/policies/resolve` | GET | Resolve a single policy by ID (+ optional version) | +| `/api/policies/resolve/bulk` | POST | Bulk resolve multiple policy IDs | +| `/api/policies/history` | GET | Revision history for a policy | +| `/api/policies/save` | POST | Create or edit a community policy (auth required) | + +Registry-sourced policies (authoritative) cannot be edited via the community save endpoint. Community-contributed policies go through a review process. + +## Mandatory human review + +Policies and policy categories can declare `requires_human_review: true` to flag regulatory regimes that prohibit solely automated decisions — most notably GDPR Article 22 and EU AI Act Annex III. When a plan resolves any policy or category with this flag, the governance agent MUST set `plan.human_review_required = true` and MUST escalate every action for human review before execution. + +Seeded categories carrying `requires_human_review: true`: + +- `fair_housing` — US FHA, Annex III-equivalent housing decisions +- `fair_lending` — US ECOA, Annex III §5(b) creditworthiness +- `fair_employment` — US Title VII, ADEA, Annex III §1(b) recruitment +- `pharmaceutical_advertising` — FDA DTC, EU prescription ad bans + +See [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) for deployer guidance and the distinction between `reallocation_threshold` (budget reallocation) and `human_review_required` (decisions affecting individuals). + +## Seeded policies + +The registry ships with 14 seeded policies covering common advertising regulations and standards: + +### Regulations + +| ID | Jurisdictions | Description | +|----|---------------|-------------| +| `uk_hfss` | GB | UK ban on paid online advertising of less healthy food/drink | +| `us_coppa` | US | Children's Online Privacy Protection Act | +| `eu_gdpr_advertising` | EU | GDPR requirements for advertising data processing | +| `eu_ai_act_article_50` | EU | AI-generated content disclosure and C2PA provenance | +| `eu_ai_act_annex_iii` | EU | Annex III high-risk categories — credit, insurance pricing, recruitment, housing (mandates human review) | +| `ca_sb_942` | US | California AI Transparency Act for large platforms | +| `us_cannabis` | US | Cannabis advertising restrictions (state-by-state) | +| `tobacco_nicotine` | Global | Tobacco and nicotine advertising restrictions -- most jurisdictions ban tobacco advertising outright | +| `political_advertising` | EU | Political advertising transparency and disclosure (EU DSA, US state-level AI disclosure laws) | + +### Standards + +| ID | Policy Categories | Description | +|----|-------------------|-------------| +| `alcohol_advertising` | `age_restricted` | Responsible alcohol advertising practices | +| `pharma_us_fda` | `pharmaceutical_advertising` | FDA-aligned pharmaceutical advertising | +| `gambling_advertising` | `gambling_advertising` | Responsible gambling advertising | +| `financial_services` | `fair_lending` | Financial product advertising disclosure | +| `csbs` | All | Common Sense Brand Standards -- content adjacency standard (enforcement: `must`) contributed to AgenticAdvertising.org | +| `childrens_advertising` | `children_directed` | Global standards for advertising directed at or seen by children (UK CAP/BCAP, EU AVMSD, ICC) | + + +Common Sense Brand Standards (CSBS) is a content adjacency standard governed by AgenticAdvertising.org. It defines content categories where advertising placement poses brand-reputation risk, applicable across industries and channels. CSBS originated at Scope3 and was contributed to AAO in 2026; formalization of the IP donation instrument is tracked in [#2314](https://github.com/adcontextprotocol/adcp/issues/2314). Until the formal donation record is complete, CSBS ships as a seeded policy under AAO custodianship rather than under a signed assignment. + + +## Policy category definitions + +The registry defines policy categories — regulatory regime groupings that determine which sets of policies apply to a campaign. Categories are referenced by ID in campaign plans via `policy_categories`. + +Each category definition includes: + +| Field | Description | +|-------|-------------| +| `category_id` | Unique identifier (e.g., `children_directed`, `fair_housing`) | +| `name` | Human-readable name | +| `description` | What regulatory regime this category represents | +| `regulatory_frameworks` | Specific laws and regulations grouped under this category | +| `restricted_attributes` | Personal data categories that must not be used for targeting when this category applies | +| `industries` | Industries where this category commonly applies | +| `guidance` | Implementation guidance for governance agents | + +### Seeded categories + +| Category | Restricted Attributes | Description | +|----------|-----------------------|-------------| +| `children_directed` | — | COPPA, UK AADC, GDPR Article 8. Restricts data collection and targeting for children's content. | +| `political_advertising` | `political_opinions` | EU DSA Article 26, US state disclosure laws. Prohibits special category targeting for political ads. | +| `age_restricted` | — | Alcohol, tobacco, cannabis. Age-gating, time-of-day restrictions, and content placement rules. | +| `gambling_advertising` | `health_data` | Sports betting, casinos, lotteries. Jurisdiction-level legality, self-exclusion compliance, responsible gambling messaging. | +| `fair_housing` | `racial_ethnic_origin`, `religious_beliefs`, `sex_life_sexual_orientation` | US FHA, state fair housing. Prohibits targeting/exclusion by protected characteristics in housing ads. | +| `fair_lending` | `racial_ethnic_origin`, `religious_beliefs`, `sex_life_sexual_orientation` | US ECOA, CFPB guidance. Prohibits discriminatory targeting in credit/lending ads. | +| `fair_employment` | `racial_ethnic_origin`, `religious_beliefs`, `sex_life_sexual_orientation`, `health_data`, `genetic_data` | US EEOC (Title VII, ADA, GINA), state employment law. Prohibits discriminatory targeting in job ads. | +| `pharmaceutical_advertising` | `health_data` | FDA DTC, EU prescription ad bans. Fair balance, indication restrictions. | +| `health_wellness` | `health_data` | FTC health claims, supplement advertising. Substantiation requirements. | +| `firearms_weapons` | — | Platform-level and jurisdictional restrictions on firearms advertising. | + +The `restricted_attributes` on a category are authoritative — when a plan declares a policy category, those attributes are automatically restricted for the campaign regardless of whether the plan also declares them in `restricted_attributes`. + +## Restricted attribute definitions + +The registry defines restricted attribute categories — types of personal data that regulations restrict for ad targeting. These map to GDPR Article 9 special categories and are used across plans, signal definitions, and policy categories. + +Each attribute definition includes: + +| Field | Description | +|-------|-------------| +| `attribute_id` | Unique identifier (e.g., `health_data`, `racial_ethnic_origin`) | +| `name` | Human-readable name | +| `description` | What personal data this category covers | +| `regulatory_basis` | Legal basis for restriction (e.g., "GDPR Article 9(1)") | +| `includes` | Examples of data that falls within this category | +| `excludes` | Common data that might seem related but is explicitly outside this category | +| `signal_patterns` | Naming patterns governance agents can use to detect undeclared signals that likely touch this data | +| `guidance` | Implementation guidance | + +### Seeded attributes + +| Attribute | Regulatory Basis | Includes | +|-----------|-----------------|----------| +| `racial_ethnic_origin` | GDPR Article 9(1) | Race, ethnicity, national origin, tribal affiliation | +| `political_opinions` | GDPR Article 9(1) | Party affiliation, voting patterns, political donations | +| `religious_beliefs` | GDPR Article 9(1) | Religion, denomination, religious practice indicators | +| `trade_union_membership` | GDPR Article 9(1) | Union membership, collective bargaining participation | +| `health_data` | GDPR Article 9(1) | Medical conditions, prescriptions, health behaviors, disability | +| `sex_life_sexual_orientation` | GDPR Article 9(1) | Sexual orientation, gender identity, relationship status indicators | +| `genetic_data` | GDPR Article 9(1) | DNA profiles, genetic test results, hereditary conditions | +| `biometric_data` | GDPR Article 9(1) | Fingerprints, facial geometry, voice prints, gait analysis | + +Data providers can reference these definitions when declaring `restricted_attributes` on their signal definitions. See [Declaring governance metadata](/dist/docs/3.2.0-beta.4/signals/data-providers#declaring-governance-metadata). Governance agents match signal-declared attributes against plan-level `restricted_attributes` during [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) validation — signals with matching restricted attributes are blocked from targeting for that campaign. + +## Contributing policies + +Community members can contribute new policies via the API or admin interface. Contributed policies: + +- Must include `policy_id`, `version`, `name`, `category`, `enforcement`, and `policy` text +- Are created with `source_type: community` and `review_status: pending` +- Go through review before becoming available in the registry +- Cannot overwrite registry-sourced (authoritative) policies diff --git a/dist/docs/3.2.0-beta.4/governance/property/adagents.mdx b/dist/docs/3.2.0-beta.4/governance/property/adagents.mdx new file mode 100644 index 0000000000..87c9968e57 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/adagents.mdx @@ -0,0 +1,1330 @@ +--- +title: adagents.json Tech Spec +description: "adagents.json is the publisher-hosted file in AdCP that declares advertising properties and authorizes sales agents to sell inventory." +"og:title": "AdCP — adagents.json Tech Spec" +--- + +The `adagents.json` file provides a standardized way for publishers to declare their properties and authorize sales agents. This is the foundation of Property Governance - it defines what properties exist and who can sell them. + +### Unified declaration model + +`adagents.json` serves as the declaration mechanism for both **property authorization** and **signal data provider** registration. A single file at `/.well-known/adagents.json` can declare both `properties` and `signals` top-level fields simultaneously. + +```json +{ + "version": "1.0", + "properties": [ + { + "domain": "publisher.example.com", + "agents": [ + { "agent_url": "https://ads.publisher.example.com", "relationship": "direct" } + ] + } + ], + "signals": [ + { + "catalog_url": "https://signals.publisher.example.com/catalog.json", + "relationship": "direct", + "description": "First-party audience signals from publisher.example.com" + } + ] +} +``` + +This combined model is common for publishers with first-party data — the same domain authorizes sales agents (via `properties`) and declares published signal definitions (via `signals`). The two namespaces are independent: authorization for property sales does not grant signal access, and signal registration does not imply property authorization. + +See [Signal data providers](/dist/docs/3.2.0-beta.4/signals/data-providers) for the signals-side documentation. + +For the sell-side decision tree that pairs publisher authorization with operator `brand.json` identity and signing-key discovery, see [seller setup](/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup). + + +**[AdAgents.json Builder](https://agenticadvertising.org/adagents/builder)** - Validate existing files or create new ones with guided validation + + +## Why `adagents.json` instead of `ads.txt` + +`ads.txt` answers a narrower question: is this seller present on the publisher's list, and is the relationship labeled `DIRECT` or `RESELLER`? + +That is useful, but it is too flat for many modern publisher sales models. It does not tell buyers: + +- which property is covered +- which placements are covered +- whether the path is direct, delegated, or network-mediated +- whether the authorization is country-limited or time-bounded +- whether a network-managed slot is the same thing as a publisher-managed premium placement + +`adagents.json` is designed to carry that structure. It lets publishers declare property identity, placement identity, delegation type, scoped authorization, and publisher-defined grouping tags in one place. + +| Question | `ads.txt` | `adagents.json` | +|---------|-----------|-----------------| +| Is this seller declared at all? | Yes | Yes | +| Which property is covered? | No | Yes | +| Which placement is covered? | No | Yes | +| Can the publisher group inventory into governed buckets? | No | Yes, via `placement_tags` | +| Can authorization vary by country or time window? | No | Yes | +| Can the path be described as direct, delegated, or network-mediated? | Very weakly | Yes, via `delegation_type` | + +For the higher-level framing and a side-by-side example, see [Why adagents.json is more expressive than ads.txt](https://agenticadvertising.org/perspectives/adagents-json-vs-ads-txt). + +### Where does sellers.json fit? + +In programmatic, `sellers.json` is hosted by the seller/exchange and declares which publishers they represent. AdCP handles this through `brand.json` instead of a separate file. An operator declares properties in their [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) using the `relationship` field. For first-party inventory, the operator can use `relationship: "owned"`. For delegated or network sell-side paths, `relationship` uses the same values as `delegation_type`: `direct`, `delegated`, or `ad_network`. This creates the same bilateral verification pattern: + +| Programmatic | AdCP equivalent | Purpose | +|---|---|---| +| `ads.txt` (publisher) | `adagents.json` with `delegation_type` (publisher) | "These agents are authorized, here's the relationship" | +| `sellers.json` (seller) | `brand.json` properties with `relationship` (operator) | "I sell for these publishers, here's how" | + +For delegated or network paths, both sides must agree — the `delegation_type` and `relationship` values should match. For first-party inventory, `relationship: "owned"` is an inline ownership declaration and has no matching `delegation_type` value. See [ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) for how this works in practice. + + +The field is called `delegation_type` in adagents.json and `relationship` in brand.json. The names differ because they describe the same commercial arrangement from different perspectives — the publisher delegates authority (`delegation_type`), the operator declares its relationship to the property (`relationship`). Delegated/network values match (`direct`, `delegated`, `ad_network`); `owned` is only a brand.json relationship value. + + +## File Location + +Publishers must host the `adagents.json` file at: + +``` +https://example.com/.well-known/adagents.json +``` + +Following [RFC 8615](https://datatracker.ietf.org/doc/html/rfc8615) well-known URI conventions, this location ensures consistent discoverability across publishers. + + +If the publisher origin canonicalizes hostnames with HTTP redirects, deploy the file at the final resolved URL too. For example, if `https://example.com/.well-known/adagents.json` redirects to `https://www.example.com/.well-known/adagents.json`, the `www` URL must serve the JSON file with a `200` response. + +A redirect chain that ends in `404` means the file is missing at the canonical host; troubleshoot the terminal status and resolved URL, not only the intermediate `301` or `302`. + + +## Basic Structure + +The file must be valid JSON with UTF-8 encoding and return HTTP 200 status. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Example Publisher Ad Operations", + "email": "adops@example.com", + "domain": "example.com", + "seller_id": "pub-example-12345", + "tag_id": "67890" + }, + "properties": [ + { + "property_id": "example_site", + "property_type": "website", + "name": "Example Site", + "identifiers": [ + {"type": "domain", "value": "example.com"} + ] + } + ], + "authorized_agents": [ + { + "url": "https://agent.example.com", + "authorized_for": "Official sales agent", + "authorization_type": "property_ids", + "property_ids": ["example_site"], + "delegation_type": "direct", + "exclusive": true + } + ], + "last_updated": "2025-01-10T12:00:00Z" +} +``` + +## Schema Fields + +**`$schema`** *(optional)*: JSON Schema reference for validation + +**`contact`** *(optional)*: Contact info for entity managing this file + - **`name`** *(required)*: Name of managing entity (may be publisher or third-party) + - **`email`** *(optional)*: Contact email for questions/issues + - **`domain`** *(optional)*: Primary domain of managing entity + - **`seller_id`** *(optional)*: Seller ID from IAB Tech Lab sellers.json + - **`tag_id`** *(optional)*: TAG Certified Against Fraud ID + - **`privacy_policy_url`** *(optional)*: URL to entity's privacy policy for consumer consent flows + +**`catalog_etag`** *(optional)*: Opaque cache/version token for the public catalog portions of this file + - Publishers SHOULD change it whenever `properties`, `collections`, `placements`, `formats`, `signals`, or their tag metadata changes + - Buyer SDKs SHOULD cache resolved references by URL plus `catalog_etag` and re-resolve catalog references when the value changes + - If absent, buyers fall back to HTTP validators such as `ETag`/`Last-Modified`, then a bounded TTL + +**`properties`** *(optional)*: Array of properties covered by this file (canonical property definitions) + - **`supported_channels`** *(optional)*: Advertising channels this property supports (e.g., `["display", "olv", "social"]`). See [Media Channel Taxonomy](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy). + +**`collections`** *(optional)*: Collections produced or distributed by this publisher + - Products reference these via `collections` selectors with `publisher_domain` and `collection_ids` + - Useful when authorization needs to be scoped to specific series, podcasts, streams, or recurring content programs + +**`placements`** *(optional)*: Canonical placement definitions for the properties in this file + - Products SHOULD reuse these `placement_id` values when declaring `placements` + - Reusing a registered `placement_id` means the product is referring to the same semantic placement, not inventing a different one with the same ID + - Placement definitions can include `tags`, `property_ids` or `property_tags` for property linkage, `channels`, `format_options` for creative support, a publisher-namespaced `presentation_ref` for offline placement chrome, and `preview_provider` for a publisher-designated AdCP preview agent + - Placements in `adagents.json` are public by definition. Do not publish seller-private placement IDs, source/origin fields, or delivery-system mappings in this file. + - Authorization entries can narrow scope to specific `placement_ids` + - Authorization entries can also use `placement_tags` for governed placement groupings such as `programmatic`, `direct_only`, or `managed_by_riverline` + - Useful for expressing distinctions like "available via this agent only for homepage native feed" or "only for pre-roll" + +**`tags`** *(optional)*: Tag metadata providing human-readable context and enabling efficient grouping + +**`placement_tags`** *(optional)*: Metadata for publisher-defined placement tags + - Provides human-readable definitions for placement tag values used in `placements[*].tags` and `authorized_agents[*].placement_tags` + - These are publisher-local concepts, not a global taxonomy + +### Public placement catalog + +The `placements[]` array is the publisher's public placement catalog. It defines stable, semantic placement IDs that products and authorization rules can reference. A buyer should not have to interpret a raw ad-server ad unit path, delivery placement ID, video-ad-server zone, or other seller-internal delivery identifier to understand what a product offers. + +Publishers that expose placement, format, collection, or property catalogs, or published `signals[]` definitions, should publish `catalog_etag` and update it whenever those entries change. This lets buyer SDKs cache catalog lookups without silently resolving the same `{publisher_domain, placement_id}` or `{publisher_domain, format_option_id}` to different metadata after a publisher deployment. + +At minimum, a public placement should describe: + +- stable `placement_id` +- `name` and `description` +- the `property_ids` or `property_tags` where it can run +- supported `format_options`, which can reference publisher-owned formats and canonical formats +- optional `channels` +- optional `presentation_ref` with an HTTPS `uri` and SHA-256 `digest` for publisher-specific chrome or layout metadata +- optional `preview_provider` mapping placement `format_option_id` values to preview `capability_id` routes on an HTTPS AdCP creative agent + +Placement format support is a new 3.1 catalog feature and uses the 3.1+ canonical format-option model only: + +- `format_options[]` may reference declarations in the same file's top-level `formats[]` by `format_option_id`. Those top-level declarations can be publisher-owned custom formats or narrowed canonical formats. +- `format_options[]` may also carry an inline canonical `ProductFormatDeclaration` when the placement-specific narrowing is not worth a reusable top-level format entry. + +The canonical anchor is `format_kind`. A placement entry that carries only `{ "format_option_id": "..." }` inherits the canonical format by resolving that ID to the same file's top-level `formats[]` declaration, then reading its `format_kind`. Outside this file, a buyer-facing `FormatOptionRef` for a publisher-declared format option uses `{ "scope": "publisher", "publisher_domain": "...", "format_option_id": "..." }`. + +Placement catalog formats describe what the public placement can support. When a product later references that placement, product-level canonical `format_options` remain the buyable creative contract; placement `format_options` narrow that set for the specific placement. If the catalog placement and product declarations disagree, buyers use the intersection and should not treat a catalog-only format as accepted by the product. Deprecated product `format_ids` are only a 3.x compatibility projection. + +```json +{ + "catalog_etag": "daily-pulse-2026-05-25", + "formats": [ + { + "format_kind": "html5", + "format_option_id": "publisher_takeover_html5", + "display_name": "Publisher takeover HTML5", + "params": { + "width": 970, + "height": 250, + "max_file_size_kb": 200 + } + } + ], + "placements": [ + { + "placement_id": "homepage_takeover", + "name": "Homepage takeover", + "description": "High-impact homepage sponsorship across the main article rail and top video module.", + "property_ids": ["daily_pulse"], + "channels": ["display", "olv"], + "presentation_ref": { + "uri": "https://daily-pulse.example/adcp/presentations/homepage-takeover.json", + "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "preview_provider": { + "agent_url": "https://creative.adcontextprotocol.org/mcp", + "authority": "publisher_designated", + "routes": [ + { + "format_option_id": "publisher_takeover_html5", + "capability_id": "preview_display_300x250_html" + } + ] + }, + "format_options": [ + { "format_option_id": "publisher_takeover_html5" }, + { + "format_kind": "image", + "params": { + "width": 300, + "height": 250, + "image_formats": ["jpg", "png"], + "max_file_size_kb": 150 + } + } + ] + } + ] +} +``` + +Because `adagents.json` is public, it is not the place to expose operational inventory internals. Keep source/origin (`synced` vs synthetic), raw ad-server IDs, delivery mappings, and seller-private placement groupings in the seller's internal inventory registry. The public placement catalog should describe only buyer-understandable inventory that the publisher is willing to make discoverable. + +### Product targetability + +`adagents.json` does not decide whether a placement is targetable in a product. It only publishes stable public placement IDs and their buyer-understandable semantics. + +A sales agent decides per product whether a public placement is buyer-selectable or merely part of the product composition. That decision is exposed, when needed, in the sales agent's `get_products` product placement object, not in the publisher's `adagents.json`. + +If a product depends on seller-private delivery composition, describe that composition in product prose and keep the underlying placement IDs in the seller system. Do not publish private placement IDs in `adagents.json` or `get_products`. + +### Internal mapping + +Publishers still need to map public placements to delivery systems, and they may need synthetic internal groupings when the delivery system does not have the right semantic object. That mapping is implementation detail, not public protocol state. + +Common internal cases: + +- grouping multiple synced placements +- grouping multiple ad units or zones +- exposing an ad unit as a buyer-understandable placement +- mapping ambiguous `1x1`, fluid, native, out-of-page, or video objects to the format they actually render +- preserving strategic opacity while keeping products free of raw delivery IDs + +These internal mappings can produce public `placements[]` entries, but the mapping details themselves remain out of `adagents.json`. + +**`authorized_agents`** *(required)*: Array of authorized sales agents. MAY be empty (`[]`) for a **catalog-only community mirror** — a file that publishes `formats`/`properties`/`placements` (typically with a `catalog_etag`) for a platform that has not adopted AdCP, where there is no sales agent to authorize (see [Community mirror lifecycle](#community-mirror-lifecycle)). An empty array asserts **no sales authorization**: validators MUST NOT read it as deny-all, authorize-all, or a revocation, MUST NOT treat its presence as an error, and MUST still consume the catalog arrays. A file with neither sales authorization nor catalog content is invalid. The per-entry fields below apply only when the array is non-empty: + - **`url`** *(required)*: Agent's API endpoint URL + - **`authorized_for`** *(required)*: Human-readable authorization description + - **`authorization_type`** *(required)*: Discriminator naming which selector field carries the scope. One of `property_ids`, `property_tags`, `inline_properties`, `publisher_properties` (for properties) or `signal_ids`, `signal_tags` (for signal providers). The corresponding selector field must be present and non-empty — see [Authorization Patterns](#authorization-patterns) below. + - **`delegation_type`** *(optional)*: Commercial relationship for this path: `direct`, `delegated`, or `ad_network` + - **`collections`** *(optional)*: Additional collection selectors that narrow authorization to specific content programs + - **`placement_ids`** *(optional)*: Placement IDs from the top-level `placements` array that narrow authorization to specific placements + - **`placement_tags`** *(optional)*: Publisher-defined placement tags that narrow authorization to governed placement groups + - **`countries`** *(optional)*: ISO 3166-1 alpha-2 country codes limiting where the authorization applies + - **`effective_from` / `effective_until`** *(optional)*: Time window for the authorization + - **`exclusive`** *(optional)*: Whether this is the publisher's sole authorized path for the scoped inventory slice + - **`signing_keys`** *(optional)*: Publisher-attested public keys buyers can pin when verifying signed agent responses + - **`last_updated`** *(optional)*: ISO 8601 timestamp when this `authorized_agents[]` entry last changed. Independent of the file-level `last_updated`. Advisory — enables validators to skip unchanged entries on partial walks. See [managed-networks security](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations) for the conditional-refresh protocol it enables. + - **Additional fields**: Depends on authorization_type (see patterns below) + +**`revoked_publisher_domains`** *(optional, managed-network use)*: Top-level array of publisher domains explicitly removed from a managed network's authoritative file. Each entry has `publisher_domain`, `revoked_at` (ISO 8601), and optional `reason`. Validators MUST treat any listed domain as no-longer-authorized regardless of where else it appears in the file. See [Publisher revocation](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#publisher-revocation-the-exit-lifecycle) for the operational lifecycle and validator-side durability rule. + +**`last_updated`** *(optional)*: ISO 8601 timestamp of last modification + +**`property_features`** *(optional)*: Array of governance agents that provide data about properties in this file + - **`url`** *(required)*: Agent's API endpoint URL (governance agent implementing property governance tasks) + - **`name`** *(required)*: Human-readable name of the vendor/agent + - **`features`** *(required)*: Array of feature IDs this agent provides (e.g., `["carbon_score", "mfa_score"]`) + - **`publisher_id`** *(optional)*: Publisher's identifier at this agent (for lookup) + +This field enables **governance agent discovery** - buyers can find which agents have compliance, sustainability, or quality data for properties without querying every possible agent. + +## Community mirror lifecycle + +When a platform has not adopted AdCP (e.g., a walled garden that hasn't published its own `adagents.json`), the AdCP community registry can publish a **catalog-only community mirror** as an advisory translation — typically hosted at `https://creative.adcontextprotocol.org/translated//adagents.json`. It is not published on the platform's behalf and is not publisher authority. A mirror exists to publish discovery metadata (`formats`, `properties`, `placements`) so buyers can reason about likely inventory shapes before the platform self-adopts. + +A community mirror: + +- Sets **`authorized_agents: []`** — there is no sales agent to authorize, and the mirror MUST NOT fabricate one. An empty array asserts *no sales authorization*; validators MUST NOT read it as deny-all, authorize-all, or a revocation, and MUST still consume the catalog arrays. +- MUST carry at least one non-empty catalog array (`formats`/`properties`/`placements`/`collections`/`signals`) and SHOULD carry a **`catalog_etag`** cache validator (the validator enforces the array, not `catalog_etag`). A file with neither sales authorization nor catalog content is invalid. +- MAY attach a pinned `reference_renderer` (`runtime: "browser-esm"`, `package`, exact `version`, named `export`, SRI `integrity`, and expected provenance source) to a `formats[]` entry. Such a file requires `catalog_role: "community_format_registry"` and `catalog_etag`; consumers still accept executable references only from the configured AgenticAdvertising.org registry origin. Compatibility binds the named export's tested contract to this format entry's revision; package major versions are independent because one artifact may expose exports for several formats or revisions. Consumers verify tarball integrity plus the attestation source repository, workflow path, and subject digest, then execute the module only in a credential-free, network-disabled worker or opaque-origin realm with time and size limits—never in the host application realm. Non-JavaScript clients use hosted `preview_creative` or show the manifest. On a confirmed vulnerability, registry maintainers MUST rotate `version`, `integrity`, and `catalog_etag` through a reviewed update; consumers that identify the pin as unsafe MUST NOT execute it and instead continue the rendering fallback order. +- MUST NOT invent publisher `presentation_ref` metadata. That field is publisher-specific and gains its meaning only from a publisher-origin placement declaration. +- MUST NOT invent or copy a publisher `preview_provider` delegation. Only the publisher-origin placement can grant that scoped authority. +- Sets **`superseded_by`** once the platform publishes its own authoritative `adagents.json`. Buyer SDKs encountering `superseded_by` SHOULD re-fetch from the named URL rather than serving the stale mirror. The mirror SHOULD continue serving with `superseded_by` set for at least one minor release so buyer caches keyed on the mirror URL get an explicit migration signal. + +Community contributions use a review-before-publication workflow. Any authenticated organization can submit a conforming catalog with `PUT /api/registry/mirrors/{platform}`. Registry moderators and AgenticAdvertising.org administrators publish immediately; other callers receive `202 Accepted` with an opaque proposal ID, status URL, and content digest. Contributors can follow their proposals through `/api/registry/mirror-proposals`, while moderators approve or reject the exact reviewed digest from the same review surface. Approval returns `409 Conflict` if either the proposal content or its base public mirror changed after review. Pending proposals are stored separately and never appear at `/translated//adagents.json` or in derived publisher records before approval. + +See the worked example at [`static/examples/adagents/community/meta.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/examples/adagents/community/meta.json). + +### Resolving publisher and community catalogs + +Consumers that need the complete catalog resolution order—publisher-hosted `adagents.json`, then the AgenticAdvertising.org community catalog, then fail closed—should call the registry lookup at `GET /api/registry/publisher?domain=`. The response exposes `discovery_method`, hosting state, registry URL, and property provenance so callers can distinguish publisher assertions from community contributions. + +The lookup's `formats[]` field is a display-oriented, lossy summary. It preserves `format_kind`, `format_option_id`, canonical `params`, and property scoping, but omits fields needed for some validation, presentation, and compatibility flows, including `format_shape`, `format_schema`, `reference_renderer`, `applies_to_channels`, `v1_format_ref`, and `canonical_formats_only`. Add `include=placements` when computing placement-level eligibility; the response then includes provenance-labeled placement summaries with resolved canonical format options, but consumers needing a placement's full `presentation_ref` or `preview_provider` fetch the raw document. To validate a custom declaration or inspect fields omitted by either summary, fetch the resolved raw `adagents.json`: use `files.adagents_json.registry_url` for a community catalog and `hosting.resolved_url` or `hosting.expected_url` for a publisher-hosted catalog. Treat a missing raw document or unresolved placement reference as fail-closed. + +The discovery-layer `validateAdAgents()` API and the `validate_adagents` diagnostic tool validate publisher-origin discovery (`direct`, `authoritative_location`, and `ads.txt` `MANAGERDOMAIN`). They do **not** consult the community catalog. A publisher-origin not-found result is therefore not proof that no community mirror exists. Until the discovery layer explicitly adds that fallback, implementations must not reconstruct the full resolution order on top of `validateAdAgents()`; use the registry lookup. + +## URL Reference Pattern + +For publishers with complex infrastructure or CDN distribution, `adagents.json` can reference an authoritative URL instead of containing the full structure inline. + +### When to Use URL References + +- **CDN Distribution**: Serve authorization data from a global CDN for better performance +- **Centralized Management**: Single source of truth across multiple domains +- **Large Files**: When authorization data is too large for inline embedding +- **Dynamic Updates**: When authorization needs frequent updates without touching domain files + +### URL Reference Structure + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "authoritative_location": "https://cdn.example.com/adagents/v2/adagents.json", + "last_updated": "2025-01-15T10:00:00Z" +} +``` + +### Requirements + +- **HTTPS Required**: The `authoritative_location` must use HTTPS +- **No Nested References**: The authoritative file cannot itself be a URL reference (prevents infinite loops) +- **Same Schema**: The authoritative file must be a valid inline adagents.json structure +- **Single Hop**: Only one level of URL indirection is allowed + +For a complete guide to deploying this pattern across hundreds or thousands of domains, see [Managed Network Deployment](/dist/docs/3.2.0-beta.4/governance/property/managed-networks). + +## Discovery fallback: ads.txt `managerdomain` + + +This is a **legacy compatibility fallback** for existing ads.txt-era publisher-manager setups. +For managed-network deployments in AdCP, the normative delegation pattern remains +[`authoritative_location`](/dist/docs/3.2.0-beta.4/governance/property/managed-networks) in the publisher's own +`/.well-known/adagents.json` pointer file. New deployments SHOULD use that pattern. + + +When `https://{publisher}/.well-known/adagents.json` returns `404`, or returns an S3/CloudFront-style `403` `AccessDenied` XML response, validators MAY attempt a compatibility fallback via `https://{publisher}/ads.txt`: + +1. Read `ads.txt` and parse `managerdomain` entries. + - Accepted form: `MANAGERDOMAIN=example.com` (IAB directive form only). + - Key matching is case-insensitive (`MANAGERDOMAIN`, `managerdomain`, etc.). + - Validators that support this fallback SHOULD follow a bounded HTTP redirect chain when fetching `ads.txt`, applying the same SSRF and public-host checks to each redirect hop. +2. If one or more eligible managerdomain entries remain, use the **last** eligible entry in file order and attempt `https://{managerdomain}/.well-known/adagents.json`. +3. If that manager file validates **and explicitly scopes authorization to the source publisher domain**, treat it as the discovered authorization source for this lookup. + +### Safety rules for this fallback + +- **One hop only**: maximum depth is exactly one (`publisher -> managerdomain`). Do not chain managerdomain lookups. +- **Cycle detection required**: if `managerdomain` points to a visited domain, ignore it. +- **`#noagents` opt-out**: if a managerdomain line has a trailing comment containing the token `noagents` (case-insensitive), clients MUST ignore that managerdomain for adagents discovery. Example: `MANAGERDOMAIN=example.com #NOAGENTS`. +- **Trigger statuses are narrow**: validators SHOULD only attempt this fallback when the publisher's direct `adagents.json` fetch returns `404` or an S3/CloudFront-style `403` `AccessDenied` XML response. Other statuses and failures — generic `403` denial, `500`, timeout, malformed JSON, content-type mismatch, or schema validation failure — do not trigger `managerdomain`. +- **Explicit publisher scoping required**: a manager-hosted `adagents.json` MUST positively name the source publisher domain in a `publisher_domain` field that is reachable from at least one `authorized_agents[]` entry. "Reachable" means one of the following paths resolves to the source domain: + + 1. **Per-agent paths.** The agent entry directly carries the publisher domain under `publisher_properties[].publisher_domain`, inside `publisher_properties[].publisher_domains[]` (the compact managed-network form), or under `collections[].publisher_domain`. + 2. **Property-level paths.** The agent entry references one or more top-level `properties[]` entries — either directly by ID/tag on the agent entry (`property_ids` / `property_tags` authorization_type), or indirectly via a `publisher_properties` selector whose predicate is satisfied by parent-file `properties[]` carrying matching `publisher_domain` (see [Resolution paths](#resolution-paths) below) — and at least one resolved property carries a `publisher_domain` matching the source. This is the shape used in production by Mediavine and other managed networks where a property declares its `publisher_domain` once and many agents reference it indirectly. + + What does **not** satisfy this rule: an `inline_properties` selector whose inline properties omit `publisher_domain`, or a top-level `property_tags` selector whose resolved top-level properties carry no matching `publisher_domain`. If no reachable `publisher_domain` field matches the source, fallback MUST fail closed. + + The attack this protects against is implicit scoping — authorization that does not name the publisher anywhere the manager has to type the domain. Indirection through `properties[].publisher_domain` is safe because the manager has positively spelled the publisher's domain in the same manifest; the gate filters to properties whose `publisher_domain` matches the source before considering the reference. +- **No success by silence**: if the manager lookup fails, treat the publisher as missing `adagents.json` (same as no fallback). + +This fallback is a compatibility affordance for publisher-manager topologies and does not replace the canonical `/.well-known/adagents.json` location. + +### Example Use Case: Multi-Domain Publisher + +A publisher with multiple domains can maintain one authoritative file: + +**On each domain** (`https://domain1.com/.well-known/adagents.json`, `https://domain2.com/.well-known/adagents.json`, etc.): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "authoritative_location": "https://cdn.publisher.com/adagents/v2/adagents.json", + "last_updated": "2025-01-15T10:00:00Z" +} +``` + +**Authoritative file** (`https://cdn.publisher.com/adagents/v2/adagents.json`): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Publisher Ad Operations", + "email": "adops@publisher.com" + }, + "properties": [ + { + "property_id": "domain1_site", + "property_type": "website", + "name": "Domain 1", + "identifiers": [{"type": "domain", "value": "domain1.com"}], + "publisher_domain": "domain1.com" + }, + { + "property_id": "domain2_site", + "property_type": "website", + "name": "Domain 2", + "identifiers": [{"type": "domain", "value": "domain2.com"}], + "publisher_domain": "domain2.com" + } + ], + "authorized_agents": [ + { + "url": "https://sales-agent.publisher.com", + "authorized_for": "All publisher properties", + "authorization_type": "property_ids", + "property_ids": ["domain1_site", "domain2_site"] + } + ], + "last_updated": "2025-01-15T09:00:00Z" +} +``` + +### Validation Behavior + +When AdCP validators encounter a URL reference: + +1. **Fetch Reference**: Retrieve the file at `/.well-known/adagents.json` +2. **Detect Reference**: Check for `authoritative_location` field +3. **Validate URL**: Ensure `authoritative_location` is HTTPS and valid +4. **Fetch Authoritative**: Retrieve content from `authoritative_location` +5. **Prevent Loops**: Reject if authoritative file is also a reference +6. **Validate Structure**: Validate the authoritative file as normal inline structure + +Validators MUST apply the fetch semantics, change-detection, and rollback protection rules in [Managed network security considerations](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations). That section is the canonical source for blast-radius guidance on the authoritative_location pattern. + +### Troubleshooting authoritative_location failures + +Publishers registering agents through a URL reference commonly encounter these failure modes. Use this checklist before contacting support. + +**Origin requires authentication or IP restriction** + +Validators fetch `authoritative_location` server-side — CORS response headers are not required for server-to-server requests. However, if your origin requires authentication (e.g., an S3 bucket with a restrictive bucket policy, a CDN with origin protection that blocks unknown IPs) the fetch will be rejected with a `403`. Verify the URL is publicly reachable without authentication. + +**Redirect at the authoritative URL** + +Validators reject any HTTP redirect on the `authoritative_location` URL. The URL must resolve directly to the JSON file with a `200` response — no `301`, `302`, or other redirect chain. If your CDN or hosting redirects the URL (HTTP→HTTPS canonicalization, `www` redirect, versioned-path redirect), update `authoritative_location` to point to the final destination URL directly. + +**Wrong Content-Type** + +The response must be served with `Content-Type: application/json`. Servers that return `text/html` or `text/plain` — even when the body contains valid JSON — will fail content-type validation. Check your CDN or origin response headers. + +**HTML error page with 200 status** + +Some CDNs return an HTML error page with `200 OK` instead of a `4xx` status. Validators check the `Content-Type` header and attempt JSON parsing; an HTML body will fail parsing even when the status is `200`. Look for a parse error alongside a `200` status in validator output. + +**Debugging checklist** + +Reproduce the validator's fetch from your terminal to diagnose these failures: + +```bash +curl -v \ + -H "Accept: application/json" \ + "https://cdn.example.com/adagents.json" +``` + +Verify in the output: +- Response status is `200` (not `301`, `302`, `403`, or `404`) +- `Content-Type` header is `application/json` +- Response body is valid JSON containing at least one of `properties`, `signals`, or `authorized_agents` +- Body does **not** contain an `authoritative_location` field (nested references are rejected) + +If the crawler exposes a diagnostic endpoint, run your URL through it for structured error output. + +### Caching Recommendations + +- Cache reference files for 24 hours minimum +- Cache authoritative files separately with their own TTL +- Use `last_updated` timestamp to detect when cache should be invalidated +- Implement exponential backoff for failed fetches + +Absolute cache caps and refresh floors for authoritative files live in [Managed network security considerations](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations) — the requirements there take precedence over any `Cache-Control` on the origin. + +## Authorization Patterns + +AdCP supports six `authorization_type` values, each optimized for different use cases. The table below maps each value to the companion field that carries the selector — useful as a quick reference when writing or validating `adagents.json`: + +| `authorization_type` | Companion field | Carries | Pattern | +|---|---|---|---| +| `property_ids` | `property_ids[]` | IDs into the top-level `properties[]` of the same file | [Pattern 1](#pattern-1-property-ids-direct-references) | +| `property_tags` | `property_tags[]` | Tags into the top-level `properties[]` of the same file | [Pattern 2](#pattern-2-property-tags-efficient-grouping) | +| `inline_properties` | `properties[]` *(see warning below)* | Property objects defined directly on the agent entry | [Pattern 3](#pattern-3-inline-properties) | +| `publisher_properties` | `publisher_properties[]` | Per-publisher selectors that resolve against each listed publisher's `adagents.json` (or the parent file's inline `properties[]`) | [Pattern 4](#pattern-4-publisher-property-references) | +| `signal_ids` | `signal_ids[]` | IDs into the top-level `signals[]` of the same file | Signal-provider entries (see `signals` schema) | +| `signal_tags` | `signal_tags[]` | Tags into the top-level `signals[]` of the same file | Signal-provider entries (see `signals` schema) | + + + **`inline_properties` companion field is `properties`, not `inline_properties`.** It is the only `authorization_type` whose companion field name does not mirror the discriminator value. Validators reject `inline_properties` entries that carry a top-level `inline_properties` array but no `properties`. See [Pattern 3](#pattern-3-inline-properties) for an example. + + +### Pattern 1: Property IDs (Direct References) + +**Best for**: Specific, enumerable property lists. Direct and unambiguous. + +**Structure**: +```json +{ + "properties": [ + { + "property_id": "cnn_ctv_app", + "property_type": "ctv_app", + "name": "CNN CTV App", + "identifiers": [ + {"type": "roku_store_id", "value": "12345"} + ] + } + ], + "authorized_agents": [ + { + "url": "https://cnn-ctv-agent.com", + "authorized_for": "CNN CTV properties", + "authorization_type": "property_ids", + "property_ids": ["cnn_ctv_app"] + } + ] +} +``` + +**How it works**: Agent is authorized for specific properties listed in `property_ids` array. The properties must be defined in the top-level `properties` array. + +### Pattern 2: Property Tags (Efficient Grouping) + +**Best for**: Large networks where one tag can reference hundreds/thousands of properties. Provides grouping efficiency without listing every property ID. + +**Key Insight**: Tags are not just "human-readable metadata" - they're a **performance optimization**. A publisher with 500 properties can use one tag to authorize all of them, rather than listing 500 property IDs. + +**Structure**: +```json +{ + "properties": [ + { + "property_id": "instagram", + "property_type": "mobile_app", + "name": "Instagram", + "identifiers": [ + {"type": "ios_bundle", "value": "com.burbn.instagram"} + ], + "tags": ["meta_network", "social_media"] + }, + { + "property_id": "facebook", + "property_type": "mobile_app", + "name": "Facebook", + "identifiers": [ + {"type": "ios_bundle", "value": "com.facebook.Facebook"} + ], + "tags": ["meta_network", "social_media"] + } + ], + "tags": { + "meta_network": { + "name": "Meta Network", + "description": "All Meta-owned properties - enables one tag to authorize entire network" + } + }, + "authorized_agents": [ + { + "url": "https://meta-ads.com", + "authorized_for": "All Meta properties", + "authorization_type": "property_tags", + "property_tags": ["meta_network"] + } + ] +} +``` + +**How it works**: Agent is authorized for all properties that have ANY of the listed tags. Properties are matched against the `tags` array in each property definition. + +### Pattern 3: Inline Properties + +**Best for**: Small, specific property sets without top-level property declarations. + +**Structure**: +```json +{ + "authorized_agents": [ + { + "url": "https://agent.com", + "authorized_for": "Specific inventory", + "authorization_type": "inline_properties", + "properties": [ + { + "property_type": "website", + "name": "Example Site", + "identifiers": [ + {"type": "domain", "value": "example.com"} + ] + } + ] + } + ] +} +``` + +**How it works**: Properties are defined directly within the agent authorization entry instead of the top-level `properties` array. Useful when each agent has unique property definitions. + +### Pattern 4: Publisher Property References + +**Best for**: Third-party agents representing multiple publishers. Single source of truth for property definitions. + +**Structure**: +```json +{ + "contact": { + "name": "Third-Party CTV Network" + }, + "authorized_agents": [ + { + "url": "https://ctv-network.com/api", + "authorized_for": "CTV inventory from multiple publishers", + "authorization_type": "publisher_properties", + "publisher_properties": [ + { + "publisher_domain": "cnn.com", + "selection_type": "by_tag", + "property_tags": ["ctv"] + }, + { + "publisher_domain": "espn.com", + "selection_type": "by_tag", + "property_tags": ["ctv"] + } + ] + } + ] +} +``` + +**How it works**: Agent references properties from OTHER publishers' adagents.json files. The `publisher_domain` points to the publisher, and `selection_type` determines how to resolve properties (`by_id` or `by_tag`). + +**Compact form for managed networks (`publisher_domains`)**: when the same predicate applies to many publishers — the canonical managed-network shape — replace the singular `publisher_domain` with the plural `publisher_domains` array. Each `publisher_properties[]` entry takes exactly one of `publisher_domain` or `publisher_domains`; both are equivalent for resolution and both satisfy the [`managerdomain` fallback safety rule](#safety-rules-for-this-fallback) for every listed domain. + +The compact form is available on `selection_type: "all"` and `"by_tag"` only. **It is intentionally NOT available on `selection_type: "by_id"`**: property IDs are publisher-scoped, and fanning the same ID set across N publishers' files would silently authorize whichever inventory happens to share an ID at each publisher. Use one `publisher_properties[]` entry per publisher when each publisher's ID set differs. Validators MUST reject `by_id` selectors that include `publisher_domains[]`. + +Validators MUST reject any `publisher_properties[]` entry that includes both `publisher_domain` and `publisher_domains`, and MUST reject any entry that includes neither. Implementations MAY mix the two forms across entries — for example, use the compact form for the bulk of represented publishers and a singular-form entry for an outlier publisher with a different tag predicate. + +```json +{ + "contact": { "name": "Example Managed Network" }, + "authorized_agents": [{ + "url": "https://agent.network.example/api", + "authorized_for": "Managed-network display inventory across represented publishers", + "authorization_type": "publisher_properties", + "publisher_properties": [ + { + "publisher_domains": ["site1.example", "site2.example", "site3.example"], + "selection_type": "by_tag", + "property_tags": ["managed_network"] + } + ], + "delegation_type": "ad_network" + }] +} +``` + +The above is semantically identical to repeating the singular-form entry once per domain. Use it when every represented publisher tags inventory the same way (typical of WordPress/managed-network deployments); fall back to one entry per publisher only when the selector predicate genuinely differs. + +### Resolution paths + +A `publisher_properties` selector resolves against properties in one of two ways. Federated is the default and the trust root; parent-file inline is a per-domain optimization a consumer MAY take when the parent file carries enough information to resolve the selector locally. + +**1. Federated resolution (default).** For each domain in `publisher_domain` or `publisher_domains[]`, fetch that publisher's `adagents.json` and apply the selector predicate against the publisher's own top-level `properties[]`. Each listed domain is resolved **independently and in parallel**: + +- If a listed publisher's `adagents.json` is unreachable (404, 5xx, timeout, fails its own validation), the selector resolves to the empty set **for that publisher only** — the entry remains valid for all other listed publishers. Consumers MUST NOT treat a single unreachable publisher as poisoning the rest of the compact entry. +- If a listed publisher's `adagents.json` carries no properties matching the predicate (no entries with the named tag), the selector resolves to the empty set for that publisher. Same partial-resolution rule applies. +- Resolution caching follows each publisher's own cache policy on their `adagents.json`, independently. A consumer SHOULD NOT extend or shorten one publisher's cache TTL based on observations of another publisher in the same compact entry. + +**2. Parent-file inline resolution (managed-network optimization).** A consumer MAY satisfy the selector from the parent file's own top-level `properties[]` when **all** of the following hold: + +- The parent file has top-level `properties[]` entries. +- Every matched property carries an explicit `publisher_domain` field whose value equals one of the domains in the selector's `publisher_domain` / `publisher_domains[]` set. +- For `selection_type: by_tag`: the property's `tags[]` contains at least one of the selector's `property_tags[]`. +- For `selection_type: by_id`: the property's `property_id` is in the selector's `property_ids[]` AND the selector uses its singular `publisher_domain` form (the compact `publisher_domains[]` form remains rejected for `by_id` — property IDs are publisher-scoped and fanning a fixed ID set across publishers would silently authorize wrong inventory). +- For `selection_type: all`: every parent-file `properties[]` entry with a matching `publisher_domain` is selected. + +Inline resolution is a **per-domain optimization**: a consumer MAY use inline resolution for the listed domains that have matching inline properties in the parent file, AND federated resolution for the remainder. Both paths SHOULD produce the same `(publisher_domain, property_id)` set when both are available. + +**Why this is safe.** The trust anchor for property authorization is the publisher whose domain is named on the property. By requiring `publisher_domain` on each inline property and matching against the selector's `publisher_domains[]`, the inline path preserves the invariant that the publisher whose inventory is being authorized is explicitly named — the same invariant the [`managerdomain` fallback safety rule](#safety-rules-for-this-fallback) protects. A manager file cannot use inline resolution to authorize inventory for a publisher it doesn't list. + +**Divergence rule.** If a consumer resolves the same `(publisher_domain, property_id)` via both inline and federated paths and the results disagree, the federated result is authoritative. Consumers SHOULD log the divergence as a publisher-side data-integrity warning and MAY surface it to operators. Consumers that prefer strict federation MAY ignore the inline path entirely. + +**Revocation under inline resolution.** Inline resolution MUST honor `revoked_publisher_domains[]` on the parent file. A `publisher_domain` listed as revoked at the parent level resolves to the empty set for that domain, regardless of whether matching properties exist in the parent's `properties[]`. Consumers that also resolve federated SHOULD cross-check the child's own `revoked_publisher_domains[]`; first match (parent or child) revokes. + +**When to use which.** Inline resolution exists because strict federation at managed-network scale (thousands of represented publishers under one operator) requires N HTTP fetches per authorization check, which no production consumer can sustain. Files that inline `properties[]` with `publisher_domain` anchors are signalling "you can resolve this here." Consumers handling small federated entries (a handful of publishers, each with their own properly-populated `adagents.json`) should prefer the federated path; it carries less consumer-side trust assumption. Consumers indexing managed-network parent files at scale should prefer the inline path; the parent file is structurally the property catalog whether the spec endorses it or not, and inline resolution makes that explicit. + +## Authorization Qualifiers + +The four property-side `authorization_type` patterns above answer **which inventory** an agent can sell; the two signal-side values (`signal_ids`, `signal_tags`) carry the same shape for `signals[]`. The optional qualifiers below answer **how** that inventory is being made available. + +### `delegation_type` + +- **`direct`**: The publisher treats this endpoint as a direct way to buy from them, even if a third party operates the software behind the scenes +- **`delegated`**: The agent is authorized to sell on the publisher's behalf +- **`ad_network`**: The inventory is sold through a network/package sales path rather than as the publisher's direct endpoint + +### `collections` + +Use `collections` when authorization should only apply to inventory associated with specific content programs. This is especially useful for CTV, streaming, podcasting, and creator inventory where the same property can carry many collections with different commercial arrangements. + +### `placement_ids` + +Use `placement_ids` to narrow authorization to canonical placements published in this same `adagents.json`. This is the field that lets a publisher say "this agent is authorized for MSN homepage native feed, but not for the entire property" or "this network can sell pre-roll but not host-read sponsorships." In product responses and creative assignment, the corresponding placement identity is `{ publisher_domain, placement_id }`. + +Canonical placement definitions can also carry: + +- `tags` for grouping placements across properties and products +- `property_ids` or `property_tags` to answer "what placements are on property X?" and "what properties is placement Y on?" +- `format_options` to answer "what formats does this placement support?" without relying entirely on product response placement details + +### `placement_tags` + +Use `placement_tags` when authorization should apply to a governed placement group rather than a hand-maintained list of placement IDs. This is useful for commercial access patterns such as: + +- `programmatic` +- `direct_only` +- `publisher_managed` +- `managed_by_taboola` + +Unlike freeform labels, these tags should be treated as part of the publisher's placement governance model because authorization decisions depend on them. Define them in top-level `placement_tags` metadata the same way property tags are documented in top-level `tags`. + +### `signing_keys` + +Use `signing_keys` when the publisher wants to pin the public keys an authorized agent is allowed to sign with. This avoids trusting key discovery from the agent domain alone. + +- These are publisher-attested trust anchors, not just convenience metadata +- Buyers should verify signed agent responses against the pinned keys in `adagents.json` +- If an agent domain is compromised, pinned keys prevent the attacker from silently swapping both the endpoint and its advertised keys + +Publishers MUST populate `signing_keys` for any authorized agent whose delegated scopes include **mutating operations** — any AdCP task that writes state on behalf of the publisher. In the 3.x catalog this means the media-buy task set (`create_media_buy`, `update_media_buy`, `sync_creatives`, `update_performance_index`) and any future task flagged as mutating in the [media-buy task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy). Read-only discovery tasks (`get_adcp_capabilities`, `get_products`, `get_signals`) are out of scope for this requirement. Leaving `signing_keys` empty for a mutating-scope authorization reduces the trust chain to counterparty-controlled `jwks_uri` discovery and forfeits the publisher's pin as a cross-check. + +Verifier requirement: if the publisher's `adagents.json` entry for an agent contains `signing_keys`, the verifier MUST reject any signature whose `keyid` is not in that pinned set, regardless of `jwks_uri` contents. The pin is authoritative; the agent-hosted JWKS is advisory and MUST NOT override it. + +**Key rotation and cache semantics.** To keep the pin usable across rotations without opening a DoS-by-rotation window: + +- Verifiers SHOULD cache the pinned `signing_keys` for at most the `Cache-Control` `max-age` the publisher serves on `adagents.json`, defaulting to **one hour** when no directive is present. Longer caching risks rejecting a legitimate rotated key. +- On encountering an **unknown `keyid`**, the verifier MUST force-refresh the publisher's `adagents.json` (bypassing cache) before final rejection. This prevents a stale cache from locking out a legitimately rotated key. +- Publishers MAY carry **overlapping keys** in `signing_keys` during a rotation window so verifiers can accept signatures produced under either the old or the new key. The pinned set is unordered: presence in the set is sufficient for acceptance. Operators SHOULD remove the retired key from the pin once they are confident no in-flight traffic is still signing with it (hours, not days). + +**Bootstrap scope.** The pin protects against **agent-domain** compromise: if the agent domain is taken over, an attacker cannot silently swap both the endpoint and its advertised keys because the publisher's pin still governs acceptance. It does **not** protect against publisher-domain compromise (an attacker who controls `adagents.json` can rewrite the pin itself). First-ever retrieval of `adagents.json` is TLS-trust-only; the R-1 root-of-trust / key-transparency work (tracked in `specs/registry-change-feed.md` §Feed-event content signing) is the track that will strengthen this boundary. + +A follow-up is tracked to promote `signing_keys` from optional to required at the schema level for mutating-scope authorizations; the prose requirement above is the normative floor until that schema change lands. + +### `countries` + +Use ISO 3166-1 alpha-2 country codes to constrain authorization geographically. This avoids ambiguous regional shorthands such as "LATAM" or "EMEA" and gives buyer agents a precise machine-readable scope. + +### `effective_from` / `effective_until` + +Use these fields for time-bounded rights such as seasonal exclusives, windowed syndication, or temporary delegated sales agreements. + +### `exclusive` + +Set `exclusive: true` when this agent is the publisher's sole authorized path for the scoped slice of inventory. Leave it absent or set it to `false` when multiple agents are authorized concurrently. + +### Example: Scoped Delegation + +```json +{ + "placement_tags": { + "programmatic": { + "name": "Programmatic", + "description": "Placements available through programmatic sales paths" + }, + "direct_only": { + "name": "Direct only", + "description": "Placements reserved for direct publisher sales" + } + }, + "collections": [ + { + "collection_id": "signal_noise", + "name": "Signal & Noise", + "kind": "series" + } + ], + "placements": [ + { + "placement_id": "pre_roll", + "name": "Pre-roll", + "tags": ["audio", "pre_roll", "programmatic"], + "property_ids": ["publisher_podcast"], + "collection_ids": ["signal_noise"], + "format_options": [ + { + "format_kind": "audio_hosted", + "params": { + "duration_ms_exact": 15000, + "audio_codecs": ["mp3"] + } + } + ] + }, + { + "placement_id": "host_read", + "name": "Host-read Mid-roll", + "tags": ["audio", "host_read", "premium", "direct_only"], + "property_ids": ["publisher_podcast"], + "collection_ids": ["signal_noise"], + "format_options": [ + { + "format_kind": "audio_hosted", + "params": { + "duration_ms_exact": 60000, + "asset_source": "publisher_host_recorded", + "buyer_asset_acceptance": "rejected" + } + } + ] + } + ], + "authorized_agents": [ + { + "url": "https://sales.publisher.example.com", + "authorized_for": "Direct US and CA sales for Signal & Noise host reads", + "authorization_type": "property_ids", + "property_ids": ["publisher_podcast"], + "collections": [ + { + "publisher_domain": "publisher.example.com", + "collection_ids": ["signal_noise"] + } + ], + "placement_tags": ["direct_only"], + "delegation_type": "direct", + "countries": ["US", "CA"], + "exclusive": true + }, + { + "url": "https://network.example.com", + "authorized_for": "Open network distribution outside US and CA for pre-roll", + "authorization_type": "property_ids", + "property_ids": ["publisher_podcast"], + "collections": [ + { + "publisher_domain": "publisher.example.com", + "collection_ids": ["signal_noise"] + } + ], + "placement_tags": ["programmatic"], + "delegation_type": "ad_network", + "countries": ["GB", "AU", "NZ"] + } + ] +} +``` + +This lets a publisher say "buy host reads directly from us in some markets, but use a network path for pre-roll in others" without implying that every authorized path is equivalent. + +`adagents.json` now provides a canonical publisher-level placement registry. Products still return their own `placements`, but placement IDs are publisher-scoped: catalog-backed placements SHOULD reference the publisher registry with `{ publisher_domain, placement_id }`. When a product spans multiple publishers and catalog IDs collide, the `publisher_domain` disambiguates them; creative assignments should use structured `placement_refs` for those cases. Referencing a catalog placement means the product is inheriting that placement's identity; the product can narrow canonical `format_options`, preserve or narrow placement tags, or add operational detail, but it should not redefine the placement into something incompatible. + +## Domain Matching Rules + +For website properties with domain identifiers, AdCP follows web conventions: + +### Base Domain (`example.com`) + +Matches domain plus standard web subdomains: + +- ✅ `example.com` +- ✅ `www.example.com` (standard web) +- ✅ `m.example.com` (standard mobile) +- ❌ `subdomain.example.com` (requires explicit authorization) + +### Specific Subdomain (`subdomain.example.com`) + +Matches only that exact subdomain: + +- ✅ `subdomain.example.com` +- ❌ All other domains/subdomains + +### Wildcard (`*.example.com`) + +Matches ALL subdomains but NOT base: + +- ✅ Any subdomain +- ❌ `example.com` (base domain requires separate authorization) + +## Real-World Examples + +### Example 1: Meta Network (Tag-Based) + +Large network using tags for grouping efficiency: + +```json +{ + "contact": { + "name": "Meta Advertising Operations", + "email": "adops@meta.com", + "domain": "meta.com", + "seller_id": "pub-meta-12345", + "tag_id": "12345", + "privacy_policy_url": "https://www.meta.com/privacy/policy" + }, + "properties": [ + { + "property_type": "mobile_app", + "name": "Instagram", + "identifiers": [ + {"type": "ios_bundle", "value": "com.burbn.instagram"}, + {"type": "android_package", "value": "com.instagram.android"} + ], + "tags": ["meta_network"], + "publisher_domain": "instagram.com" + }, + { + "property_type": "mobile_app", + "name": "Facebook", + "identifiers": [ + {"type": "ios_bundle", "value": "com.facebook.Facebook"}, + {"type": "android_package", "value": "com.facebook.katana"} + ], + "tags": ["meta_network"], + "publisher_domain": "facebook.com" + }, + { + "property_type": "mobile_app", + "name": "WhatsApp", + "identifiers": [ + {"type": "ios_bundle", "value": "net.whatsapp.WhatsApp"}, + {"type": "android_package", "value": "com.whatsapp"} + ], + "tags": ["meta_network"], + "publisher_domain": "whatsapp.com" + } + ], + "tags": { + "meta_network": { + "name": "Meta Network", + "description": "All Meta-owned properties - one tag authorizes entire network efficiently" + } + }, + "authorized_agents": [ + { + "url": "https://meta-ads.com", + "authorized_for": "All Meta properties", + "authorization_type": "property_tags", + "property_tags": ["meta_network"] + } + ] +} +``` + +**Why this works**: One tag (`meta_network`) authorizes all properties without listing individual property IDs. As Meta adds properties, they just tag them - no need to update agent authorization. + +### Example 2: CNN (Channel Segmentation) + +Different agents for different channels: + +```json +{ + "contact": { + "name": "CNN Advertising Operations", + "email": "adops@cnn.com", + "domain": "cnn.com" + }, + "properties": [ + { + "property_id": "cnn_ctv_app", + "property_type": "ctv_app", + "name": "CNN CTV App", + "identifiers": [ + {"type": "roku_store_id", "value": "12345"} + ], + "tags": ["ctv"] + }, + { + "property_id": "cnn_web_us", + "property_type": "website", + "name": "CNN.com US", + "identifiers": [ + {"type": "domain", "value": "cnn.com"} + ], + "tags": ["web"] + } + ], + "authorized_agents": [ + { + "url": "https://cnn-ctv-agent.com", + "authorized_for": "CNN CTV properties", + "authorization_type": "property_ids", + "property_ids": ["cnn_ctv_app"], + "delegation_type": "direct", + "exclusive": true + }, + { + "url": "https://cnn-web-agent.com", + "authorized_for": "CNN web properties", + "authorization_type": "property_ids", + "property_ids": ["cnn_web_us"], + "delegation_type": "delegated", + "countries": ["US", "CA"] + } + ] +} +``` + +### Example 3: Publisher with Governance Agent References + +Publishers can declare which governance agents have data about their properties using `property_features`. This enables buyers to discover where to get sustainability, quality, and suitability data. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Premium News Publisher", + "email": "adops@news.example.com", + "domain": "news.example.com" + }, + "properties": [ + { + "property_id": "news_main", + "property_type": "website", + "name": "News Example", + "identifiers": [ + {"type": "domain", "value": "news.example.com"} + ], + "tags": ["premium", "news"], + "publisher_domain": "news.example.com" + } + ], + "tags": { + "premium": { + "name": "Premium Properties", + "description": "High-quality, brand-suitable properties" + }, + "news": { + "name": "News Properties", + "description": "News and journalism content" + } + }, + "authorized_agents": [ + { + "url": "https://sales.news.example.com", + "authorized_for": "All news properties", + "authorization_type": "property_tags", + "property_tags": ["news"] + } + ], + "property_features": [ + { + "url": "https://api.sustainability-vendor.example", + "name": "Sustainability Vendor", + "features": ["carbon_score", "green_media_certified"], + "publisher_id": "pub_news_12345" + }, + { + "url": "https://api.quality-vendor.example", + "name": "Quality Vendor", + "features": ["mfa_score", "ad_density", "page_speed"] + }, + { + "url": "https://api.suitability-vendor.example", + "name": "Suitability Vendor", + "features": ["content_category", "brand_risk_score", "sentiment"], + "publisher_id": "suit_news_67890" + } + ], + "last_updated": "2025-01-10T18:00:00Z" +} +``` + +**Why this works**: +- Publishers declare relationships with governance agents upfront +- Buyers discover governance agents by reading adagents.json (no need to query every possible agent) +- The `publisher_id` field helps agents look up the publisher's data efficiently +- Feature IDs tell buyers what data types are available without querying + +## Governance Agent Discovery + +The `property_features` field solves a key discovery problem: how does a buyer know which governance agents have data about a given property? + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant PubDomain as Publisher Domain + participant SustAgent as Sustainability Agent + participant QualAgent as Quality Agent + + Buyer->>PubDomain: GET /.well-known/adagents.json + PubDomain-->>Buyer: adagents.json with property_features + + Note over Buyer: Extract governance agents from property_features + + par Query governance agents + Buyer->>SustAgent: get_adcp_capabilities + SustAgent-->>Buyer: Available features (carbon_score, etc.) + and + Buyer->>QualAgent: get_adcp_capabilities + QualAgent-->>Buyer: Available features (mfa_score, etc.) + end + + Note over Buyer: Create property lists on each governance agent + + Buyer->>SustAgent: create_property_list(filters, brand) + Buyer->>QualAgent: create_property_list(filters, brand) +``` + +### When to Use property_features + +| Scenario | Use property_features? | +|----------|------------------------| +| Publisher has carbon scoring from a sustainability vendor | ✅ Yes | +| Publisher has MFA score measured by a quality vendor | ✅ Yes | +| Publisher has content classification from a suitability vendor | ✅ Yes | +| Publisher self-reports brand suitability | ❌ No - use property tags | +| Sales agent provides quality data | ❌ No - that's agent capability | + +### Vendor Extensions + +Governance agents can include vendor-specific data in feature definitions via an `ext` block. See [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for details. + +## Fetching and Validating + +### Using the AdAgents.json Builder + +The easiest way to validate or create an adagents.json file is using the **[AdAgents.json Builder](https://agenticadvertising.org/adagents/builder)** web tool. It provides: + +- Domain validation (fetches and checks `/.well-known/adagents.json`) +- Structure validation against the JSON schema +- Agent card endpoint verification (checks if agent URLs respond correctly) +- Guided file creation with proper formatting + +### Programmatic Validation + +For programmatic validation, use the validation API: + + + +```javascript JavaScript +// Validate a domain's adagents.json file +const response = await fetch('https://adcontextprotocol.org/api/adagents/validate', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ domain: 'example.com' }) +}); + +const { success, data } = await response.json(); + +if (success && data.found) { + console.log(`Valid: ${data.validation.valid}`); + console.log(`Agents: ${data.validation.raw_data?.authorized_agents?.length || 0}`); + + // Check for any validation errors + if (data.validation.errors?.length > 0) { + console.log('Errors:', data.validation.errors.map(e => e.message)); + } +} else { + console.log('No adagents.json found at this domain'); +} +``` + +```python Python +import httpx + +# Validate a domain's adagents.json file +response = httpx.post( + 'https://adcontextprotocol.org/api/adagents/validate', + json={'domain': 'example.com'} +) + +result = response.json() + +if result['success'] and result['data']['found']: + validation = result['data']['validation'] + print(f"Valid: {validation['valid']}") + print(f"Agents: {len(validation.get('raw_data', {}).get('authorized_agents', []))}") + + # Check for any validation errors + if validation.get('errors'): + print('Errors:', [e['message'] for e in validation['errors']]) +else: + print('No adagents.json found at this domain') +``` + +```bash CLI +# Validate a domain's adagents.json file +curl -X POST https://adcontextprotocol.org/api/adagents/validate \ + -H "Content-Type: application/json" \ + -d '{"domain": "example.com"}' | jq '.data.validation' +``` + + + +The validation API fetches `https://{domain}/.well-known/adagents.json`, validates its structure, follows URL references if present, and optionally checks agent card endpoints. + +### Using AdCP Client Libraries + +The AdCP client libraries provide built-in validation and authorization checking: + + + +```python Python +import asyncio +from adcp import fetch_adagents, verify_agent_authorization + +async def validate_authorization(): + # Fetch and validate adagents.json from a publisher domain + adagents_data = await fetch_adagents('example-publisher.com') + + # Check if a specific agent is authorized + is_authorized = verify_agent_authorization( + adagents_data=adagents_data, + agent_url='https://our-sales-agent.com', + property_type='website', + property_identifiers=[{'type': 'domain', 'value': 'example-publisher.com'}] + ) + + print(f"Agent authorized: {is_authorized}") + print(f"Total agents: {len(adagents_data.get('authorized_agents', []))}") + +asyncio.run(validate_authorization()) +``` + +```javascript JavaScript +// Using the @adcp/sdk PropertyCrawler for discovery +import { PropertyCrawler } from '@adcp/sdk'; + +const crawler = new PropertyCrawler({ logLevel: 'info' }); + +// Crawl agents to discover their authorized properties +const result = await crawler.crawlAgents([ + { agent_url: 'https://our-sales-agent.com', protocol: 'a2a' } +]); + +console.log(`Found ${result.totalProperties} properties across ${result.totalPublisherDomains} domains`); +``` + +```bash CLI +# Fetch and inspect authorization file +curl https://example-publisher.com/.well-known/adagents.json | jq '.' + +# Check specific agent authorization +curl https://example-publisher.com/.well-known/adagents.json | \ + jq '.authorized_agents[] | select(.url == "https://our-sales-agent.com")' +``` + + + +The Python library handles validation automatically when fetching - if the adagents.json file is malformed or missing required fields, it raises `AdagentsValidationError`. + +## Best Practices + +### 1. Use Appropriate Authorization Pattern + +- **Property IDs**: Small, enumerable lists (< 20 properties) +- **Property Tags**: Large networks (100+ properties) +- **Inline Properties**: Simple cases without top-level properties +- **Publisher Properties**: Third-party agents representing multiple publishers + +### 2. Cache Files Appropriately + +- Cache for 24 hours minimum +- Use `last_updated` timestamp to detect staleness +- Handle 404 as "no file" (not an error - proceed without validation) +- Implement retry logic with exponential backoff for network errors + +### 3. Validate Structure + +- Validate against JSON schema before processing +- Check required fields exist (`authorized_agents` array) +- Verify authorization scope matches product claims +- Cross-reference with seller.json if available + +### 4. Handle Missing Files Gracefully + +- 404 status = No file present (not an authorization failure) +- Absence of file does not mean agent is unauthorized +- Use adagents.json as verification, not requirement + +### 5. Handle Per-Property Validation Failures Gracefully + +File-level failures (unparseable JSON, missing required top-level `authorized_agents`) MUST abort processing for that domain — the file is unusable. Per-property validation failures are a separate tier: a single property object in an otherwise-valid file may omit `identifiers` or another required field due to a publisher-side templating error or a partial write. + +Per-property validation failures MUST NOT prevent processing of remaining properties in the same file. Treat a non-conforming property as absent from the array — never as a reason to abort the run: + +- **Skip** the non-conforming property +- **Log** a warning including the source domain, the property's index in the array, and the reason (e.g., `missing required field: identifiers`) +- **Continue** processing all remaining properties in the file + +Aborting the full crawl on a per-property failure is a common implementation error. A single malformed property in a managed-network file that covers hundreds of publisher domains can silently zero out an entire discovery run, making this failure mode disproportionately disruptive relative to the size of the underlying data problem. This follows the same principle as IAB Tech Lab ads.txt 1.1 §3.1, which specifies that a malformed line MUST be ignored and processing of subsequent lines MUST continue. + +This applies to all surfaces where property objects appear: the top-level `properties` array, inline properties inside `authorized_agents[*].properties` (the `inline_properties` authorization type), and properties fetched and resolved from remote domains during `publisher_properties` resolution. + +## Next Steps + +After implementing adagents.json validation: + +1. **Integrate with Product Discovery**: Use [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) to discover inventory +2. **Validate at Purchase**: Check authorization before calling [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) +3. **Cache Property Mappings**: Store resolved properties for efficient validation +4. **Monitor Authorization**: Track validation success rates and unauthorized attempts + +## Learn More + +- [AdCP Basics: Authorized Properties](https://bokonads.com/p/adcp-basics-authorized-properties) - Accessible introduction to AdCP authorization +- [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) - Discover agent capabilities and portfolio +- [Property Schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/property.json) - Property definition structure +- [AdAgents.json Builder](https://agenticadvertising.org/adagents/builder) - Web-based validator and creator diff --git a/dist/docs/3.2.0-beta.4/governance/property/authorized-properties.mdx b/dist/docs/3.2.0-beta.4/governance/property/authorized-properties.mdx new file mode 100644 index 0000000000..d6073bf4ad --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/authorized-properties.mdx @@ -0,0 +1,291 @@ +--- +title: Understanding Authorization +description: "Authorized properties in AdCP let buyers restrict campaigns to verified inventory using property lists and supply path validation." +"og:title": "AdCP — Understanding Authorization" +--- + + +One of the foundational challenges in digital advertising is **unauthorized resale** - ensuring that sales agents are actually authorized to represent the advertising properties they claim to sell. AdCP solves this problem through a comprehensive authorization system that builds on the lessons learned from ads.txt in programmatic advertising. + + +**New to AdCP authorization?** Read [AdCP Basics: Authorized Properties](https://bokonads.com/p/adcp-basics-authorized-properties) for an accessible introduction to how authorization works in agentic advertising. + + +## The Problem: Unauthorized Resale + +### Historical Context +In programmatic advertising, the Ads.txt initiative was created to solve a critical problem: unauthorized reselling of advertising inventory. Before ads.txt, bad actors could claim to represent popular websites and sell their inventory without permission, leading to: + +- **Revenue theft**: Publishers lost money to unauthorized sellers +- **Brand safety issues**: Buyers couldn't verify legitimate inventory sources +- **Market fragmentation**: No way to distinguish authorized from unauthorized sellers + +### The Same Problem in AI-Powered Advertising +AdCP faces similar challenges as AI agents begin to buy and sell advertising programmatically: + +- **AI sales agents** may claim to represent properties they don't actually control +- **Buyer agents** need to verify authorization before making purchases +- **Publishers** need a way to explicitly authorize specific sales agents +- **Scale challenges**: Manual verification doesn't work for networks with thousands of properties + +## The Solution: AdCP Authorization System + +AdCP prevents unauthorized resale through a three-part system: + +1. **Publisher Authorization**: Publishers explicitly authorize sales agents via `adagents.json` with `delegation_type` (`direct`, `delegated`, or `ad_network`) +2. **Operator Declaration**: Operators declare their property portfolio in `brand.json` with the `relationship` field. First-party inventory uses `owned`; delegated or network paths use values that match `delegation_type`. +3. **Agent Discovery**: Sales agents declare their portfolio via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) in the `media_buy.portfolio` section + +The first two create bilateral verification — like `ads.txt` + `sellers.json` in programmatic. For delegated or network paths, both sides must agree for the supply path to be trusted. See [ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) for the full pattern. + +## How Publishers Authorize Sales Agents + +Publishers authorize sales agents by hosting an `adagents.json` file at `/.well-known/adagents.json` on their domain. This file lists all authorized agents and their permissions. + +### Example adagents.json + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Sports Network Media", + "email": "adops@sportsnetwork.com", + "domain": "sportsnetwork.com" + }, + "properties": [ + { + "property_id": "sports_network_main", + "property_type": "website", + "name": "Sports Network", + "identifiers": [ + {"type": "domain", "value": "sportsnetwork.com"} + ], + "tags": ["premium", "sports"] + } + ], + "authorized_agents": [ + { + "url": "https://sports-media-sales.com", + "authorized_for": "All Sports Network properties", + "authorization_type": "property_tags", + "property_tags": ["sports"], + "delegation_type": "direct" + }, + { + "url": "https://premium-ad-network.com", + "authorized_for": "Premium inventory only", + "authorization_type": "property_tags", + "property_tags": ["premium"], + "delegation_type": "ad_network", + "countries": ["US", "CA"] + } + ], + "last_updated": "2025-01-10T12:00:00Z" +} +``` + +### Key Fields + +- **contact**: Identifies the publisher/entity managing this file +- **properties**: Defines the properties covered by this authorization file +- **authorized_agents**: List of sales agents authorized to represent properties + - **url**: Agent's API endpoint URL + - **authorized_for**: Human-readable description of authorization scope + - **authorization_type**: How properties are selected (`property_ids`, `property_tags`, `inline_properties`, `publisher_properties`) + - **delegation_type**: Whether this path is `direct`, `delegated`, or `ad_network` + - **collections**: Optional collection selectors that narrow authorization to specific content programs + - **placement_ids**: Optional placement IDs from the publisher's placement registry in `adagents.json` + - **countries**: Optional ISO 3166-1 alpha-2 country codes + - **effective_from / effective_until**: Optional authorization window + - **exclusive**: Whether this is the sole authorized path for the scoped inventory slice +- **last_updated**: ISO 8601 timestamp of last modification + +## How Sales Agents Share Authorized Properties + +Sales agents use the [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) task to declare their portfolio information in the `media_buy.portfolio` section. This serves multiple purposes: + +1. **Transparency**: Buyers can see what publishers an agent represents +2. **Validation enablement**: Provides publisher domains for buyers to verify authorization via `adagents.json` +3. **Brief routing**: Present primary-channel and primary-country arrays are exhaustive allowlists for briefs the agent accepts. Omission means unknown scope, not global coverage. + +The routing arrays do not guarantee inventory availability. Buyers may skip an +agent when a brief has no country/channel intersection, but matching scope still +requires `get_products` to resolve account access, dates, formats, policy, and +current inventory. Intermediaries MUST NOT present inferred upstream scope as if +the upstream sales agent declared it; they may advertise a narrower scope as +their own operator-confirmed routing constraint. + +### Property Declaration Example + +```json +{ + "properties": [ + { + "property_type": "website", + "name": "Sports Network", + "identifiers": [ + {"type": "domain", "value": "sportsnetwork.com"} + ], + "tags": ["sports_network", "premium"], + "publisher_domain": "sportsnetwork.com" + }, + { + "property_type": "radio", + "name": "WXYZ-FM Chicago", + "identifiers": [ + {"type": "station_id", "value": "WXYZ-FM"}, + {"type": "facility_id", "value": "fcc:21242"} + ], + "tags": ["local_radio", "midwest", "chicago"], + "publisher_domain": "radionetwork.com" + } + ], + "tags": { + "sports_network": { + "name": "Sports Network Properties", + "description": "145 sports properties and networks" + }, + "local_radio": { + "name": "Local Radio Stations", + "description": "1847 local radio stations across US markets" + } + }, + "advertising_policies": "We maintain strict brand safety standards. Prohibited categories include: tobacco and vaping products, online gambling and sports betting, cannabis and CBD products, political advertising, and speculative financial products (crypto, NFTs, penny stocks).\n\nWe also prohibit misleading tactics such as clickbait headlines, false scarcity claims, hidden pricing, and ads targeting vulnerable populations.\n\nCompetitor brands in the streaming media space are blocked by policy.\n\nFull advertising guidelines: https://publisher.com/advertising-policies" +} +``` + +### Property Tags for Scale + +For large networks representing thousands of properties, AdCP supports **property tags** to make the system manageable: + +- **Products** can reference `["local_radio", "midwest"]` instead of listing hundreds of stations +- **Buyers** use `get_adcp_capabilities` to discover the agent's portfolio and validate authorization +- **Authorization validation** works on the resolved properties via `adagents.json` + +## Authorization Validation Workflow + +Here's how a buyer agent validates that a sales agent is authorized to represent claimed properties: + +### 1. One-Time Setup +```javascript +// Get portfolio information from capabilities +const capabilities = await salesAgent.call('get_adcp_capabilities'); +const portfolio = capabilities.media_buy?.portfolio; +const publisherDomains = portfolio?.publisher_domains || []; + +// For each publisher domain, fetch and cache adagents.json +const authorizationCache = {}; + +for (const domain of publisherDomains) { + try { + const adagents = await fetch(`https://${domain}/.well-known/adagents.json`); + authorizationCache[domain] = await adagents.json(); + } catch (error) { + console.warn(`Could not verify authorization for ${domain}`); + authorizationCache[domain] = null; + } +} +``` + +### 2. Product Validation +```javascript +// When evaluating a product +const result = await salesAgent.call('get_products', { + idempotency_key: "550e8400-e29b-41d4-a716-446655442070", + buying_mode: "brief", + brief: "Chicago radio ads", +}); +const product = result.products[0]; + +// Validate authorization for each publisher in publisher_properties +const authorized = product.publisher_properties.every(pubProp => { + const domain = pubProp.publisher_domain; + const adagents = authorizationCache[domain]; + + if (!adagents) return false; // No adagents.json found + + // Verify the sales agent is in publisher's authorized_agents + return adagents.authorized_agents.some(agent => + agent.url === salesAgent.url && + isAuthorizedForProperties(agent, pubProp) + ); +}); + +if (!authorized) { + throw new Error("Sales agent not authorized for claimed properties"); +} +``` + +### 3. Ongoing Validation +- **Cache adagents.json** responses with reasonable TTL (e.g., 24 hours) +- **Re-validate periodically** for long-running campaigns +- **Handle authorization changes** gracefully (pause vs. reject) + +## Benefits of This Approach + +### For Publishers +- **Explicit control** over who can sell their inventory +- **Granular permissions** by property, collection, country, and date range +- **Standard web hosting** - no special infrastructure required +- **Audit trail** of authorized agents + +### For Sales Agents +- **Clear authorization proof** that buyers can verify +- **Efficient tag-based grouping** for large property portfolios +- **Standardized declaration** across all AdCP interactions + +### For Buyer Agents +- **Automated verification** of seller authorization +- **Fraud prevention** through cryptographic verification +- **Confidence in purchases** from verified inventory sources +- **Scalable validation** for large-scale automated buying + +## Security Considerations + +### Domain Verification +- **HTTPS required**: adagents.json must be served over HTTPS +- **Domain ownership**: Only domain owners can authorize agents for their properties +- **Regular validation**: Buyers should re-check authorization periodically + +### Authorization Scope +- **Least privilege**: Grant minimal necessary permissions +- **Time bounds**: Use start/end dates for temporary authorizations +- **Property restrictions**: Limit to specific paths or property types when appropriate + +### Error Handling +- **Missing adagents.json**: Treat as unauthorized (fail closed) +- **Invalid JSON**: Reject malformed authorization files +- **Network errors**: Implement retry logic with fallback policies +- **Expired authorization**: Handle gracefully in active campaigns + +## Integration with Product Discovery + +Authorization validation integrates seamlessly with [Product Discovery](../../media-buy/product-discovery/): + +1. **Discover products** using [`get_products`](../../media-buy/task-reference/get_products) +2. **Validate authorization** for properties referenced in products +3. **Proceed confidently** with authorized inventory +4. **Flag unauthorized** products for manual review + +This creates a trustworthy foundation for AI-powered advertising that prevents unauthorized resale while enabling efficient, automated transactions. + +## Technical Implementation + +For complete technical details on implementing the `adagents.json` file format, including: + +- File location and format requirements (`/.well-known/adagents.json`) +- JSON schema definitions and validation rules +- Mobile application and CTV implementation patterns +- Detailed property type specifications (website, mobile app, CTV, DOOH, podcast) +- Domain matching rules and wildcard patterns +- Validation code examples and error handling +- Security considerations and best practices + +See the **[adagents.json Tech Spec](./adagents)** for complete implementation guidance. + +## Related Documentation + +- **[`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)** - Discover agent capabilities and portfolio information +- **[Product Discovery](../../media-buy/product-discovery/)** - How authorization integrates with product discovery +- **[Properties Schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/property.json)** - Technical property data model +- **[adagents.json Tech Spec](./adagents)** - Complete `adagents.json` implementation guide diff --git a/dist/docs/3.2.0-beta.4/governance/property/index.mdx b/dist/docs/3.2.0-beta.4/governance/property/index.mdx new file mode 100644 index 0000000000..354a089479 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/index.mdx @@ -0,0 +1,285 @@ +--- +title: Property Governance +description: "AdCP Property Governance standardizes identification, authorization, enrichment, and selection of advertising properties across all media channels." +"og:title": "AdCP — Property Governance" +sidebarTitle: Overview +--- + +Property Governance standardizes how advertising properties (websites, apps, CTV, podcasts, billboards) are identified, authorized, enriched with data, and selected for campaigns. Ships in 3.0 as the `property-lists` specialism under the `governance` protocol. + +Property lists and [collection lists](/dist/docs/3.2.0-beta.4/governance/collection/index) together form the **inventory list** system — property lists control *where* ads run (technical surfaces), while collection lists control *what content* ads run in (programs, shows, series). Both are setup-time artifacts managed by governance agents with the same lifecycle pattern. + +`adagents.json` is intentionally broader than `ads.txt`: it can describe not just which sales agents are present, but which properties, placements, and delegated sales paths they are actually authorized to make available. For a side-by-side comparison, see [Why adagents.json is more expressive than ads.txt](https://agenticadvertising.org/perspectives/adagents-json-vs-ads-txt). + +## Overview + +Property Governance addresses five distinct concerns: + +| Concern | Question | Owner | Mechanism | +|---------|----------|-------|-----------| +| **Property Identity** | What properties exist? | Publishers | `adagents.json` properties array | +| **Sales Authorization** | Who can sell this property? | Publishers | `adagents.json` authorized_agents with `delegation_type` | +| **Property Data** | What do we know about this property? | Data providers | Governance agents via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | +| **Property Selection** | Which properties meet my requirements? | Buyers | Property lists with filters | + +The first three are **publisher-side declarations** via adagents.json. The last two are **buyer-side operations** that consume property data from governance agents. + +Authorization is bilateral — publishers declare authorized agents in `adagents.json` (with `delegation_type`), and operators declare their property portfolio in `brand.json` (with `relationship`). Both sides must agree for the supply path to be verified. This is the AdCP equivalent of `ads.txt` + `sellers.json`. See [ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) for how this works. + +## Publisher Side: adagents.json + +Publishers declare their properties, authorize sales agents, and reference governance agents via `/.well-known/adagents.json`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "properties": [ + { + "property_id": "example_site", + "property_type": "website", + "name": "Example Site", + "identifiers": [{"type": "domain", "value": "example.com"}] + } + ], + "authorized_agents": [ + { + "url": "https://agent.example.com", + "authorized_for": "Official sales agent", + "authorization_type": "property_ids", + "property_ids": ["example_site"], + "delegation_type": "direct" + } + ], + "property_features": [ + { + "url": "https://api.sustainability-vendor.example", + "name": "Sustainability Vendor", + "features": ["carbon_score", "green_media_certified"] + }, + { + "url": "https://api.quality-vendor.example", + "name": "Quality Vendor", + "features": ["mfa_score", "ad_load_rating", "page_speed"] + } + ] +} +``` + +### Governance Agent Discovery via property_features + +The `property_features` array solves a key discovery problem: **how does a buyer know which governance agents have data about a given property?** + +Without `property_features`, buyers would need to query every possible governance agent to find out who has compliance, sustainability, or quality data. With `property_features`, publishers declare these relationships upfront: + +| Field | Purpose | +|-------|---------| +| `url` | Governance agent's API endpoint | +| `name` | Human-readable agent name | +| `features` | Feature IDs this agent provides (e.g., `carbon_score`, `mfa_score`) | +| `publisher_id` | Optional identifier for looking up this publisher at the agent | + +**Example use cases:** +- **Sustainability**: Publisher declares a carbon measurement vendor tracks their emissions +- **Quality**: Publisher declares a verification vendor measures MFA score and ad density +- **Consumer experience**: Publisher declares a vendor that tracks page speed and ad load + +Buyers read `property_features` from adagents.json, then query only the relevant governance agents for detailed data. + +See the [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) for complete documentation including examples and the discovery workflow. + +## Buyer Side: Property Data and Selection + +### Property Data Providers + +Governance agents provide data about properties - compliance scores, brand suitability ratings, sustainability metrics, consumer experience scores, etc. They advertise their capabilities via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) in the `governance.property_features` section: + +```json +{ + "governance": { + "property_features": [ + { "feature_id": "mfa_score", "type": "quantitative", "range": { "min": 0, "max": 100 } }, + { "feature_id": "coppa_certified", "type": "binary" }, + { "feature_id": "carbon_score", "type": "quantitative", "range": { "min": 0, "max": 100 } } + ] + } +} +``` + +Buyers send property lists to these agents, and the agents filter and score the properties based on their specialized data. Different agents specialize in different data: + +- **Brand suitability providers** (content classification, risk scoring) +- **Quality measurement** (MFA score, ad density, fraud detection) +- **Sustainability providers** (carbon scoring, green media certification) +- **Consumer experience** (page speed, ad load, layout shift) + +### Property Selection via Governance Agents + +Buyers create **property lists on governance agents** - the agents manage these lists and apply their filtering logic: + +```json +{ + "tool": "create_property_list", + "arguments": { + "name": "Q1 Campaign - UK Premium", + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 70, "max_value": 100 } + ] + }, + "brand": { + "domain": "toybrand.com" + } + } +} +``` + +When you provide a brand reference, governance agents resolve the brand identity and automatically apply appropriate rules (COPPA for children's brands, content filtering based on industry, etc.). + +A buyer agent typically works with **multiple governance agents** (brand suitability, quality, sustainability) and aggregates/intersects their results into a final compliant list. + +## How It Fits Together + +```mermaid +flowchart TB + subgraph Publisher["PUBLISHER (adagents.json)"] + P1["properties: identity"] + P2["authorized_agents: sales auth"] + P3["property_features: governance refs"] + end + + subgraph Buyer["BUYER AGENT"] + B1[Discovers governance agents from adagents.json] + B2[Aggregates results from specialized agents] + B3[Issues auth_tokens for sellers] + end + + subgraph Governance["GOVERNANCE AGENTS"] + SUS["Sustainability Agent
carbon_score
green_media
climate_risk"] + QA["Quality Agent
mfa_score
ad_load
page_speed"] + BS["Brand Suitability Agent
content_category
brand_risk
sentiment"] + end + + subgraph Seller["SELLER AGENT (DSP/SSP)"] + SE1[Caches resolved property lists] + SE2[Uses cached lists for bid-time decisions] + end + + Publisher -->|property_features discovery| Buyer + Buyer -->|create_property_list + webhooks| SUS + Buyer -->|create_property_list + webhooks| QA + Buyer -->|create_property_list + webhooks| BS + + Buyer -->|get_property_list with auth_token| Seller +``` + +### The Complete Flow + +1. **Publisher declares** properties, sales agents, AND governance agents in `adagents.json` +2. **Buyer discovers** governance agents by reading `property_features` from adagents.json +3. **Buyer queries** each governance agent's `get_adcp_capabilities` for detailed capabilities +4. **Buyer creates** property lists on each governance agent with filters and brand references +5. **Governance agents evaluate** properties and notify buyer via webhooks when lists change +6. **Buyer aggregates** results into a final compliant list +7. **Buyer shares** property list reference with sellers (with auth token) +8. **Seller caches** resolved list for bid-time decisions + +## Sharing Property Lists with Sellers + +Once a buyer has a compliant property list, they share it with sellers: + +1. **Get a list reference**: The buyer agent exposes the list via `get_property_list` +2. **Issue an auth token**: The buyer generates a token that authorizes access to the list +3. **Pass to seller**: Include `property_list_ref` with `auth_token` in product discovery or media buy requests +4. **Seller caches locally**: Sellers fetch and cache the resolved list for bid-time decisions +5. **Webhooks for updates**: When the list changes, sellers are notified to refresh their cache + +```json +{ + "property_list_ref": { + "agent_url": "https://buyer-agent.example.com", + "list_id": "pl_q1_uk_premium", + "auth_token": "eyJhbGciOiJIUzI1NiIs..." + } +} +``` + +Sellers use this reference in `get_products` to filter available inventory: + +```json +{ + "tool": "get_products", + "arguments": { + "brief": "UK video inventory for Q1", + "property_list_ref": { + "agent_url": "https://buyer-agent.example.com", + "list_id": "pl_q1_uk_premium", + "auth_token": "..." + } + } +} +``` + +## Relationship to Other Protocols + +### Property Governance + Media Buy + +The Media Buy Protocol consumes property lists at multiple stages: + +- **Product discovery**: Pass `property_list_ref` to `get_products` to filter inventory to compliant properties +- **Media buy creation**: Reference property lists to constrain where ads can run +- **Authorization**: adagents.json validates agent authority to sell + +### Property Governance + Signals + +Both protocols operate on properties but serve different purposes: + +| Signals Protocol | Property Governance | +|------------------|---------------------| +| Audience/contextual data | Property metadata and compliance | +| "Who should see this ad?" | "Where can this ad run?" | +| Signal activation | Property filtering | + +## Tasks + +### Discovery + +- **[`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)**: Discover governance capabilities including property features (protocol-level task) + +### Property List Management + +- **[create_property_list](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list)**: Create a new property list on a governance agent +- **[get_property_list](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list)**: Retrieve resolved properties (with caching guidance) +- **[update_property_list](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#update_property_list)**: Modify filters or base properties +- **[delete_property_list](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#delete_property_list)**: Remove a property list + +## Getting Started + +**Publishers:** +1. Create `/.well-known/adagents.json` with property definitions +2. Authorize sales agents for your properties +3. Declare governance agents in `property_features` (sustainability vendors for carbon, quality vendors for MFA and ad load, suitability vendors for content classification, etc.) + +**Buyers:** +1. Discover governance agents by reading `property_features` from publishers' adagents.json files +2. Query each governance agent's `get_adcp_capabilities` for capabilities +3. Create property lists on relevant governance agents with filters and brand references +4. Aggregate results into a final compliant list +5. Share property list references with sellers (with auth tokens) + +**Governance Agent Implementers:** +1. Implement [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) to advertise your capabilities in `governance.property_features` +2. Implement property list CRUD operations +3. Support webhooks to notify buyers when evaluations change +4. Work with publishers to get listed in their `property_features` +5. See the [Protocol Specification](/dist/docs/3.2.0-beta.4/governance/property/specification) for implementation details + +See the [Protocol Specification](/dist/docs/3.2.0-beta.4/governance/property/specification) for detailed implementation guidance. diff --git a/dist/docs/3.2.0-beta.4/governance/property/managed-networks.mdx b/dist/docs/3.2.0-beta.4/governance/property/managed-networks.mdx new file mode 100644 index 0000000000..08c5e69e98 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/managed-networks.mdx @@ -0,0 +1,687 @@ +--- +title: Managed Network Deployment +description: "How managed publisher networks deploy adagents.json across thousands of domains using the URL reference pattern, delegation types, and common infrastructure approaches." +"og:title": "AdCP — Managed Network Deployment Guide" +--- + +Managed ad networks (e.g. networks operating hundreds or thousands of publisher domains) already distribute `ads.txt` via HTTP redirects or centralized hosting. `adagents.json` supports the same scale through a built-in delegation model: the [URL reference pattern](/dist/docs/3.2.0-beta.4/governance/property/adagents#url-reference-pattern). + +This guide maps your existing `ads.txt` deployment knowledge to `adagents.json` and covers the infrastructure patterns that work at network scale. + +## How it compares to ads.txt distribution + +Both `ads.txt` and `adagents.json` require a file at a well-known path on each publisher origin. The deployment mechanics are similar, but `adagents.json` has a built-in delegation model that replaces the HTTP redirect patterns networks typically use for `ads.txt`. + +| Concern | `ads.txt` | `adagents.json` | +|---------|-----------|-----------------| +| File location | `/ads.txt` | `/.well-known/adagents.json` | +| Delegation mechanism | HTTP 301/302 redirect | `authoritative_location` field (in-file reference) | +| What the delegation expresses | "This file lives somewhere else" | "This publisher delegates to a named authority" | +| Publisher intent | Ambiguous (redirect could be infrastructure) | Explicit (pointer file is a declaration) | +| Scope of authorization | Flat (`DIRECT` / `RESELLER`) | Structured (property, placement, country, time window, delegation type) | +| Caching at scale | Each domain cached independently (no deduplication) | Validators cache one authoritative file for all domains that reference it | +| File format | Plain text, one entry per line | JSON with schema validation | + +The key difference: an HTTP redirect is invisible to the consumer. A validator following a 301 cannot tell whether the redirect means "the publisher delegates to this network" or "the CDN reorganized its paths." The `authoritative_location` field makes delegation an explicit publisher declaration. + +## The pointer file pattern + +Each managed domain hosts a minimal pointer file at `/.well-known/adagents.json`. The pointer references one centralized authoritative file that the network maintains. + +**Pointer file** (on each domain): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "authoritative_location": "https://network.example.com/adagents/v2/adagents.json", + "last_updated": "2025-06-01T00:00:00Z" +} +``` + +The `last_updated` timestamp in the pointer file reflects when the pointer itself was last modified (e.g., when the `authoritative_location` URL changed), not when the authoritative file was updated. The authoritative file carries its own `last_updated`. + +**Authoritative file** (at the network): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Example Network Ad Operations", + "email": "adops@network.example.com", + "domain": "network.example.com" + }, + "properties": [ + { + "property_id": "site_cooking_daily", + "property_type": "website", + "name": "Cooking Daily", + "identifiers": [{"type": "domain", "value": "cookingdaily.com"}], + "tags": ["food", "managed_network"], + "publisher_domain": "cookingdaily.com" + }, + { + "property_id": "site_garden_weekly", + "property_type": "website", + "name": "Garden Weekly", + "identifiers": [{"type": "domain", "value": "gardenweekly.com"}], + "tags": ["home", "managed_network"], + "publisher_domain": "gardenweekly.com" + } + ], + "tags": { + "managed_network": { + "name": "Managed Network", + "description": "All domains managed by Example Network" + } + }, + "authorized_agents": [ + { + "url": "https://sales.network.example.com", + "authorized_for": "All managed network properties", + "authorization_type": "property_tags", + "property_tags": ["managed_network"], + "delegation_type": "ad_network" + } + ], + "last_updated": "2025-06-01T00:00:00Z" +} +``` + +### How validators resolve pointer files + +```mermaid +sequenceDiagram + participant V as Validator + participant P as cookingdaily.com + participant N as network.example.com + + V->>P: GET /.well-known/adagents.json + P-->>V: {"authoritative_location": "https://network.example.com/..."} + Note over V: Detect pointer — single hop allowed + V->>N: GET /adagents/v2/adagents.json + N-->>V: Full adagents.json (properties, agents, placements) + Note over V: Verify: no nested authoritative_location + Note over V: Validate against schema +``` + +The validator fetches the pointer file, follows the `authoritative_location` URL, and validates the authoritative file as a normal inline structure. + +**Single hop only.** The authoritative file must not itself contain an `authoritative_location`. This prevents redirect chains and infinite loops. + +### One authoritative file vs. per-publisher files + +The example above shows every domain pointing to the same authoritative file. This works when all publishers share the same agents, delegation types, and placement structure. + +Per-publisher authoritative files make sense when arrangements differ across the network: + +- Different publishers authorize different agents (some have their own direct sales alongside the network) +- Different delegation types (Publisher A is `ad_network` only, Publisher B retains a `direct` path for premium placements) +- Different placement structures (one publisher has `pre_roll` and `host_read`, another only has `display_banner`) +- Different governance vendors in `property_features` + +In this model, each pointer file references a publisher-specific URL: + +``` +cookingdaily.com/.well-known/adagents.json + → "authoritative_location": "https://network.example.com/adagents/cookingdaily.json" + +gardenweekly.com/.well-known/adagents.json + → "authoritative_location": "https://network.example.com/adagents/gardenweekly.json" +``` + +The network still hosts all the authoritative files centrally — the pointer files just reference different paths. The [CI/CD pipeline](#cicd-pipeline) pattern is a natural fit: generate per-publisher authoritative files from a central database and deploy them to the network's CDN. + +Start with one shared file. Move to per-publisher files as publishers negotiate individual arrangements. + +### Why not HTTP redirects? + +HTTP redirects work for `ads.txt` because `ads.txt` is a flat list with no self-referential semantics. Crawlers follow the redirect chain and validate the final file. + +For `adagents.json`, HTTP redirects cause problems: + +- **Ambiguous intent.** A redirect could mean delegation, infrastructure migration, or CDN routing. The pointer file explicitly declares delegation. +- **No scoping.** An HTTP redirect is all-or-nothing. A pointer file sits alongside a structured authorization model where the network can declare exactly what it is authorized to sell. +- **Caching penalty.** With HTTP redirects, a validator has no way to know that 10,000 domains all redirect to the same file. It must treat each response as independent — 10,000 cache entries for identical content. With `authoritative_location`, the validator sees the same URL across all pointer files and caches the authoritative file once. For a network with thousands of domains, this is the difference between one cache entry and thousands. + +Those problems are about using a redirect to express **delegation** — a cross-domain hop that says "my authorization lives somewhere else." That is what `authoritative_location` replaces. They are not about **hosting normalization**, which is the ordinary case where a publisher's apex domain `301`-redirects to `www` (the default on most managed hosting and CDNs). The two are distinguished by where the redirect points, so the fetch rule is split accordingly: + +- **Same-registrable-domain redirects MUST be followed** on the `/.well-known/adagents.json` fetch — `apex ↔ www`, and any redirect that stays on the same registrable domain (eTLD+1) — re-validating the [SSRF controls](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) on every hop, refusing any redirect to a non-HTTPS scheme, and capping the chain at 3 hops. Refusing these silently reports a correctly-configured publisher as unauthorized. The same-registrable-domain comparison MUST be anchored on the **originally-requested** domain at every hop, not the previous hop, so a `same → cross` two-hop chain cannot escape it. +- **Cross-registrable-domain redirects MUST be refused** on this fetch. A cross-domain redirect is the ambiguous, unscoped delegation signal this pattern exists to replace — declare delegation explicitly with `authoritative_location` instead. The validator dereferences `authoritative_location` as a second hop with redirects **refused** (see [Security considerations](#security-considerations)): the named URL is the declared authoritative location, and a redirect away from it changes that declaration. + +## Choosing the right delegation type + +When a network authorizes agents on behalf of managed publishers, the `delegation_type` field describes the commercial relationship: + +| `delegation_type` | Use when | Example | +|-------------------|----------|---------| +| `direct` | Publisher treats this as their own sales channel, even though the network operates it | A white-label sales agent branded as the publisher | +| `delegated` | Publisher authorizes the network to sell on their behalf | A rep firm with explicit publisher agreements | +| `ad_network` | Inventory is sold through the network's package, not as the publisher's endpoint | Mediavine-style managed network selling across its portfolio | + +Most managed networks will use `ad_network`. Use `delegated` when individual publishers maintain their own commercial identity but authorize the network to represent them. Use `direct` only when the network operates what publishers present as their own sales infrastructure. + +A single authoritative file can mix delegation types — different agents can have different relationships with the same inventory: + +```json +{ + "authorized_agents": [ + { + "url": "https://sales.network.example.com", + "authorized_for": "Network-sold inventory across all managed properties", + "authorization_type": "property_tags", + "property_tags": ["managed_network"], + "delegation_type": "ad_network" + }, + { + "url": "https://premium.publisher.example.com", + "authorized_for": "Publisher's direct premium sales", + "authorization_type": "property_ids", + "property_ids": ["site_cooking_daily"], + "delegation_type": "direct", + "placement_tags": ["premium"], + "exclusive": true + } + ] +} +``` + +## Keeping the file efficient with property tags + +A managed network with 500 properties and three authorized agents could list every property ID in every agent entry — but that means maintaining 1,500 property-to-agent mappings. Property tags eliminate that redundancy. + +The principle: **list each property once** with its identifier and tags, then **authorize agents by tag**. + +```json +{ + "properties": [ + { + "property_id": "site_cooking_daily", + "property_type": "website", + "name": "Cooking Daily", + "identifiers": [{"type": "domain", "value": "cookingdaily.com"}], + "tags": ["managed_network", "food"], + "publisher_domain": "cookingdaily.com" + }, + { + "property_id": "site_garden_weekly", + "property_type": "website", + "name": "Garden Weekly", + "identifiers": [{"type": "domain", "value": "gardenweekly.com"}], + "tags": ["managed_network", "home"], + "publisher_domain": "gardenweekly.com" + } + ], + "tags": { + "managed_network": { + "name": "Managed Network", + "description": "All domains managed by Example Network" + }, + "food": { + "name": "Food & Cooking", + "description": "Food and cooking content verticals" + }, + "home": { + "name": "Home & Garden", + "description": "Home and garden content verticals" + } + }, + "authorized_agents": [ + { + "url": "https://sales.network.example.com", + "authorized_for": "All managed network properties", + "authorization_type": "property_tags", + "property_tags": ["managed_network"], + "delegation_type": "ad_network" + }, + { + "url": "https://food-vertical-agent.example.com", + "authorized_for": "Food vertical properties only", + "authorization_type": "property_tags", + "property_tags": ["food"], + "delegation_type": "delegated" + } + ] +} +``` + +Each property appears once. Tags handle the mapping. When a new domain joins the network, add it to `properties` with the right tags — no authorization entries need to change. When a new vertical agent comes on, add one agent entry with the relevant tag. + +This keeps the file readable, maintainable, and compact even at thousands of properties. + +## Representing many publishers under a single authorization + +The pattern above is for a single publisher's `adagents.json` listing its own properties. Managed networks that represent many *other* publishers (WordPress networks, content-recommendation networks, multi-property holding-company configurations) host one authoritative file that declares which agents are authorized to sell on each represented publisher's behalf. + +When every represented publisher delegates the same agent under the same tag predicate — the canonical managed-network shape — use the compact `publisher_domains[]` form of `publisher_properties`: + +```json +{ + "authorized_agents": [{ + "url": "https://agent.network.example/api", + "authorized_for": "Managed-network inventory across represented publishers", + "authorization_type": "publisher_properties", + "publisher_properties": [{ + "publisher_domains": ["site1.example", "site2.example", "site3.example"], + "selection_type": "by_tag", + "property_tags": ["managed_network"] + }], + "delegation_type": "ad_network" + }] +} +``` + +One entry per shared selector predicate, not per publisher. The above is semantically identical to repeating the singular-form entry once per listed domain. See [Pattern 4 in the adagents.json reference](/dist/docs/3.2.0-beta.4/governance/property/adagents#pattern-4-publisher-property-references) for the full mechanics, the singular-vs-compact contract, and the interaction with the `managerdomain` ads.txt fallback. The compact form scales linearly with the *number of distinct selector predicates* — typically a small constant — instead of with the number of represented publishers. + +## Controlling what each agent can sell with placements + +Unlike `ads.txt`, where every authorized seller appears to have access to everything, `adagents.json` lets networks declare exactly which placements each agent is authorized to sell. This preserves sales leverage — buyers can see that premium inventory is only available through specific paths. + +Define placements once at the top level, tag them for grouping, then scope each agent's authorization to specific placement tags: + +```json +{ + "placement_tags": { + "programmatic": { + "name": "Programmatic", + "description": "Placements available through programmatic sales paths" + }, + "direct_only": { + "name": "Direct only", + "description": "Premium placements reserved for direct network sales" + } + }, + "placements": [ + { + "placement_id": "bottom_native_feed", + "name": "Bottom-of-page native feed", + "tags": ["programmatic"], + "property_tags": ["managed_network"] + }, + { + "placement_id": "page_takeover", + "name": "Full-page takeover", + "tags": ["direct_only", "premium"], + "property_tags": ["managed_network"] + }, + { + "placement_id": "sidebar_display", + "name": "Sidebar display", + "tags": ["programmatic"], + "property_tags": ["managed_network"] + } + ], + "authorized_agents": [ + { + "url": "https://taboola.com/agent", + "authorized_for": "Bottom-of-page native feed across all managed properties", + "authorization_type": "property_tags", + "property_tags": ["managed_network"], + "placement_tags": ["programmatic"], + "delegation_type": "ad_network" + }, + { + "url": "https://sales.network.example.com", + "authorized_for": "Premium direct-sold placements", + "authorization_type": "property_tags", + "property_tags": ["managed_network"], + "placement_tags": ["direct_only"], + "delegation_type": "direct", + "exclusive": true + } + ] +} +``` + +In this example, Taboola can only sell programmatic placements (the bottom-of-page native feed and sidebar). The network's own sales team has exclusive access to page takeovers. A buyer agent reading this file knows exactly which paths lead to which inventory — there is no ambiguity about who can sell what. + +## Additional authorization qualifiers + +Beyond property tags and placement tags, agents can be scoped with: + +- **`countries`** — restrict by geography (e.g. `["US", "CA"]`) +- **`effective_from` / `effective_until`** — time-bounded authorization for seasonal or trial arrangements +- **`exclusive`** — declare whether this is the sole authorized path for the scoped inventory + +## What publishers are authorizing + +When a publisher's domain hosts a pointer file, they are declaring that the authoritative file speaks for them. This means: + +- The agents listed in the authoritative file are authorized to sell the publisher's inventory +- The `delegation_type` on each agent entry describes the commercial relationship +- Qualifiers (`placement_tags`, `countries`, `exclusive`, etc.) scope what each agent can sell + +If the network operates the domain infrastructure, the publisher has typically already consented to this through their network agreement. But the pointer file is the machine-readable declaration of that consent. If a publisher leaves the network, removing or replacing the pointer file revokes authorization immediately. + +## Deployment patterns + +All of these patterns accomplish the same thing: serve a static JSON pointer file at `/.well-known/adagents.json` on each managed domain. Choose based on your existing infrastructure. + +### CDN edge function + +Serve the pointer file from a CDN worker or edge function. This is the most common pattern for networks that already manage DNS and CDN for their publishers. + +**Cloudflare Worker:** +```javascript +export default { + async fetch(request) { + const url = new URL(request.url); + if (url.pathname === '/.well-known/adagents.json') { + return new Response(JSON.stringify({ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "authoritative_location": "https://network.example.com/adagents/v2/adagents.json", + "last_updated": "2025-06-01T00:00:00Z" + }), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'public, max-age=86400', + 'Access-Control-Allow-Origin': '*' + } + }); + } + return fetch(request); + } +}; +``` + +**AWS CloudFront function:** +```javascript +function handler(event) { + if (event.request.uri === '/.well-known/adagents.json') { + return { + statusCode: 200, + statusDescription: 'OK', + headers: { + 'content-type': { value: 'application/json' }, + 'cache-control': { value: 'public, max-age=86400' }, + 'access-control-allow-origin': { value: '*' } + }, + body: JSON.stringify({ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "authoritative_location": "https://network.example.com/adagents/v2/adagents.json", + "last_updated": "2025-06-01T00:00:00Z" + }) + }; + } + return event.request; +} +``` + +### CMS plugin + +For networks managing WordPress or similar CMS installs, a plugin can serve the pointer file without touching server configuration. + +**WordPress (mu-plugin):** +```php + 'https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json', + 'authoritative_location' => 'https://network.example.com/adagents/v2/adagents.json', + 'last_updated' => '2025-06-01T00:00:00Z', + ]); + exit; + } +}); +``` + +Drop this in `wp-content/mu-plugins/` across managed installs. Must-use plugins load automatically without activation. + +### CI/CD pipeline + +Generate pointer files from a central configuration and deploy them as static assets alongside each site. + +**GitHub Actions example:** +```yaml +name: Deploy adagents.json pointer files + +on: + push: + branches: [main] + paths: ['config/managed-domains.json'] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Generate pointer files + run: | + TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + for domain in $(jq -r '.domains[]' config/managed-domains.json); do + mkdir -p "dist/${domain}/.well-known" + cat > "dist/${domain}/.well-known/adagents.json" < report.json + +- name: Check for failures + run: | + ISSUES=$(jq '.orphanedPointers + .stalePointers + .missingPointers + .schemaErrors | length' report.json) + if [ "$ISSUES" -gt 0 ]; then + echo "::error::Network consistency check found $ISSUES issues" + jq '.' report.json + exit 1 + fi +``` + +## Troubleshooting + +Five failure modes that occur in managed network deployments, how to detect them, and how to fix them. + +### Orphaned pointer + +**What happened:** A publisher domain has a pointer file referencing your authoritative URL, but the authoritative file doesn't list that domain in its `properties`. + +**How it looks:** A buyer agent fetches `cookingdaily.com/.well-known/adagents.json`, follows the pointer to the network's authoritative file, and finds no property with `publisher_domain: "cookingdaily.com"`. The domain appears to delegate to a network that doesn't claim it. + +**Common cause:** The network removed the publisher from the authoritative file (e.g., contract ended) but the pointer file on the domain was not removed. + +**Fix:** Either re-add the property to the authoritative file, or remove/replace the pointer file on the publisher's domain. If the network no longer manages the domain's DNS or CDN, coordinate with the publisher to remove the pointer. + +**Detection:** `npx adcp check-network --url ` reports these as orphaned pointers. + +### Stale pointer + +**What happened:** A publisher's pointer file still references the network's authoritative URL after the relationship ended. Similar to an orphaned pointer, but from the publisher's perspective — the domain still claims delegation to a network that no longer authorizes it. + +**Common cause:** Network terminated the publisher but doesn't control the domain's infrastructure. The publisher hasn't updated their well-known path. + +**Fix:** The publisher must update or remove their pointer file. The network should notify the publisher when removing them from the authoritative file. The AAO registry detects this mismatch during crawls and surfaces it in network health monitoring. + +### Missing pointer + +**What happened:** A domain is listed in the authoritative file's `properties` (via `publisher_domain`), but `/.well-known/adagents.json` on that domain either doesn't exist or doesn't point to the expected authoritative URL. + +**How it looks:** The network claims to represent the domain, but the domain doesn't confirm delegation. Buyer agents cannot verify the authorization chain. + +**Common cause:** Publisher recently joined the network but the pointer file hasn't been deployed yet, or the deployment failed. + +**Fix:** Deploy the pointer file to the domain using one of the [deployment patterns](#deployment-patterns) above. Verify with: + +```bash +curl -s https://newpublisher.com/.well-known/adagents.json | jq '.authoritative_location' +``` + +### Schema errors + +**What happened:** The authoritative file has validation errors — malformed JSON, missing required fields, invalid field values. + +**Impact:** One bad deploy breaks validation for every domain in the network, since they all reference the same file. + +**Fix:** Validate the authoritative file before deploying: + +```bash +# Validate against the JSON schema +npx adcp check-network --url https://network.example.com/adagents/v2/adagents.json +``` + +Use the [AdAgents.json Builder](https://agenticadvertising.org/adagents/builder) for interactive validation during development. Add schema validation to your CI/CD pipeline as a pre-deploy check. + +### Agent endpoint unreachable + +**What happened:** An `authorized_agents` entry's URL doesn't respond or returns errors. Buyer agents cannot reach the sales agent declared in the authorization. + +**Common cause:** Agent service is down, URL changed, or DNS is misconfigured. + +**Fix:** Verify the agent endpoint is reachable and returns a valid agent card: + +```bash +# A2A agent +curl -s https://sales.network.example.com/.well-known/agent-card.json | jq . + +# Check via AdCP client +npx adcp check-network --url +``` + +The `check-network` command validates all agent endpoints and reports response times, so you can catch slow or failing agents before buyers do. + +## Security considerations + +One deploy to the authoritative file changes authorization across every publisher in the network. That scale is the point, and it's also the blast radius — a compromised network CDN can authorize a malicious sales agent across thousands of domains simultaneously. Two concrete implications that go beyond schema correctness: + +**Validator fetch semantics.** The authoritative URL points at a network-controlled origin. Without explicit fetch rules, a misbehaving origin can poison caches or hang validators. Validators MUST: + +- Connect only over HTTPS with valid certificates, and refuse to follow redirects (a redirect changes the declared location — treat as an error). +- Cap response size with a two-tier policy: pointer files served at `/.well-known/adagents.json` (whether inline or carrying `authoritative_location`) keep the [general SSRF body cap](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) of 5 MB — a per-publisher pointer file should be tiny, and 5 MB catches misconfiguration. Authoritative files reached by dereferencing `authoritative_location` (the second hop) use a higher recommended cap of 20 MB, because that origin has explicitly opted in to fanning out across a publisher network and routinely needs to enumerate thousands of properties or publisher domains. Enforce short connect/read timeouts (≤ 10s each) on both hops. +- On 5xx or timeout, serve the previously cached authoritative file for up to 24 hours rather than failing closed. A transient CDN outage is not a revocation. +- Attempt a refresh at least every 24 hours. Repeated 5xx responses MUST NOT extend the cache — the 7-day absolute cap is measured from the most recent successful fetch, not from the most recent response of any kind. +- Cap cached lifetime at 7 days from the most recent successful fetch, regardless of the origin's `Cache-Control`. After that, fail closed — the network has had seven days to fix its origin. +- Treat a non-monotonic `last_updated` (the refreshed file's timestamp is older than the cached file's) as an invalid response, equivalent to a 5xx: serve the cache, alert, do not adopt the older file. This blocks rollback attacks where an attacker re-serves a stale file to reinstate a previously revoked agent. + +**Incremental refresh (conditional requests).** A 20 MB authoritative file refreshed naïvely on every consumer is expensive on both sides and turns every publisher churn into a full re-walk. Authoritative-file origins SHOULD support HTTP conditional requests, and validators SHOULD use them: + +- Origins SHOULD emit `ETag` and `Last-Modified` headers on the authoritative file, regenerated whenever the file content changes. +- Validators SHOULD send `If-None-Match` (preferred) or `If-Modified-Since` on every refresh and treat a `304 Not Modified` as "cache stays valid, restart the 7-day clock from this success" — same effect as a successful body fetch for cache-lifetime purposes. +- The per-`authorized_agents[]` optional `last_updated` field (see `adagents.json` schema) gives consumers a second axis for partial-walk indexing: a validator that already has an index keyed by the file-level `last_updated` can skip authorized-agents entries whose own `last_updated` is older than the indexed value. This is advisory — consumers MAY ignore it and re-index the full file. + +Conditional requests are the partial-update protocol for managed networks at scale. Without them, a network with 3,000 publishers churning weekly forces every buyer-side validator to download 20 MB per refresh per buyer. With them, the steady-state cost is one round-trip and a 304. + +### Publisher revocation (the exit lifecycle) + Removing a publisher domain from `publisher_properties[].publisher_domains[]` alone is not enough — cached authoritative files at downstream validators will keep authorizing the departed publisher for up to the 7-day cache cap. For revocations that need to propagate on the next refresh (a publisher leaving a network in dispute, a compliance issue, a misconfiguration cleanup), the authoritative file MUST list the publisher in the top-level `revoked_publisher_domains[]` array with a `revoked_at` timestamp. + +Validator behavior: + +- Validators MUST treat any publisher domain in `revoked_publisher_domains[]` as no-longer-authorized, **regardless** of whether the same domain still appears in any `authorized_agents[].publisher_properties[].publisher_domain` / `.publisher_domains[]`, in `authorized_agents[].properties[].publisher_domain` (`inline_properties` authorization type), or in top-level `properties[].publisher_domain` elsewhere in the file. The revocation list takes precedence — this lets a network ship a revocation without redeploying every selector entry. +- Validators with a cached prior version of the file MUST apply the revocation as of the validator's `last_updated` adoption time, not the entry's `revoked_at` (which can be in the past for catch-up entries). +- **Append-only durability on the validator side.** A `publisher_domain` that a validator has ever observed in a `revoked_publisher_domains[]` entry MUST be held as revoked for **7 days from the earliest `revoked_at` the validator has ever observed for that domain**, even if the entry is missing from a subsequent fetch. Durability keys on `publisher_domain` alone — keying on the `(publisher_domain, revoked_at)` tuple would let an attacker re-emit the same domain with a slightly mutated `revoked_at` (one second earlier, say) and present a "fresh" tuple the validator has never observed, bypassing the hold. Use `revoked_at` only to set the clock origin, not to identify the durability key. This places durability on the validator's cached state rather than on the network's retention SHOULD, and closes the rollback gap: an attacker who re-serves a stale file with `revoked_publisher_domains[]` removed and `last_updated` advanced cannot reinstate a previously-revoked publisher inside the validator's 7-day window. New revocations seen for the first time in the current fetch (no prior observation) start the 7-day clock from now. +- **Persistence across restart.** Validators SHOULD persist observed revocation entries (`{publisher_domain, earliest_revoked_at, first_observed_at}`) to durable storage. An in-memory-only validator that restarts inside the 7-day window MAY accept a rolled-back file because it has no record of the prior observation; operators SHOULD treat this as a known limitation and either persist the index or accept the residual risk. The 7-day window is measured from the *validator's* first observation, not from process start. +- The network SHOULD retain each `revoked_publisher_domains[]` entry for at least 7 days after `revoked_at` so validators that didn't observe the entry during its first appearance still pick it up on the next refresh. + +For multi-publisher exits or routine churn under a normal commercial relationship-end, networks SHOULD use `reason: "relationship_ended"` so validator change-detection can suppress alerts on routine revocations and route the rest for review. + +**Re-authorizing a previously-revoked publisher.** There is no `revoked_until` field and no un-revoke verb. To re-authorize, the network removes the entry from `revoked_publisher_domains[]` *after* the validator-side 7-day durability window has elapsed since `revoked_at`. Removing the entry sooner is a no-op on validators that observed the original revocation (they hold the revocation locally for the remainder of the window). For time-bounded compliance pulls where same-week reinstatement is operationally required, prefer running the revocation as a `reason: "compliance_violation"` and coordinating reinstatement out of band; the schema deliberately does not give the network a re-authorize-before-7-days back door, which would be the same surface as a rollback attack. + +**Extension fields on revocation entries have no normative effect.** `revoked_publisher_domains[]` items use the project-wide `additionalProperties: true` policy, but validators MUST ignore unknown fields on these entries — extensions cannot loosen revocation semantics or carry side-channel reinstatement signals. + +**Propagation latency.** Validators that maintain an in-memory authorization index keyed by `(agent, publisher_domain)` MUST NOT continue to authorize a pair more than one crawl interval after the validator has *successfully* refetched an `adagents.json` that lists the publisher in `revoked_publisher_domains[]`. Cache-bounded staleness from the fetch semantics above (24-hour fallback on 5xx, 7-day absolute cap) applies — the bound holds against the most recent successful fetch, not against any arbitrary wall-clock time. Crawl backlog and intermediate CDN caching extend the practical latency; the requirement is on the validator's own pipeline, not on the network. + +Validators SHOULD also apply revocation **synchronously during manifest ingest**, not only on the next crawl cycle: when adopting any `adagents.json` whose `revoked_publisher_domains[]` lists *any* publisher domain — regardless of whether the validator currently authorizes any agent for it — the validator SHOULD remove every `(agent, publisher_domain)` entry it holds for that publisher from the in-memory index before serving the next authorization decision. This composes with, does not replace, the append-only durability rule above: the in-memory index update is what keeps live queries fresh; the 7-day hold is what survives a rollback attack. + +**Reference implementation (non-normative).** Other validators MAY satisfy the requirements above through different mechanisms. The chain in this repo is: (a) the writer's revocation branch retires the matching catalog rows; (b) the next crawl pass re-snapshots the `(agent, publisher_domain)` set from the catalog (excluding retired rows); (c) the pre-vs-post diff emits an `authorization.revoked` event for every dropped pair; (d) the registry-sync consumer applies the event to the in-memory index. The `authorization.revoked` event shape is reference-implementation vocabulary, not a normative wire format. + +**Change detection.** Because one deploy affects every publisher, buyer agents and validators SHOULD store the previous authoritative file and diff on each refresh, alerting on outlier changes. Concrete default thresholds that partners can implement on day one: any newly added `authorized_agents` entry that was not present in the previous fetch, any delegation-type downgrade (for example, an `exclusive` entry becoming non-exclusive), any property-count decrease greater than 10% or 50 absolute properties, and any change to `authoritative_location` itself. Tune from there — the goal is to catch a compromised deploy before it routes spend, not to suppress routine updates. + +**Pointer integrity (the per-publisher swap threat).** The *Validator fetch semantics* and *Change detection* rules above defend against compromise of the network-side authoritative file and origin. They do not defend against compromise of the *pointer file itself* at a single publisher's edge. An attacker who gains write access to one publisher's `/.well-known/adagents.json` — via that publisher's CDN control plane, origin storage, or DNS — can silently change the `authoritative_location` to an attacker-controlled URL. TLS on that URL is valid because the attacker is serving from infrastructure the publisher's domain resolves to, the size/redirect/timeout caps do not trigger, and the change reads to a validator as a legitimate delegation handoff. + +This last property is what makes pointer-swap distinct from a generic integrity failure: the whole point of the `authoritative_location` pattern is that publishers are *allowed* to change where they delegate, so the validator cannot treat any pointer change as adversarial without breaking legitimate delegation handoffs. The network-CDN threat is wide-and-shallow (one compromise, every publisher hijacked); the pointer-swap threat is narrow-and-deep (one publisher hijacked, but through a surface the network cannot monitor). Both are in scope. + +Validators MUST treat a changed `authoritative_location` as a high-severity event, not a routine refresh. Concretely: + +- Validators MUST NOT auto-adopt a changed `authoritative_location`. Continue serving the previously cached authoritative file (subject to the 7-day cap above) while the change is under confirmation. This is the minimum normative floor; the SHOULDs below specify how confirmation is obtained. +- Validators SHOULD honor the new location only after either (a) out-of-band confirmation — operator acknowledgement, a publisher support-channel notice, or an announced network transition — or (b) a minimum stability grace window of 24 hours during which the new pointer value must remain unchanged. The 24 h window is a fallback for the unconfirmed path; an out-of-band confirmation completed in minutes satisfies (a) and is compliant — validators MUST NOT impose a 24 h floor on the OOB path. +- "Announced network transition" in (a) means a publisher-attested or network-attested statement the validator operator can verify (e.g., a signed announcement countersigned by an existing trusted key, an operator-verified update to the publisher's `brand.json` `agents[]` set, or a notice on an established publisher-identity channel the operator already trusts for that publisher). A blog post or press release by itself does not qualify; the bar is verifiability, not publicity. +- Validators SHOULD cross-check the candidate authoritative file against the publisher's `/.well-known/brand.json` when one is published. If `brand.json` declares `agents[]`, the candidate authoritative file's `authorized_agents[]` URLs SHOULD reconcile with the `brand.json` agent set. An authoritative file that authorizes sales agents absent from the publisher's own identity declaration is a strong signal of pointer compromise and SHOULD block adoption pending operator review. During a legitimate inter-network migration the `brand.json` `agents[]` set can lag the pointer change; when `brand.json`'s `last_updated` is older than the pointer file's `last_updated`, treat a `brand.json`/authoritative mismatch as *stale cross-check* rather than *authoritative contradiction*, and fall back to path (a) or (b) above to confirm the migration. +- Refuse adoption on mixed signals: a pointer change coincident with a `last_updated` regression on the candidate authoritative file, a domain-wide delegation-type downgrade, or a first-seen sales agent with no prior ecosystem history is grounds to hold the cache and alert rather than to adopt. For this rule, *regression* means the candidate file's `last_updated` is strictly earlier than the cached file's `last_updated` by more than a small clock-skew tolerance (recommended: 60 seconds); pointer files served from multiple edges can observe minor non-monotonicity under normal operation, and the regression check is for rollback attacks, not clock jitter. + +Publishers managing their own pointer file SHOULD serve it from the same infrastructure and change-management controls as other publisher-identity surfaces (`/.well-known/brand.json`, DNS records, TLS certificate issuance). A pointer file is an identity declaration; treating it as a static marketing asset is the misconfiguration that makes the swap threat practical. + +**Relationship termination.** The pointer-file pattern relies on the network controlling publisher DNS or edge. When the relationship ends, both sides of the delegation must come down together: + +- The network MUST remove the publisher from the authoritative file's `properties` at termination, even when it has already lost DNS/edge control. A publisher still pointing at an ex-network's file with no matching property becomes an [orphaned pointer](#orphaned-pointer) — visible to buyers as unauthorized. +- Validators SHOULD re-fetch and re-validate when a publisher domain transfers ownership, rather than relying on cached delegation. + +**Signed pointers (planned).** A full close of the pointer-swap gap requires a signed-pointer mechanism: the pointer file carries a publisher-controlled detached signature over the canonical `(authoritative_location, last_updated)` object, with the public key anchored out-of-band — publisher-attested in `brand.json`, or via the future centralized publisher-key registry. The signing primitive and key-discovery / rotation model require an agreed design and are tracked as a planned AdCP 4.0 addition, not a 3.x requirement. To keep the 4.0 rollout viable, implementers publishing pointer files today SHOULD keep the pointer object shape stable: the top-level object SHOULD contain only `authoritative_location` and `last_updated`, with no additional top-level fields, so a detached signature can later be carried in a sibling field (or a `.sig` companion path) without colliding with custom fields added in the interim. Until 4.0 lands, the operator-side controls above are the normative baseline — they do not match the strength of a signed pointer, but they raise the cost of pointer-swap attacks above the cost of a routine CDN compromise, which is what 3.x can promise honestly. + +## Next steps + +- [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) — full schema reference, authorization patterns, and validation behavior +- [Property Governance overview](/dist/docs/3.2.0-beta.4/governance/property) — how adagents.json fits into the broader governance model +- [AdAgents.json Builder](https://agenticadvertising.org/adagents/builder) — interactive validator and file creator +- [@adcp/sdk](https://github.com/adcontextprotocol/adcp-client) — TypeScript client library with network consistency checking diff --git a/dist/docs/3.2.0-beta.4/governance/property/specification.mdx b/dist/docs/3.2.0-beta.4/governance/property/specification.mdx new file mode 100644 index 0000000000..91cc1ae2e5 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/specification.mdx @@ -0,0 +1,637 @@ +--- +title: Property Governance Specification +description: "Formal specification for AdCP property governance — property models, feature evaluation, list management, and delivery validation." +"og:title": "AdCP — Property Governance Specification" +sidebarTitle: Specification +--- + +**Status**: Stable (shipped in AdCP 3.0 as the `property-lists` specialism under the `governance` protocol) +**Last Updated**: April 2026 + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +## Abstract + +The Property Protocol defines a standard Model Context Protocol (MCP) and Agent-to-Agent (A2A) interface for property identity, authorization, data provision, and selection. This protocol enables publishers to declare properties and authorized agents, data providers to offer property intelligence, and buyers to select compliant property sets. + +## Overview + +The Property Protocol addresses four distinct concerns: + +| Concern | Question | Owner | Mechanism | +|---------|----------|-------|-----------| +| **Property Identity** | What properties exist? | Publishers | `adagents.json` properties array | +| **Sales Authorization** | Who can sell this property? | Publishers | `adagents.json` authorized_agents | +| **Property Data** | What do we know about this property? | Data providers | Governance agents via `get_adcp_capabilities` | +| **Property Selection** | Which properties meet my requirements? | Buyers | Property lists with filters | + +The first two are **publisher-side declarations** via adagents.json. The last two are **buyer-side operations** that consume property data from governance agents. + +### Property Data and Selection + +Property data and selection use a **stateful** model: + +- **Feature discovery**: Agents advertise what they can evaluate via `get_adcp_capabilities` +- **Property list management**: CRUD operations for managed property lists with filters +- **Brand references**: Let agents automatically apply rules based on brand identity +- **Webhook notifications**: Real-time updates when resolved lists change +- **Marketplace architecture**: Multiple specialized agents as subscription services + +All evaluation (scoring, filtering, discovery) happens implicitly when property lists are resolved via `get_property_list`. + +## Core Concepts + +### Request Roles and Relationships + +Every governance request involves two key roles: + +#### Orchestrator (Buyer Agent) +The platform or system making the API request to the governance agent. In AdCP documentation, this role is often called a "buyer agent" when operating in the media buying context. +- **Examples**: DSP, trading desk platform, campaign management tool +- **Responsibilities**: Makes API calls, handles authentication, manages the technical interaction +- **Account**: Has technical credentials and API access to the governance agent + +#### Account +The billing and policy entity on whose behalf the request is being made, identified via `account` (`account_id` or the `{brand, operator}` natural key): +- **Examples**: Advertiser (Nike), agency (Omnicom), brand team +- **Responsibilities**: Owns the campaign objectives and policy requirements +- **Policies**: May have custom thresholds, blocklists, or compliance requirements + +### Property Identification + +Properties are identified using the standard AdCP property model: + +```json +{ + "property_type": "website", + "name": "Example News", + "identifiers": [ + { "type": "domain", "value": "example.com" } + ], + "supported_channels": ["display", "olv"] +} +``` + +Property types include: `website`, `mobile_app`, `ctv_app`, `desktop_app`, `dooh`, `podcast`, `radio`, `linear_tv`, `streaming_audio`, `ai_assistant`. Properties may also declare `supported_channels` to indicate which advertising channels their inventory aligns with. + +### Property List References + +For large property sets, use property list references instead of embedding properties: + +```json +{ + "property_list_ref": { + "agent_url": "https://lists.example.com", + "list_id": "premium_news_sites", + "auth_token": "eyJhbGciOiJIUzI1NiIs..." + } +} +``` + +The receiving agent fetches and caches the list independently, enabling: +- **Scale**: Pass 50,000+ properties without payload bloat +- **Updates**: Lists evolve without changing requests +- **Authorization**: Token controls access to the list + +### Governance Agent Types + +#### Compliance Agents +Specialized vendors providing property compliance intelligence: +- **Examples**: Data integrity scoring, consent quality measurement +- **Business Model**: Subscription or per-query pricing +- **Methodology**: Published rubrics for transparency + +#### Brand Safety Agents +Content classification and risk assessment: +- **Examples**: Content categorization, brand safety scoring +- **Coverage**: May specialize by channel or geography + +#### Quality Agents +Performance and fraud measurement: +- **Examples**: Viewability prediction, IVT detection +- **Integration**: May correlate with campaign outcomes + +### Scoring and Data Privacy + +#### Scores Are Internal + +**Critical design principle**: Raw scores are NOT shared with buyers or downstream clients. This prevents data leakage. + +Governance agents maintain internal scoring models, but the protocol is designed around **list management**, not score exposure: + +- Buyers specify **thresholds** via `feature_requirements` (e.g., `"min_value": 85`) +- Agents return **pass/fail lists** of properties that meet the thresholds +- Raw scores never leave the governance agent + +This design prevents: +- Score enumeration attacks (running lists with different thresholds to reverse-engineer scores) +- Competitive intelligence leakage +- Data arbitrage where buyers resell scoring data + +#### What Buyers Receive + +When calling `get_property_list`, buyers receive a compact list of identifiers (not full property objects) for efficiency: + +```json +{ + "list_id": "pl_abc123", + "identifiers": [ + { "type": "domain", "value": "bbc.co.uk" }, + { "type": "domain", "value": "theguardian.com" }, + { "type": "domain", "value": "ft.com" } + ], + "total_count": 847 +} +``` + +Properties that pass the threshold are included. Properties that fail are excluded. No scores or property metadata are returned - just the identifiers needed for bid-time lookups. + +#### Methodology Discovery + +The `get_adcp_capabilities` task returns information about what features an agent evaluates and their methodology, but NOT the underlying scores: + +```json +{ + "features": [ + { + "feature_id": "mfa_score", + "name": "Made For Advertising Score", + "type": "quantitative", + "range": { "min": 0, "max": 100 }, + "methodology": "mfa_detection", + "methodology_version": "v2.1", + "methodology_url": "https://quality.example.com/methodology" + } + ] +} +``` + +This allows buyers to: +- Understand what an agent measures +- Compare methodologies across agents +- Set appropriate thresholds + +But they cannot retrieve the actual scores for individual properties. + +## Tasks + +### Discovery + +#### get_adcp_capabilities + +Discover what features a governance agent can evaluate. + +**Use Cases**: +- Capability discovery: Understand what an agent can evaluate +- Marketplace browsing: Compare features across agents +- Integration planning: Know what filters are available before creating lists + +### Property List Management + +#### create_property_list + +Create a new property list with filters and optional brand reference. + +**Optional Filters**: +- `countries_all` (string[]): ISO 3166-1 alpha-2 country codes — property must have data for ALL. Omit for global lists. +- `channels_any` (string[]): Advertising channels — property must support ANY. Omit for all-channel lists. + +**Base Properties**: An array of property sources to evaluate. Each entry is a discriminated union with `selection_type` as the discriminator: +- **`publisher_tags`**: `{ "selection_type": "publisher_tags", "publisher_domain": "...", "tags": [...] }` - tags scoped to publisher +- **`publisher_ids`**: `{ "selection_type": "publisher_ids", "publisher_domain": "...", "property_ids": [...] }` - property IDs scoped to publisher +- **`identifiers`**: `{ "selection_type": "identifiers", "identifiers": [...] }` - no publisher context needed +- **Omitted**: Query the agent's entire property database + +See the [base-property-source schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/property/base-property-source.json) for the full specification. + +**Filter Logic** (explicit in field names): +- `countries_all`: Property must have feature data for **ALL** listed countries +- `channels_any`: Property must support **ANY** of the listed channels +- `feature_requirements`: Property must pass **ALL** requirements (AND) + +**Use Cases**: +- Define compliant property sets with filters (country, channel, feature thresholds) +- Provide brand reference for automatic rule application +- Register webhook URL for change notifications + +#### update_property_list + +Modify an existing property list. + +**Use Cases**: +- Add or remove properties from base list +- Adjust filters based on campaign needs +- Update webhook URL + +#### get_property_list + +Retrieve a property list with resolved properties. + +**Use Cases**: +- Get the current list of compliant properties after filters applied +- Cache resolved list for bid-time use +- Retrieve updated list after webhook notification + +#### list_property_lists + +List property lists owned by a given account, or all property lists accessible to the authenticated agent when `account` is omitted. + +#### delete_property_list + +Remove a property list. + +### Validation + +#### validate_property_delivery + +Validates delivery records against a property list to determine compliance. Closes the loop between "what I wanted" and "what I got." + +Performs two independent validations: +1. **Property compliance**: Is the identifier in the resolved property list? +2. **Supply path authorization**: Was the sales agent authorized to sell that property? (optional, requires `sales_agent_url`) + +**Use Cases**: +- Post-campaign validation: Verify impressions landed on compliant properties +- Supply path verification: Confirm sales agents were authorized by publishers +- Real-time monitoring: Check compliance rate during campaign execution +- Audit trails: Generate compliance reports for regulatory or brand safety reviews + +**Property Validation Statuses**: +- `compliant`: Identifier is in the resolved property list +- `non_compliant`: Identifier is NOT in the resolved property list +- `not_covered`: Identifier recognized but governance agent has no data for it (e.g., property too new) +- `unidentified`: Identifier type not resolvable by this agent (e.g., detection failed, unsupported type) + +**Authorization Validation Statuses** (when `sales_agent_url` provided): +- `authorized`: Sales agent is listed in publisher's adagents.json +- `unauthorized`: Sales agent is NOT in publisher's authorized_agents list +- `unknown`: Could not fetch or parse adagents.json + +**Unverifiable Records**: Both `not_covered` and `unidentified` records should be excluded when calculating compliance rates - you cannot penalize for detection gaps or coverage limitations. The distinction helps identify whether the gap is in the agent's data coverage vs the identifier resolution. + +**Response Format**: The response returns raw counts (compliant, non_compliant, not_covered, unidentified impressions). Consumers calculate rates as needed. Governance agents may optionally include an `aggregate` field with computed metrics (score, grade, label) - the format and meaning are agent-specific. + +## Typical Flows + +### Property List Flow + +Property lists enable buyers to define and manage compliant property sets: + +1. **Create property list**: Buyer defines list on governance agent with filters +2. **Resolve and iterate**: Buyer calls `get_property_list` to see resolved properties +3. **Share list reference**: Buyer provides `list_id` to orchestrator/seller +4. **Cache locally**: Orchestrator/seller fetches and caches resolved properties +5. **Use at bid time**: Orchestrator/seller uses local cache (no governance agent calls) +6. **Refresh periodically**: Re-fetch based on `cache_valid_until` (typically 1-24 hours) + +**Important**: Governance agents are NOT in the real-time bid path. All bid-time decisions use locally cached property sets. + +### Webhook and Caching Pattern + +Webhooks provide **notification** that a property list has changed. The webhook payload contains a summary of changes, but you must call `get_property_list` to retrieve the actual updated properties. + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Webhook Flow │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ 1. Governance agent re-evaluates properties (background) │ +│ 2. Webhook fires with change summary (added/removed counts) │ +│ 3. Recipient calls get_property_list to fetch updated list │ +│ 4. Recipient updates local cache │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +**Best Practices for Downstream Consumers**: + +Consumers of property lists (orchestrators, sellers, buyer agents) should implement **at least one** of these patterns: + +1. **Webhook-driven updates** (recommended): Register a webhook URL when creating the property list. Re-fetch via `get_property_list` when notified of changes. + +2. **Polling with cache hints**: Use `cache_valid_until` from `get_property_list` responses to schedule periodic re-fetches. Typical validity periods are 1-24 hours. + +3. **Hybrid approach**: Use webhooks for immediate updates, with polling as a fallback safety net. + +**Cache Expiry Guidance**: + +Every `get_property_list` response includes: +- `resolved_at`: When the list was evaluated +- `cache_valid_until`: When consumers should consider the cache stale + +```json +{ + "resolved_at": "2026-01-04T10:00:00Z", + "cache_valid_until": "2026-01-04T22:00:00Z" +} +``` + +Consumers MUST NOT use cached data beyond `cache_valid_until` without re-fetching. + +### Property Discovery Flow + +1. **Define filters**: Specify country, channel, quality thresholds when creating property list +2. **Resolve list**: Call `get_property_list` with `resolve=true` to get matching properties +3. **Review candidates**: Evaluate returned properties for fit +4. **Add to campaign**: Include property list reference in media buy + +## Response Structure + +All AdCP Governance responses follow a consistent structure: + +### Core Response Fields +- **message**: Human-readable summary of the operation result +- **context_id**: Session continuity identifier for follow-up requests +- **data**: Task-specific payload (varies by task) + +### Protocol Transport +- **MCP**: Returns complete response as flat JSON object +- **A2A**: Returns as structured artifacts with message in text part, data in data part +- **Data Consistency**: Both protocols contain identical AdCP data structures + +## Error Handling + +### Error Codes + +- `REFERENCE_NOT_FOUND`: Referenced property, policy, or property list does not exist or is not accessible by the caller. Returned uniformly for both "does not exist" and "exists but unauthorized" — see [Uniform response for inaccessible references](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#standard-error-codes). +- `PROPERTY_NOT_MONITORED`: Governance agent doesn't cover this property +- `METHODOLOGY_NOT_SUPPORTED`: Requested methodology version unavailable +- `PARTIAL_RESULTS`: Some properties couldn't be evaluated + +### Partial Success + +For bulk operations, the response may include partial results: + +```json +{ + "message": "Evaluated 847 of 850 properties. 3 properties not in coverage.", + "context_id": "ctx-gov-123", + "scores": [...], + "errors": [ + { + "code": "PROPERTY_NOT_MONITORED", + "property": { "identifiers": [{ "type": "domain", "value": "unknown.com" }] }, + "message": "Property not in monitoring coverage" + } + ] +} +``` + +## Implementation Notes + +### Caching Architecture + +Governance decisions are highly cacheable: + +#### Orchestrator-Side Caching +- **Score cache**: Store scores with TTL from `valid_until` field +- **Decision cache**: Pre-compute pass/fail for campaigns +- **List cache**: Cache property lists from `property_list_ref` + +#### Agent-Side Caching +- **Profile cache**: Maintain pre-computed property profiles +- **Methodology cache**: Cache scoring algorithm results + +### Performance Requirements + +| Operation | Target Latency | +|-----------|----------------| +| Single property score | < 100ms | +| Bulk scoring (100 properties) | < 2s | +| Filter decision (cached) | < 5ms | +| Property discovery | < 5s | + +### Multi-Agent Strategies + +Orchestrators may consult multiple governance agents: + +1. **Primary + Validation**: Use primary agent, validate with secondary +2. **Specialization**: Route by property type to specialist agents +3. **Consensus**: Require multiple agents to agree +4. **Competitive**: Track agent accuracy, weight by performance + +## Agent Discovery + +There are two complementary discovery mechanisms: + +### Publisher-Side Discovery via adagents.json + +Publishers declare which governance agents have data about their properties using the `property_features` field in `adagents.json`: + +```json +{ + "property_features": [ + { + "url": "https://api.sustainability-vendor.example", + "name": "Sustainability Vendor", + "features": ["carbon_score", "green_media_certified"], + "publisher_id": "pub_12345" + }, + { + "url": "https://api.quality-vendor.example", + "name": "Quality Vendor", + "features": ["mfa_score", "ad_density", "page_speed"] + } + ] +} +``` + +This solves the discovery problem: buyers don't need to query every possible governance agent. Instead, they read `property_features` from the publisher's adagents.json to find which agents have relevant data. + +See the [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents#governance-agent-discovery) for the complete discovery workflow. + +### Agent-Side Discovery via agent-card.json + +Governance agents expose capabilities via `.well-known/agent-card.json`: + +```json +{ + "name": "Example Compliance Provider", + "url": "https://compliance.example.com", + "capabilities": { + "tasks": [ + "get_adcp_capabilities", + "create_property_list", + "get_property_list", + "update_property_list", + "delete_property_list", + "list_property_lists", + "validate_property_delivery" + ], + "protocols": ["MCP", "A2A"], + "schema_version": "v1" + }, + "methodology": { + "documentation_url": "https://compliance.example.com/methodology", + "scoring_frameworks": ["data_integrity_index", "brand_safety_score"], + "coverage": { + "property_types": ["website", "mobile_app", "ctv_app"], + "jurisdictions": ["GDPR", "CCPA", "COPPA"] + } + } +} +``` + +### Detailed Capability Discovery + +Use `get_adcp_capabilities` for detailed capability discovery: + +```json +{ + "tool": "get_adcp_capabilities", + "arguments": {} +} +``` + +Returns the specific features the agent can evaluate (mfa_score, carbon_score, brand_risk, etc.). + +## Marketplace Architecture + +The Property Protocol enables a marketplace of specialized data agents: + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ SELLER AGENT (DSP/SSP) │ +│ "Give me the compliant property list for this campaign" │ +└───────────────────────────────┬─────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ BUYER AGENT (implements Property Protocol) │ +│ - Exposes: get_adcp_capabilities, get_property_list, webhooks │ +│ - Source of truth for final compliant list │ +│ - Intersects results from specialized agents │ +└───────────────────────────┬─────────────────────────────────────────────┘ + │ + ┌───────────────────┼───────────────────┐ + ▼ ▼ ▼ +┌───────────────┐ ┌───────────────┐ ┌───────────────┐ +│ Quality Agent │ │ Sustainability│ │ Suitability │ +│ │ │ Agent │ │ Agent │ +├───────────────┤ ├───────────────┤ ├───────────────┤ +│ Features: │ │ Features: │ │ Features: │ +│ mfa_score │ │ carbon_score │ │ content_cat │ +│ ad_density │ │ climate_risk │ │ brand_risk │ +│ page_speed │ │ green_media │ │ sentiment │ +├───────────────┤ ├───────────────┤ ├───────────────┤ +│ Subscription │ │ Subscription │ │ Subscription │ +└───────────────┘ └───────────────┘ └───────────────┘ +``` + +### Key Principles + +1. **Buyer agent is source of truth**: The buyer agent aggregates data from multiple specialized governance agents +2. **Seller sees one interface**: Sellers interact only with the buyer agent using standard Property Protocol +3. **Subscription model**: Each specialized agent is a paid service with its own features and coverage +4. **Webhook-driven updates**: Specialized agents notify the buyer agent when property evaluations change + +### Multi-Agent Orchestration + +A buyer agent can distribute a master property list to multiple specialized agents: + +```python +# Buyer agent creates variants on each specialized agent +consent_list = consent_agent.create_property_list( + name="Q1 Campaign - Consent", + base_properties=master_list, + brand=brand +) +# Configure webhook for updates +consent_agent.update_property_list( + list_id=consent_list.list_id, + webhook_url="https://buyer.example.com/webhooks/consent" +) + +suitability_list = suitability_agent.create_property_list( + name="Q1 Campaign - Sustainability", + base_properties=master_list, + brand=brand +) +suitability_agent.update_property_list( + list_id=suitability_list.list_id, + webhook_url="https://buyer.example.com/webhooks/suitability" +) + +# Buyer agent intersects filtered results +def on_list_changed(event): + consent_props = consent_agent.get_property_list(consent_list.list_id, resolve=True) + suitability_props = suitability_agent.get_property_list(suitability_list.list_id, resolve=True) + + # Intersection = properties that pass ALL governance agents + compliant_props = intersect(consent_props, suitability_props) + + # Update buyer agent's exposed list + update_compliant_list(compliant_props) +``` + +### Brand + +Instead of specifying complex filters, buyers provide a brand reference: + +```json +{ + "brand": { + "domain": "toybrand.com" + } +} +``` + +Each governance agent resolves the brand identity and applies rules according to their domain expertise: +- **Consent agent**: Applies COPPA requirements for children's brands +- **Brand safety agent**: Filters to appropriate content, excludes violence/adult +- **Sustainability agent**: Applies any green media requirements + +The buyer doesn't need to know the specific rules - they declare who they are, and agents figure out what applies. + +## Integration with Media Buy Protocol + +### Property Lists in Media Buys + +The Media Buy Protocol accepts property list references: + +```json +{ + "task": "create_media_buy", + "arguments": { + "packages": [{ + "property_list_ref": { + "agent_url": "https://governance.example.com", + "list_id": "approved_q1_campaign", + "auth_token": "..." + } + }] + } +} +``` + +### Policy Compliance + +Media buys can reference governance policies via property list references: + +```json +{ + "compliance_requirements": { + "property_list_ref": { + "agent_url": "https://compliance.example.com", + "list_id": "pl_q1_compliant", + "auth_token": "eyJhbGciOiJIUzI1NiIs..." + } + } +} +``` + +## Best Practices + +1. **Cache aggressively**: Property scores change slowly; cache for hours/days +2. **Bulk where possible**: Use batch operations for planning, not per-property calls +3. **Pre-compute decisions**: Build pass/fail lookups before bid-time +4. **Monitor coverage**: Track which properties agents don't cover +5. **Log methodology versions**: For audit trails, record which scoring version was used +6. **Handle partial results**: Not all properties will be scorable; plan for gaps + +## Next Steps + +- See the [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) for property declaration and authorization +- See the [get_adcp_capabilities task reference](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for capability discovery +- See the [Property List Management](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists) for CRUD operations and webhooks +- See the [validate_property_delivery task reference](/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery) for post-campaign compliance validation diff --git a/dist/docs/3.2.0-beta.4/governance/property/tasks/index.mdx b/dist/docs/3.2.0-beta.4/governance/property/tasks/index.mdx new file mode 100644 index 0000000000..4d07f5d698 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/tasks/index.mdx @@ -0,0 +1,151 @@ +--- +title: Property Governance Tasks +description: "Task reference for AdCP property governance — property list management, feature evaluation, and delivery validation tasks." +"og:title": "AdCP — Property Governance Tasks" +sidebarTitle: Task Reference +--- + +# Property Governance Tasks + +Property governance uses a **stateful** model where all evaluation happens through property list management. Create lists with filters and brand references, then resolve them to get compliant properties. + +## Discovery + +| Task | Purpose | Response Time | +|------|---------|---------------| +| [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | Discover agent capabilities | ~200ms | + +Use the protocol-level [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) task to discover what features a governance agent can evaluate. See the [governance section](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#governance-protocol) for details on the `property_features` array. + +## Property List Management + +| Task | Purpose | Response Time | +|------|---------|---------------| +| [create_property_list](./property_lists#create_property_list) | Create a new property list | ~500ms | +| [update_property_list](./property_lists#update_property_list) | Modify an existing list | ~500ms | +| [get_property_list](./property_lists#get_property_list) | Retrieve list with resolved properties | ~2-5s | +| [list_property_lists](./property_lists#list_property_lists) | List all property lists | ~500ms | +| [delete_property_list](./property_lists#delete_property_list) | Delete a property list | ~200ms | + +See [Property List Management](./property_lists) for complete CRUD documentation. + +## Validation + +| Task | Purpose | Response Time | +|------|---------|---------------| +| [validate_property_delivery](./validate_property_delivery) | Validate delivery records against a list | ~1-5s | + +See [validate_property_delivery](./validate_property_delivery) for post-campaign compliance validation. + +## Task Selection Guide + +### Creating a Property List + +Use [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list) with filters and brand reference: + +```json +{ + "tool": "create_property_list", + "arguments": { + "name": "Q1 Campaign - UK Premium", + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { + "feature_id": "mfa_score", + "min_value": 85, + "max_value": 100 + }, + { + "feature_id": "coppa_certified", + "allowed_values": [true] + } + ] + }, + "brand": { + "domain": "toybrand.com" + } + } +} +``` + +**Filters** (all optional): `countries_all` restricts to properties with data in ALL listed countries, `channels_any` restricts to properties supporting ANY listed channel. Omitting a filter means no restriction on that dimension. + +**Base properties**: An array of property sources to evaluate. Each entry is a discriminated union with `selection_type`: +- **`publisher_tags`**: `{ "selection_type": "publisher_tags", "publisher_domain": "...", "tags": [...] }` +- **`publisher_ids`**: `{ "selection_type": "publisher_ids", "publisher_domain": "...", "property_ids": [...] }` +- **`identifiers`**: `{ "selection_type": "identifiers", "identifiers": [...] }` +- **Omitted**: Query the agent's entire property database + +**Filter logic** (explicit in field names): +- `countries_all`: Property must have feature data for ALL listed countries +- `channels_any`: Property must support ANY of the listed channels +- `feature_requirements`: Property must pass ALL requirements (AND) + +Filters have two built-in fields (`countries_all`, `channels_any`) plus `feature_requirements` which reference features the agent provides (discovered via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)). For quantitative features, use `min_value`/`max_value`. For binary or categorical features, use `allowed_values`. + +### Getting Resolved Properties + +Use [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list) to retrieve the list with resolved identifiers: + +```json +{ + "tool": "get_property_list", + "arguments": { + "list_id": "pl_abc123", + "resolve": true + } +} +``` + +Response includes resolved identifiers. Note that **raw scores are not returned** - only identifiers that pass the filter thresholds are included: + +```json +{ + "list_id": "pl_abc123", + "identifiers": [ + { "type": "domain", "value": "bbc.co.uk" }, + { "type": "domain", "value": "news.sky.com" } + ], + "cache_valid_until": "2026-01-04T17:15:00Z" +} +``` + +The `auth_token` for sharing with sellers is returned at creation time (from `create_property_list`). Store it securely - it's only returned once. + +### Multi-Agent Integration + +Create the same property list on multiple governance agents, then configure webhooks to aggregate results: + +```python +# Create lists on specialized agents +consent_list = consent_agent.create_property_list( + name="Q1 - Consent", + base_properties=master_list, + brand=brand +) +consent_agent.update_property_list( + list_id=consent_list.list_id, + webhook_url="https://buyer.example.com/webhooks/consent" +) + +suitability_list = suitability_agent.create_property_list( + name="Q1 - Sustainability", + base_properties=master_list, + brand=brand +) +suitability_agent.update_property_list( + list_id=suitability_list.list_id, + webhook_url="https://buyer.example.com/webhooks/suitability" +) + +# Buyer agent intersects results when webhooks fire +``` diff --git a/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists.mdx b/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists.mdx new file mode 100644 index 0000000000..a31371588c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists.mdx @@ -0,0 +1,698 @@ +--- +title: Property List Management +description: "Property list tasks in AdCP create, update, get, list, and delete inclusion and exclusion lists combining static sets with dynamic filters." +"og:title": "AdCP — Property List Management" +--- + +**Tasks**: Create, update, get, list, and delete property lists. + +Property lists are managed resources that combine static property sets with dynamic filters. When resolved, filters are applied to produce the final property set. + +## Architecture: Setup Time, Not Real-Time + +Property lists are designed for **setup-time** operations, not real-time bid decisions: + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ SETUP TIME (Campaign Planning) │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ 1. Buyer creates/updates property list on governance agent │ +│ 2. Buyer resolves list to get current properties │ +│ 3. Buyer provides list_id to orchestrator/seller │ +│ 4. Orchestrator/seller fetches and caches resolved list │ +│ 5. Campaign targets only cached compliant properties │ +│ │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ BID TIME (Milliseconds) │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ • Orchestrator/seller uses LOCAL cache only │ +│ • NO calls to governance agent │ +│ • Pass/fail from cached property set │ +│ │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ REFRESH (Periodic) │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ • Orchestrator/seller re-fetches list on schedule │ +│ • Frequency based on cache_valid_until │ +│ • Typically every 1-24 hours │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +This enables: + +- **Static lists**: Curated sets of approved properties +- **Dynamic lists**: Properties matching criteria (country, channel, score thresholds) +- **Hybrid lists**: Base set modified by filters + +## Tasks Overview + +| Task | Purpose | Response Time | +|------|---------|---------------| +| [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list) | Create a new property list | ~500ms | +| [`update_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#update_property_list) | Modify an existing list | ~500ms | +| [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list) | Retrieve list with resolved properties | ~2-5s (depending on size) | +| [`list_property_lists`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#list_property_lists) | List all property lists | ~500ms | +| [`delete_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#delete_property_list) | Delete a property list | ~200ms | + +## Property List Structure + +A property list contains: + +```json +{ + "list_id": "uk_premium_news_q1", + "name": "UK Premium News Sites Q1 2026", + "description": "High-quality UK news sites for Q1 campaign", + "account": { "account_id": "acc_brand_x_direct_01" }, + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news", "uk_tier1"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 90, "max_value": 100 } + ] + }, + "brand": { + "domain": "acmecorp.com" + }, + "created_at": "2026-01-03T10:00:00Z", + "updated_at": "2026-01-03T10:00:00Z", + "property_count": 847 +} +``` + +## Brand + +Instead of manually specifying all filters, provide a brand reference and let the governance agent apply appropriate rules based on who you are: + +```json +{ + "brand": { + "domain": "toybrand.com" + } +} +``` + +The agent resolves the brand identity and applies rules based on its domain expertise: +- A consent agent applies COPPA requirements based on the brand's target audience +- A brand safety agent infers content categories from the brand's industry +- A sustainability agent applies requirements from the brand's profile + +The brand reference uses the standard [core/brand-ref](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/brand-ref.json) schema. The governance agent resolves the domain to discover the brand's identity via its `brand.json` file. + +## Webhooks + +Configure webhooks via [`update_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#update_property_list) to receive notifications when the resolved list changes. + +**Important**: Webhooks provide **notification only**. They tell you that the list has changed, but do not stream the updated properties. After receiving a webhook, you must call [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list) to retrieve the updated property set. + +### Webhook Flow + +``` +1. Governance agent re-evaluates properties (periodically or on trigger) +2. Agent detects changes to the resolved property list +3. Webhook fires with change summary (counts, not full list) +4. Recipient calls get_property_list(list_id, resolve=true) +5. Recipient updates local cache with new properties +``` + +### Webhook Payload + +```json +{ + "idempotency_key": "plch_01HW9DFQK6NP9R3T5V7X9Z1B3D", + "event": "property_list_changed", + "list_id": "uk_premium_news_q1", + "list_name": "UK Premium News Sites Q1 2026", + "change_summary": { + "properties_added": 12, + "properties_removed": 3, + "total_properties": 856 + }, + "resolved_at": "2026-01-03T18:00:00Z", + "cache_valid_until": "2026-01-04T18:00:00Z", + "signature": "rfc9421" +} +``` + +The webhook payload includes counts but NOT the actual properties. This keeps payloads small and avoids redundant data transfer when recipients may not need the full list immediately. + +Recipients MUST verify the delivery's RFC 9421 `Signature`, `Signature-Input`, and `Content-Digest` HTTP headers before processing, following the [webhook profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks). The required body-level `signature: "rfc9421"` is a deprecated compatibility marker retained through 3.x; receivers MUST ignore it for authentication. Recipients MUST also dedupe by `idempotency_key` so retried deliveries of the same change event are ignored. + +### Webhook Use Cases + +1. **Buyer agent aggregation**: Receive updates from multiple specialized agents, intersect results +2. **Seller cache invalidation**: Know when to re-fetch the compliant property list +3. **Alerting**: Notify when significant changes occur to compliance status + +## Filters + +Filters are applied when the list is resolved (via [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list)): + +| Filter | Type | Description | +|--------|------|-------------| +| `countries_all` | string[] | ISO 3166-1 alpha-2 country codes (case-insensitive, uppercase recommended) - property must have feature data for ALL. Optional — omit for global lists. | +| `channels_any` | string[] | Advertising channels - property must support ANY. Optional — omit for all-channel lists. | +| `property_types` | string[] | Property types (website, mobile_app, ctv_app, etc.) | +| `feature_requirements` | FeatureRequirement[] | Requirements based on agent-provided features | +| `exclude_identifiers` | Identifier[] | Identifiers to always exclude | + +### Feature Requirements + +Feature requirements reference features discovered via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). Each agent exposes different features (mfa_score, carbon_score, coppa_certified, etc.). + +For **quantitative** features (scores, ranges): +```json +{ "feature_id": "mfa_score", "min_value": 85, "max_value": 100 } +``` + +For **binary** features (true/false): +```json +{ "feature_id": "coppa_certified", "allowed_values": [true] } +``` + +For **categorical** features (enum values): +```json +{ "feature_id": "content_category", "allowed_values": ["news", "sports", "technology"] } +``` + +### Handling Missing Coverage + +When a property doesn't have data for a required feature, you can control the behavior with `if_not_covered`: + +```json +{ + "feature_id": "mfa_score", + "min_value": 70, + "if_not_covered": "include" +} +``` + +| Value | Behavior | Use Case | +|-------|----------|----------| +| `exclude` (default) | Property is removed from the list | Strict enforcement - only include properties with verified data | +| `include` | Property passes this requirement | Lenient enforcement - don't penalize for coverage gaps | + +When `if_not_covered: "include"` is used, the response includes a `coverage_gaps` field showing which properties were included despite missing data: + +```json +{ + "identifiers": [...], + "coverage_gaps": { + "mfa_score": [ + { "type": "domain", "value": "app.example.com" }, + { "type": "domain", "value": "ctv.example.com" } + ] + } +} +``` + +This transparency helps agencies distinguish between properties that passed a requirement vs. those that couldn't be evaluated. + +### Required Filters + +Every property list must include at least: +- One country in `countries_all` (ISO 3166-1 alpha-2 code, case-insensitive) +- One channel in `channels_any` (display, video, audio, etc.) + +These are required because governance agents need to know which jurisdiction and context to evaluate properties against. + +### Filter Logic + +The filter field names make the logic explicit: + +- **`countries_all`**: Property must have feature data for **ALL** listed countries. +- **`channels_any`**: Property must support **ANY** of the listed channels. +- **`feature_requirements`**: Property must pass **ALL** requirements (AND). + +### Base Properties + +`base_properties` is an array of property sources to evaluate. Each entry is a **discriminated union** with `selection_type` as the discriminator: + +```json +{ + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news", "tier1"] + }, + { + "selection_type": "publisher_tags", + "publisher_domain": "mediavine.com", + "tags": ["lifestyle"] + }, + { + "selection_type": "identifiers", + "identifiers": [ + { "type": "domain", "value": "bbc.co.uk" }, + { "type": "domain", "value": "ft.com" } + ] + } + ] +} +``` + +Each entry must include `selection_type`: + +| selection_type | Required Fields | Description | +|-------------|-----------------|-------------| +| `publisher_tags` | `publisher_domain`, `tags` | All properties matching these tags within the publisher | +| `publisher_ids` | `publisher_domain`, `property_ids` | Specific property IDs within the publisher | +| `identifiers` | `identifiers` | Direct domain/app identifiers (no publisher context) | + +If `base_properties` is omitted, the agent queries its entire property database for properties matching the filters. + +See the [base-property-source schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/property/base-property-source.json) for the full specification. + +--- + +## create_property_list + +Create a new property list. + +### Request + +```json +{ + "tool": "create_property_list", + "arguments": { + "name": "UK Premium News Q1", + "description": "High-quality UK news sites for Q1 campaign", + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 85, "max_value": 100 } + ] + } + } +} +``` + +### Response + +```json +{ + "message": "Created property list 'UK Premium News Q1'.", + "context_id": "ctx-gov-list-123", + "list": { + "list_id": "pl_abc123", + "name": "UK Premium News Q1", + "description": "High-quality UK news sites for Q1 campaign", + "account": { "account_id": "acc_brand_x_direct_01" }, + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 85, "max_value": 100 } + ] + }, + "created_at": "2026-01-03T16:30:00Z", + "updated_at": "2026-01-03T16:30:00Z", + "property_count": 847 + }, + "auth_token": "eyJhbGciOiJIUzI1NiIs..." +} +``` + +### Dynamic List (Filters Only) + +Create a list that dynamically queries the governance agent's database (no base_properties - uses agent's full coverage): + +```json +{ + "tool": "create_property_list", + "arguments": { + "name": "GDPR-Compliant DE Video", + "description": "All DE properties supporting video with strong consent", + "filters": { + "countries_all": ["DE"], + "channels_any": ["video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 90, "max_value": 100 } + ] + } + } +} +``` + +--- + +## update_property_list + +Modify an existing property list. + +### Request - Update Filters + +```json +{ + "tool": "update_property_list", + "arguments": { + "list_id": "pl_abc123", + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 80, "max_value": 100 } + ] + } + } +} +``` + +### Request - Replace Base Properties + +```json +{ + "tool": "update_property_list", + "arguments": { + "list_id": "pl_abc123", + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news", "uk_tier1"] + } + ] + } +} +``` + +### Request - Add Exclusions + +```json +{ + "tool": "update_property_list", + "arguments": { + "list_id": "pl_abc123", + "filters": { + "exclude_identifiers": [ + { "type": "domain", "value": "excluded-site.com" } + ] + } + } +} +``` + +### Response + +```json +{ + "message": "Updated property list 'UK Premium News Q1'.", + "context_id": "ctx-gov-list-456", + "list": { + "list_id": "pl_abc123", + "name": "UK Premium News Q1", + "updated_at": "2026-01-03T17:00:00Z", + "property_count": 845 + } +} +``` + +--- + +## get_property_list + +Retrieve a property list with optional resolution of filters. + +### Request - Get Resolved Properties + +```json +{ + "tool": "get_property_list", + "arguments": { + "list_id": "pl_abc123", + "resolve": true, + "pagination": { + "max_results": 1000 + } + } +} +``` + +### Response + +The response returns a compact list of **identifiers only** (not full property objects) for efficiency. Only identifiers that pass the feature requirements are included - no scores or metadata. + +```json +{ + "message": "Retrieved property list 'UK Premium News Q1' with 847 resolved identifiers.", + "context_id": "ctx-gov-list-789", + "list_id": "pl_abc123", + "identifiers": [ + { "type": "domain", "value": "bbc.co.uk" }, + { "type": "domain", "value": "news.sky.com" }, + { "type": "domain", "value": "ft.com" }, + { "type": "domain", "value": "theguardian.com" } + ], + "pagination": { + "has_more": true, + "cursor": "eyJvZmZzZXQiOjEwMH0=", + "total_count": 847 + }, + "resolved_at": "2026-01-03T17:15:00Z", + "cache_valid_until": "2026-01-04T17:15:00Z" +} +``` + + +The `auth_token` is only returned when the list is created via [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list). Store it securely - you'll need it to share access with sellers. + + +### Request - Get Metadata Only + +```json +{ + "tool": "get_property_list", + "arguments": { + "list_id": "pl_abc123", + "resolve": false + } +} +``` + +### Response (Metadata Only) + +```json +{ + "message": "Retrieved property list 'UK Premium News Q1' metadata.", + "context_id": "ctx-gov-list-790", + "list": { + "list_id": "pl_abc123", + "name": "UK Premium News Q1", + "description": "High-quality UK news sites for Q1 campaign", + "base_properties": [ + { + "selection_type": "publisher_tags", + "publisher_domain": "raptive.com", + "tags": ["premium_news"] + } + ], + "filters": { + "countries_all": ["UK"], + "channels_any": ["display", "video"], + "feature_requirements": [ + { "feature_id": "mfa_score", "min_value": 85, "max_value": 100 } + ] + }, + "created_at": "2026-01-03T16:30:00Z", + "updated_at": "2026-01-03T17:00:00Z", + "property_count": 847 + } +} +``` + +--- + +## list_property_lists + +List property lists owned by a given account, or all property lists accessible to the authenticated agent when `account` is omitted. + +### Request + +```json +{ + "tool": "list_property_lists", + "arguments": { + "name_contains": "UK", + "pagination": { + "max_results": 50 + } + } +} +``` + +### Response + +```json +{ + "message": "Found 3 property lists matching 'UK'.", + "context_id": "ctx-gov-list-list-123", + "lists": [ + { + "list_id": "pl_abc123", + "name": "UK Premium News Q1", + "description": "High-quality UK news sites for Q1 campaign", + "created_at": "2026-01-03T16:30:00Z", + "updated_at": "2026-01-03T17:00:00Z", + "property_count": 847 + }, + { + "list_id": "pl_def456", + "name": "UK Sports Sites", + "description": "UK sports content for sponsorship", + "created_at": "2026-01-02T10:00:00Z", + "updated_at": "2026-01-02T10:00:00Z", + "property_count": 156 + } + ], + "pagination": { + "has_more": false, + "total_count": 3 + } +} +``` + +--- + +## delete_property_list + +Delete a property list. + +### Request + +```json +{ + "tool": "delete_property_list", + "arguments": { + "list_id": "pl_abc123" + } +} +``` + +### Response + +```json +{ + "message": "Deleted property list 'UK Premium News Q1'.", + "context_id": "ctx-gov-list-del-123", + "deleted": true, + "list_id": "pl_abc123" +} +``` + +--- + +## Integration with Other Tasks + +### Using Lists in score_properties + +Reference a property list instead of passing properties inline: + +```json +{ + "tool": "score_properties", + "arguments": { + "property_list_ref": { + "agent_url": "https://governance.example.com", + "list_id": "pl_abc123" + }, + "scoring_context": { + "jurisdiction": "GDPR" + } + } +} +``` + +### Using Lists in Media Buys + +Pass property lists to media buy creation: + +```json +{ + "tool": "create_media_buy", + "arguments": { + "packages": [{ + "property_list_ref": { + "agent_url": "https://governance.example.com", + "list_id": "pl_abc123" + } + }] + } +} +``` + +--- + +## Error Codes + +| Code | Description | +|------|-------------| +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | Property list ID doesn't exist, or the caller lacks access. Returned uniformly for both cases — see [Uniform response for inaccessible references](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#standard-error-codes). Sellers MUST NOT distinguish "exists but unauthorized" from "does not exist." | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | Filter configuration is invalid, or a list with the requested name already exists. Correct the filter values or choose a unique name. | + +## Caching and Refresh + +The [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list) response includes caching guidance: + +| Field | Description | +|-------|-------------| +| `resolved_at` | When filters were applied and properties resolved | +| `cache_valid_until` | When consumers should re-fetch the list | + +**Typical flow for orchestrators/sellers:** + +```python +# Initial setup +response = governance_agent.get_property_list(list_id, resolve=True) +local_cache = build_property_lookup(response.properties) +cache_expiry = response.cache_valid_until + +# Periodic refresh (background job) +if now() >= cache_expiry: + response = governance_agent.get_property_list(list_id, resolve=True) + local_cache = build_property_lookup(response.properties) + cache_expiry = response.cache_valid_until + +# Bid time (no external calls) +def should_bid(property_domain): + return property_domain in local_cache +``` + +## Usage Notes + +1. **Setup time only**: Governance agents are not in the real-time bid path; resolve lists during campaign setup +2. **Local caching**: Orchestrators/sellers must cache resolved properties locally for bid-time decisions +3. **Refresh on schedule**: Re-fetch lists based on `cache_valid_until` (typically every 1-24 hours) +4. **Dynamic vs Static**: Use filters-only lists when you want the agent to maintain the property set; use base_properties when you need explicit control +5. **Pagination**: Large lists may require multiple requests with cursor-based pagination +6. **No score leakage**: Raw scores are kept internal to governance agents; responses contain pass/fail lists, not scores diff --git a/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery.mdx b/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery.mdx new file mode 100644 index 0000000000..1e858f57a0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery.mdx @@ -0,0 +1,402 @@ +--- +title: validate_property_delivery +description: "validate_property_delivery checks delivery records against a property list for compliance and supply path authorization in AdCP." +"og:title": "AdCP — validate_property_delivery" +--- + +# validate_property_delivery + +Validates delivery records against a property list to determine compliance. Answers two questions: +1. **Property compliance**: Did my impressions land on properties in my list? +2. **Supply path authorization**: Was the sales agent authorized to sell that inventory? + +## Use Cases + +- **Post-campaign validation**: Verify that impressions were delivered to compliant properties +- **Supply path verification**: Confirm sales agents were authorized by publishers +- **Real-time monitoring**: Check compliance rate during campaign execution +- **Audit trails**: Generate compliance reports for regulatory or brand safety reviews + +## Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/property/validate-property-delivery-request.json", + "list_id": "pl_abc123", + "records": [ + { + "identifier": { "type": "domain", "value": "www.nytimes.com" }, + "impressions": 103 + }, + { + "identifier": { "type": "domain", "value": "sketchy-site.example" }, + "impressions": 47 + }, + { + "identifier": { "type": "android_package", "value": "com.unknown.app" }, + "impressions": 25 + } + ], + "include_compliant": false +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `list_id` | string | Yes | ID of the property list to validate against | +| `records` | array | Yes | Delivery records to validate (1-10,000 records) | +| `records[].identifier` | object | Yes | Property identifier (`type` and `value`) | +| `records[].impressions` | integer | Yes | Number of impressions delivered | +| `records[].record_id` | string | No | Client-provided ID for correlation | +| `records[].sales_agent_url` | string | No | Sales agent URL to validate authorization against adagents.json | +| `include_compliant` | boolean | No | Include compliant records in results (default: false) | + +## Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/property/validate-property-delivery-response.json", + "status": "completed", + "list_id": "pl_abc123", + "summary": { + "total_records": 4, + "total_impressions": 200, + "compliant_records": 1, + "compliant_impressions": 103, + "non_compliant_records": 1, + "non_compliant_impressions": 47, + "not_covered_records": 1, + "not_covered_impressions": 25, + "unidentified_records": 1, + "unidentified_impressions": 25 + }, + "aggregate": { + "score": 68.7, + "grade": "C+", + "label": "68.7% compliant", + "methodology_url": "https://governance.example.com/methodology/compliance-scoring" + }, + "results": [ + { + "identifier": { "type": "domain", "value": "sketchy-site.example" }, + "status": "non_compliant", + "impressions": 47, + "features": [ + { + "feature_id": "record:list_membership", + "status": "failed", + "explanation": "Identifier not found in resolved property list" + } + ] + }, + { + "identifier": { "type": "domain", "value": "new-site.example" }, + "status": "not_covered", + "impressions": 25 + }, + { + "identifier": { "type": "android_package", "value": "com.unknown.app" }, + "status": "unidentified", + "impressions": 25 + } + ], + "validated_at": "2026-01-04T19:00:00Z", + "list_resolved_at": "2026-01-04T12:00:00Z" +} +``` + +### Response Fields + +| Field | Type | Description | +|-------|------|-------------| +| `list_id` | string | ID of the property list validated against | +| `summary` | object | Raw counts for property compliance validation | +| `aggregate` | object | Optional computed metrics from the governance agent | +| `results` | array | Per-record validation results | +| `validated_at` | datetime | When validation was performed | +| `list_resolved_at` | datetime | Resolution timestamp of the property list used | + +### Summary Fields + +The summary provides raw counts - consumers calculate rates as needed: + +| Field | Description | +|-------|-------------| +| `total_records` | Total records validated | +| `total_impressions` | Total impressions across all records | +| `compliant_records` / `compliant_impressions` | Records/impressions in the property list | +| `non_compliant_records` / `non_compliant_impressions` | Records/impressions NOT in the property list | +| `not_covered_records` / `not_covered_impressions` | Identifier recognized but no data available | +| `unidentified_records` / `unidentified_impressions` | Identifier type not resolvable | + +### Validation Statuses + +| Status | Meaning | +|--------|---------| +| `compliant` | Identifier is in the resolved property list | +| `non_compliant` | Identifier is NOT in the resolved property list | +| `not_covered` | Identifier recognized but governance agent has no data for it | +| `unidentified` | Identifier type not resolvable by this agent | + +## Understanding not_covered vs unidentified + +These two statuses distinguish different types of "unknown" scenarios: + +**`not_covered`** - The governance agent recognized the identifier (e.g., it's a valid domain) but doesn't have data for that specific property. This happens when: +- A property is too new to be in the agent's database +- The property exists but hasn't been evaluated yet +- The agent's coverage doesn't include that property category + +**`unidentified`** - The governance agent couldn't recognize the identifier at all. This happens when: +- Client-side detection failed to capture the property +- The identifier type isn't supported (e.g., agent handles domains but received an app ID) +- The identifier value is malformed or invalid + +Both statuses should be excluded from compliance rate calculations - you cannot penalize for detection or coverage gaps. + +## Optional Aggregate Metrics + +Governance agents can optionally return computed metrics in the `aggregate` field: + +```json +"aggregate": { + "score": 68.7, + "grade": "C+", + "label": "68.7% compliant", + "methodology_url": "https://governance.example.com/methodology" +} +``` + +| Field | Description | +|-------|-------------| +| `score` | Numeric score (scale is agent-defined, typically 0-100) | +| `grade` | Letter grade or category (e.g., "A+", "B-", "Gold") | +| `label` | Human-readable summary (e.g., "85% compliant") | +| `methodology_url` | URL explaining how the aggregate was calculated | + +The `aggregate` field is optional and agent-specific. Consumers should not assume a particular format - always check `methodology_url` for interpretation. + +## Calculating Your Own Rates + +The response always includes raw counts. Calculate rates as needed: + +```python +# Compliance rate (exclude unverifiable from denominator) +unverifiable = summary.not_covered_impressions + summary.unidentified_impressions +verifiable = summary.total_impressions - unverifiable +compliance_rate = summary.compliant_impressions / verifiable if verifiable > 0 else None +``` + +In the example above: +- Compliant impressions: 103 +- Non-compliant impressions: 47 +- not_covered + unidentified impressions: 50 (excluded) +- Compliance rate: 103 / (200 - 50) = 103 / 150 = 68.7% + +## Feature Results + +Every entry in `features[]` carries a `feature_id` and a `status`. Data features come from the governance agent's feature catalog (discovered via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)). Record-level structural checks use reserved namespaces so they sit in the same identity space as data features. + +### Reserved feature_id prefixes + +| Prefix | Scope | Canonical feature_ids | +|--------|-------|----------------------| +| `record:` | Record-level structural checks | `record:list_membership`, `record:excluded`, `record:country_mismatch`, `record:channel_mismatch` | +| `delivery:` | Delivery-path checks | `delivery:seller_authorization`, `delivery:click_url_presence` | + +Governance agents MAY add new checks within these namespaces and publish them in their feature catalog. + +### Feature-Level Failures + +When a property fails a specific feature requirement, the entry references the feature by id. The response carries the verdict and a directional explanation. When the caller authored the requirement (e.g., `feature_requirements` on a property list), the evaluator MAY echo the `requirement` back to enable fix-and-retry loops without re-reading the list definition. + +```json +{ + "identifier": { "type": "domain", "value": "low-quality-site.example" }, + "status": "non_compliant", + "impressions": 150, + "features": [ + { + "feature_id": "mfa_score", + "status": "failed", + "explanation": "Property below MFA score requirement", + "requirement": { "min_value": 85 } + } + ] +} +``` + +Oracle pattern: the response tells you **what** failed (feature_id) and **where to find the rule** (policy_id, optional). Evaluator internals (confidence thresholds, inference logic) stay hidden. + +## Supply Path Authorization + +When `sales_agent_url` is provided in delivery records, the governance agent validates that the sales agent is authorized to sell the property by checking the publisher's `adagents.json`. + +### Request with Authorization + +```json +{ + "list_id": "pl_abc123", + "records": [ + { + "identifier": { "type": "domain", "value": "www.nytimes.com" }, + "impressions": 103, + "sales_agent_url": "https://legitimate-ssp.example.com" + }, + { + "identifier": { "type": "domain", "value": "www.nytimes.com" }, + "impressions": 50, + "sales_agent_url": "https://unauthorized-reseller.example.com" + } + ] +} +``` + +### Response with Authorization + +When authorization is validated, each result includes an `authorization` field: + +```json +{ + "list_id": "pl_abc123", + "summary": { + "total_records": 2, + "total_impressions": 153, + "compliant_records": 2, + "compliant_impressions": 153, + "non_compliant_records": 0, + "non_compliant_impressions": 0, + "unknown_records": 0, + "unknown_impressions": 0 + }, + "authorization_summary": { + "records_checked": 2, + "impressions_checked": 153, + "authorized_records": 1, + "authorized_impressions": 103, + "unauthorized_records": 1, + "unauthorized_impressions": 50, + "unknown_records": 0, + "unknown_impressions": 0 + }, + "results": [ + { + "identifier": { "type": "domain", "value": "www.nytimes.com" }, + "status": "compliant", + "impressions": 50, + "authorization": { + "status": "unauthorized", + "publisher_domain": "nytimes.com", + "sales_agent_url": "https://unauthorized-reseller.example.com", + "violation": { + "code": "agent_not_authorized", + "message": "Sales agent not listed in nytimes.com/.well-known/adagents.json" + } + } + } + ], + "validated_at": "2026-01-04T19:00:00Z" +} +``` + +### Authorization Statuses + +| Status | Meaning | Included in authorization_rate? | +|--------|---------|--------------------------------| +| `authorized` | Sales agent is listed in publisher's adagents.json | Yes (numerator) | +| `unauthorized` | Sales agent is NOT listed in publisher's adagents.json | Yes (denominator only) | +| `unknown` | Could not fetch or parse adagents.json | No (excluded) | + +### Authorization Violation Codes + +| Code | Description | +|------|-------------| +| `agent_not_authorized` | Sales agent URL not found in publisher's authorized_agents list | +| `adagents_not_found` | Publisher's adagents.json could not be fetched (404, timeout, etc.) | +| `adagents_invalid` | Publisher's adagents.json exists but is malformed | +| `property_not_declared` | Property identifier not declared in publisher's adagents.json | + +### Two Independent Checks + +Property compliance and authorization are **independent checks**. A record can be: + +| Property Status | Authorization Status | Meaning | +|-----------------|---------------------|---------| +| compliant | authorized | Fully valid - property in list, sold by authorized agent | +| compliant | unauthorized | Property is approved but sold by unauthorized reseller | +| non_compliant | authorized | Authorized agent sold property outside your list | +| non_compliant | unauthorized | Neither property nor agent validated | + +Both checks use the same "unknown excludes from rate" pattern - you cannot penalize for detection gaps. + +## Best Practices + +### Batch Validation + +For large-scale validation, batch records up to the 10,000 limit: + +```python +def validate_delivery_batch(records, list_id, governance_agent): + """Validate delivery records in batches.""" + batch_size = 10000 + all_results = [] + + for i in range(0, len(records), batch_size): + batch = records[i:i + batch_size] + response = governance_agent.validate_property_delivery( + list_id=list_id, + records=batch + ) + all_results.extend(response.results) + + return all_results +``` + +### Sampling Strategy + +For real-time monitoring during campaign execution, validate a statistical sample rather than all records: + +```python +import random + +def sample_and_validate(records, sample_size=1000): + """Validate a random sample for real-time monitoring.""" + sample = random.sample(records, min(sample_size, len(records))) + return governance_agent.validate_property_delivery( + list_id=list_id, + records=sample + ) +``` + +### Handling Unknown Records + +Track unknown rates separately to identify detection gaps: + +```python +def analyze_validation(response): + """Analyze validation results with unknown handling.""" + summary = response.summary + + # Core compliance metric + compliance_rate = summary.compliance_rate + + # Detection quality metric + unknown_rate = summary.unknown_impressions / summary.total_impressions + + if unknown_rate > 0.1: + print(f"Warning: {unknown_rate:.1%} of impressions unresolvable") + + return { + "compliance_rate": compliance_rate, + "unknown_rate": unknown_rate, + "non_compliant_impressions": summary.non_compliant_impressions + } +``` + +## Related Tasks + +- [create_property_list](./property_lists#create_property_list) - Create the list to validate against +- [get_property_list](./property_lists#get_property_list) - Retrieve current list membership +- [get_adcp_capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) - Discover available filter features diff --git a/dist/docs/3.2.0-beta.4/governance/rfc-process.mdx b/dist/docs/3.2.0-beta.4/governance/rfc-process.mdx new file mode 100644 index 0000000000..7d8dbabb80 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/rfc-process.mdx @@ -0,0 +1,111 @@ +--- +title: RFC process +description: "How to propose and ratify material changes to AdCP — the lifecycle from draft to specification change, including proposal template and decision-record format." +"og:title": "AdCP — RFC process" +--- + +Protocol proposals use a lightweight RFC (Request for Comments) process to ensure material changes are motivated, reviewed, and recorded before they reach the specification. This page describes when the process applies, how to submit a proposal, and what a decision record looks like. + +## What requires an RFC + +| Change | Requires RFC | +|---|---| +| Schema field removed or renamed | Yes | +| Task added or removed | Yes | +| Normative language changed (`MUST` / `SHOULD` / `MAY`) | Yes | +| Compatibility surface altered — default value, field type, required↔optional | Yes | +| Optional schema field added | No | +| New enum value appended | No | +| Doc wording clarified without semantic change | No | +| Typo fix | No | +| Internal tooling, CI, or infra | No | +| Docs navigation changes (`docs.json`) | No | + +When in doubt: if the change would force downstream implementations to update code to keep working, it requires an RFC. + +## Lifecycle + + + + Open a GitHub issue using the [proposal template](#proposal-template) as the body. Title format: `RFC: `. Add the `rfc` label. The author should solicit early feedback from working group members or affected implementers before requesting formal review. + + + The issue is queued for the next working group session. At least two [working group members](/dist/docs/3.2.0-beta.4/community/working-group) must complete the reviewer checklist before the WG votes. The review period is a minimum of seven calendar days after the issue is filed. + + + The WG records a decision — accepted, rejected, or deferred — by posting a [decision record](#decision-record-format) as a comment on the RFC issue. Dissent must be recorded even when consensus is reached. + + + After the decision record exists and its status is **accepted**, any contributor may open the spec PR. The PR must reference the RFC issue with `Refs #N` (not `Closes #N`) and may not merge until the decision record exists. The spec PR reviewer confirms the diff matches the accepted RFC scope. The final spec PR carries `Closes #N` to close the RFC issue on merge. + + An accepted RFC is the required trigger for each spec-lifecycle stage transition: it is what moves a feature from Draft → Proposed, or gates Deprecated → Sunset. No lifecycle transition is valid without a traceable, accepted decision record. + + + +## Proposal template + +Copy this into the GitHub issue body when filing an RFC: + +```markdown +## Motivation + + + +## Scope + + + +## Alternatives considered + + + +## Compatibility impact + + + +## Reviewer checklist + +- [ ] Motivation is clear and not redundant with existing functionality +- [ ] Scope is specific enough to implement without further clarification +- [ ] Alternatives section covers at least one non-obvious alternative +- [ ] Compatibility impact accurately states breaking vs. non-breaking +- [ ] Wire-format or schema snippet included (for schema or task changes) +``` + +## Decision-record format + +Post this as a comment on the RFC issue after the WG vote. The `Dissent` section is required — omitting it signals that all reviewers explicitly confirmed no minority position existed. + +```markdown +## Decision record + +**Status:** accepted | rejected | deferred +**Date:** YYYY-MM-DD +**Discussion:** +**Vote outcome:** N in favor, N opposed, N abstained + +## Rationale + + + +## Dissent + + + +## Next steps + + +``` + +## See also + +- Specification lifecycle — approved RFCs drive spec-lifecycle stage transitions (Draft → Proposed → Final, and Final → Deprecated); the dedicated page tracks [#2441](https://github.com/adcontextprotocol/adcp/issues/2441) +- [Governance overview](/dist/docs/3.2.0-beta.4/governance/overview) — the three-party model and campaign governance domains +- [Embedded human judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) — the principle behind the governance system that most RFCs serve diff --git a/dist/docs/3.2.0-beta.4/governance/working-group-charter.mdx b/dist/docs/3.2.0-beta.4/governance/working-group-charter.mdx new file mode 100644 index 0000000000..ee73e0524a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/governance/working-group-charter.mdx @@ -0,0 +1,92 @@ +--- +title: Working group charter +sidebarTitle: Working group charter +description: "Operational charter for the AdCP Working Group: quorum, voting thresholds, cadence, recusal, and escalation." +"og:title": "AdCP — Working group charter" +--- + +The AdCP Working Group (WG) develops, reviews, and maintains the Ad Context Protocol specification under Foundation governance. This charter records the operational rules the WG has adopted for its own meetings, decisions, and conduct. + +It operates under the Foundation's [Bylaws](https://agenticadvertising.org/governance), [IPR Policy](https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md), and [Charter](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md). In any conflict, those documents control. + +These thresholds are operative from the merge date of this document. The merge commit is the authoritative ratification record. + +## Participation + +The WG is open to: + +- **Voting participants** — employees of AgenticAdvertising.org Voting Member organizations. Each member organization holds one vote, exercised by a designated representative. +- **Observers** — non-member practitioners, researchers, and interested parties. Observers may speak and comment in any forum but may not vote. + +**Active status** — a voting participant retains voting eligibility by meeting either threshold in each rolling eight-week window: + +- Attends ≥ 2 of the last 4 synchronous sessions, or +- Participates in ≥ 3 of the last 4 async GitHub ballots (see [Meeting cadence](#meeting-cadence)). + +No application is required. Enrollment is at [agenticadvertising.org/governance](https://agenticadvertising.org/governance). + +## Decision classes and voting thresholds + +The WG uses three decision classes with corresponding quorum and pass-threshold rules. These thresholds were adopted by the WG at ratification of this charter and are the operative rules for all subsequent decisions. + +| Class | Examples | Quorum | Pass threshold | +|---|---|---|---| +| **Editorial** | Typos, broken-link fixes, non-semantic rewording, metadata-only updates | 3 voting participants | Simple majority (> 50%) | +| **Normative** | Non-breaking additions: optional fields, new tasks, new enum values, new doc sections, new capabilities | 5 voting participants, ≥ 2 member orgs | ⅔ supermajority | +| **Breaking** | Removing or renaming public surface identifiers, optional → required, semantic meaning changes, default value changes | 7 voting participants, ≥ 3 member orgs | ¾ supermajority | + +### Experimental surfaces + +Changes exclusively to surfaces marked `x-status: experimental` in schemas — or under `static/schemas/source/trusted-match/`, `static/schemas/source/sponsored-intelligence/`, or `static/schemas/source/a2ui/` — receive a downgraded decision class consistent with the [experimental surface policy](/dist/docs/3.2.0-beta.4/reference/experimental-status): + +| Would be (stable) | Treated as (experimental) | +|---|---| +| Breaking | Normative | +| Normative | Editorial | +| Editorial | Editorial | + +When a PR promotes a surface from experimental to stable (removes `x-status: experimental`), the class is determined by the promoted surface's first stable contract, not its experimental history. + +### Classification challenge + +Any participant may challenge an Editorial classification within **72 hours** of the PR being posted to GitHub. A challenge requires a comment from the challenger plus a second from one other participant. A valid challenge elevates the PR to Normative treatment. The WG Chair records the outcome in the PR thread. + +## Meeting cadence + +- **Working sessions** — weekly, via video and the `#wg-adcp` Slack channel. Agendas are published at least 48 hours in advance. +- **Minutes** — published to [`governance/minutes/`](https://github.com/adcontextprotocol/adcp/tree/main/governance/minutes) within 7 calendar days of each session. +- **Session recordings** — available to AgenticAdvertising.org members via the members-only Slack archive. Recordings are access-restricted to protect participant candor and to comply with the antitrust safe-harbor provisions in [Article VII of the Bylaws](https://agenticadvertising.org/governance). +- **Async ballots** — any participant may open an async GitHub ballot on a labeled issue. The ballot window is 5 calendar days. Async ballots count toward active-status tracking. + +## Escalation + +When the WG cannot reach the required threshold after the standard comment window: + +1. **Extended comment** — the WG Chair extends the window by 7 calendar days and posts a summary of outstanding objections in the issue thread. +2. **Escalation to Foundation leadership** — if still unresolved, the Chair escalates in writing to Foundation leadership. During the interim period (before the first AGM), escalation goes to the **interim Board** directly. After the first AGM, escalation goes to the **Executive Committee**, which issues a binding resolution within 30 calendar days per [Bylaws § 4.14](https://agenticadvertising.org/governance). +3. **Full Board vote** — if the Executive Committee (post-AGM) is deadlocked on a Breaking-class change, the matter is elevated to the full Board under the director voting rules in Article IV of the Bylaws. + +## Tie-break + +- **Editorial** — the WG Chair casts the deciding vote if the simple majority is exactly tied. +- **Normative / Breaking** — no WG-level tie-break; escalate per the path above. + +## Recusal + +**General rule** — a voting participant must disclose any conflict before a vote and must recuse from the vote (but may remain in the discussion) when: + +- Their employer is a named party in the specific decision (for example, a registry listing or certification dispute involving their organization). +- They have a financial interest in the outcome not shared by the general membership. +- They or their employer hold a patent whose claims would be Necessary Claims on a change under vote. See the [IPR Policy](https://github.com/adcontextprotocol/adcp/blob/main/IPR_POLICY.md) for disclosure obligations. + +**Interim board concentration (through the first AGM)** — as disclosed in [CHARTER.md § 4.1](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md#41-interim-board), two of the four interim directors (Michael Blum and Brian O'Kelley) represent Scope3. During the interim period, the general rule is supplemented as follows: any WG participant affiliated with Scope3 must declare before a vote any WG decision that would confer a specific material advantage to Scope3 (for example, decisions that prioritize infrastructure or tooling primarily developed or maintained by Scope3). If the advantage is not shared broadly with the membership, recusal from that vote is required. This is an addition to the general rule, not a substitution for it. + +Recusals are recorded in the meeting minutes. + +## Roster + +The current roster of voting participants and their member-organization affiliations is maintained at [agenticadvertising.org/governance](https://agenticadvertising.org/governance). The interim board composition is listed in [CHARTER.md § 4.1](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md#41-interim-board). + +## Amendments + +Amendments to this charter follow Normative-class rules (⅔ supermajority, 5 voting participants, ≥ 2 member orgs). An amendment that reduces the quorum or pass threshold for Breaking-class decisions must itself pass under Breaking-class rules. diff --git a/dist/docs/3.2.0-beta.4/images/guides/creator-economy/content-commerce-creative.png b/dist/docs/3.2.0-beta.4/images/guides/creator-economy/content-commerce-creative.png new file mode 100644 index 0000000000000000000000000000000000000000..410359d55bc534c75f874f8285f0419eabb07c19 GIT binary patch literal 1410521 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

fHZJ4jZuV%WXv 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®^bWo6xpy~)n-kI^GppubQw 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�_!;CNkg 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

    CN|=IYZS{ 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

    vC_`2k+RB$ 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�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¬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

    bND$7 zV~vSE7LQJ(O>!}*u9XIykqIfm*$|5pJ_ zbe6+YgNa?8Fq&UuJZZIlcGDPFFAhQMgq26(s=KRYnLt@WgjsMhubW?(c;JhV{pDZ2 z|DEr8-!~ur?!@Vt)$6ui{(`Gtc*h;L-ulAxF1%#*^wiw^!uC?P>huNkxIZh&M zOU_1_S!6Pd?f9R$2=CI%JkII2@71f%n#qYpCt~%%h;}SghN)pl{!bCUh=6*RH2SJmDcc27Vp7!ZO(%*1MLyUVWW%s3Fwet|8Bt)|Q^vs}hbn)J&U$0=vzOl4O@j@B9 zr=0a_2)5``J#`wxSP#&l#K4SbYH`Re)2j4HSxmr88bRRm%L#Y@2bY}q$~76rJ@2}P z;@C(KVT?rU9ZdsQ3>KVKP=-3>7_SL#(cwBu-E=+s#6Sn^t1^#;E8$bp2$@RSj31mk z=r7A&tHDZri$mBTdX?*AL%;0(wnZi7eyn2Z6v0+ss&KHiddfsj6G#`en4=o*f=KJ3 zIK=D%t`2yzatvyE;ti1RN5NhSL{~(G-1!(2$b7HIYa)`&TAh-sYyd3{E+o-gQhDIU z{$MluNR|}MP>Ue@>D6Y1r>@}Sm|!pY7Bts@Fq^QRLyRruh_i4_)G^YIa$`?p?AA0T z?P2(JuiC?B=EV-!Y|V$esQe-4$40*Qq%V4Di%p7!MGM)IKZ>X<8+7uMpy`oDutS3> zY~c0X+-}!2JS7+(1C2(mnslFKBaA6;YJ)gy$T3%{*6AL@nE~ z2n9Mw%FqBKzgCdTH39_;+vRguVW4IwEmRU4B!N|%=RTM2o)`cCAOJ~3K~(!7`Z$5Z z;=r#)T#@xO5BK6}%8sJSh{d|FBr}HSm>;y9;rJrLnrVJEapKsK!;d}k@K?U_z@ra8 z_}sI5Cl*g!bkXkn?|=E5e&}^CyZ43sN@C1wmr+V1+H-!U*1CjJ+1hLhpYc^^4vo^v zV{FyS%W$f-!VtL?yOpXsXC2#KcY6c!Ml7N4hCmu4tk5u49m5!-o?RSQPU|2>fo;s; z)JMC<7&dmK;9Gw7fBK8Jzw>Q>^jr7bbIYmYvvjYY%V0E~UM6wuRX0d3o>QTWXKWQy zPNPyvT>fNEgBsZ-gF<~PnO^fhofx{Rr;f~uDpQ5Z8~Oj>D&r&_A7EHf_4 z6q-$F)p&Z9+)j)cXgMJ<%LzhwTZif*IHRrCN)z-9l;WaIavjWS)s#TdJx@eHuGVOa zhSrd>9Dgm8y&O`>F_|bzRP_c~C85lwf{e4BWa~LLy)14UEv+Cl#B+!)Cyl&p7Bs(G zFeJhtgB1+$I&9mmzCeDKn_n#BvOSDo$reUoJs+!dq{AVhRH3nNZ4x69 zBjt!3M5(>r0uWP+IN}RW-`Vw@A^KWFXzoPiXj>^5xO!`&7emC0alBZRfWlrrrQKbF zx7by9>}sVi+m`WLDO`C{;&b2iR^Kw}DwqT*x~taCGqI=GQOkya4C~ge`ON3O{g$`9 z<%PFh_rCZ1&bl?p_R`fDyX_h=GQKG;;y8b6c%DP?FKcY1-ZGBWY0LQkCY3>OD2#VN z5JoNE3ox9XbNOEfBq}(AC_KZqtSK?i3^ogQ&)sDGqmLZhgjy1~fOT;Wga*Wq7D_eqKg=L3CGm477^1qf z5Z6F`psr_G6Gjue1f+a)mJMHB=fDnF`E!lp1Q)~oSheD(D7Gyz{l_9=AO5w<=e(o zsu66NuDf)wlAw4an=*e$X#n1&R;y{dhd)8&!Vv$dQ<)BH6zyC71&kK@BxU)L%q|$C zT`*(VeUCl0C&BR#qj+odtg~XnJdd!hv zyMdSpONy)Dr6IehlmaC0%QQJv-U8gr(;~YN39uBADV~%YTI@71UZ|%U>!2R-%%R+2 zP6ta9kp4-!d#xk*o>eHQ0$nCghOBxWG-bSwwm>C$s#6fFO%I%ib1);vHn0;?o5;4( z%}C(<;F>d-QJR#kXHrZeFIbSzp7at|uoGu>U2yeI=^e6T}BAxN*R+qMfv&bC0bro20yNN};m(M!Ll_iL|Mk26XZr>=8&8rh=^^+kqJ43DRy;PyBZYo4Z885~C z=Z?+b5Kh~x`y~RVHT+?!L4{)P*BOTkXEu5{RO`cOJ$#X+l1#z@s5K_=ktYS>tUck^ zK+G#x0|q?yS=K|zX|o%ApvVDa{s^0&tI0Ay<4uk2tb>*LctZfb=Al1_i4nXzVpye@ zZUl|8-ILVhQ-KpdMsSIatH5mbqd2)PK#89V0xA~9eY)iIG=0Fc5tEb0jvfBiBj5PS z7e4#w!{0c5ct5Ff{dHIJJi(iO_y=Be+odL8@|r||UsZ`*;6z3XTcY!_+TTIIi{$vBa0*d*(6k6R2`DJ zP?d;;1xNs@9=Ye)$<>7AIF~@Qhs(q@n62j>D$yQg88W52E3W*Z)~u5+n*{j*NNJ?E zMzJD#&G_bIUNW^G*sEatL`w9WsZci@Y^BRei(U?%P^Hw#M)tD7K^ca!9n{*EDThP$ zX0rz<);%r6gt98S2e${H)@Z#zswHsC2xV1k4RhRC+0O$*RHwEaW?)#M@T_Y0XiR{j z;ncCBdWz3Ga&TFvJybNBU(oQ&yTEkN|%;i za>YDe)fd~@0%Jw<5h(x81`l)F=_exHEtuU>)!{Tr8FhJMi8@s#b4s_88Ffk+)U+cT z8S|(qvwaXzs6b;e#W)n2YIUY@*w);QM0O&TMC>i-=6n>XI0g3nFQ0Tg#AUl`gOq|C z<3O?o!1U;Hg&rR};8@&>OJ(7(N=f|AOhqjI0!`8WW5CA3GgDI&pZV4^*j9oKAR}H#a&;gY2Bx8~5@sabN`v|m83c#I2y`TSHtJav z2}5YhwBljEVnfwg;^wJ~i)6#(#NK^#?|%1({`hTg|J0|xeCpKV#MH(MFTVEn+wXkQ zi|@ST1(#3FO!G?wym#>AsS`+eGspQTvp6R}%yazn#IlTCo4&bv8_MpFn4l z=qIC`&O5U?yMcm;=ksn^Ql|2lj}8`<4c~dB(?KU-vBqflr-0WiC`UVrxf7@&^vNJ{ zX1!>^65269DgSKcP=cB-eDIaGRYg`Vmb@j%_jHgjT7#C(BEg3oAKxrNo?A*B|(hs z6dM?3`v5%}xXPnJ@W`5ORQkC$w^yxH1W^o`z`l zvcUkPt2Gc<{N#kf@J~lVqLJIf>Zk9q-P>koPA}xPyn*%JKJcIdfLY#z)dGnXB*Mpy zIuQ%4RLRbk+)8QLPPgGmaI*Mp>1FU*KIDe2X_au(_kIt>NX8li&O<$CraXmF)JU^M z>p&13zZEwg)T%dHRR#z$ddkwzj9$Z=Y(zSJ<)Do;J?fPkzjSk2OBhbs;5UNuuvzTY zGBtT;Q?-kGX4OhXJDfy|wh98a zXdeGjVGP1a83XXfJM*v$=%DnQK3@1>b4Wyjm?|yJg7NXdo=yAG6b)FAk>sb14LLo~ zj4K!)yEMVUWP_kTW`PZ?%QvF>5;<+ zzy9?vfAN9Oe(O6A|I7dFH~!7P|BrXP=*Bm`;r=(i@%}4cu$>-U^b%`Xui*ub0TdE6 zi?K4sT4dA01S1I}W!Pe-wJ=&}f)+=_)W)>6`nh<{k$n)}lx7Wp}-3!`kUjed5z||M=%8cst3`f@0cWr^7;8nofOl*wlb& z6q`h{p_0XRB*K{{IqfThw-gavve~|Z4S0WoszhrHH26~Q?pwOU~jlK7JkNBB%Ae+N61C_MSR!3V$e#W9@ZDZU8l+IJA{7WJD(A-K>QJNP~P18tY zIJ4{cO)};#rxmZ!i2)6!c*<*blMbb#_Bh%GGZ1h%1=(rKET& z54Dar6kFU!Ed$8F5(>3}AV>pk+%!q6gQe6t5RUk+tZ^xhm?9etAvXS!TCumUTe~RD zk&+&a8k_@iFr(B&LiQE7-I&6(wPT0VQK8MzE@WESOZRV(3u6e~3b_LkYAS)NY5`gH zGt(FZDm&As!;k2tv=|y>9V)LzB2FPP`{(aK+Tq(^Ko-@^}8b zPk;R5fAOck{Db%3k;bqLyKbWZT7r6Wj0Pys34pgNO*9}> z>HS2psl-^AU9p-Z>dW4XDAkA#pZh=%DQyl*mI@*QB&lMcaLmgZGp9drWh#@PWRd_| z%L6ZREc&CE8lFb)*_e&A2*fJ`MuW}!W)~zQ~ZUc6h^0JiY)FI{NX$_>+v`a)FK* zH`2KR5w8M{t9)aDrdUD;$BG0FPt;&X$Edi3QHF|$$yj9$#Em{PZkWwzLn6VFC0(sw zP>qOqXq2DxPom*ZWMFGDyKb*4k3_`{dhDP^*EOPPK`ka2Dp_NyR?+WxC8y5IWxj#K zJ`ghS8bUfRg3yV-ti6wwt)_N)B10QK&zWux?xvR5=G3E%iWJlUezPwlfH?XzfL6K3 zd2DwhhIT&A(Q&+Hh2<{P*iazh5>4^EFF<^H#z4lHa73v(OL<+Dh_Y&S80feGU`xz3 zMO|KzLZhJ*6xmv07q3tx9ed3h+e9RU^qH{HtBGL)Un`+%l6F!rdp${8_Bs|;#o4;; z@0gHK%$;4}`ff<0R5IH61R-Jc6o+jLk0dcY>}kea9Q!A74ARTcby;FR5 zFPgC*M5Dm4L^NLvi4;!}5IUcEs%qi@Yk6FsDH@W|B6T`62eh_9AYi;(2b+)*C4NMu zrvqJ%f#eIX%;cvMVOrYr)Z-6)?sH%N%I6O3ePUwiv3Lnbhpt~cN(Q>iwzZufsz(?%P7k#150t0wh*6}t%=ayxyOp*c)fhi z=5gY98KLoNmD#f`S7(P7W#H)y;a<6ei?=hq;uSyk?Z=;f_xs;{$pu>$7Fcj0V^Xy9 zqp6vWOpiLU{m4l_3XV!(NIUwbDJ$iJGU5Ci2;+qnylG0p3=(K>06|E_ewDQ)@)%%v zut}>rf5~fRaxurqIJbXfQ3qRQ#1YYAlWcsA+*(++}Tpw=w*~ zPPt`U5ehV_%Bx0L#+nKZ9itzm7dd-}(%2@gD@ltxQv_la2NPvWZWlij2MPn6hGlf; zBZ(G1C2ePZHZwJ|Z~t@mzu~86R!w~V6K}ilg7qRto0h;ud3-PRZ?KifO2%;@%4~zC zVwIs9&TboVRH@t5YolYSX=ZnFgI=L<04bUAeHRp`wiU9)41#^4C#^l{hZOSwR`TEY z=AJ+K^LM`e&;RP7hrT^Axpu?0^KQN6g)e@|Jy&0U-TIB27Z;a!2@;D{5LhMg!IX(C zlX%vv^t3%jt~0x5u7wqKasjzcXPHUYX~b!e^09}VmnJwcJA|1gS0R)|)fzvY|K+UmJJm+N) zVTo3bl$GJCUg(_uczK3r z1}if7nuyqux$&qKWHJDZ5HJ{17*daI8{6~+2YOT+4T#wX}Ae)`YMvT-YHoWOT9Yn=n!V}ll;;|A+ zyFd_~64{zMg}qZ9naaJ$i2LDJj6goAoeRDN%XiLA~d~^A!)&UxO6K~Q7BRM z0s(y$VdCxsUWQvt_|ePt6^GZznDRI6VkjBkDZ^B~q{>8s1n{j8o}e5V&_mYw#7i?M zBZ~$;q^RYq572BPS)s@YN3NL?d_myiDjCLUYW`6`L?w2M0TG!t&bK_(;#UvWOi!IU zdF-)=zw!Cce)6G*zjpH3eG`-OFSztPzIX7JxBSS9ZoO0slYoA-h{5KLzl==dp%(c< zWnWvdYDuqaX4o3#+=oJ1(RNOvMs)NQ{8rD|3X!d(!r-nrtEpPY%TTI{)G|7ihz_mA z`PZ0457Ez)Xa2i?_OJfkul(+>{_3y2>4#o=^2D6^X?G%z24O8xb{s&q#WOMut);#~ zl^%d^+^`6)*o_dYp#gE|TXC%58*7&@$zP^n5P4bYU|CZGmEwR1<6oUuchn9(RfAx;{TY>$~KOR{-nl~4@`U)rfO?SZYvv3;>44^Bo_ z6CPMJCKU?clrD~x#`v27T}q+&*?YD(1T0ls2_`(XGkW zc&H5goSr;$l@X1FNb?yx`S{*>1&kD@^ZKYQgvfU#BjDD^0gU@-ChiZdaFsCyJt)^im|Ck^tI2(umXQ*)70!Uuf0vsg12 z{%$#JJvEx0a`QjJqL6TKFad%ww`uw85_{0w!Z=`iDg~9f+Pd{K?|%2kf9~i1udjLS zE8h91|7yyQq@b6M)LOKoPRwc=XDGI|f8K^=Tz{j=0A*pQM09!WTxcsfsMl6KJQf_u zRW)ev5zuTAX*lEjLl6eG>MUZzM2i2bCJr7t^UlBez@Pld+duZH&(6=DS-occ)z{s4 z_ua3!`L-8r-MXFk|1EM^fX9{5oM{&?8{jq(y~fNZr?rZ-miPvBW@x;$&xxwxuZscI zPnkJO9EPa~UY-z!@9KlE1a&A{XktKOrHO9zl6f{b9g#&X0WC~G+W1G1pT3JYdx^mb zCS0|M%R)c#VW+mrwP+U^MjO2Ao{Tp&lZj5|wAkgQGt*l9=!EWTpr7?Ql(`mNjIr24 z5BG)3jWhhHAq~{*3are_0<-p6m^j1R9*>?pe&p!kL(d*ObnxKbXAbT?cJ!Hvxf3)^ z%&a=^f?Zd=;Ii9qyXBsHUvlcy($D?eKe_70d+&Sw&&;1*!;=x*R6@1E(W)%cdamd( z$};@atZ|qXMm#3Y-uF&-J6s8t=YK%zd}lOeL$bogBpH)Yl`cbzA0Y+!L=UILM>LXhNmvd|3JLcDhYoK`{nx&gI#RsWkM4 z7aMRS5y41T66Bw`6c24xXSN*K0RcYCgOqKm3B0nDRnYF>X^d0(sIX$ph%C+N1+eLU z$mJId092@=5v%Djz7e2(P_#4o7KuEdu1^xfFH&Kp&~`=|QT>Gy_t_D{7z~lMwN~Ji zU2cS|sL3!aePc^;vO z$>!*j4|k1pT^u>hLqmjAqW&X7HxZrKZ|?@ropMQq?D32w;msA!Q4YaB-`947xgMGx}r~3dKhV zl(gY;HC&r!(DR&>QrBM#Dyj3DnSeopaWv9t|)?W`)7$de(siQw1CGpX87}%;XC@ZOP*>TEv8Cj~!5P(h!jW@|L z@L6days_k+@A}M}fBYZ))X)CxFa3*OJb7}CjGW>ctU)!`OEMzrj>KSVLNqusFm(+p zj?0V?%=QB9u{Mh$RVr%Sz!Ywj!8mf?5?HV|hK#v{M-igKB z_eQE(f~PK;nlZz%%ythupHRMo0G@UV?yZF>T($?bgR4|lU@DecRQd*UP}VW3Se(PYnOFT;UMO4g z;bnufKr(+hXt-j|sl(HD9AaT1OQgzO zk?E<4Pk-vutd3sw%6r;ZQOD%uW(&rsP}PALtI}GfZmpzdl@J4e46Vj7=*BzZQj}Wx zAvsOeJvI%TXdTK?*j!(3$1>P-Z`zjS7X? zj86)X30_zNnpp~mIAkzl0)foxk%#3u29f{(AOJ~3K~%kIg5*RREc1-AVvY){QqyLs z&9)s=5?#RithgCo4jMLEf@K-+0Ed+soVXV8g$fk?Vix7&vhv16cB^?!lq)iyhh`$c zq-~nHVoc;KqVo%@sbop<5R+i$$~ z=9{j6;qA9vciq+JU$}GYW~YOUpZy0=wS!2^%a&7Pc?nZZ1!rCEhzrUrPo3JVOb z4k4BzB{xiPDW;tmZlEMl%Zq`Gb8*?*u47!7>9L{256Lcd6mcRNK*}@#WU!eNXXVVd zV3%DTkX30g^V|nzBIxV1(10A^OG``q;y}V%8ek>?G`B9yuy+k)=Z?wcHBpUjVO5I&O10AJ(r|ZGD9impsX;|d(s|UH5Q8AS@ z?EaL78Isen4$185t1{b~p$I%{$6S+xDQpNvs|eVXsu|7iztrg&J~ma=V8Ai$XT$BJ zVQ|vRG*~g-nxRx&={wICv}-ltwToiLknqOL?o%TS0`M1Y<}Kj15IHUu^=L;0NhMp* zFe(bXOsqAKv$sbwpv<3;$^zgJq}=Q-7n-8xP$6JBjX1}aQ*_nPBkrUGsYXLr(1LV{%bvlO)|>)keza=~tc$*c7NhtDA`V-(op;~; zZ+i7>UjLoP9{${?KlzQXfAQV#`sBOc^`Wb;x$H-O_;qi6>zl8=X18EDX=|slY~_(Y zQ!di-{XlFCV|-f8HlkP>vC%XLhtb`LGAi}P=cAPCCYTF@{iW7oj$#|;K_hI%|JEno0ml>s1dYXTruNddHFVY zG#)EhOpneVnJ}6zQe_wGm@3br6tBl{XArPz@YlqA3BJmEWX+N?FD+QT+7N!D1QTpEg_^EH7nGhx#H z#$PgBRH77jD#6r>fQ1%kTBvD7wq|Syibhiz*w8vn_CYRfe6ksgFhD4&0+G3}Y*?{H zxVNV*F|gFQyCutiW5 zCAAjpXocVyj%&eXF!yJYn!01v%0U#T_m}41hTU(t|+irjZM2U88-5VFFrPld7 zoSk6aVE_c?hDxNBy=OrdB2G5Nwopl^QW5=)K}b%)#m~IjZyC2quTN=n-2X6|GWW)$y788qZocN)E6zKA z=jKgZWKq$=(&Qr3I&V!Hu(j(ZfB1+0@kc-LjW_7j6XG?7D$_<6?+ z)PXlvkZJU*UBOci0W$}qsLvd#%alvdlagL0VTt0sZr7BxMvOaJ;KH4L)M}hWDtPH{ zPMcm_;Mxt1#s_h^a(7tUD+mTA=E85taJaN5#Aac0L~zO`kGBKeFo4D$FIP~!E(~&D za$8W$xPhs4cQ@de%$ovO1c+!lvj!6vM5p#~h&VY8qeHd9338SdCCVeM@hC~}g%M;u z85j%UG&jre3V`kjUf+h+w}dP`>Dpci%+ga$q8JZ>@%*5xO)ZktjR0BWuwggagP$<<>l21i$eMEn`lVynj|XsVBp%{k98$HpmJ_Ba)S)zE~tDSN46m+f?^ z;@}A1y2^J?a8)Rf3T8%+5N~zym7rNk3ms5#^S^NA)}8c}`KFwqhFh-z;RymhE6_$z zDq=Z%BG-)P>lk{07$;cIJf3IKn>TCt=sc?U1qWoyE%I9{2_1))gr2&2dWA3WivxBN z4GrAk_m?0LmIS;#P_`i*OZ@NyO)Mz(NW5qi2(bGr24dK)>O=#q2+)R$u%s+4TJm1- zc8;NM^PCU7es*vvO~pwUuC#l(tS<263I$D^N!jV49iP#XpkRnGQWeiKWZYPb>G0-6 z=jU~d!&u$HTe_ap;q=tZ%+$n@qtATxOJ926vmbl(k#C$nb#%k#HLv^rSHJbGKm3|k zzj)m`@-Dt&COSBadiEA1O6|OIS>GX=mdztiX9_*65Q*0mTd3;Lp*Y&q ztEqjDodD*ZLnHkye*@52s9QW!0#m`mS^rM>E7j z2{71Ni?)?U0ep&z0a~Hy9EDfz$0|k*36`PmFmNkNEyvgL%i+L(hK4#kMMPIwnnoD{ zFU$}n0Sner+bRU=@juNG31$#RFbWh)6{x@)^&YELIiR?X$}EVC7L^_@VW~!XeFW} zH>=TxnnhbL11N+OFl{NhaY2Ow>Cul_w(gq+sxc%V!R1V_!dNC`FvBSC*rs0*cV2vE zVtQus(Z>!x`q+1_xbg+pU3)Q~dr=*MGKk_(0IX7`KnJ@EA7XKir`4cZ+~OEWRcJC} zRJF*?=Ao6BMLunfr?{ll7Mbx%S=%Yy$g@I&++g6~i{SCI8jA<0bOKy18qZ8T@WpTa zr{DU+zk1h)4)FHD)oU)f;>Nq~e)&sZ^0M6*UBJuZ7r2Xka+cpQRL&JWr&~@D20Ol` z!92)K7C-;1B}Q=eZCT8G!~e{2a<*<}nHG>aI8ks0rj6B60tYOLQ(g0mSj)WJcdZ~P1tJJemHS5@Br1IN&|o`uXfWj#&rC+8vw4HZ zIY0Q`?PLn*63LmH!O|k04sfa99GM9de)80Wb4)l-&(6&qJ^b8ZE(q-3yMO=Q1N)ym zdidbP{K<*aa}%o;*Kb;P#l^d?z2@%QZoc8h8?V3Osw;Qz-n4#$L1q5Gu)w^ThY1$v zor7yUAEt&8Wlq*tzxc&Bf8;}--S_n4yUxFoNgiMF$m9@%oMIA>^p);aKN$%caw3I^ zNvmCvR;H=7c-9Zpt1Zli#A!2kpjFIF)P=N`RR4g3v#3ZkjU#&7s30W_N>qA*rWSAF zCFA(Li4JnBx4u&_GtaEziz~68 zMVH3#xJSSc7b`k*qM?*WTw-dLd4|8JVSz>TpT^n%B`=ThibTcBL=3BD6f?k@EsMv5$JT7^tgSa76nrUF zpG0AT&OYwjK`wfYkxVjRy%kP$m>By=D&!IlT9TtM+T_`VSa?Y;qgp%_r4e^Lt2h?T zY69w079cw|(Vzt~!XKmbjojrVTj${lD|<#3osnM7i}bL79*><7uTa(*F1}O%wWFQ2 zbWhtV1nSKhM$M?U!Itc(hs)vCXz>mRBjC^zEW--|BhoV@b^ny*kp5wpkU=vhs})3lxcah8a~z@~f8w<$(ju{5zncp$cd9EDC{D6gPY6RgnLhQdI% zKy15)p;$NsaPXl-YCmWxKuzhc4ozcT+CH`c$tAW|zT&R;e&7S2`Sj=Sc+pi&e=y3c zh&1;VEkztHlvxs6PZxPiMHOR9DaWy-3_GZ?tswOeiuqN0kGAKccygrLZG~JmCLbeE zyJV`&NVCt;L)!{{)LQNFMUIjSui6VhVx2ouhh8XlRcxeL;|&6BByh%y@-Wh(ST{$u zp5uxuqhk^q!qQ*sZfjj_F&OtQD<0I>BOc6w2~O% z!67vXWr@v3{-~6fsdUjqr^JnoWJnSeu7)~TPrEQGXo0Py=rR$NbLAER@q%fsjBKjX z!@V^YjsZkMC`sB~??$(YGoGtcsmAan@11 zV(LI6A9T9deTR`6Te*#2Hp9+c*E5SuC%*LMub((}>W&xPx^csq)2w2>&R-FXx^97P zI02(6pP6L_v=ji1pM5__Eh`A|{2YZi05wVKqwTMe9x?s3N?DUK2-)*Msdc&|Fh#gKjnK?3V zG(b4y?^hEa{**DO0hpGfhM=)OwCS^@|)j9Qz1iC58W>{AFy&6sOOf#QF57CmSv3@!ljh%Sbp zjJ>xx7juaOJGBS)=;L+-93~95F1Yv(Ffk#Mv{3U5vJ+hw2CzrasCZvbduVc=&Emv} zmSH^oz!#;(HVAmjZYfVFz)tMiw{Kk1VIaRE=Oq;4pDQWK(O@7bU>^2xbcaAd^-_;* z)-+TY7M{O;QC(#3tH2LR5&P7Pjg5oD^BB7LOaK~Q7qjH*IOu{1RQ=}NsJ z#b;J6ES!3F&%VcfHs{oF#?|ziHJdhV-neDkrY$?yZQQbEdi|NnHLU&lA`2EI-0bLr z=<@z~`QRxf|9$!gYi)pqNZ^TK)*(|!f{}t&1Hn|sF#DG_Q$oAVvxw!yrC23rLTCu0 zOlEjR1UhX&wh<}-s&`yCjf#;A9op^4z zF-ve`P(Cu8g-BP{7_wtpD-ss#%*l}kFQ6dp*F~r$K{zD@P%__~jIr&6tOWdkFmmI9 zC^(dJEx>ZCAVHF-ztLznM1>eZkv-9%CC_beM9|B5TvdP+|GaFYgW^!|7ZXp-&U5m) z=(4L{aOJi4|Im+o?JEy_?vo$;($^mR!k2#OU;o?R{=wJ1<|lvZ&3C@|a(*j!iq|wu zqX#7QH~+OTR;rLq3&*zcrcPG*S&TFeL_$Ed*akYSRUY;f#(9RSK@_03c3crGYj3r> zPkbp(!d7zMCrzh^Y`^9UfCO-MePyhY@^IMtWES}~K!#OQfKdU@g z=0;K`feoGwYS5}G#z5Or%}_}N`^QW%e@w5)BW$9aD*hF)CCep2*F=_%v`81s*mmsU)=$ ztQM7$DJI)WV*_rip$(R-04vs!(gHbq4_~oHp7s_AUIZNBm|qd7eP>6CtvOJ^31zga zE=0-%H-v5wl`NehTQy9zHKZa)95q>Xi)PMhqa+Jt+QMO~l!l~s8k*)pkYXu(A>|a> z8jBFAs4BHks}|vW{`8Mo+@LYF@>y0%-NK4e_MV;zvD{h>SD*y#@X*|H$SFZk`=QhH z+$0vE#Vb**5AN}RiBqtuRlY#FszeGFni>>rF|W&skZt5ySthZ=6i4kfTl=gb(~jY# z(kw0;^9dwKmRrrgW}xcgeBhk=a}RcE;xnK5Jd>?gzWg306W)z6hGoZ?Emf?hc&3i% zZk{SrTgGs%fr*HL zi>>Y_&+I+0@CSeJwmu=XP>M01i@uC+GWxiR88EfnfVygAj!VQl?EA!R&l0zB{mbdNp_ZYwBijFhgfh zSofKsP=FjyJo?-LQz+elQRic@R~%v-WGv36J+2FQi2#=aoQCoxdR{7c^4Q5^N1i)$ zaPPhYd-7Vr{d0U}VE)vqDOM)a7oNA{&YQ2k;ri=tx#h;|uDj~eOV8V~b%Mt@f#+9{ z7Z!2+^vM&xr2&n6RGRh7Bx^3Ka{l^<8Vni;1yd*I=O?bc`pPZaHtyT|`0U9etJhB> zg}*vZM3}_Zgi(IGO~*6VmA9xn9NA|sufKLpX7=u66HVrVNQfd`qJ+~1Hs{fHdvL)~ zm*PH{3sNRP(N*z{cC9q>M3QMPW$e`wr~4v!mSFk|rrMHi%K7I6H>oE&pZZ=;)O9$$ z>VQJFxMN}}iVLa;OOjOxIDk(h+%<0&Cl#OUCR_S_T%X|(0!4W;pOZ4H50xn3!~-XQ z!k#=H%#$X%g|z|HG_BJS6~s(C2?46UsEQxIMBL_t1*%~I*NGH8pjGm-$x`Dfb$7w$ z5NE05c6!YS#Ybt$rQFq)RFGb2FjI)TnD7{L?NY4`lw@v&xa;}Zo@v@TTXdN-dYx!% z5L%5=To8&vEN(so*#4wo&&SR}j)n@MTs;pHhF~^BbDF@gGiz2aeEZR_ee)}yn|SUS zS6)OIuejUK^YO%aYR$xkO`Esv*t&h^wynFiY~8VL{f6l&Writ?gKE2qD)lH5{vyvp$yrP{28Zdfb13u^4ABI{HalQ1UZCqgA3)z-mX%8xZ@v(#9Q zLaR!vCt*tLO0T9nvbYL@f%Kgo1WVrd|e5@Va5D>rJcCJ5t(HlAV}Giv}J1CVK;TPWdyWP97llGPJ8+;GvAS6=efuYG;b z)3X;`xNd1KuY+h}k#aa9Q8?X{b{t@-59Q9BTub7GyQivrjcPUryw`(4Xj+ygH=va^ zh)EN(Cm1bDEO#Etf~O_r-q;KtnOPP`yIF3#gWPQPL&&YmV7Usq5UVkVRt&$4Hbgc3%_xu=_=7cN2yLn2@)1kMs( zMj}FCDiLE>obdQR;9{hmL0fzZ7hhwrQUPiVV|2w~AAqfZ2S-7qeY6Wyss^&0qAGfi z2BG##Pcg7#04QRsatMA8LDeHuyB6QDv1`U~&?-SxUR3r&q2m`wqqj3QZaFBVr1{Q+@I8p+uw(%Gu;D2W6sB@!k^%rP`RHAiKaf;WVz? zsZ$*>W7H@#weDT4=$bp6lKLlWsrN;??c|V|FVia?&o)}>klO>FfxNWr$dS{Z`{I|@ zZP?5c1dc>!0e-Y=L(|?%R_m10oops_OO#<7tBw_`?Roa_fnM8k8EkdyrWBVhcQsY2 z{W#3oU?n?}ERM1La&g&-T0(2!TwNHtFMs{OZ~o>V{lz=pvv2RA$>}vW-E#M9@BjW= zUU>VuwHtZKz}(yd;Uj-Ctq{@Er?V%s&Z(?vzrKjke)mAh6g5$pMU zD5n9SlYlZG1a?A|XLX%*2~RKfZ!y{)&tc=cv&jR5`aj*zeMJ%MUQ=Iawcs_~|LcSRe8*!TiG9iNnu4 z_v|wV4)LF71P<)s`vYfA`33>}n%TJK;tO|PdoPa%TzA_o*WYm6)fZf_eal9?&=}uJ zI6pBrJ28hbd24sppR7i>-hkIEQ`W!q!qX;GeqwDN)9U;ud5P3q}hmk=csMCP!BCw=T= z1Cm*e=$ZfJPj>@`!YBashwgycOs+$J7A;w%%@#9pb&Rs~IVEY7sU zQq3P(U`VqTpiEsRV)Ge*`d+UHZpvqGrox+QTH4O85`svx zZyuvTa~i*?kZh3>MqnsI!VxS003ZNKL_t*0WnO#LwgN+$olTT-Dj);RHQ)DXhM^~n zT0+@wcKjNySlJqzVr$jh^B(OKiXgLSIM1X7?v zOEb_e;7J}nIQ(LWf||K%X6n>qU;Ws_U;51C)cUQLU9)ZXMeEk`ooUuNi>GFfA3uKd z)UoI0P8>V(#A8Rk^U&jrp{ePajqCW)maRK>Y~Oy~hE2QHY}m4DY9lXP<<2Nq3hXxI zH7W^U)nC>y{zivyaG4FnB^IQsv5)vl)7@sZsT`6=F_YW&t6`3CPT|7pV5p{dG?jK} zgoiLXY*5SzNwrC>0x_C}5N$C*8-%oCjO<=p)lJc!x9<0$C{Yu_t5-3^&ep-0f{gGu zCt{>yNzi3uEW<%+l@jQMp7Rhb{8un(<%2XNh&)K)5cwoSZqHMT@pZb3&WR+ljKO}#CknJkRoa=y@2SvUcM|Ebw2?wSkEjLmbB3YCG>j>_LfuH`q#R2< z35cpA#cNO@DFuFn0}%T)$jz|`xLF~;hl~u-^*(tovM=o6oeq)WmA{DiJ0|#+(Q5Z9 zn=7E{2ld%0ULOM<1?Z8V;bMR+dh|5m!y%}^fJotrBKQr}v#TFMQLKq7l0D}aKDL%l z&2zWr(#x;@yVu_E+_MKi{mD;!=2IX2;K#o9k&k}i-`sTd&;0a{{lriF;O}B>coL*g{0`2rzg1l=qy0A&pZ|II-*DCrUz zEQdJkN*7gliZcOiT&82jO>YlG%ltsKRx+mGCE9tFEe#7=br4KVVJRr^rc3|?99C{x zQ~P!(+2$%V`TRPVhF2C)#NP5moT4HpR)%} zn^$8PG&PB+5k{s|iZVjzrC`&T{NvL$7D(*o+ZPl5j&5-9U+1he#KGLgA)R8j92uAm(bgiW4Gi|9XjbD0Ax3lz{Yeu$QYnHh!o^~v ze*+$s-eOktnzYs=(M?kM(PC%2)>R*>&LFFcOOcLG{N#n*DI8nUX}q#E5RKKb($;9 z#y+N{>!LHU6GZF$#GG0?^^J$V{lw!>+;a1EmtN*ebhV(L0sPQS9QrPZgEOME7Wu}@ z)>m%N-@eS%m0}GyJS`f_RY4qw9tZ3E&&zz`8WR4 z@4xqhAD=xjv3~Q;SH9*AuYT?Q*Ijcx^RT(OQ>SK68C91j5S++HjwwXuz^aYIDoK6fyDsV`#N|#dN62-B< z^}1k650z*f5~f)EU=WP?5Q}fh{I|vFYMu9>uqb8L<=tj^y~E3ak0z#GRGB7e@r)1r z`5hMk78e$dpFDoZA02#}FAMD7`@}N`_st)B*1P|_2YPDt=B*pAzw(0Xu6fbTH~Ngg zRo7g8(S@5fa791`{78YPy4hJD5Ksd&cq!5xhRJZvAE9{H+agt%B2fN3&ti!^s2fw zF2sZ(Tr$hgKN+m(Q5P2tbBv7)4wg*oqcQx=65A0=`iVzZBqM{wqP!`H7Igpi5+#yU;EuMVgncW9}7NQuE&?4s;GM36oOK<8=6cT`#=?mWQCD#$* zESJ$(W)&qCBe|#|uM9W^G!Q7!_Cm6he`>^z(^K4~K(XNQBTgyH;)i8SkFGF!$q))B zCofj>tCyZR`1HeH`~1Y(sjIHNZR?Ip7J2;HiwTo66H6Pm?%u`P{`C9=*9uM@pXEiN z#}1u3e)Rb9BL|K=df>5#wQ_pH>P_3WZ99MKj-A_f?B1|>`?__Tr>3XrS)Q8bL8Y8D zxk|+wM?6{KmTNYW9VfK9pA5;@Zn;gZ)@YRw#sL>>%^&hsi)4lH=3K_I)fn+y6bI9Z zV>r?0S6!-mBI-^<3Z-*K5rW3mB{FH6XqUF?zQ{pP+7WE81u5B3&(N3>Mje0I#SBNQ z{}_Z>IeYeSGc^zg!>{|m0VS7p0_tc+1Rhx93fU=)z*w1a6jfyqyt-s+y93QT3S1{K zxyp+eoGX>qi#x)u!{dl%$5N{?&IL0k0~t{5Nuum(2wHEb{BoM%V^hQ2_T1tq5Pk8Af@WC^TCbn_&LZoc!&p{zWk&q>5v}vUN zH9H~5mcGgdtAUcuEGQ_!HBd$R8Fa-h#y8rFBkm|SKhKxw=GSf9_WC#e$ZKBv17H5q z7e4ag_kI1F5B@j*?En7nfAu$h>L=d#cmK{?FTHf5U--&nG-3@l7j*XL-sxsGf|J0t z>WJP54RoM4sT_*P9#@(-y`bNnr7e;KeZ#YmB8Xki~J|t6%wB zzw?fde)N-Xc>SHEp7~HcgrcN58Wpk@<%JMocYzu?7)lzIF%xu5nT=*@QdoqIQqWaHPcS+kg+8sW{-5FJUYBkv5Ge^Ro986SwLkFczpKG#M*x zJCB9~;GyKK#4=s$VO5U5an(hESbQAH5P1qMb@js`q~Q=H463!#2pk8q_1wlXS?M6g ztg-s#qr|K3v@ zQUx&>a`mlrRjnjD#bdKUY0(^wMUoIzC0TnoNkYqCqIQj$k(UH6~$K{z@jK(VZ4 zT|VZ8s>o;?LokxaHc%@y5fr3!#2Y_dRZkeoMHDrSU72qco|<^z3lA*JpS<(Mx2;*L z;+loXIle_?%!jlMJk>f>yI>P)hfx4}dwHEc=seXSVW5b}S)j``w@{s%YtYjThpj6b zwVf>+in}vBo$l;lVQJ#+|K(G^`m4YDsn33q#qZYh&j0?`-FN?M?!VyTix$}C=N9;> zU8YpdzBv1G7o0O);vJNh2~G66EJ+aOmECf2Olv3u*)H(h=G4cFerg)6@@aPh7k>o;xCPbSj5 z7hrK|;@Hu+RW$cq2@G@e+zX3(cePr>lnh5)P-gJQ*lFk3hSxep19Rki z?|SjSTJ**CRZ-?yNj) z;-FGyiX22XXhEj~-(>Vu^SJzyfp*k;wDO3*nCN0MN*|^`D$7y zsu(u@oU~KVL&40XMPt)?iwTet@eWGlY|>&ja@FE0o??%va{0z7@zIBgRa3sgF!=fm zk#SnfIKQf}+RHMejF%7WLoQ;m&+3DFeM^KnR_OfvClxr*%TrhZDveHq@yVj(`{`hgMwr+{g}Y00!E>u0f^$N-UxGg##R-k zs~WdsBt|MkzvsCYMY?S$a@i>lc6lmGtYyH9aB^OQW+Z^n({OT{sBSbS$ooVIY@V(; z9m`{PauNhOf?(6DSv-p#b_JM|s?(5qSr;#`5>bwZLj;3k1AizLP6RB`V`FMm(U?3e za@v)TT`-*H+7%-|ipk*M)YSnwNaixio9*csL@78%%_z$JWlI`ZDgl?{QEt-HhBy|X z*)c##J0barOazRICrw^BlXH+yovDv!1H?`CxYr3Ba-0$Yz8X`fO+97foB*%q0YxAv ztpr=T(gXDB`*ce#w87ZUoqQr#iO}jiR%|5WBKm;hYWIoRx#?A_@4ENiyY9aGp@+Wu zq4&S%YhV4+|KorCjsN(YZ~KX#c;nCg-JiJr+MPUiz>i9xExOe|+Q2&pwYLuvXY&+g z5U(oxqOczdfDPgUTi4K<2AqLD6b76IlEVNvuvr*K88{NNR?AqaT#Qk4;!9tA`_`>n zKJ(cJjvif_S;NChUh@Kqzbb%h>T$*ZzP8qj@=>IR?9kp^T#YvtWmIJR$&-RT>t+ts zZYTsy^|4Ti%8jzdlpP5uT>3>3uMEM@W@B1~O1{>Jl}}g&s=ZDqRWE1c5yG5xI3f`y z9~M%Tjf~bp!9em6$MR|7fJk$hknvH8RNltp(q8+VZV(PMSY3x&5(o^)Fo?ODtXWoK zpQ!Og`!mu~C{Y?>d`Lq#A>2d|R*8hr0u-gq)jYTwvV7nl;4Q>$cw?oqR)4gAZ{ zWFEB`Vns(A%p;N&usM*6^|~V+1A>!Qnnt`MeN|efs9A^_$vF&q8wH{bwE?Ryy3(vo zTXqqoRJ|mBN*+a^M`PQ7*7y^aLLc9UTSBmN5G4O4CzK$LtSsK3rWy8@l18q=qhyR1 zD}RMUP9!$;r zv|%7|kfvN_jZq|M7JKdL*iA^^N+cYG6~hINK=Q5lP@4D|h~N%@_G$yiZ{Hfv)cWI} z`V=eLSH1l17EK|$y0Q=k&&X1=?n2>i5=H&+xW98kt_6;quAJlgE!8KYC!_9=n=He_mx-Nar2GW-gwjX*Iaw`C6}GIZ7a_v>mF0PrG-h}`+WF0 zuGSbhf8^Y7GCj+zm-(O3)CH%jxTSmgn`8Axi;}L0l6DGlAa%*DD|Oo*$i|N-ue$k$ z>$dLRdho#0$B!LZvvECBLmnewO~!hQ1CqiLmSKZp4~a+~8TcOIOiyj8TW0nirZR)& zb$&{OOd-;+kzZitI|9{T>QkZGR8l^o$)ABR6tTYO1soQ?DigU{h_}SA8}Y38FGOleZGXCMr`O=K8J}46jW_wfbE} z5dC#Itz&TopM$d}zAG6Tnq@HAQ5CQ#XZYYu#UNk~4}>)_!O6I)Ai7T?2oR@`z;OO^ zJ;4Qj`rp7B3L4GwW^)X*>S>03I#E+}D0`q24tClETav1fP=Zkz(n(;x*`Ss70IL}~ zQy(;Wl977)7FTm&W^&;)Z?nq^3>#V4yQ1=`3C;r3 zlhf-ruHpTK=bewD#Z!xOK3{O+#It-6;n<1iP98aW^3bzSfAhhKRcj{KZdto^=Z;J(>la{~Mss?i_xDlvU1MNmlT^Y@S zGMHTA>Q0IEJdT(;C}9iRM*RQ$PKw>0BKkKc?}>2gp`&%0ryDgJT0<09=?`;AawzExy6-3P0c0Nk_yO z8ucPdwJl?~>QNf*)k?2XRZ?zC6p`i!YMgh z($qDDrD=|*g{W=W1TIncfR>F(&cbLE8)M#RC#%HZmK^f%#}hKU>?qV@Q;}|j)i<}4M_Wxgn}4$p^4 zniZE(dpwR@YC$YOnh0VZ&WJVLyU-DgI~j9AH_sa9*dcAUmbMoCfQ%H6^B3?CY0v+0 zN*z5l$M}~QRT7879seR6$qK8@LTZ?u%dwyxhD9H9Ey1=OK0Y@6lq!D3UYu9+>1DFvd#K`&RAa``)tbIEI;yYp^5q zfxGwXc#{qj8V`)E##%1aq_}sarxHTwdVo6}dUEvS#P9#!JO9IP{NBU7gK*X4tc=jgv|faakE0}7+3oZR&F9?K(8Q{%RpA2s~W(~t4%p<8!cGc~hicERri zOij)0efrU74?ekOdi92l>(+BAVBKckIjksNj?Ho%Ztr)W;=4tBWqcrn#PvkNubs@1|nBCw%@p zmK=%c(ZW%c6KFmLNJoA@m4_d_9>q_aa)P6QcFZN4mQIsUC-`AuUKBjDpG={rq{Rv@7BV@W4wS^r;h`Q^Xx4}Nja6OVu3 zz3=(#=RW!CzxDP%{?m88@eQx}`~Rn(ed!&Sc}^n~8XG(OEEOf^Rj7v3)?rh_uvI1d zoEjQ0GJUg%Il7{$c2hMCJhpW1=R0=hBuH#3&eA+CHK3gnGg&;=GI&;Ewh+8m-22iG ze(*z|`t)b-x#y;Nli0y-Aoybhct+0XEvv@h^ie)CS)VDy?})`n8!8GkHMa}Jy%G?E z5o!~Us2PPS$8ipkR=2grVGS8v(2UM6lPvtN0cwghm=erhYB4opLv0G;7%g&TR2SEX zoLtvywja&ykH9j$heUQ`CsIj=LNCH(`!V~W9WPKvWV?`pSLfR|HWltFs zGbJ}*y|KNjs_0FF4*JY;v#%;qQz0uEBib~>JVLWIZB<~eUF_2fX-sFd)YSDdH2i~5 zF&1rTPci^h7YM2=hQ=ka zw4{p$SoQjNpQ)jkqCY$8Lv+)-VahIsck5*{(mAzuL!&EtMxqF4T?bdb25B|KmFipI z1XvL>g^Q^m5IiXldfHm$vb(1QN=IB4vQl6zLR(dXnY~7}F7q=_)C7;zV_wAs z$)rb0)xk6|oze#_;Lb^$BPfnv1|PTTnPiCR7rR4is59jfQ^ir1gR_b@QOJA|#w@Hr zK67TCpFekfIWe7ELuYt`_!t)e4jtOJ_bFZ?aA5DAXAbQfU?q z{OAWhyMNE)mtT1sS1X(zx6KYxDOF}5+&pEr8Va~fbfd>`T5#xLy307Gr$o^E_*rkz z=p;T9Jbc3dL0W2o9r%O=9Mw4;777|>mv$SNCsNU&#K>JW!e16!71^dTo%kl%Ldn?# zuek^83|VRD*jh5>losfk`4DAbLI5b|7FVSR<)1D5i~mK9{Rr}}OjVJwC;h!ijPLe! zTX|`NauC^cjNH~eMKq%942v9n(>w>2s$sXAaMMdQ1!pTNX!kK<%xj8VcpDDhAgHbq z4jT;dN-3WJ03ZNKL_t)|7pTzD&ft(C_A5vDy#?rGJzm$YOoCgnI6`Nr1EaD!={8rJ zHG6AtySbo+8XCHK3*GR9W?(XQIu9x4cYS2lP5H+*$aa%q(GxNeCbNfs;?RIDe%{jG zo7B?NOHV)kor#%MJGPy_$nP<6x?H_<^truHKlXLbE~h5XJh%6_xi~d5v3BFSP1`nY z+PZeb=5=c~tzEljW}52-oHcnf=_FrkccC;fm3z69tJZAZykTO~87{h==HlWaKmT&# z(D9>(jvamW-5^m4O=$v*tvV>g+5=feLF9O@k#s;@mEam%%@Xjhv4-t;!VkOq34H`qX8N`_9rPPxm44pJ#CLb zEkqRwxcqh~Y8CPP$g5QxuWm)9!b#Ca9?^=M_w$7Lx#wtW1aFD8f%peL|1i}PGKK6&EQ0x$hJ zb>jGmV<%7Xk0;dlotvY_Po6k&{Ma0n+1Z8JlYF%JyUk>qF`e3d`3?VxH?vYMJ9X640q0bO34-L433HOypow2TX1;;?A z)9B#*Hf?*&e%TQHw0n-gaTt9nXO0Ky7I$BG$;( zPiR<6J}#lH5l02%7LzixyLpXGkTlj=2HZ;eZfCU?SZKLkdh_AyoGiL%0C2*4=G1?6NzfXjzjLJs)(mc!<#z6$bVp9|Zku zSyWtd21zk3DC>iu;+6JD8iB!XdI!3qAfdFnFWU-wpei0_up+A#nadDtP)8`vP>ZF3 zCJ^D4qX$t}ta^~KJZyHw&l=md6;Np`9Z(|deteVI0E?yk9J${NP#=}&)-n~?Y3dncb<+)-)z3xNt;%aT(x4t{M zdgitl-SdNQc*Cu?y>Mn~YIbpfw{H3PEptphc-<=ZvR1HHT-@^!q}p1CggH#`w6mNU z<=hD64TWCL41lm^n&QKy*)Yrmb*myD{Jgr0u5KL@GOWVIo#^IaN?4YhSOFw>)*yVb zl%EY}4QkKZ5VDsWavN9;PJ&1wJ1a9A5Li0#N5owF@WX+bRGvOFd+Oxj!$%JAlY{%7 z-m`bl!F_w5d+yNui6awd=6Px0+I7?C@7{jJ3vcB60yp1q{Z&_8aq-0$ZrQqeYR2a! zcshV90t=_l96gF1E|9&}z>JI;Yq^m-^O~t(06$G4`%IxY{BbG!|OU*)k_(_K5E^YJiIt)G-4W1R<$Fw*xTCu4nUc zcYV}fBFaC$?7-76xoY7hBwzZ4TFt9}2(e}ohdZ;3bW=pT42IYhXw7B069QjGu!0D` z;fe81&gDZ)Bf=UB;7cE=4++Kx3%z*e^0U5xuSGG)5Q}dmO0!3-q-iA>E^3SpdQfWI zSg{xwWz@p;DHocw>75kCZNqxwX4e>J7>E@<`hYrh{?VlGy?2m}5>dp*Fz$GV*JX*w zkTeHLe8?R~`-etXhDf{2<_K4m*n7duks~qu|NG&P631e0Kh4v*Z2@knvrnndi>G=MRW5qmT9mA7OUwRRz0gG zjvqO6^zgwAo3`+?1w8VffXp4-`^e<{u^;{W|M-#@T)k({lY5^0?$eJy!G*#T&+a?5 z=P|AbOz;B2HETC)+PG=smW>;?u35ihhUW{WHs+C_DNekEc!Bqfx?-JKwR+9;)TZh6 zySARkH#oQ-JkQfwJdSki*mK8@9bGzpIs?b~;4&#Ra@kG4`O^{HuUf)oYTBpnY3Gmt+u7A0iHO3=rP*#xyRWxMXV8)^ zh`jMiRb<+k>q&^PCAL^m52^9hK02Y`qB5h(PY~6KO7_9v=|?pbpk@qetUXri(DYqQ zYu4D!3~wxmYxJ?biYj{Eb4GOVDMmAw0M%XBEV!GB(TM3qQU*!Q=9;;mYZ(;$01OsZ z!kELF8w!_tNZuj@!Vs}3o0B8%(BW~|8@Kt)F}e60;I{w58D8bHG&|32|M}U)`PsSI zxw+YsTqv5Koj-B%xE0p?S@zGLIypBtx5TCAC4Rk@MfIZ7Y6m-4l>PPEwQFa1iiKab z*|zDT&71hQe#fru8#iwG?ce*e!_OS#Lc-b&+Ylkt$qDStKsH=JII?sj9pM4rje=)P zjyB1u?=2ySBqK^DPsP;>R2@Nd17EF5Zoym~USnTG(W*y1V~YlIURR^G3|0dyPSkpy zA+ZFy? zD=?~lID<5@m%&dCXc7O)G0DT0Y%_TXLd8RG69x-tt=Nz2^4?Z52V5x z5SvEp#WLRB%Fo+Cds#u;NVprWzwnAHF8!8@xEU<0b98A!#JNk^Gg#F;lO?E8RN6Yt8f_J!8b*=~ZC7M-GF}W-c(f>6uN29> zf_)ssl0pi0;|{q=1Pm6jvW+xAOzS{*j+7U|6ptz5l!mQ@2a_cgq~geA;zq@`+LnudyOM>H#XLs>&j zB3q+#pc-0>tJU;wH^Cz~<8na|q=-3)q+rByEI?(U6-f4}xs&1StrL|3nJt)cxsbZ? z<%t~d(GnhEf}M!rL&pNZV%h|kSJr8Gq#!$Oh|g`3Z2cMMzuC# zAT&cXV;N1g;bDP7DSjlYP!!lxWyc(YM=g(^;L^Zf{OYg&{x=`~?&_J%FTVR#Z+hbo zU4O$3EJfz$=TCYkoPU|qPEPVzY@#hFdMd&cGuPEBqRd#=H^)f2kPl-=din=}lq#I~ z&!rh;%>nsCW;)kH!g_6X#)BM_cGlrbizkkqICAva0|)l)eVVTf@Wp|>N1l83^!!O4NriL$ zhM7w**nQ0v{KSC2J9zcgmtTC**7X})>@j)cor3%T!~(A-iy;swY2M^;lesLi!feTV))^FYD?VeZ=Rm|TL{mjCdq_U=^Q76oh zMB2p_O3jcgHsABj4DW)Ps1o9+5bmE3QJZvl{u%BDm;LBYbR}Wmr`j0J>b)AgEihv#>AZTPO z!4!>HRo%O+w6(b?#r2GjGsHyOYH@*7oc4-OdOPoigIk~IvGPBvRFN2#_HxgbXe?`B zK|_SpWko})6kjxes^~G2>lF@vHxcRAK}MR`9t18xgDiRIUxcv1&S$fz`dpWxUQ3)% zy-Ij`de!2iPkwu1ZfWC1JEo@B@VL*K)sx(~J#zS&&FAm9;;I`?Pp!M`@*A(X@;VR~ z`JF>wL%MI@laD|3^ppGd?LB_@nG^f=8HZKt_yHJx0%qgJo$EGk-mrcXZy8v{LkAP9 z78d9DJ_0vUxY;|gIE@LDEcZ5UTD$SQo#$~~i=`uPIy^di{P3}3hff?kJa^(a7bf>S z@`!mgvwnKx)~!3w-?fW}3wCej;f3`ZrlzLJp9M}*i(WkQr4!_ZX_Egm;MS8rIqX4Cq$ zJ9cf}ymjl=&0Dr_-L`Yb*6rK3Y~R7xQ24)f)8@^aH*HwIfoId!uH{9UynU3* zvmgB6N5ApV{@Ihq*R9{mz`;Wt;uS*aETd{4aSrvgt$tncte%7ZQG&%NR>$b7*DbkH za8LI-W zi}5f!!P#PC+||>fxu-}|jvi|3#1Ugbg;SPshH4rFtF@}<+~d64V8gilIRyryoarVz zm$AW59li1u_x#GQ|K~4$@vGNd^(yX67|R-MDj}eyD1w8Yp^(PG4%MW|-c7HhV~ZB9 z;8ilPhqrBIQ}&^F4yk;zY8QvQ;@$)kg=M-U8cI`-^|8m32Bl&y3+Zg@Nu5we))ZU7 zmhXzM7?mE`TYTa*i8_i@YKq(d94EGP<`@!#S}upL3~Yj(wFIm0$B+$B%r4s_KiHB& zH58gg3DhDy2xb7-l4y0_Y7S(SM6HbpZs&@aj^r=sJsJs9R#a3#Xvd9{wG61STRlje<+HkwoRgDWFk%U7mN^gmFoW@_ykI;wa z^h<0Y;`tm^zU7ThX;O~mU!jL3gw#QEliS2G>|H_c!l2948^SCBeou_hZAvlrR9o}3 z+t3msobYGVDB3sGI2Z@pfQsxGWJsMsB!yvOH+(KgZEVH=t_wW=u9D++(7j#WQPu;gegb8wj4&M0{PU=M+{D6MPllhn{mpi z3;$Su@J|?At2s&8!ED2fFl%B}3#NC1_+_x6%l$DvSzuy<>>f0}pi3M?i%ZHwgF>~w z-ib!P$T@%X=+S2nAKK630ekoC+4JEJ^CXl4GqwCJn_H9m)-g(Qn#iiSG| z5GwC0#+3MC*QC>9Cupt#FflJjw1ux|xcrTW8ld40ZrlOLDKO^fkWK1LKP!;%#C4dl z(i{fapup-smU&BOW_a5-7nyAIHFQ{-WdJNrvb>jwM)7^J#e>2OvfTgV+a*k(vnq>m zh8WFu4O7-~91FQzB9=)(!TV)Y%NVYoz>kG!;c|(O66D1O+6PnEwA7orMv~cfYa%Mb zm}>TV1zg>lYj>oPb%PxQ7I)grftpFjfDBd42y5Nj6$>yE!beN$!I!8<4=aU)H~KWA zwglZ`c~#f+S{tep5DuoAy@J)cPWQ3HQW8p)+MkHa#WPG2$xpq|B>yFkWK^P&IdTfn zi5M=QO7f(Mz2KuL_yUF@&K|~OuNu>{VVmR!M^8TW)T0yAYqoAZ-(L#h8v&~(4f%$6e`n9rPww0I z^r?g2J+<#UE}mxA%!XEPo-jYkZz-NQ`5bROS>U(hpLzPwLyMdTC)TdryoI+M^4kdKZ`*Of zx{cds)@(gJxpt9zF(jTO(~#aU%7(~`Q`J9- zBf}%1PNx)f?^dHv+)zm77+U^=2|jd@(I#mAIdWCz=E=zM7Jl{_tE3wV=PT{ZXDudJ z;Yoj!Gw5THtu=y@;wF&ep}C|UQ;mGcyGuDQVK7lSvzogH>={o!t>r^O^05{^%>}~+ zF1MU!-M=uq#I^Ieliuv-m6In=aL1pU{4DuTo;r3?^2yoxQ%iHFe9j*!AL`&bdlvty z#-P>w+U>fTY1Z>Qcdy;F>4Ht0Hf-6tc^ls&*|u#f|Jbu}*s_%-7XMr$ShvnpKvdH- zOC&wdi1&*oUJsN`xh^%3muuEcTyWm52OoTrU)&yE)dZU5L4p&A{oT zcfaSOKmMaX_>X__zrOzZT^a8AArP%XDHu812AX-%DJxil=eb!Qh{nxbOR3{wx3Sk3aVD&-~<%zlt8_(}qB{ zPcfwI2L4y6c_7^=}@YnHwHN9SFh1k4_bv*_JZOcdt$~xJSSrMC> zyfrcU-$<5HEX1TSgc8#iEh;PFuo_xn4?0q)CXs~Fd z(kYI%1{!K{_J}qW2D*$vaG*7S7NaJ(40X_wLWizU4Q(;Gi+Ku8d?gs9rZzQconoLz zZMO8y-dVA&j1;mh3kHzRqJB1h4>}iWVT|*BMpe&^Ojx0$s^Z2r4k>yf3#RD=4}X4= zj)Y60UfVuu>2%?W-Pi|1$D0dH#GD!+P1`PEkhFX}SR>9##AaY~KpTr)Em|M6WRNR6IhppfL4JGee_&8EJIRG~mZGa{H)$^N6l=Ryn~18aOr z>5A2SrUoMgs zfmcPXnfT%ZU*f$`cf9VtEt^~hiR_d}R!wSJIY?T57~zIKs)n!e3KZdG^`egN&(+)! z`wvh@ z1g9pMW;qSyWlxK|C2W5F$dMxl5ANUh^wT~h@Z^)vKC^%BA_JRv{?wnk=)_#D6mkF{zd5X0p^BD}w_Y&}*X^!(a9W%51Ty{0+ z_~oCRF_OuX)Us8F+Xe+moa_YkRg4A-r1;mo71&LgDyJTWMU{c7Z|4&`dQ~Bgyhfj> zy5MEiz!{os!HlWt$@^Y;&->r?sr~!DbJdM^@-VBtPD8Z7mKmOFM0_e0UPwY#P&s|* zQ}3Dn5fpot2u!oGrR;)%RFe~xO0h*y0tx1v(FYJDssliZ3Yd6gbXy)<(yo{xt7AGQ zntr0j>Nt*QL1>)x@P)-GujV*CO=dfh%&ZwZz>Hh*GZwgmY%m0Efkc41TN={DuI9$z z$DZ8aLdZ)CcU~IVlyeD9fZm_7l=kC zV;1YUvd5pvCV=@Gn=NBPeO!T%VHH3l9HZc|;>tn|R-)XYt{z0eS@;@d-hg~{_~E_<_B94<0;x@abm{km0LlCN^wcw_(es zjoa33;^hVFW@gq+PxBN2SCOhuCV4TUc5xqd6^qOD+t%}Y3M^Uq?f8@P^T%g-vf$+5 zlgE#o^ZvU$tO5Ja>Zf8wvF3%?AUq1&fOPm*}7xHhAq=GGcFUns*_dp(zF?$ zjxj)XhnJ!VB#B|D{Hx`*c|zDRmsnCx7t6_Is>IFdP14M&VEj3L%r+u3j0!tZMI2#C zpGqo%LaKG_Q?$cij;y`wpr_mI#+>rC#eDY*Iul&Y$(IF^ue`($N!I+>>I-XQ0I&=u zbI`7`$Ch}#-|Qmme_r%I&y)T0bBnX{b3D+0^2DqU__O{$K09|}_T&j}{?DH}HMww# zulF;jSS$7Yurk!jQM8Mzf5f(paO>PP;;-~ZVwF5l{@F((9c znLTw?qPz>~96RmGc6I^sK>TaUN{{ndFV|A)yMZNMhbN<;wd?LOn9k;rzoB)&2}Cu% zdsb}g9*I~EJbb0F~Oo7MUc$Jfi)~PN->`Om>%M@GOA3*vJ1SPf}X#wb+=STDG=G=NcKQ(qP~ z=D`|`OkgPlB!p29Nw&KrXE&xv(T3`0Rxoi#)@DShklC~Zv&+t0~ z`}REjG*1caefrr$`xj+W@ zRkd#5Ddl_axpQ*u#QwdHFD;&$UbV@kMP|k6SkSoo;pC4k=BPJOP)#hfg{PePK{({f zYVxtV+qtNn4-4V~l%b3g(xQht~n1m6E(h zg5Sckq9F2ih$s{W7x0VT%xWH3Gt@k6YblHmKN1KCq&KU1z9wXs;m)Rw!^i=pvCoH= zQEXz%O}}~zlgn5pLW}^aw9^p<(40#{MVANsi->kr5o?W$rylgpaTx28Znf|WFM4S) zc9_Fz2PZV7BIoPwGOdPcq6*;-|JcEm>`0Fg5*7P`A;z)^-~T~2t{M^>@`Yk+2~>gt zFAPSW190|-945MGcwlf{%}9j8rtTV8k+r4<88J+KDaUg0%m$=&*YL6-B00$Jm6z&= zgC$+8*z#=A>dF02KRU5^V$0TRS50l;8$;`+SDife%&F%NZNBKz3ogB8K0WONFf5JK z;1wA4V*Tkwp8KH2ce!}npIg6EYqy?v(e_I&zy2j;)8f+6W5*93Jox03Pd@edclYhx zbNrbnPwjaWHyMrm+{wE2EF`yX+^~IS?YdRd>!()n1FAE;sop!;*lI-R(6y^qt>MbT z2EPBmnTcoId2j0MF`qCvewb(4mss6C{oUhFe(Q0JnqD=tal_VaJea;?=dKGjZ}s_t zRnr@}8NWcDGFI$NSG!3C1Dn_pD^GufJCU+m4H0`f#^IB)5lr;#5#zwlurlDpqip9i z9>ecH^XsY9Kia+>P_0@7C9jF_JsQcO(GExdS`Z@u%id~VuvcbR4I z0({M0fBX6^o3?G{Dh_M@?b~*2-NHL)bIX4Vi~o&o>$pI$b}c_^<8%HD zF97(j*9=#lZS$EnPp*83(9eDij^pVGzR8!*XH!0bFkKPs37Pll5=!dEEg2f#woyie*C`s?tAyU-ua;qz5Cz%zkcrz|L8CO-hcI$pa1!vzWBnm zjGFq|MP0-Ywx_{Mely^hrjXlhhFir+fL2-YX-P&hmk}nSu72vL&=wF_YSZeX{msv zsw9>L2tr1CQRWzRu2iAEJbTA zV=@#=dC}wpH^dBuaS73}H~tr0kN9V$`_^zo?OTeiZn#RN%N z85gCwYrC0|R3ff_Fr&XC+ z2qP6$3O8}&WB>#I>Q`BXiDISwV^covre-)2%+&fW`BBJ5gM!xEhG}t>7BA1BOuE1(vtqzsoLbOL}8>@&^MBFbQsfMJcC~i{iPy@L7 zv?DqsyI94n<0j1A(69{HPz|369h&$?xK(1en)T|mqLx_ah!q;y-7CSk z*7*%hF*Ky^Z5W)F(4G*O8sk7#OE&UWlRafq*~iH+^OHDK0_9o|bZFv4@P8*>E%G9oOK9m>$~yB5`|J&RN34o z0b7}x0kw%;iq*r(Mm`{#xDh=)aqPsI-~au0{QF<|t%tw$B$L8>U;P6=@}oa`)zw!s zk>ZPxe(D;l`UnK_TeMgQwH@U$3_IRDq)UNGYZ@TXM>#n`}_FHbc_PT4Xyz0{Pb~Dr9K?4VNB=0>#Z4SV9D!K3q-o*4(EL(ZDdvLXh;)n%7odcl+X_nbKTEVm??gvUko zI8BF(sLQN5TzH_2UT^8c0+M7+KyjP-1zgu6h&t9{yuW~>vQ0BNgg9KL%RuB|N$~K4 znYHN^1bo+*x?FzIE3{gNIhgP6Mr=GFN?*TnhZZ3tvonJGrKT( z(IMbXA4DS-6q7?V&>06o#b$7d3R+khBD_Az1vb}e7*es9BnAjakV}Y!f!`{7qvZ-# z=OJhxptN(;hwP!~B=+UD9)U&50Jzn2!F;7gC`2(4VSCb7P;w;%TmzHn^K}rAnlAlL zo~2cy>Wr`Zgd-`TJ+LM~t|Lovs4^=phg%^>RjOD4PO->IOhk~N78@Eq|x@BXQ*zSW)x)9wn}eCsd3Sl%oF6Ms(?0f6gBFw2DTu3`oRl6YD-bh zNw!L@O{)?Ddv|hv@igDP*|2%rPyWo$-GBe<{))>4AAHaM{4aj_KmXC6{ru0p_3!EHM2m%r;T-}A|jf9931xYf}EMAMYOVRZb+p6+ZFZ3#>{ zY#G67wyDIjhg?j=uE=FVlSHnP2wT(}|lC>LxRSL|6gwAu~j0v@U(7T8T{&jj6`INmFTZX6p0(L~M9 zSxM!mR&^s|fvO}{gZc&*7~_sZ$x@FL+%`$VjVg|XR}Grc1Z0W;G)slquHHf{~i`9y2-1c59$?`gEwX}_PQR+VbDQXDs?)tYPN70ltUW81@FJUT}& zihR~K-WyE-z9s?=Fk*42$lwE&*n1XMw>FrO8CY;HVBM%hI;{aOzS6HsN}bNf%*Y?x z-~}wD7*o81M3<9ELz@6n{Y2i#9I{2SGN^C`Z=<6C!a3^G1SL`pL6z}u&|M8xWgmd- zT59NCLZBawp}OAB44IM#!jxEr0HS*ROH^#O)D$s-2yzLO1v1d;R5cqPkknW40;uUV zUwiO7Pwd%y>kZdjam9H}%OFIdo84*Su%&OD(z(uYEVl2>42L?$8LK>4GODIzUREd9 z*lD_LOMAM+GP4RE9N?zyAOFcm{_Vf}^{;&Op)*r6ci!{zx4iYIufP7r#WOrg$;0sq zu{O(^H&X>ZnnN{uxvK|*ofPkLv}8wQyg7XNVE0y%GbCEPy#)=9tc^Uud7~#A-H_#^ z_uHKRF=Yy;0`@MP(c>QXGAUiu0RG$TRvg&m?1q^P>s~HE@|{#>#QXr%(W71uc>1ZQ zpMK)0y-yw5|MdLP!}*ngrB!RD&OiVBTkpF17Jg-bzw58L^x_M*ZJ%1R)(5>8_}#&L zYv9Vt&Pnog1Md;@7@?M<03gu`hl3 z%U}G;*B*NC8$3pFdTD-o&CKPOU;drP_x$ef{qgHxf0vJKr|az)l%8JNvU&BLFTC}; zfA$f+iE-_&7x3=J^p*y&TE{ilpB)xO+#+ zbj-b2Spg6UiUv`uWrJUy=XnmYM_|~fa+Cpk=&SndBRj}r1BK#rh|KcTmy%iE#4I`{ ziqzs7TDS7eBPD_Q^Vmd+`{h37opHy! zm7&6aRXTc{3G=E%XY=})@NzqvF90#9996mt^AcYX(3EBucr?Tz&|?&Ux${rh{qjhp z-~z{c+JckY21359FlDX_88 zn-DD~P_(4clZAy+O(F8q>Z%6f0zyY&nvG`?%ToaQfYX-3Q+?6{!|CoQkDN~Ci`QDM z4T(v5k{F@@11cw3g9p}b+`Mt)X5Z_!Y8B6;A9?n`nd!yPeCWS?_7m?q z@4QQPpLfy47hk^X{EN2jJdYQ}v+ySe>1tPl_Jv>OHYvk z>8hCxn|7|hVb_H>yzm~p;Mw+Po_S`^Q#@So_~TE0`hS#KhgT^{zIp~%93|-%?#gq-@aql&hyUSwr%%@tvlAtY?_=}%i|AxI53cWCto68 zU1u=^HJ=gHdyIDaz}&Sf?6C|cSlw(P>JmL;_?`}!h)tg5AwaMoW1n>MZIT@RZ! z^V1L8SnyNk3;&yZ)}Jr;uUo%ndd(WYc*rY3z35?Lf$M*DWN4XBsARw{`l1;!r8sGY zjEy!T7*Wk4k09e2B)_P_8@PPN%-;iK2tYO4NNq3PiNUJXgtSOSFh>dD2raJ4KnTO` z<$~6hQ7W53&nP8y*<8bWeP{Q1yTO0%$YC|O0S&m%6KOAIAYl`T9LQQI95O1f%g6cB zbCgZhQqHMKKVl|Bh9Z@m`ZT3k#r)Ga4qlx!l7JEJw(>vA!T|OqVCPs7F zn6%(%DgVc}@^k1)U`z{yV$8M!>Nvd*WS0p|=|9`sW|RL1u+%F&vV=Ysr|!mB_r=J;_zpba7jo$VFYd>K zWt?SKJcbEwZ<4TePA$}JN$syxrUI$jY#;eq-j?;{d)mvQDwd>_@_DQ+3;_Nv29<}52P1Lq z!;bFXs6lcJ9y5EeznTn1#(s&DSVF6%&Vii$n1aYu%M_iNT(fraGoSt9{QS~OUh+cT zHeUvgnK^hIAi>7Ba}viH&QY#Nj3mdD4cw#FMhX+uLAa!9Uq0b#JJ(01nmQtpU@5_8 z?)%>V`Tytt_RF96^cN@2thwd(yMOYhf9mGjZsR3vC+AKw-<93<0h2#(1X0gSTea2s zE*x495MMt}h~ZcV+I37QgrP4G!z3p-c7~-4CJ{184=80D=@};)3>-!d)7Q*MN`$?A znWP9d$>2TA${Wn(T7d77=7aw90v80HIdq5{ZhN2l4sQ_H`_vQ995`@h_PF19Tzz`& z`t_Gwe8KgvxaH@bzVgMde)W-WK6dEPv!@qN zuUo(I@~f|U*~?${qT6q|;l}H(zVeC-E?oW3|M_qK`hWc8XAduI+Bm($RV62~89zz1 z`(E|3x4rGX`=0vlbvM405ZUSW5I1Ca7}%g?&8g|wUoI*PooY)pJz#og_onx`pd%DX zR_B|7GysW6B9&OGOqXd2uicVBr8Rk>QU%0klU=)g;kk91bAo!h& zzQq=H)SGT(OD975YXV@HK>kZK%yWt^X)=^#<+1?NGPY%IH4~E$jDbMMQbYuGFsa_E zS}>g(t=v|HlCJ^b7mqB50TT0F7wbCjuu`mDT z>0+ogrlL1QvR-OM91d1uKDR%4s8@W-)ytgMztGjqImaE%DQZ z{1VC5i+Awbf=dfa)9d(t!E?_Y-gEtR7r*IEulxMxKl8|=-+A!M-~95&PSFPwGaI*@ zf6>L4UVZT;S6*<@rMzH%{f14eXLuUP-xMH1UJqgkOWyOvcY53R8lszERo8K?XOb7; z6Br%`*s|-w?Yqyv^^QCK-<16afF?(E?hn6{bDqt!Ip-{`w5u!uLSzezoG;M`4A@{} z8)F+M94}x4CYxZg$U-FLu-cq+&T(cZ=kNDCr}~{)A$i{Q2%n=gy;YQ7KTBh&z_tg^1GdR#$a9~098UbxrCb>K=@$0eRf=qtuOvQ_O4AO+C zY$hAkADDqaB*R^f;Xg4=nO-=6MdpADAyyFht~4L`17oPHq_DVnsCI0_Pk;FJy4osm zi+TNEX|4>7L@RdGtGFTC4cC3BG*h$YU4nhQj#4ooy#Oi-G$}{FITFS{J zz%B_h#ZU(#Nf43%1c6HXz6k*J&h+ZhF_E)Qa$?ZY=S!OE&H#t57@}tU7cHpDdC%MG#4^JSCU{ zCP*|I*2fiy(ZR0nrZE%V`3LWL{_|gS-}k=r#1jv_|AT+?-{1JoJKpxXSKo7IS+TDE zv2@w*c-6lF1?B%ik}7PYL5T^<*c+7D;%CP zw{gLuSvz;{J#^&4teH(cJ@_VBWV58JZOap-gs{wmynIR^gdbcU3JDxIVv^hw$*7`) zW>1B;0wP?yH5iLWkWm1C{yRG&N>>0K`f*?gA?gXz5j-OVrYkK%l{fuHSuh2Io*KH~k+)BrG7kj440JaewF@C|3$*D@Wt{m{k0);Y`53Xx zSm%z&6p0{C5)8M(8GJe@V?YtMC-tso5ky;qX8H(|`W#{$Fw-oHKXnD_;HTYp-3)1(XLaak?gW;c(Zntg~6l8&HAjLnm~J~4r&Fu6m& z8sn;}M4@qwA%%QfkeRK3)cfVj{YQ=*-?L{gD*{`$?l^SlVCR)KCg{~Ql{06}cqUujf##=rtV2$dtcW_zJr#bsbB@&tPyE# zHiezy*3TPzt|J5uoS0ULeO58ZcjcrXh}=NnW3_A^q<9p0fFvXI@HAS}dVn0#n*<+E z#}U%i4;EOhDA6oZ?4+wG;74rvz9WkQnv(C{;u&0Bdsq!VWD=(VD?!?>V<5aU^wWiQ=FS!>O*c zr(16lmeHYN2*U(kzjriqy9=^GxqPDoCvY@bn z3BMQ*77~L5QqfSEJ||FAURqICUNNq|8G~7u(Bt|Y9qpZ+9lY_rud}o5^r^NJhYt_+ z^T<{i58l_+j~PF{sd;=|y*|@eQd*%d0L=$!0;&Odp6Wn-89<60001BWNkl%fq~JpOzks5WR~*+!vHU_{kOs!UgF;nzYWF}<(F5Kb9esYru17dQ|e3LKFIy{~C9*CGXW zpPI2%rKke3!)#@@5~9Lh-80ul2mA-J6jP=0;192zoHTjzz3>0P^L9V~yWjoRmMu@e zJB`;dTb%qYCxC9PjM`fae9N@aPhB`g-NU&!s66)`QKae1{`2~K!;iYU*!jUPnxUzHqCSi`T!Z{7 zm$xZP$p2U2io#wra)xGV#{#D~KuWP;OG8#xrn=VQqI8BKzMftQ6cBFp!%NInRY~B-20QO;bX6R9!S&{i<85^5oR0TF?v=AW@%o%=Y zfhe>RTYJW}lo1(h^iVEbmr5;8ii+bXt}b>wB_oqSVTp~^LO z>De>w+jeZ{*2u~gOI;!^zr{7L`!f=O96;B^Gs^!zX0186ss56h88M|-Lxi4@s3?rH zd?Bj;Q!#0cGjh4Z$6Np5@Bj5%-~MTLXMfAg*{^!VYu4SguC%1AyN9PzjhINFGGR8T zkt6W0h9nFibe3cR6d9(}klmM01E@3I60uSa9wHfzEBIm_4~uyFpg8Pl4YipyCMpwk&F;Qed7)~l;a+iNw1kV?F@5E893K3`J-8}4mNM$j zyj2DPjum&xMF*ymP;$eb0gdmc<+^%u=g+ksIecvAt{s~;u_mzN$dRM$sbC0LSzAAQ z&fJ&Z{qk$CS%Gt=OrBI0;7KD?tpORV!S)Xdc^bA9?hN8*W-6 z-7T1rXi;Ga`z)qSub(@2#;)BbTHDT!9be1rMtU*$wF_jDqLA=l>Y=Ulf`p?O5=wiG zu$lISS8a~G65f=ZsX);uP8=TW#YznjdrBO`BOx!vl`2VIMhc8HOOZa7s}gaOKgEPn zuN2rk#jX-|UhrJ#Q7NIe8KotPMiNu)uzk zJge;!0Vj7#3;y{?KOu@@tqxElg-j;pJcX}jm~oZWJY0?t4}^%32;r^$ZGf{?FT+(M zGDZy}T!m(GQZ#7L;enO*rAtgE_5jr-5Ikzi;$r=!EP^;R0Z}zbyewoPA^Zc0IsjS9 zm_TYv;qa}P08vc|gkUGaf?!6GtBhihwajRXCEX21_F%OnsP&?W6c9UY4?!bl5?Tzf zk`$2;tt87NY06nju{CC}yYo`}*;57FpRXOm+G1&G(eOa$mCGl&zkb^-Yr5DpFg#FF zSTuD~&5Wr_pLfSn1hM*h^3>%$yAEvFv~APo?Ys9K-uBe)Z4aY%`7mEW7~e8=%FLlf-`33kG--Aq#i%ynL*s8htv%^C5o9imNIn zRX0tUKL2_q;r-nm?L2~T>cokIr%xQ`+pMh@PUcRti@GdVQpHAq>YAp?YWCXK^X7bg z!a#dD6=oQ!H`))EXl+d1EN4NXzOu0iSMn&!059>z_kE>y?Ns*s%M!!76)jrgp$CIfBDJz4xyp-4L18Zo=l%V&<}Ub?Kl|v`EnB|--EVH(vgP$}de5yl zUGu>|de;qW=kw-V=(Upr0>@?~EHEO39~g z-FoxC{rguRe)Or=yyi|k0TN-z%iSJ6hZ zQ{ZJs;+O&Wby&Jsb)4srPh^yV0)Ap)Elh8K@jccI`!Wd`x#LHT5x@xV1PGEqjYzW; z#kRvrB^j-xiHR8{<%N`W84;*SOk%8@kGy2FwkB|*SPa033W$)lgsdd%k-&+@69ldV zqBk_ka~ChO(n-Sgm!$DCQguk)lynCUgnc z0>OxKBPpvN`~-9XbrJ|kgk`3*aa3JYSP+O}QI2A~l^oE=W#cL7Cp)sZ0L0F{59i6!Oj0PzZZ^CmrtpRm*&@Ee_4kia%W z;#bNAZKg!VGD8YIpphy9W(6a{&BgSgu8>no5oSuAl#HJY*$M+oI;7EHUQ{wu*rVuz zk-3?V(UC(}jRf6WW%O;1sgp}3%Bpw#eVc#Zo0l@QhlcK$W;xz zP-TQvkaPslI2q{KenI2-f1(K|ke-41zsSz`M&wHjhcD8xG;rbk(7%1+3!neeS1+Es z+%$gt>)-t9=RN<o!rc(?bB)4S}!!{-SuP?nv^@JLafEykWY% zqvQN(-X_T1F>a0>KY8kS$K`W+!@f2M43<=uPMk1y)^*n`STJwVlDTtd&6+%Ua&3Ka z8F$FIV>MXN=ND05x#9rPSOF!ZQ4#$QLk(FZb+Jg+$vAQbngWQ?tzTdYz~Nd6R9))= z=#o?_dn75i>CQwt1aU)U03?|>7w0h3V{lKIZu&CV(gVqiucRJ-p6yV|*o{>bz2hEG zF4uXb;MCbG`wt%6zI)f^&0BWw+H?Ha;o;scjI3{JoIQKS8{hEiIzwbr8to5 zaSOU=xJq;l+7I%UO2V_GO=?Jh1aYL>Us$DSxhfj=5@ZcDWEQsX!iQer zW=f@mTtwS6z5>d33-u#7Cc=;Sp#d5oLp2C?Szu@&PMPN@Bw^vHx!b*N^;11+oE#!@ z9Scc&0RZq1oh3~jgcB~5m*hzxoV_Xtx@`s$RiwIR8ZLUz#N`UnXblie)M+SO#F;~N zl}XgHAWA`?v)Eb`XKhQs$N{ZHAzKDHMr;P}tVf&hB_St7s+JS05lE04rXlG|kEbUf zsfc=%7NnGwb;1XbDuFMt7o0eGB-h(nH-2hSNzFjNcCB}{UFvK*wPeB6=`)&e7h`s9{rJd?ot3o2_GO3JEvhJ-ydd?b-g?Q#h=(^lj~bjN4fV}L+95Or;;02)A9 zc}>gIhRM?xUWeiAv0{>Z`s~RQM-KAYR+dvcPVMc$A8_V@D?YJT)4<0LE2?UXN^1&B z%V^nJCZKQCOA`=T#NE8QJ!1MMAWxsLAJ zOn45Lm(|wR@H9g6xN*(R(0R9t~9exEkH8%>pDM--L$eh7LEHNfN?y&VETA3$9te=p?TNJ`{hd?o* z&!ukrj(uCV@2{(A`sD+U{NiW7$rbRO!{SMkCe52ad)1OfOP4KPuwc%lNwrl~@*B?y za_M8rJisiLK11P2hbz71CFvul;YXUboT*j|-2JCCg2`}IS#E4o{mE0udU|_E6GLiL z>H~P(0S>VwryQiw*GX>_Cd#xqO-xlY0!oG|%r1?FtUS9@QiHNecto)a3%4?R2u)BZ z*x)F6GMHhCI|v1bszQFI$E4cz^rQMZcb_3&txZNt(+DH6g)1Ar)T>D^MVCIYU=iX% zUG(Wbc{Dbd(_ZJUte)#dX-2LL`eDII%oj<36_(!_l7#a3TJ@*y1 zIfTphXFX(ys-Itb=^01?6VkJnUyYtI$$nj`j2T>|$yF$$M9Ym5iZRO;FP=DI61NX7 zTJYe%XG~cXAtKzu_MZjm?2wbY?u>TWJL0|;8s^ZE{Iaqj};pQOI!kh z42eXl5{?jShNcZ@9)C27i>%t!m|}=%`R*#Z#M>-X7NP{T77hXF?06A*R8b}w zBmDCzH1M$>CeY#PmVyv!Ca($CNobnf+yp3SY)IeC1?&^ zOafG_+z5G47(Jav>E(LL%2Ed*@(h%IWgVbYkPR*KQp6cWlCDNd=?pO(s7eXFMtI64vc#B~q!1zOBr`>f zbP3001*v?r%mA51@Bt9$l3{5=Ns1^L8U5I_L=`m|3X6WUjWXCEPCBx{2sr_Z^KU}} z-!$-$ul+OnEJsOIo#PNn2vNZZJUMQZ-gy!uChul!oE75{4p~u{OG)OLJR`(8t*WxZ z5&Kq&6F}C8xjaAlu^1m+E9i2Hg&VBMzpFec?Y*}^vJ+FP!OJDY~#-^t3UX}*BG^ln^ zx;^<@aY)dp#?_?KV!4L(p*g2 zopo`PS)PRJ=7(|uXaJx@KnMaE>u6DlGbwh3?ICIwT$CqD;faS2(ExBO3=S$pe7KkJ zk`Hjbe9WIbrPTr8Bs6>htfZJiSjPMUKzk4rCw3T4bFhd&t=R!4U6j>H>nbV$Tkg;tj0FhXX8$O* zJb?hgX!fb_M6Btf<;ol=qV~Y_9dgxBLIY%KYDgGT60mDc zNJ?16jBO&aW@sZXtHvP$7hVjt%|q4+>!j@(-PFG<6H^3O7Mp&X*3FtgjAJkSv>8LxiP?>@}*l02* z|M)C)r^FMIunY_z7AYzPrfg@UnaEfT5ZT26#UA~z2aOJy{N zGSw`+ppqs|P_AGhBfTl43sJ2Po;r4rJui)oV}{t!WRfda&KC4uzWw$WRaEA>J0+ak z{fLkZUfhW~yv2}^9~|zN7P-ob!uhkC7tOulHTT@0CxBXq59~j-dDD(3H*VXyWAEXE zPaWL)uo_q~FVi14wqUkr+V+FiZ*pS>bmmEs?ySmQnp6$$N*uW&k7XN%h08fzNI7xECtKu>=k zSC!VT_DkIzmpi)jR@f`2P95IC8g5ChqPE7LQ5-Xt_rH#7GQsfNM zDF{o8b5A_JeyDfg!+-aux7>35V^2K1>FI6TcJ4lS=-{t@@#|mz{AYB4CFNyPr%vWO zyGxfWTC#k}>^U>XHr4SaMJ^aTAgSk2xa7hy{@D(kp)g5$I^J!Ux+$)PB?Y{icWC4O zu8z*?die%zRg*((fqgG(1w2CwysXs$GUV)eIn{}%C8JWJ>QKz{HNST;L2B~Tz;MfYqxldr?%4BNm=pA2|4ilLc`Nfs1inu@Nu zX65(3|D#>IcHeaK@}6!`h~Q8!IE9&lB=W0Dh2wB@T;WOO?M+T9)FJ({jG3g2f>g+g z7oi!~EzMZU3aa*&aAf4DV-#9)W-3et=9o%?QZaAMvL>m_D5ln3Oh&VgjG`~Y6jes& zXm@Cil#l2Lg|v|VI?I|Uv~J2=#WoSTFj0kjU64p4?M%>LRXB=Y;+Du{o3xhc`j@Ox zBqwZsWa9i!=m3)-WDn`iik=Inna*nM&@6kyC(BQS8)KEC{rQ;vRYR|)vw9} z$HK%_yo_jR>R&S?Yop?fMkSFqkW*A`fMu77)j22CBgn*%GW|eqVI(tjl{uXfqq71f zu8|B@krq`PHbyhi3=kI==R#bnHOa})MtN9;ELJ*`PBN2WhH#qeKm+eR#9*b z^D+Vc6_rZC(vg0g9)UWWKUq_#t~!KlNmsGRqvUx7PQXW}fkYO}{9&rW0Y)mr-~ImM zAOH9#HgDU(w$j_5bLXpH|3;p>_NvsER4Z18Q-~71*Umc*r)ECH&LEe!jn9V>(_`-uDXiG%tiY&{y}k^!RLHaY+eRWe(oW)!ugH()o+W zxHos`(9xsEj-NVl@jM#@_#PD>3Lh>jE1opIY1VX>1LiJXv~bQGHV90tuP-SrlXiNc zAiD*73)(KD5B8&p<~oH%C8%XBP*B5!s5V!f?z-3q9?(&w8s`eBj>bjGgAc^_E)#Jo zGm=S0&{H-Mn;nI)P~F2zzdC_uw@4YQOCr2NIl~sFsJfKtUY(StkeeK>tvTLWzH9fM zEn9bP-Lh@(zI~T3U0{bKvw#Vc#xGvJK(7#3wrKwBc@rm1sHxFwmQb6!OgvA~(WS3Z z$Wy8T-zbn;8W8HG&5Wg#MG*64rGz3ib#sV0_+Ve|npM~QL&v}G-hE)*^>erzQUEOmhnpP(q zLQK#BNE$^-zhJ2X41*CKurs(XDT}bz^3Bg47AXedBGWkBfHA|dKV)g_1R#Mh^3uY$ zgthMgd!gsejr_AdVvks=%59cg$Ks`dxcW!YnnJ&d8*@W~M53(sU8^@?w?$xzsqLdG zK+vs9I|&_xCvH@p60ne_a)^x5EI|mOmMxw$`0_$Cam$nrdN>9e)w8;GkpWat=ubHv zb{Yltk?l8{P}BcF3?B;Sa;brAsI_sSyQ}@&+0(`471cF$YE``cFxPjb^$gAQjyrB) z0Zy*ND%RDY*D?XNYIOjw;c6_!L>jlEnmHuVRFJE$DY$0k)N5BweOtj@o!z-Jr#skG zuzB;g4I8&INj$u5@8JzZZ&9wYZp;L}j4-36W#-rk)2r*7%B$;#i%R>43iYH0?C_6F zz?<^3X5B3G={*oUoh8qL#pA}sxuWvg#))m|&wD=xdatx~o;h>+$YJ(p9X)gQ zbkBujJ!cM`r-LXiDk`t!Gm5n}_2s^2}38Ko$!oZo}Lo<`ILcY7j47x)@v8 z|_gK;4v1m(W;sSP*;C8hL z?e~y!^eJ#7h$F1rji|M$2UYK+_jI$3>+vTylvkJEaKp;kvr1-8yX}pyxs7cC7tZ$` zI(&qW%WU4Xb;r)#M~)slu>Z(+zxz|DD{E?J&6u`m(Sl{mmn>bnX!^8i4fSdr+Ah~m z161tUK6Q_Z2;Ah$qObZS^=42m7QB@2%9XYWa2Y8-4##FWg1DlVdDuf%JHlm- zT<-diiJ~Lpo(u|1qdx{gY$*?_5Myn$Itw`-FoqUm)NF#eu6ynvB*hHGiDf2m)!Eqj z4r%*1aGX?gb3jUEsRt|di;^O^nxW7G2Yzwuf)+H`(b>hq!3$paqML49`@{S0d*J6k z`{>_(=G))@#UFp*oxlI`b&N5n;*uCRSS3!D6$)mc-~Ls(Rk8M2d1x2j`E3sWUm$P_ z)=Gr&8S`iUhF2xu2M&Saj@xeh-gm$A)KgE~a?3Kpg%W}@FzKoa*s%nAU6OIMqM6=B zIHRNnKUorR#dQb?>kJK%cDQRMpAUhVPOh6UJBd)01t75x<^tufmstrlAvIkj0ZREW zLU_kOa(e(V^P1_qKXhHReJGNf##mM>7^Aqb^P=toS9EWl`IxP+4s z0!KedGgk@rjXLstGgt@_O$N~~85bC+CJ>20Ns0(1mO)Vuxeg#PSm_7OU z4aV>hD>Cr%Zy*PbK>S64ez7v)8SI)&2pSv|<8M>ytg3U_Gb_u|#Law#64Lk~lTTYS zV{wWCvlCluB^f3*iBEZYm*sOA7vnqlTx3&|#uDsyBbNFzAlwbJ)Ks#vcs2=? zDl*(BJHka_96;+H*!gq5hSai04%-AjjwFgyXepqWg@!4U9Adv)#T1o71jR?d6Kx(Q z%D_SuqR(m3fKFQEs{3GLnSwf-=PW=v600oh-@r4O@?mL+P+m>UInzoDT@;Xzr;xOf z3^|p7lP+ECW-lozJ#zf=p1u1gO`5QH;XDth!&xs#g8%>^07*naRNX;p0m)9u%nr%@ z?IY2QDzHA}gO3WNr>PT*XXg}-GNUjcSc_8zl$v&L9)W?Od^Ega)8Rk==->bHSC8d} zOXn@Q=B;mi>(Zsmdk6ZvdwaCa7O&ZL8cgYu?4dnC7}9M?1PR)vLqUrH8fn_qDyAg~ z$$4FAxDxY(xkqqZ|8+^xluS&F2QANc|i8i!2@g(IC1Pm z+og-VJxU|nA|8*doI7j${FyTsEu5>@>CcK>K9_0XeVtXJ(Fy^}`LTOW) zSCk0X|2XNoD`}od+P$XZdsl_{2e|eK@REhT+{FvsM~)uZxoh8+ZCkmQbnw8z_I7pz z53$2{^0a9;FpylnjE4qh&YIplwvz8|;Fp-pjUB3_hgf}@)>_KcL|APY>)A@QF) z7gfXj6}B3psBUyu3L{Aqz)ZXBcDPHj$Nl!Y%%Ml{&Jh`hNrGtDs(<3guRK0-B331X z?J)L-Vwdr#yk#`uL!_+Lx6S|};}X8pt_iqpw>~0B0z|CC@};A^>|!CXDu82UUmTgl z6mM=_>QZr-#=J%foXCi)V^=`_ROhNmE3f*OBsqjJvv5JeMInnqH6_3#OrEIRrAkvC z)zP+I%A^3Vw3AE4C9kklQxz~%LJd_8<8QGyLrWKi!b@HS9F9as047ntlMJI&2r83L zq%gl!y2KFeI2jVfhuBM7RhHB-Rfw}}UH(L@f0inojD!Rn#b5d;X9vI!Zsx7L_27j` zLnqFh%yo6vwM;E8t?K3N?}fSE-uAZE)6-_OELt>sfM=eJtv+d(_nh$zzCM7bZdp?x zS{h&`BP?j>ed)3ccd=4u^_XTdsco5DJ!R_hJDAbtUTQ6Ta&ua@#9XopJ%<;2l&RscwwC&Wf z;ewLk(#m3X7F5+&*VdL-)$lSy)@W6on8#|F8$4fNKukelIiEr-~!o)vQHdxNwo#yIM9it;m3hLWO(@O^ziK;!#np zI#S=}t{PAF_Yd*zz@BcNqv&kEa;3Gk^}@xAmo8npeCg5!-hy-aGLXxcuUx)-38Px3 zPX4dY{>S)4}ELQ7#sR1_6lxR|4p=e3oSCs+6N3d)iJMl>~+ zjvG7Y`s?Qu=6=7Uhn1twy}J*van-0fmkem4|iGU9})MzqUoe1p+OitGBzXvgVC% zdh2a>-1&{K|Mz2$J@m%6-23hC-24|Ge&4dCEv(vjjmYv%oRpGwp`KIEJjn^Rh_lqq zGPX`d|H}bBM{sx+w5%Ze{cV&aaHIgg|Dt2ja>(uQ#QEftdJy!xUuvM_BE!t!haA{>s;CePX4 z8Np1&fjWwV*qbJm_$OSGL83Ux9mO%E=ZW))pd%|bkV%@TGtv>nD7#ut%E_A(h#a8i6Qi>(bZN#cbFdW= zA#^D{no%$eqC96O=y;M;I}w;T=&W`VxFaAbW2jgKy9_yW3t%`PLE;CHy`U>g;+p8M zLQ^J+LyeS|ilamdM_r$wicJ2Qi_Hg7wEP7lm*n{fRlL%mN%VPx0$&Eg&eb%UhnPlQ zr6DkQTa+1DjImsvkw`}&g%Lp%TAE?-8sV5%D8rOIa}7Y8t!6+&4q$Z@A<0v`;^N%a zEjv5fyKlc`O;aOS_KeJfE-x<JTslAiGpWj1$-9JGnrhK53y2h)ZtZl@p35! zF-_u@!KK!MkAM6>KKr?^baeKO88_|KuYcX0&%2WWdv{;A#&4Q3g`;4_JviguW%E|@ZJ!K@{V<}F?{f5xoo zW7ryBsSz9F2kyTyn(6M!b)lNHM4Wcg@=Ss>W~eQt-DaeMeIhkRT&>V>PNv8ZtzsD9 z0$RA7qtO!wV5aZLhB_tDKuf`EdOhy%OIwp1hp{9cdImJlk1A)zTx5W3hsC1_U^yX-rhcE z-qf*81??RJ%xHK*xPWC_D~F?a=VSAjDh8boJ@m*QzyEdOuh|YO4>5IQ`kh;Q!!=Jl zvHj$UgHvYB&-KKjgob=PFrh^#cu{L|h;&3P-SDK!n9L0FPI!{O?Zy-op*r~CpT?h3 z6s2|ZMu&%evYq7z)w#kE>!huU!|%FvC3&$Jp-~`f1fHte<*p%8guZFy6m{{OFied2 zk9=1Y5RZdFL8$0OgL0~S$DXI^;E2|3BnGuqZAiud)YMcHa*cOwkC>?39x+F>5r27r z(VJ#=_$Z2zsaLW~0AGLvg8o3hGF6*;ZKm8uLP}wZ z?i@qGt!`KfLqL+&8C2h0>5@eR`$vuE2b9&6)4Bi`v+!FN$>dC>r0QY@>eEh(ugEUwTC z3-~xL^+95|(2qQn(GQiBS5;Jwscpakh#Tnb?dt03>|tv``-Sc+m(T3ocxKO&i>|wM z<#jLU>>E&Qv$n0+@e@t1Hn}ewh()F0et{W69KB)s83Qyivd*uorfMDW(>HPT%r_Y=|%|41V=lE}cxpX@7UphDQSAt{&s_AYEgHrHNAn~C^c7n0Yt+p{~Qq`2nOP_nkQVKh}a;Hw7-??ko z=8c;-ZQi=zahdOH=GH}$9 zu!0Nld?MjIGe3$nUqk{zEyz)=9vD{J|-MM?|8AauJg4cID`^1E_lkzHae&!M~4elgfKE<{H#a9GsQEJ zq);Lnl{6&sS*bt);p~)h7R-2$?)`th^^1S}_^0;nJ6cv&d(UfLdCx0eQQy$OSFMNG z2`V8(IA@Kfl@To#<9J}S7Kc>K~*(-tgoR1gNpFD;qtWDaL6-?&mndPloS<} z@ujAMg5H5X?n|6G!}G1j4j(>z?8s3P9j$Fcj7x?GcrSBvbMtlA%;ky7C46IG;oK=x zCO0(|Fz;n3#6759ZhG_&b@yr_#wATN3}4mIlX0F#vo;{iLAH#Nm!uHAiQrNRXuzZ= z#|T7^RK%4yE1*>NiVM^_6CgIwo*{=Wg2P4p6G|`@4TBqp2uw5xu?K@5HjkKZdYf!{Shqt}`T@O9Ho;#3b)m5{mO}q2?cdlNgO#(BfPir1iz`Fnu$fwZR zT)>CVx;hxr$6AR7U)*%#E*SEyRbtJU4d2OQx_1On>RBuFFQ}|!Q|q3O{Ka4KT{6CHz+rOs2k9Q@=Z>|8?YJ!4Znnq^vLUkg6Gvi}T=H+;6Cl@E*D@c9ya=mMI zAI`S}#Si}}dO2(42Md)KF~dQ+N|ZNWEcapO022qtx8oNg)r5V663z%j3K?kbYD!q1 zkXR2+a*+Q_WqULKtFslI_`*R!9Iv^OqRR6pmCaVt;DiRUT};tWyEsUQQe_&IlkgMv z#wBh42n(j-r$a1!sOwCPSSZ3Ud#4d1QDP*`%mTlNP&~K{i6uO}-T??%(pB2&H)}Wm zV_ifu2NhF}R-O?-Ee@jOem0oS`q2@Efz~G7q`}bcBMG6Gkv39QSsi{|s$VP?PSoUI z?yze?m6n|0Wprl&X?+7cv582N^(xG4#gk}}bd$hO~sC4!{s3nGeH{c>o{}j zXhCH?)A6A}9^xJA&%-k6}ZIr~c<(jtK#evl}3?Zo8|L-qQ0nNIC-d%t?(l)8yir(b{L4MTl> z9qp~>PMtV<{LsmxM^2wP)qdeb$4Pcg6y;d|sHm>4<+BJ4)m3$6WmP3*6}&D1=BiVI zfG06{o|GM1gWd zeS_ONIRIRjibWm#xN6zA60w8FtUqS(NFi%3oiBRP zOZM+Qs0$AasQ;4E@`}oun!5V>h6xkKFI+gkiLW@08PnX<)WFf$z{~$BtE?)oEH5o9 z*Z1(~z@-vbt{%>5pr>fFion&&hpPGsg{fNkm?!NvY}ia6ea-6CQ3b|V^QG?9hbzUT zlrLLqhOb~@-$il3FS-$dt*yg{j-1}UecQ$j>@e7V$Fe1}XU!TjrmD1r^{U+DNmF6g)zwbis*hE7jKis-Py`foP&-Dn zl(rFC4FDRe0$%qFEY$){SOKe+6Y+#QMGAg6Af4rBQCWgygtOFPXbnOf2=|cc!W5k- z=V}**YCBX?qcy(Rn486T{v)`K5GeIj7Uk-RxdKC@-p@+13`vKiay~dp!(6^%)#63V z?|Kk$d|xaaO0)l2&AlByeVQEzD>vi5fzA=L!#Fl~x(lR7CG zxjYXU#Szw;Soo1hNY9{1Q2&f75{VpPxWD6g>n-b^cxwB`O*>}Kyg?tk%xZ*`JS6}` zPRc$t#&l4ibX+R}CJ%zGBSVvqs4~mc<=hBa;V3+kNnBQFR0+xZNPNZ2GAK6NK$niG zI7_LXqcF}v>~lhmwDb!asi&e;oMDChESDIBMb7wS8Q|zQbAw3|EOE6;$+JPM>IjQQ zn5C2*LV0q)Xyx);?NZ|l>P z=OJ0GN~NT~5Jt!)B2&;*nVABsOF=u82RPCryo>{x?E`FP%IF9h^=blVehoq~4m z_zg9TtCKhcj!-!QD3}i+h+cpIrs_1@Mfnm-GF&*p$l1gs;{YrVLE*raj)tbJ2@`dS zCzm8&>5?3nnVjr*ltdT;jRN~8go%#7@C>Cs(yx(S7-W<=;jSYOPqnME%;Q&aktG>J z_04KbT9YnryOMkA>CL58HP^3Q6CvtBFV;v9R3?-htFFZ8BXmlR8eQOYl#(Q#Yi5Op2Ry2P6xK&G*FI+Tt`O<~+=g)4L zJieh`Z{6e2>ISzp26?3-_tm5ze`v=DK;jvDX@0HB2m0-XDP=4T<&A!14wf(%a(FnF*P_)EDA-#tC%2ouP~1c zu&VX2-8@!@sR~30Z*R~&9!C4p4t99Q)>${jHr5j0T$NSBwnWt_@?2SI!F@k^`rbcy z&->o<*5AM9W$g0!{ttil=C{7Lr2LD|y?sSrFVEEKtM$@A11COEk-PTVYyS0L{&nZB z-Pc{Wga<*?dQd`hI&LQBcs7TZpr1c;th?i4X~o!Hjg=fOOj9-IK{tX0ZVntVCdV9+ z$%zN$+VWbYEy}K%xbNdz=ILgYtU#XrTzk}lho`m~Rp0|9rLc2!P#<7BZ1p2MRE)Dd z^2L{E28nX2QjwC()DfzbHdv-4f#fBJ0i^GR%lD2bz}RU)LX}`{V~bjxk*rvOp?VeZ zASeAT7eysIw5NbVMH0}MeVd6cVS!oQ7Te%?$vfl?!DOyPk!)U}vOLH_+G2lpY zLV9T7;^_3CFc$F?eTB*-&WD4PnX4d--xExed%nTPhxk03wF7x{l@T{vvmw=^BFvoV zVz5OgRG>Ft$G}h_8@IebgESP7?i|b?_j?T)CSo@EI+d{7T0Sp zVj=^-fvfjJAXCJuzhntynprUWR4~dJ6nSM{0U>R)bOAqk+pkps_rGdV1fTJVSjmVZ^tNbsUXK zg=N)E)8;l!owJP2tGm0~tH8WU_SlKzNBN{;$C)D?y?f76_w*?hl~pyh)zwU-YfG!@ z%FC(?N-Br=dSYQw{{Zcp?^#kg>>8=am6o+kZz?V>Ke}_nrl%ielT=YbgTh!_LTDq{ ztpG$N{y3@5_>UhD1WeJzua#DWDC=%V#Ko*rlvkX;&?-{hk`f-w;3)aSLzNZffA!ZN zVRfLqvZ6*uHF{T8R+f|&m6R0ltc*4#&|zBuwDe|>Qz2Zo6j`h_Xd9OmlP-!qDWQHB z<-nlPNH+n1q>}(@UPZ<10({hO z6%_@G7EW5aWa4XI^IRTJxNxE4FfXszzJv9GojZ3OJ$m%OzJvFD=f`{|qq3o4=8PFD zmn>e*dPH$mNp*Gml}nZ7?8YnZ<0G2vLPSrrlNlJt!LsG) zRp7V{Lmf5=M$bo!b1xx2KxMsD=d3nt7NmI%p#V}qm;Bh2Cw_4okxqm{`aKBLp?Hl; z%EDFuOv_1m;ehV78<&_bsQgNo&YA* z@3S1{Y67tmLU0rOS(8&cEAp4EtjMC7Q5v@uyky1F7TLqydZzeYep@oF}NCM7e zTQ3Dkb_7Rc2sDbll5ow?o>?Y)RCA&dTBf7%0-Q(_-zX3bfIKW?Z;gIix~;?L5qzbx zBODqkCb;UxV9UwtuTqs{l<_O)ayV@BYDJN8T`V#eqKoN+D4~tc$RpO&VpEC8jjKd5 zB=L(Xu@X|7&eemKz=tR}h#CzGj-KpwiCiL&xPK4Mq=P#@p<~i6e)6mwep1eoLoKTp zk^-7S?6)}uQer7AG4k&yY0`si`pF7{RDRAgNxsN1Li2p7z@bPepXq9Np2i8+xKi## zZT~1XB<-uvD3s3VaoY%Y6&YEj@&w{XN(0rVMR`6MM8WAQ9vM54s^I^1gs^8~C8#|u zHZpC*yiizq7ja4``Cs!JAwU)RONXLh)Nxfv1RTvZ{%1T{QBk^m=fS&P`o{TlXFdGO zFIHDZwc~LOM-v~#g8ZPNnHl6gC`lvUbVdl`PeDSq?gISIBjf~numm-@F$VE9IZ&iV zLJMY$u{t_(pZJfjeBu+Izi_E*_WXr!dh?sFyM7Jhya8Tq%p8T$t{(=ECWv90U5Hy6 zvuL=ZH&px34pU9g88&g11f)?2hSPj`wG|UZ%}Tk{bB~Lyr#(D)dG_q-V@D1iKE$h( z4xBr4wx5lUyf3VzxVpY}^27;qX3t!-U_LKWnmv2kgmLw?bv*Gd?=ZSzFs-R2wSx$a zc{K}j$7{u~63Hpw|6=F2$p=?io?$V`h_D$^Exrg@%96oq_-@!vIEn~m? zoiDN%KrfQgv`F^gX&g{hnfs@I`oiD+{l9MCvAwAtCc2SmrMyK`TW6Wkc-*e>V(5dT z7;?c!aDvltUYwbDc(li(1h?G!lJ~yneQ$ZwEgciQnk9!J?EEp^)DuHQ*XaE2p07*naR6cvQbM-aX{?Ys2{lO2tt*6IxR|h6` z;EK|c+zVd(j>jI_^|IH!ck;{?ojqzR@)qbwCj#-_+0g+118B1naI>aEk|%^ zMRy<^VYxmbPGbll)JujVoVKGE7H(!$Bc7*;Bciv^-*i)FRE*;$P=ywin+cIgvjpHZJ?d=<`EFJ2)w13z7AKiV=jbHfeU-r=Xso~0P zd^&gM-m^E~@bcSU^4b@^{PjJ({e!&2^YZz#XHFeCy6?#0Lwty|k4J+Bd-xQ^S&0krnVULmco$^tA>V^_e$qzEsoK$9z5i--9Vj3(xKoSP}@JayuvNqp3%w6qk4%ne!7K@2CB zONgF9UUcWZ7Or*t!@YOjDXV&kI*|Ky@ZiK?e@|!Yu!7*Rq)s&->57WB!$!w=twIR=&xQ0HZhS?jWBVi zg~Od|HCK#c);4m(y?wdUr>^YUwfE^wo3?J*vH#$qb9@qrCnl)mBDQ+e6_->_pS^JU zta&_FGG^>}US?5TTp|y!RSc#C1lr04;clPe$7{SBL&V0!!U?U5QriQ>d^$o;1q|;vkbpM zKML?HN%0-dUAi*7V$F-V(eu-ve7&xwl)X!#qZRlqs;l|R7O9Zbu%WI2$Eu0*iU}t? zG2#V5GLERiKi5x^s*=Q65SQ{}CYe)J>mf1oYUpjQ!CHLfb^WPA#8QfjXZ{E^jS4Js zA&YE6bv2A8Gb^!h^<=#B%=3bD1sQEgNVtlVWae!V%e)RDJ@JZ?(Uh6u`B0)TQ{UL) zYKYsSiV`n_Q;&i>^M{kd8Fl!IO+f-@DYF=bmQOyjAh|ut9n~2|2*!76kjdkrlqw_S zaY2&>QIQI*Q5M?uCJjzb>J&N#jq|=p3O))k_y@Mm>bdwCg@IVZ%)%KdqOi41qcH^p zIvOOZ2+UE62<;ii2qXoz0Vy508Sg-qkUSB(gwOs6GvPO1<@HKEO%>DTOEr0bl|GZ`M zj@rhtfAHS_^WvAhq@tp%x0k2D(VojDm)q=mSHxW?O~PUZr7;Me*XjV=$mpJg?yI>n z73e$ph8Nwns+Y$_(8V(i970v7qt~b<)1P0BV>IXr zYotGE)t?d`>%s&5|I?rS)K|ap zjd#7{)m@!1##n6A^QCsCGT>&?eb z9G*OTl@}`*Afkxwc}9C;ti@27e+mFxjBYUDFIBY1SRM^R$U>BE+M+n<$j}v#_XwB@ zQ%$5wK{*YRaj#e!PosOeNxBWP5m!qsk<&%OlMAu*yb?saO{_$v`^tdKNM~7q5^}Xt zcvtV@qCh+aQjw-qjZsvru9CjyDrFJ81@(&VP9Duo1_3#7i*Z{;xzz$UeJX({8~U9y74)KIYIF-7CX%vgKf zjDo_udirwb&i3uye`w3L9qTu2*}3z;$%9Xv+5HI07L?W0G>w@&b;jhW(iiHBlYN*Pp)Kz ztWZ0`J+x4Gs>x8*!+H&&qk?=?I4l%X_BHCkOgchrMerI3(f7I)fD55rVj`3lE3wd_ zsN+ykia7Ni>abXBFUjrMbC8etzVHQi)zxM@5vX4X5FD3JIN)x=8JHG~)YHiG(jAs= z>C%pE5NIJ?6yg1aY$d=GwC^cX>SoNm=4CIv2J$N%IbJ}yYxmymJ9ci_vV*8Nd*;H< zr+&Hf=?B>$Qd!?PcKoF2lNAq>TBbHMkFO;Dw1xS z`(6@+3>&HK?hz#Q3Swv+Ito0>wTYb2E6a#=)p_(}1Uj0Li)z$I+lx6q*=zi{G+<3$Ceg-1e^lC&H%Kzd!id)hk z6Xp`U72=H=_yQy(0hBZ#e4HeOk23Cgbc+=V5T#Q=0PH7|s3m1C$#{@YF=T2;tX%LB z%Mn|ow2l$(CUr~7V2S}_WM@T%sSM9p1T5wJqiAvrg#cmy_Ti>tFvSvyvHZ#a6>;)e zMVUgvj%p9b0GAj^$mUw`Ot9LoiD!o4R3t?lt~kLpnxw?tC%Y_qc=6>;2@BO3Mz|B zu>wGNV#{!Y3pYnWaaoBj?YZHe?w+>Gt*1|)I(n3M3LZLg_%I{AuFI`CKM7e}RWWhG z_@y^rvt-GVMGF?poHb+8q~^L>Cd{&uoy82=xdGADt>Fw(Jle; zSb%g`b52;H!JPf4s>?bQr2^IQ5J|+ai2lSaTQ#BdELz!uH3Xx6$v>ct}W({5= zhS*?Cy!e6s0v?DcXlv^|dGh4`{rk7=*s*=fjy(qs@OrDk{(_>i@(C?1^XAO`y%)b^ z!Q8nw-?ZkZKY#SWhaP#!i(mSN*WI&y`>w@{CiV8XCL}kiNcRcn&6`tMU;mqjA9?YM zR^@maP~jMLMB0ZHCMC-vo(+~|GFg8fo7smNyKDJJ;ln@u*Ek8I*z9ol=;3-sqgrEP z+^>DwEF)A`5C8r>zxU-Yf8z~re6`0&nnS@_ErtCfrF;bRy03rz8)q-{@qtO{&9j=! z|6yCmW5fkF-FW@q|J|og96j302PX^5*r%*$)9{_mI%vlrNy8&eY19&>x=xI!KuP1^ z=yl~5MXOYnp&WYGVHl~X_Jmy2;sqE4m|0ufnL+@VUizRRt0Xaq@WkCd(!@NV8V@qZ z)M^A*BLX!l1x67HQj{aHK%^{}O!osRzbicZfK~d?b6BW#?m#{EaM?5S*D#8 z;=^s*AO7(E#!1uao5uI?G=gfLnkeYjT$(vAHC$EKR9!b_>VlJ1eW$x&8ReSLh0m5^PY42yy4-ynIfJ%(Y9m9uFadaZQiPe0$nuIf6Z5)tU#Oi0S_xyff~}L^SiULp z8z%xEn`IbJ|OZLPh2wYw9)pizwJezjijShZoG6Op~ke z6|7{xdU(e>f-xc%FBJJ;_Mujv%&RCXnlpFef&~*_e$OpPZ)?jPJ9>8O_H9qE-?(Ml zoQP9N5&p9ygnmBBYn}!UVQz!bzlA3 z*M9x0pa0>@n$G=q;!(1MONEOl&KcNc>13sp4vJCGlzb*6k9Re< zt8*DGvhxCfrGU;@U?A~?18=%%?RUQagU26#@}?V?%RlmGsGaI9Xyp+OyFn0DlA=1v zHr$?*RC5S?q3TH5xG;2xb5^EYh!8|+*F=a29#pqW6x-Gyu#7$;B?N|^3PkB*yHvx; zFi4VCf=M;-ZA`!uS;BF#SXolY&NR@keI_O%Hj=msS$P5MCL|;W1s@d~VT8`8E>$xY zi_E>qkQwGWQZE*kM~cd!0R@(%Rq??UnpnXn9nn6(p)6i&asO7$5Yja8qG;E*K^3Je~02=*lIT6bM|Kld-pQdG0_-ql0Mp ziz8p00Y>YGYJnNQ;a6FhQH5(EH9$(sp^3^D*~C_C%qmId2jr_2w2KmFU7rJ0n2HSL z!Yct!jQLSfA{zlJWeFCWiusZ9L0~Oa;Nh6?B{ayCONStsnHgmREz$~!!dyAa8FrEC zCJq-l%A`if=yqPRB9wueyc30 zJ%W)5iR!hkI+>7KrAz0t_MiIC|M~Y%eg5Lb_Stjiz2og~yLQdByilj7w~H|V5At#| zPS3)tx_ERzj@CbjHNeuKf(w@(V&-DZ-f@PP48(>8_>j|uv*%e3ICkjBf&Kdr9XoRF z)S1DaPK`>63My)=Cr_R<_me%*H<{KPc$J}FT7&( zsAm^F7H62C;jE3r91<~Xkd?_bDx(NPGiNEG3Kv5^jHoh~<`d9H8gN7sb1`Nt0z;$_ zkmW+seM^4W)M}V!UyR^XXf%~U;;E2sX)vzfK6W7=Ak-|br)&7=iOYu%>$`)ycJA1< zXV0<2N4h$%5UsqKYufZlH>|sE*b4NUa-VN9Bd816F5*}WDnMARx`{SA}?ON(A!^7U9Jfj>gay+ zQ0|V~ZvFgczi?>(*?Duv@rEY(N6nFSG+y|gyZ-t$|Mi(K?ApEm#&rvLQ6ggt2KHj@ zS98suKc{(2^SLv}JKNi;YR7BYfx6eNK|NQX@fVK7%O1qi*tIcMBVcA7sD@S$F!FS* z@bowH4^;9X3ln&dTGJ5^9tm9Z3D4L9>e)O zFav*ikhz3W@drmBqqc;JPSYfE?wMq$2Oh`c=azjd@r;_@1fOQer zYFHS-E$JLd6HP;%3AZ_PsWjpV=eZsgd3iw@rPx?eD}&$YiM-WWZb_;TGROo^J%DNe zIfRa8a{xfXCLi*KD#`%*f#DO!4|A`vu4!ChaVf7*EiEeO?rQCBJA21%%O_5#?C#NQ ziSXcgnv&w;J$ujY-hJ@KyI#j9)4F@~xILV;w3S}gDMu28EUifn@RI7r3A39f&sluk zb9hfdcSq-i3#a*F!odT39^bIQKyt=>m7 zFhGR^)f8PCV30Zo3Ke^@4E|aajn-fs6w@VI4G9_4(*Peau!+1Fc+rA!OBUbp#@F7# zPLuN&y7wPAw0ZM(-g~)Y_d(t$v}4o39UC5|MV3_8jBOr2nRi)CnL2s$j4@-!*4Eb- zm6Wl*tM~b7!3cGE!;Y?PNR|Hb2+Hc3?D|2xoF~z!p|kyD_gP^hMD2v1l?DqF31cN} z9%zPUnBc-me8toWT&>m(JgSER3D-KQhy_nBQ2je7R58)b;w0&(k&MX2(funReZ`i~ zbk^3_zURI7-gx7>|NhFC9(-);3tsZ3xBZ`2|Iz#3QdiAoAy=YysDH9geC&8J1*WqY zW(nt>af)^%_x=BOjA9y6^5iyGxe*i%(sJw8t*R<7e*Cc~dV1f1ABKi`-4Q)4)K)jq zTYuT(yp1v^nMOSephENJ#G$GQs}&6-A$5uHRe8qJ3C{}Oyp0j;oD|%gEgOE4Cy1~) zC!~y*nW{w9sEm9sHH4RNgD_zxPMLV~fj~IM0H9x68A-8mB)LeLkR;NKWE8c<$}yIn zJR~4iJ3OMu-ZD<$sZi|HY(hrp5i%$c(5Q|sQ(6Ntb)jV>orI`f%>*P926bX|P{j^1 zl_Vr_vzR#NO-l;p^GTSH#gD8QWTr{$U}%DT&Xt-9_)#H$p#swwx(hmUUF-Fgl*GhU zZ#k+^k))zfNhRqBLxd5+vj7Z_C556eNrqi0p1hjJk&foCgf&qS5NCh;B=_sM+KmDj zoRN_;8y93iVf?PNsYjiH-KZ!PA^vv_gvwS$Qlh?9KEfc92|F<9Z8Giim?F;uDJMNj z!+g?cYT}8Z?HDCZax>(>%4_1R%Q$5uBekItmqrmuDc}qz$E!G40K)z2^2i9s|5AaO z1zLujoMtAn4@_Om3Wv)|a@%+8;~P#luUk2-rPi#(CUZji&BIl8)nTo!f=Kaaf#z{s z7B~r$pOF-4V{np(GFFB$#$*)uy&pXEkN^0oZMzOu*N=VcJKlBAJuk1UDDLU$a?QlG zEjkQ)1r|C~aj-7t6#{-{04eF`sK9ybL5&i8RcPbd9zXz_%kTAny^`lpK`BtFho9MvM#SSS?5aO;UQr zP(^9YvcTsrvEgef(D30hJ^ioyx2>N8hGW%bQX zyjSd1uX)wtC5z_Hn=@r{OG6VIFT_k^A@~jsx3~B5gvF;n_mhu*{GWgPgYUIWVi`2I zYQ>WEPp#L7&@_UQc!orw29N%hl^0)k-I`DR$A6wWb#ZD-lQff+oR!Kq3VfNat+I?_ z{9RaDrbkY8?K=9{lTThaf2p*rZ1(Kgt5&ZXJEpv=Thmzd!t3gDb3?q>YR&3ZZEfxB zFTM5Vg^bBjodW7~){JQt6*b#;?_IQToZfD(>IvxuJoK=1`4XPiee}`CZ@F=PAChq- z11eRz7M<#Ai@3-6z%MqRIem0a{di{H8ZOEyB#^EU&_Q0e?|r}5cQD{Xo~fS_t|LZZ zve;g7unY;5`Ij4v^6r zkIaVy4MXxnIDEtx_WIKizX1U$&{UsBmE6Fw?d0TB4zpCfCxDK zcK*T{?u|eHdACa_6#xaX%`Ck%_sd^BI@njRaPf-1_&lT6ZsAQ$$)6l3qMO!Q3sWTz z7wIM9`tG88qKbSwi7x;EAOJ~3K~(Z_lba??U3lG%cMkS-cXggWbL!Z!LwgS&+W);D zJ^tNq{EUYYO6qG^s$IEy>6#TQ7A~GQeag7H8oZ$S4;>Z%rlP2e)tCxoHc}O6@tc=c)Zq|4J{AZQ1^cE5B`iwam~BN@D*4xis!@KR2<9-C6FQ_ zyodlHQu*{lO&ymjK4Dl`G*14}#esuB;1CtMx>af6Lsu=cq5xisWK2+eCIGG!u_e>Y zN${YM`W*+BC?N4a?kDr2icUV}*v01@`FEwQ_44J*d=``5x9v*nmDbDcmo9g1*}Qei z)G0G&Ori%CZ75(VxDNNc>b39Mv~|}KeS%=|lEsVW&7U)ILS0#fo~ojgp|czs(A$Be zDhAODNIhlUJE-23=c=f-h6we1lv@ufggEf^8B6i2dEA zE*U|=d_rOF?B;oMr|;Rj@5G7A)222I@kTglh|p1TVJo`42a*hA2^7xNubWd43ZDHX z!=#*9j5s~C)j6bzNlFs~Zq0yn7$?x-5%D_;IgsK^u_URKXbQ$bsdDENBjrg7Wb_cD zj5z4m*e=U+7-gjBU4tr2jLgcX;DA%I!_1rsSmw_lQ5TX5GsIERL7BA5sFhMvFvR+~ zM1&?*f!vg`^7}}71T_x}H@R(zvoW&MsF2AQ1;3D`vnZ0cOco%Y^UR{!Wi&@Xm5!(h zO9Vv~f#9amIA7eRFU(_8pPAJ`Ntxw>A!#AeXGs}-NR}10kno84s$fJbOP4@_ty}n# z4F3{d#!5g@>y${$Es%lBcbQ*=kh1zUnaM?+r;p4t05A>AlyFAvQMyH0UY4%D=&gb{ z2aPqS!0vPV367#q+=GN%SV=ZR;a8R5Y=W6`QDk{yA& zIK&8LBug?{U#Jso0#WIF3M6{BR9DIWDikYmq+}#Zxvr0ZO~ZAI_c<|&;T^?~Kf0df zdFD%cskVjZWr&4{@&KiO>j)ajHSYh8ENW@!Bk+|ZrD2o3KLWKC)>}h`g50KUC;s}c z{_p*IuC?%{TW@>&JKr&V+B9~i_V5B_%}hBJD=s2vLJU_wk28E#&Gq;79z48v&#v7E z_8;1Ra39ZxcJcw_K`scqD5|Kop?=BIc?;&xTef1!!i5W_PMgxuT+Pep6j8csA;x^e z3FkT7IRWMptT7yEJ@f1ZKQ!=Yid(`AO$LkjTDUH|c5j5RZ1!-~cKM`IneLki8o$Jm z%3P%Cqeg5P0=>xX?$IqIt15mO7(fj-B^iEd{+ z#bcRUckbAI=-|QLj?1v9s;iwbbJ}yCbL-M2i|5Uo$IX+bF%4y9iXcjPix?AWZrAhf zE5(Z*dS|FRR9j#E-`{-jqaXe2?|kcjX3nbb?8w#D=GLye_V51wU(THAo-nb3xfZ@- zVCK6VD2Nuhb!%7u-+%iTUOGK}#tkggptrmdPEgd^E}6oi$sm5kkG$Y;+xF9c{jq-l zeeRrDEW@Na-+3>t;B)KRORjx0AZntAjvz9` zmvVBHW*`c65F|y~fvWrE06ZQt3{3+thC5r&_FOt!TF?9co2b)*;l6?a9;-i5Tv2qx4L9&Y zSk%z6v*Z^s{r<`Q4>pXSHfHSP?p_`Y_lhO=#7D`;|cO%o^TPV(d_v&M{@R9QEsq^x?V zpp;&QYlY&*b2z5ZvQMoNU(z;;_zW&Pvv_WeFC&)nT?5_k2erSoGes!trLkf1zQQ&B?;ym;ZV0fN&Tm{eS7 zowl5s(Dr`H+(W5jb`{AI`$>G&Z|i%Fx&EHvuCAf3uC6PWuUu|xyQG=_rArrDFI>LJ zN(32>*4EaxHlA$g=#^_80Xo}PlsZJjsXd|fp!AmCDrO^DYb zGj*rHIB?+nuYR+ks&?XU9zF1@pFEvo0#`abdHRIq%NAa{YURomOJ~fOR@YQof*E+; z{X9m~J*(eAWLoi1g{TLxbL@w#t*AZV1~57EObU;?6y|!gX2XSJ=G2;bv#xphORwqk z>yVF~IJ0Bdex6I&x?}hL{cJYea(MSvg;hmWeM580#Fi;jrcItam51ya8k_i12JK;x z@M055OtW>xQf>L#r3zF9@f(V{+SIj4KeSie&`*Jaa=_GCTS=lCG_DkKkRaq;`r`Ob9b9 z(Cj&-L*h6vHK}7;0{D!xP!m?*x?Bp-9^#6KAcb@g0^%(g>(*Vrb=y~-etOfKnYZyp zY+)omYQr4voCJ%*DZ50~;&nzfh12hEOR?k>q7D5VE9?dNCELL~2+UVWz(jm_kwfLPJX95J(&>TOjyw$fL>m!7IxO zBPo-SgvLTJWhNqHX?`veZAyrJxX{s&XBw<^MOP}62qFQZG=5y}v5dVy=<#WzBr`l8 z`a=yg3A1iVjl>;3BS(;gk`_*pU|CfrBa zWZa!cHY?6J2|-E(2a@Jsv1VskkxC>PPut1$RwU_ zGLE&(34xpSZqcMQ}goJh(woQe4DU`^l%)7nfFCd)+F{3e;mi^SD|k<*tUL z>{UuWlgCwgYaxFolE~9fU(JFJAvy`}LR`Ak|4;w&pa1ox|GCmSIDO{)x4!MoH{HCJ z;b>29yDH0lxQ3QgC6_ESViY5KBmwr}6TXlK`s-6u|-8X_P{iW|pGm_K*H?YG>#c>I@MjB3T4QJAzqyu6L4*=0M(E4qL6o89k!|A#*N+5cR1 z&9v?gy%(^*zi{=+m3($`=bpVSlb7+KF9r+J24dMh#J#)4i{@8Wl|A|7lP`SH4f1g+ z2Ss=~63lfA12!gCixMq%NH|NKv$d;4>~|HFr0bk|J`Og-Bjtf(mBspE5(F3Gc=(27je0fT|k z(&C$My7@mp{U7Jfv^O?aqajX~|22(fSed(i-8Fne{rK^H1AU!^h1K2z3$>gB5`zq@ zAwSt9uOB!Ef5KP+EJU63a0>3#nnt)*Ig(OLPW09vd#jBT&R4%kx*eS z(O+3I+|haY(y6oUSK9h}yLG!-eG3quiSK9s>_GouA2q~pKLcLlf=)5G z2r8{8tEz68JZ;we#n+aUFfL?RXan?k3bMhr;EHEFDf zcf?ecKo98V8_pGf709bPr9Ty-I_^O{r391*z^)fFSJ)(dxU_3JYKEN5OBSdxiiy4L zewji5h*A7XV~dpnPFW}?2>?rQ#U5qiZB^X^7{SFME7|T?071y6Fx)9Kj2<$C0?^Dv zY&~(3R|VPMuB0hBZ z(uU1D*4=VTug1uB@uYpXbhBkdsruflIlF(~?`6$5*V)t8 z(cZ}(hql&s?)P81c=_Um3l}c6Uf`vR=gyzMc#+9J6aUVRPL?vXb06s#QBus82=uK) zjIXP!Z>*m>ZE90veRK1eF-^^ljSUTT4Yl>vHPtnI|FOKHys~n*y1L*?UwZsK?|A!- zH{3w{sJ?LpPM0lup+-q*Zp*e^1D&~R?|OdAwD~MKTs(L3+_@ucC;8z|*Z=TazswEy zl{VE<(bue6cFpP)3m49BncP&vMn5_fmV`7jcZ7LIh5X49w${f9fG{5r($tz%818iE zKsUl$Ds}Evw*s58;=(zz$1j{e{uOuM0OyOXyu9G__HBFEiMDmeuER%;@7(tImQ4?{ zz)@IMF=pI^Dbr?7n>lmZjM?MHPGl1Y9C#UrDobmu$h6zk_@r%!*N>Gk01YXnP=9ib zDBQ{vFhFG*RZT+6$_iS;0b-tpBtU|b_!1JFiAMNpkpgZ4$aK+(Bfn5_Wc3gQDv~(X zOyoHWl_qA%+aNnT1}2Q3@MnMa=MO#n=-0pY-(UaMj~{&Oi9h+kJ74$e=ffQ#itw<@ zoWxCs!~}wQrgXGDAkxg_{tZj=fIOWG0|SPpiq26m85rg{;gj8FD8+u{^0u3A_|$)X z^^r#&d(|s$!%IYTxHo95hFTlI2$bYDss{-iSTbUVI0sw?sz90>3kKqB!{phZGIGKb zNckv{mr^BLl_<%IlW{6ZIvB|WVv_u4piTniIY&|*tx{qfdJ2cb^k@-OBxJf72o?tf zSMkd-Sw*Fw0XefdVVDox#M3f-N``0slg)rO35A6zl4|l^)I}aetfZnbO%-AjbEzS2 z0%qyNI~0_FOc;n_V*>-<)Z&mo%q@84VIH$>kJc-SE!#;>QJhcYu`O8O(bb^RJOODr#iYiz<|+rIL%LpdNY}i^ zQ8MBP(M1oF_l2!6M#d%>CjNQ$W*aC`WF4Z?opi;DHi;9^A(Q$*m)II}5vDM7R@!<5 zeg+Uc0tPInl@DC9p;6Fg#VS=gI~1fMF*?6u6z++1h8G3-Two>%c5yHf`7@BN%7=Ox zhKo4Ks-y@yyHsag<`VCSCifz$KU_IfTvT@K*u{N&4~-i;hOfBm3aDXc;w^QuBb3S@ zd6a~jQDoRx|C%-cQWsWHk(72)nLkZQ7`MuWGE;K{u93yeycu+OO2n=B zOP6vdj-A|p;2>`^xNzajTi^QHY11d@CEg;@!39?AA~Px-uF;e*Uj~jVmtR$o`Uh2> zMmHYT8PiJ&s#RIfkJ|^cK_*{f#hH;X@8vpv^xW<}`*{)5=FMC7?c00d!ug?r-jdRi zNt4DeTC(8PueoQ@!bP*@&Ky5(T(#bX4T-oP#L#oj+*#Gtbx%FH{;uaO<8~7D zGs+CMy647@D_yu?&f`x$$(96ZPA#YcIB9&LGl!h73@12Wy4?4H5B}-j{p~;8am&2! z?r?&9#{DWDFdozN<(ItRWgDN~ckPp%6+|Ga(s&fD*}wwD2{rhjrc-k|Dd&6zP~ zV)MDv$2zWDtgfr1$cq*5;Av#ppvX~l6FD+Is@jf(hi4Fs-EFS()19qkv+9Nl_s^YOzwpL5qM zi%XjZbnD3WSx2VRFlBTuuaZQy64fK~GELWb2jpx*;m$)aSKyjflKXhm=krEslVl*`27?}p8$fD7hlNTdwN77$9*$uFz zH?c(~GE+q+7<%79+`%ju;9mW3NpWp`qgGzo+QOp+mroCOUAptGSMn9V!7hSJ+7MqA z#lydR=#l=8-r4gPv7RU=IfiAC+KUv@5!Nap=jfM-gmnjpfe|O!;d;VSie!-#(*70V z+byNAq`ZE@wEC9m^KZC~2gmw4u3R~Lo=?vnIdo{>L+cOy;^!NO`+Ev2O6JU(zI^Gt z6^j?HT(x-ioR*Rje_jM9dclfSFE8jyvbYl~oaAV0r%R1o%q`^^)5gr1*?jlQZeT(1 zQfuF_BPX}*+{GH}R^D%S=;@O?A5sXGRFyV1Po6w|(&U*FTc(a1H@UiTOl3LW5atmB z9x5$9eD*Ax?;9E#kghhsWVpYlz4Zd`U+nGeQ@eJB6J+WH90`~%?}Z*XOVOaJR#K55 z=kg9&6cKz)5pT{Ro*D=I51=p9OP zESs|q0{{4<?sFU;TpRmE|j!Y7ZKQX!cH-5fxFxn>KIDmDMy& zn9-N3DygZSP(86__DTY+x0iP{v|T)}_XzJicx2Pl-~Y@fzfn+@<7I*?c&p{A#Vc1V zo;_=3Qxh-5@E$ipkud`vbqvaH{%03OMsbKEDVJb{vsRR7urh?MoPu8V&EQ=TRaX@( zUNm9((h0A7?JYdE#%+v)M~?1bypb^`FKccZ zkJWI~1}3Fk15_mwXxE#>QvHDx3epzAQw-2^LB-AviI+q1BES4m2nj6YRw@*z!WZpD zrPgdwLUSA|3aN_>CE1tejLNB2_nF#-GbZ zk^-lkQ*jc#x#Xz=u5%cug1|~Ce)tR%IuR-?V{O>5@#4jvn(AU+fojV|O4KM6+*n4a zrJPtPMmXf1;H?VaAa9hw;Vj?jFk0X!E6(D|e^M$;UQwatD#0NVg{6^#EU*p3ThhQS z8#Hqj)m4XxbtvfUULh)zj<6wgOW>#mm%CMtAO{*HPH=LOtT%VnEQNvZw31miP^^W# z>&9+M3rT2+bs`f<7-(XQP^^og{<1R(TL#czVTeCxg_=|vbtGy*-P4!`V4ww~gr0{+ zUM%%5+@yMPb-R!<`CmU7u>^%e2_kwYCD&!im`t?v6%)XNd?qZc3K^h;*x(iBS?ORI zU@Q+_nQ9`7qLH&TG}>s67CeIFlu4yVVjC7-jg%w^HLQAOG5!K%Gz*P#M}TEgI=V_n zlUsgLESM(_wo-)fP6|M${zCv)kb@vG8>LwCc)kECD}a;~T6Vi7>y()sNEw-PHq5F^ z1zljnO)7*e^y18saf)>Ca=8k0I3rvW$FJZ~o<9dSLxmXVQA#FkL$sm;Br#pz0rBqvB{5v~uFRPetZA%7Ig zXdwYcIe_LG0;GtpJjYJ7|LI@+-S_T$pntgVy0tgG{q1k(MnO++cXxLu7|e*c9>xU+ za`EMwCy)kAy1Y?s?v`Vu#Am8!&z=R}RjZc$-rZ}vdxqGnIxy736BcN|E?8;f%cO`k zc;?+hzNm?n7^z2~j12$UAuPg*>~Usk1bxlqTBR^ zd?2fP&Dy22W=|j&wIkbXs}v5It~G$N+Yo6YS^B}Kzzl#c>#Ds7!l*Kl1u|d;L#1U! zY?5ee8#;ON%-+5GH*MOq{^?C5*zJiS)pd2#r_XrqbM9ElPTYm_c>x!15a63++6Ji) zkL$)uuXY7XOKO1~v6YpDXHIu;-;5E`?Adc$rqnVx?(5Sg6geCPrGgH=0Ku*MSHAl7 z?|j$WU-gPxJ39De0Mj_#yT-|lP33du%z6BYC;I!}s=C2gQ_EWVXvm8TZoKJ+Pk!># zXU=txYp$SjqaT(h>>G)~T^?niAYT?(|I|jd>E3knJnmtZG7$7=Wq>pmaVxB|ix;Yu zm6lO!cBGV4U>6jyYv3JkyXWZ1Gp~HrYw!QbcgHkToH%}Q{Djhr7tYU|F(riqD%!Qk z#J6ldoWEdRc})ecA$acd)~Lo*Ir6VX{V;?9}Sk=7Th?-sv(9jF<5W4#zL0)HxHA}giNagHdtO`kJwqZnvS@e{! zz-)~a!6+{pe&pxh-@D;~2`%-vyy*71GiKG)R2P-drbC*NVr;~ZFnbMpS6!;pJ4i^MJP&%#Bb&_n;Mft)5p1)ku_s(t{d4pn4q;3*@A z#}SoCIym@8^%Mj|Hx*@d;>#nte zwoL#4AOJ~3K~#~fpjHfWDu8_W(J^g>2`vbukT4`eH9!)Dlown)Wv?=^(N}PnP)K}g zVxVVFFwN0bI@I3AJ>+xV7G9$VU%0tjFxYnaM6S5+wp(suiAmAS;j0K8$WMRt%hJY) z&Eux_u;D~^K_p$VpGhH)p2}HWrIMj?4WAZKNm5EpVstv51^~n5MP4>?Q&S&XUS3-< zy%OY82s(thbIFIPOsmk|zr^Si(K=9j-SJlyd|e}3;Df9UOlU3%z-m*JH& zp)F&fOfI1tr0PO84%2=awAMSLP)jF@dEbCm)e3TaIDPqw8LL*$%oVx3oK&3X$|Q*DPZb9y^+Dq+7%D3* zXC`#^?0FIRfRVZmFl01esG&(0wY0R<*3PTt-hW+V19$$%G&VJmsH1v zCY}i`S+*ngv-O)=qZ(abQRL_ePmsd43)ih0;v)~$S^tynmJ&gzxR)~&r}>9YBg$LkXq`t~m7%Xm9ePEdgH ziz`rp!zXF2LVHqB`QK)ef@FX|(35FY3UmGX+LCKl%v!U0R_-k?=;_IwJ2$}h5H@ew zvSH))^-t}1^ub@9I(_cm_x%woEs8Os3LbikgxUr^lPV)}Q%;JaYUtr&RW1a$kFumC z`M?L$6lCReUpQ=}5G7EH38G@-3=(CGYC?jAZE|GMhXA*Nbc(W15;O*KN289x%qgIz zxCq%B^3-s5PZ!sZx4+|^H{E>e7r*eOUqATt=8dm=$J<}`-gm!_k3|v;8dAx7QbuP4 zCHW&ig2`?bN-?Q+)iFXe3aoG!UeG;*;+ay6XB^1bB{ZR8`Lad7{LRC=_Uu}>cEw;f zcBzexpplZ)QIeDU^4j5fYaMjfLf#ggP9!Z4MpDKl7C_EOl8|R_NUGq_!*rp7++hR> zbg5+qIw+y4igaYmQ`UtpkW#P;o;EF^yEFtO#0)aRjbaW}qkST5SV=RR7NW)4@&as< zQ72kjT-gEJ}P9uiz(w5zf+`e7?FULLpg`$8r|H zXgUj(Nd5C+te`S(fb%p7E6-Gznd*r}sA6WI$)_1Rc(a2bp-VNfRjIm2^~5$pNdcw5 zeq^PRVVhxb5~9k)#W(__KoQKHhKp2i)uG}MCgSqUL!x!)SKX5{86d!s8z~_#HB4dG zlj46uup=U!v=y>=#IK6v8~xI)*m}{(euFuQ;Z;oYv>``@;uai*Y%9ZsVr=diKXR&` z1lF%nLIo9wkGo)@Q0QXd@ypq?6ouHV*th|cLV*^1#4(j5q9jyk9Omt-K^Pt~GKnIw z@Q|xQr|eHsXsABG=0|~gdJm@YC{s0VCtkm1g)UM_ntw)k3LHhLAPEpGRhkQ~#>sH? z8w!txjHF!#sa&fIo|R{8!3Fd)pZn22{NpE1pS?I{-1xV??X53-;ayx!8AbVWq*%}k zuHeLtN?kL#0c3qJ#G^Qv`N9TQmghNXTrs|7LQz%K6Hl-IgMr`Ul~9f(_7IxBpOQS355SV4OE+_RLql;-w20&0okD z8K+NcXeeeKfdK&P2&@S7_2;>2hyfZJ9)ZfX|=Z+uG&6_FLFiawg~@{HK^Z!UP*3M!?*3!}UM?{;zpJdd{L7G7UG= zH|~p{`}YO&$D#(yOvg`M{^c(p{=pA_{^XOJwj9~Gt-5*oti>~DEvz3qt)!x{mp0Fh zE_CPF1AH%GGC~mg5mk(C(CKjmVX-3x9o2?4EmGQN%nOBLDkcBNwiV%NuEsCbAzev| zyAOyZfHX2Jlq4uXfWsTha8)EFj1++<0x~+Q5LE3DkqFwbAJ$d5oM|mXrWlGs4ijGl zs&)-k$XJdZuy7TMxs(H@O2R zkK}s#>Lxa`IMmH8Zl06xX}@^kPV2xP#+z&tKA1bkpf5d%Y-mouerwx^>VmHN@=YR1X;qJSnLN3K-CT@ z8!~wg#<1a{lB)W~iiW0^`ODVP&kXjoZ+Y^8Z++q4r%aheSHmYxSnN7@=*(N*^7iR1 zGnOx3ws`Tv*>k6l9aqOYR=8l${pisZ-Tsy``a%LTUTT3uZrAJ%QF>Ymj}+#bn<^&U zwD6W&7Zw!0l9v~pI&)?BKDw0c8#Zs>v**x(jrZ?=;%BVP7gkr7Ry5?Q8%xS-_f3rvg=_I7RUWbLF_P z&-)I}os<5h9#W+ov}0srJ@MGUNlS$9Q#9*CX9d zW~mNA)P(r5iiH9aOwR2Qm#M`mlJqn_ciKC$-LJl2ra)$uCiuFv#P39ao0;AJ|`8J?Z%2?R5=Pic6{riYu6wvrvdYhiy@xR_upLs;b9U zO&C9Y#q!~y-u~{(7tWvID@4bSZryi$(}o{^=2QPuP~5X<;j}lt?&WWK!`<=e496Oh z5GaGwpIX95TBXT2#Hs3~nz3;Q?*u9;p^`qCG_>`zae zy?AKv_J@A`i|4)YWw=f5(SN<6oWO*odqbS69>FyUoOp=wo1TB6+M%!lGTjYd-GMkL zCTR(Z1r_m`N%AD)@(Cwtjkcg!UD+X!4o8VBrp!tJ5p&V=r^r{2AxgGy5nifaEz&uH zfV+A#)zmVEI=i}N%%1ttzxv1zfB3_1fAgCk`}@!Qd?Xdt37&^ps1WlIl46;=;f6Io`^7Jwd~*Fw zH?DAVbAN^`1+Nd0g^WxCMT%gyCAgX|dB8dwU%!H2c+lrdR0-xE35$`l!3*9hHI6Pr zkqj1@F5>GWI9ZOxA}lXG!^wW5%u+%%dq5mA%SfpPlD-)oznM2|xp4T0q@<+FO(i_X zjBpTQ^~5eYLUfjDfG{$BM+sAz$(;y<&?(O@k8Op(lcSPEIZ}s3W(nt%88J^-wkvak z^b}02?Du3JAe)<19r+0vK_t#Tl6|hXgqljCJUfp@fY|G1YT=lUIEFVM=G{q;8=g{C z*)W|#Cis!bG)OrkEk5vhU>n5z``aH0IHjQtsyrp4x)0+M2~RHZ_kKJCV=Sb#xBvW7^utuF;hycN#2! zuj?M~@-Ha`uBORnu`ZnNJbvWZuHCzNG11l?I}aZ`+R@go@eo(as>$`EoW$#&n4kM5GIIva zy)agmGMYdiKLyB&gG`iZQXWkeS;M?QAot`GPk;K8|J5>e_RC&&_lsZr!s*kej%_Zg zuj65FNoQz+(L6`a768Qp*L?G*5c_d1LlOzqCTP}D3ZGoR>lLqjV_iezzy8a=u2{K> z`^P(X@A|~2K6&@=-Tn7}_p!U~T-|X+W04*{50&HodHI76t)JL3@y|Z;2VHztg1dTH zP*B2nj`<5C-+}(3YgS+LAD{Y3=6c5TluMbiNp;Ii=>heAwa(pZmnS-t{LBJ@P1@W4P-DFaGPlc^|6-j3ALH7fCQa zit1vbTy*12>puQZ|91LR=h(5_3sQ$IzFJ-x=<6-HZq4dkY2nFZhx&WF_~f=C3NiSV zIzlAT$&8$_JsDOhQs9b(j?_)@qfG{~6wx*nMO=&}0#faYh;&6zfT((rBt`^+_$oRS zc|ITqhk708+PvYBirV6T{`g-tHCA+YcWB7Ra8Q8&3iYKQrX3NWsyFC7?9=sDY_wir z9TdyJxQ~WSeZ7OFRTaPY(&uk@`rnv3PN|znu%Uw-CzU<+lniNy6)0>VYik`F9{XiU zS@&l?`L|0Jjb*1XEuCG>yd?A;Z+-Dw-}2(!yH0=q`#=8P_kVhD)6WlXdboVTv>9`j zPn)r*u5mmoQbU70UPQZqCkuh%uGZo}MgoGQrA4BuoM$gbSdADezo{xU)0KsCgP4i| z)V9Q~0c;GjQtj9r;mYCSPKk(RJ4Y}wTqOVm)uCcQNn@(c-VHSzZ_0yiJ{W=6n0m>R zNfcsryH5)lI^b;*^QH`ZVlETqL@+hE;7LhqC7|0|CYRXZQ@FfsWboLL{khW0+PX2? zxKS`vTsY9tc7CYy;$6>sDIcHf*Q;P)C8sh)eDaBneOG!GFIh3*r#8H=g~-!QU-?y6 zC9oAnS-{&Tt{52>6(r5T0Z%>*wUe`~EqF<)eXJ>k_^XSf%4i6j)y5SSlFVvPS#d>M zd-rff`I>95=N>P0U0N{o@I#O9*|>Ypu5&;8!Gr3uD$1tJXj!^+@v4=}`J(NN8B^;U z*^;G24b~#HRv>MBaO2#pC5eqYtT@ z@$I}#+jl>d2^@? zr4PU^{G&-ENYJ7ida~Z2EJf}==_E_oBvD>-;oN1GGvroWmBK>PIa3Yrd3$;@HGCb! zynF_Cs!P*3YF1w?5R@KF`vt%%k%w6yVU@Y3Z=k!YyQ8DMy}hgb%9Tr(+ph5D!b=w~ zT;hAOmoHqrpzjy7wq9=Q=+0qC1*DXgRdQuocipuxvoqxm)jNl(P`L$jXFmSe z=AZ4|ohz;?Y8W%2Wfl)^G>;u$UE9d!Hg%_32?Z5JOW68?cZv(D#!hY?J9*B^)jUPl z)!WtD(RS|8{>?kK{O0Rl`}XT!e>YaaS;#U7<8<&N@d8N&&g!&{06;Zkpo@iX9*7Qn z^|S(Vc8ayHZf;w!WPj-L`lmKboig>znX^Cn@eh`-zGlqW7HU%0SP8apIh$l?m4`~P z)CtkMsLB<1JhOmI`fb$?RE`0i)laJ<6f^bwy0GdW)vdOv147Pl4N}m_gB$g3e~Y0m zKQdT4VGsb{Kp?*zi6|sPt3Fl)BatrzWQn7S{Ra+<@4dZjI=kndS6sXLx-We33r{`q z=gL!)*xdN zWs%Fn@-l#^f_2ulZYX!-4cC>I6h8LYlifXUC(wty5D0>>?BzVa5xav4MxYZ=nGpiy zG;t3~DQqu==HxgMPyZyUWSY5RaAs#h0cqrbG1xlgkD$(o!nBdX@NwiF0VE+7PxB4t zP?Hc-*GMW0syHJhWm76?kSP)j%)w3=!8T8896ri)w~G^Vds0plnG6PBb~%Z1Q4+Gu zS$;N}b4hbEa}5MtSaJvw74NvB|wN|muJL*d20k$iAU7@`kv zDosa(TT&rl`9jOK4)zfoR20Q_TZqb7QIKRO4tc-`Mh5b4lB%B(3QJH{J{~O~j}rBj zh|$bZA>0V2OhXAZi@;ZwBhOJ$sM=3ZVFt@QMk)!6U={er&`CszgMQ@Ugsn_cCqVgv zL}xsJnUAGP)OT=@(wTZmF-zc-nJHU9Q=Phgq>QRJ8DgJWCEWApp>pFMKy#v`n3Z2y;k``Z8g#Ah#FzA}C0 z?0fHh_qv;I80hQgPPl6}I*7Ox1t1#*hI@5wl{+E^LKn1PIOAuPH8-lQteP@)+LldE zoH%)Q*39u-9Ffali%Y2+DN5*4+1EX=eaERSTXt^dGgsTU9XWico6Y%bST8B9YiMA~ zJ!|HSdGqGZo;7R6On(fyu85m#SjVu5t12(SVlO(ICu8^lf2J9L>!U&1?&JWHraS#EIkQE}TDm?RAUG=r$O7YgnWW=I}%` z<5ylLTwGE9e?RpvQzuXO%2&QvP-b?+b7*L`OB;%N+< zwMVs(cU~6oQfW4G_V+8sG$mJsXr#)hf``rd$UpK=6*!&!7HEzEuNqwlMzs5^4>+|Pf0|Dwe+ z%ZrD39|4ZQ6PAhz3NN0)r?OVBT9NA=+_G)wUC+H1pJ-dq=TEu`tlbUy_N&N^?u>xKeRgCR&ILmWg2{pH!Mo@c z52{7x4^*-4Bf`XtHF?q!1}hUiotG}3JGx@Y%&F5`x;uL);Fch7SC9ZrHZ{Ct4GLNU zKw?mtAML^+9}`jDu%}9uNcIDJUP7*{xRm!kOqnu;T^#LgtxQ3f{4i!0KMg~*T1Kc+ zWj2{cNASUP;J|^My{%{NzWcUSE2sDM=#S+QrpI0COxLRB$FS<;@z-*Jog9L!OohE+?j?OR@Cvg=FgY9qsH7O&HSRW{)O5Ma z)Dud$tpUfr0fAp$PuO+kRO`8ug;n)z>DH`{Dk&IfyLc*BJaFfow`*rU#^PCKtSmMa z9~3B|h5* zu~i9GOw(aQ4Q{r%;W}MW0L!B?Zh&=9=Kt&0KfLz3<>SX!^!KS#K-&i&d?Hugy!y6R zk| zuWOvhYZLcudSv;E6(uFQP-+9B|50nnX^JO~aJRKkfvQy{u2lu5k=zF9PZEM62~0y# zohV=|z>AYhN``sFpyR@o7rx|HwnA)p@Hh8;=i6_8*SmS-PyqwJI0m6^b&yx^N52xC z3nHRhP$#Zt;w}gfN|Cqn>1V_woTrcw24_SN{L0u4nH?sR2;(@z);+&CS}T4blz0y` zAcqO95-ILxsb(!M=>s5~QC&>c9>9`Yc!zCAcYDj!i68mPKmWxqe(~*Zee;W7`_XS6 z+wez!_|8|o@@BSP(DWJMz>m6;XXe;3_8mKVaq5(&zTtiwDlVZ;#6_y%;7*|qv*2WjNvyN^XbCi-ySklKMl~W| z#i6vg@y{adM#Dy#k|CSibP1xLXBJ8s@#M&U?Aid0!VbXbv+<=tU~x9Yxy%VJ1kC@y za)M|WQ91>K$9EtSD2^|ktw~0z-{c8LHmZoF#8RX~$#l+haX|)!q2)$?6s_T$p5+*g zYl;zDgiUdrp?-D-SHm-QBDCHzGW1I1$(`n#u?#99@JBNwuU5o=<-LPIg>p}L&m{us zPsd0MNvvg7jPRxaU9NrL5xNvFd~2XO{^)?eWnSEc!c zGNJjiFb69gTyiw(%sut=fe-%aUqAN5*2=27SH14dZ+_Do8tSTf-2n3!*l^M%1RBR0 z?Z=Z`9a64(V~$AByo=g}Ls1d0Az1(TL%h9z{(|wn16+tH5?|e!@vDM(8k5n^ z-7mkpqqV!ZtZLl&am!aMUoe0E!udQiFq@||n;ZD-gOoug!#OPq3=H(JU6paQrhI6~ znPHzCp+TG`Caw@0j2voClk>FqS{8xF92upnAJq4#uwe352VCT*~{NKyB zxep!h>FOEi@4D~1U%&14<^6nf5n`xy_g8F~V7E*e)6m?sY4fJ%-hTJ^@r`eP$J-fe zzWik`defU;JAeLI?jY&j6e{RRhS)0rq3VDJtAlxze4<^OAN;B~Kk!5iQ3f{0;MC+?T)lrR%O+{KDt0zS0hcAD zDyyfEW1c-cR9#cJX3ff@U;XLXGbiUZPVQx+aLh$fS64}y;9;edAWblkmqD!6Xxapd za^fe)kS`7&dh@#!4@x95@~2#iVvP-yr(~Z9ZY!cdUBub61``*?IqufAPKV|MVDa>si^oo!T3ueF4>Qun znA>RPRLG8ZwKW@)x(Tf2aK(W^E5^pmsS!cSMM^4)m|s`3SShVxF!n121Gb0wR;1~o z92(zl6-c9fGjZLh@gvbk5U_|OfZPJAh6fzULCWAU}>6cNH4HM;k+yYx!0+Rk@k~dFE9!zxN|@kq2RI zt+`EG_f$4d&y`LnD6MOrJYmv|rA5QNe1)W^ zCoWyKkhkTtUNC#c)Ga`^S1+)~07Ob7ApJhQvUxPyxdK(fv)bO((|A5V2 zRke-2gN>R)-JO?n{T;;>Wn7VqtD0(S8+f{^vdmUE0+E3TxN12Y{un0<&3kSMczs7KRDB?(hlyc<~@nwRBFY?(f5-lC10wr+a#q0QHtFxk z?eG5JPkwgG-+c6gb7wXX4AxIg0~+yx0S>VonS`qGCjr4;BAm%X^0`0~pM;W61Zi;K zYzEmq*2w;ewDJavk!n;F;T%VCLKTv@gu2#3m_h6WrFn!9th_*19hM+bBIT^= z896LPZ45${kWz=9th89b>~>XB0}%&X1Y8nj#!0SuONgB;F@{L;h|EzbxCVmCmEzAS zRZ+M!W04rZ+}vzNqD>5KfzVuiE;F)=GY=%(k)IS+077;uQAT!zKCU3=MhN8*llX+t z_>FUhmiJUjsJ)w~ogKii6FPIyFG8azq{|sDlSr4w&$FKM^27GjU0h9-*knLyWJ&(b zp8}ltnVTS)VhJr{6$(mGRiF+d%O+J>ILFAkn?fOq87xBe`9?9i#xf*^avPrBOb>s< zy4C5PnVE-x5UXHSQ*;2E-|sp}1^vaL*6Sb;X{5n`@m`;OS(1DOBb2 z&x1@EGnkt_XAZx7)cU0_UB~o6;<>(YhOvimkXBch|H%j6H>ss%`qb&oW14Gg%SuaR z9>N*vF~QcDSc5-J?chd&rEsn>vQ#ZgM-=%-4q^VsWOImRY0WGcwV)F>-5G4@>j1om zgo6hkjvQ{=d*H~<9lLh&!o%IWPaZ$f+sjR;;kw$Y=`*I?{jwJ=U$OGTfBK;ZAAaPH z+n2*sN}vGS_ho{%ZB|wmEnB+uH^2VP2j6%1z3+O(8{hbf`yY7t^I!b$Tc7u$rAwB+ zIO$Hq%>cGlRUl4uD1a);Aks zH4-i0m5myu$pG;ASQ>__MJO<^T2E9Kqo2MFcKeM>Z(h6R;Qqq}cdq6WTx`ufb-I7o z&Yc@JZrr?i^WlSs>gvir{*NEK_S$*#=gocO(MS6G@AdmFtdA|H(s?%F)|=OU^UL2m zbNtY}`Kwt0$<)<=H(Dod#B6NRG?S*N_`xnbELV^~Q@~2gOu0rtMJmHxN(2TjYe}&V z;?|*wgE-m=s!$5WHPr(5X1Sj_%syyLXBLgKONwN>sdD`^GSpegR(P@u$9o5`di?n6x4r$PZ+`PjckDXy z?eG5ZM?e16vF-Pt*#671`U%r#FPSoJUenmA73B?l5uFd?*;jbZR!VD`fFqT(rIZ=0 zwk%iCamf4fkG&l0Ew}}z$)A*3AN}APYp2>X&_$HUaq24qS^T~2J8@J!3ZxFfy|M6U zdNC;rH$f0=1M2uP($`CIOWB`=ACzHptC@CbNhYrlV1ra}lAWGEMPZ|{Q z7y$s?y$6Nrg1z4TN5dH&>OXQ|FFQTz>KfSu1OwjO*Ky^{Q2Uv?p8tlj@?1OHh0#S8 zXjO5;#;xsV+HSk+8ub=ZUD1oX2~650HZU2rLFypoBwkHg$a^S2E9RAfgba7RalafO zH)@&FKEM9EfMh06;Fye+M*88mZu-+Uvq4P zDX3~JE2|kUC{^lR52>Yl9ZH>WT z1%gmzzb=0`LvB!2<3spUhxDE-1pU&ZW`WQ%Ht%gojU65X55WpEbpm) zq!_-B0O;kFF0MM@VFRlMTQ+WQKY!sxFMJ-iEBJn-;8DN2tU<{2UDpz^yC|EcI?`5-fBrR^3{io9b@qQ@QY@hD5|X&d7WILJ z1-(7Pk3aQvX?=5T!`O=2`scmyr9b=HXTJBHZ_Zt?j7=T#4}{c#DD|M0vr5Yw_JWy7 z2MMxrN((;@2@jPO6rRD8Wvz<-R`$S=-az96^At=JLRJWn)rynEiI3YRD?wV_6ae~6 z4dKW?VxZldS}Ty}XvFTf2vKy@g0mKmg-VykdpZDWY|~y-Tl2m@eD~UQ*M8v(U;N4a zk3GHNHGg>T|9Qt-Uc!|cMy&F~SSC7#rJgnN39#G*)6h~09eA1}0*eGlL6iT<*NX6@ zK4*TiBX1fkD7y8=bzk`6cOQA=(Ys%^R@Y`cB=^brI@C!jIf{YuQY|Y`0+3X9ZJ5%P zXSleyIDVBi$HYNJ!68Jb#&L*@a59f>w#v!z;EG6D4%1tPl?aZ(E{x33OcPY%9+LS{ zwFkYVM^ZFGHS-7zfm~t1J8}YY2vxXQIgIEDWrj<`VNL=vUogpAbV4$N;3S42g|m5! zHV+I)-a+B}AdvSY0u(VYX5x_?9R-wG*CfVSPNo)-ovi#wlC;z{nlSD=%7l zaAZ)aY>r~AtGkv8rEo%v!onfGENbnd>AHf%GLAe;WrK6515+~}K}{4RKS8VfNQz8U zMkKNVcturZ*ja(K4H;2$qqya9OhnF{lR_#?`l?uI9maxF<{3aL8O=)mG3=^p$pS24 zCnqX$KzHnkrP<MToCrAZ&5kyI}_ zno?jJWj~LUfHxY`wpi?Fa+zht9UAZnm4v61{%n?hm6J+VfU;x-P!~YMh=C``+ggXW zY~5Z}S$_SRYs5fQd6zmLj8%~De-r%w@#D_SN+iUvCDaXBD1&0$C}dLi!yi5N(ZBhZ zoqG<~HBETWJKuQs@4b+bM`u?j<3gLI>kW*sM0M-sb`cAv;a4Pli5DoZwFHIn9&`we z-PFTFQ>RWXD681KWjoV9u5fxXR=T1z7aNA8BC9Mfef!&A#nne&R^!Ubn~JsZS%V+3 zv>x19Cgq1S-Tz25hh~V_mBzrjhSKP{{`2l7bpd+2LGe&2+jfyukn6a@o7m3o-+yT9 z*6o`%ZDvW}%-QoEMwX5pJ8s&H>9^c`%aWyhgL3wisgoKT3K)(f^{Zc=vuWdIbo2ZY zD_wb*r&<@|>#w`^U;pi2FI^g_uGApmMK8GVr7yYh;F0bxe&s8F{Gkth_)iLc|K%@v z{p(*nYeo|r3YgHT^Hv<1pIm^JIraqda%tYKz|C9DE5#leV6o$!su`X#X)>Eid9ze4 zp9K;i)Q}fcPataYFR(pELZ0M~&f4p)|Jql+ec{EB8y6 zEh;Z7etP56Yu7H+yAt4J1(7cl@~&!eBx>~^VWK5g0aD0Fi>cG)OGC#`oZ7r;%l2J6 z4;(nu+1b7Nnw9Up_Z{{1JbKJa8pR6P=vvBns4!PwUHH-$zhvjmU7z^mcQ&nma@+Rp zms;ETm^qI;T)XDFcf8|mvu94Lttsv69bUI~-KRhE*|TTb#*M49)JZAzu9c5LQ<_fx=Pl)OY zJj;x?S{Cre!GezVD`!uiV7^>i)yU3qk@5Y4izjjg-Oqjgt#lyPIMmRb{U`VH)w+sl zvuF3QjHt&aeGmZFmQ3g>=gH9Fs#3SrHdj9iYJg#M`W`iP9M?Y=FBPc=g(QPVCKqY3$DLzRjIZBh@Z9M#G40mCr@>6*?F+OX<>136`dc` zHgvz-cA>nKw`s6jZfM-3mVx0C8kRh!{wcys_M^0y$k_TrM<*L?C5YBqm_Trt*U#l& zuJ!6nXzf*1wL^V_7caKXm|mwQ46+r|3Po({OcRX8i5Mk=FauysQm0u;6OrS|Hv9}JV|@d}HkPOh0TeZ`AkxB}eH&fKY! zmv-#j^W?_uPd&YL_nt>~KHkZ597WZ2<0nkGa`EK2aZTeUj#VEBKPzV+AQjn?k!(%B zSz*{NBK~|L;joOXsNeyEgre;t7)={JaPa)W1IMP%yP=|{@k&SU+8b|Q|Jbk39y$2H z13!J~-S-UeoQqyYpq=(|p)U)Vo&}8=+dDwujaxX7qe}yDPh#ygIaz%pwG9(`Au$wB zIgf4$7}ja{r2b0!swJ_aqkzh^R(HY%5j7mQPfCR9Lrh^I8>NG)TzRwiHH-R^AB7NZ z5QXr~0@diXS!-LfX3dhtOTYTnul?jlKl<>W|NX-cKl0~)_P!;HC$hVcpw7fe0Ebw{ zpe)8n~B>#QMa}W zJ;ESJ!w1kwF%?9Uv{MqmVA7z5a`79MG%P2OrDC|<r@aCVj1(g5J%VbyisbeOAa&gGHja87;-g;*qi9*T@Mg%Y_p%-uYimkxZP(!;8Rh ziLUsB8lN=Zv-jY!6UP=UoHJwk1YJAKJETAy>WpZRXZ~yn(T?=wj07;5Fw5#l+0bEx zA5#UKclvbypZ(=Oef@vF!$s=Gn{NDrcilU4&dlz<-maeRpx3nv&ag@{xV(|kph~J@ zsHXK^BM@3T@TXdtA{{&Ufk3yCb=fV*jU79ly^y>29^iTY>PlCLT%+4HCXwwB@(n!o z9=dM>FJDVp4(A3tjPRF6JW@cHV~t$Gerd^IGFHTqY;ETbz;TGKJvB? zz3**5{_!t9{kboF_VZu6?e;s~{m!?qUe&^QizjkDKGuzNv&wDXv19eBkBx9=A+HG=H@1A*^r??L{P?}^enX6RG_oPGT<2nJ&$^-|M?*=L_o+qhC>G^@ z_Q0l}{`?o4Hf}p{;wWQzhP-^XaM`k@6DCZ!?}tA>ar)wy|Ld<58g9RB-MQn3Teoc4 z^5jz+Hf`OuZ|@$~awbn1f9*BPKk$L~ELya9!lahUYDFMbph55uZ*nMDx9-|c|Lec* z*|U4%#5Hn?bkYEcDKEq2$x|C=&YrUG;E9gTwyGM4wHzTFjk+{dRpdH$G!@dg2(DVG z0F%+3oUFMl(-JMBsg5xm8o5v@X~PX+!!}PiIqRS{WruT)|HJ@Vuo+lu2GRvgCy>mR z6itDkad1j3x>3%3>f!dw=Z@^!G<)Inn{Qd$*;R1re0%p$ZEsg$YiIk>(_Oq-ea!!l zum1qBt19>Z;d9RP-h0bTde3Ci1BBib#Da8CuNAI>UfWes)C($>D;5+46i`8w-g`@L zliqtWsgvowzMt>&>~m)D{{HVyW}j7_zMfV0+H2>g=VcG4vY-Z*cB*Jy1GXH9zt$K~EDG^m)yGY?OaI%DK#wC}>ZgDghq>8BQ4>ABs(%9F~ zWd^g5iqgD-!Z*9h+Ds7{pmP~-Yvu445wRh@YB)SG0Vy^kLx1xcI7lSpiSIBihK8uv zC0>3JvgXXx9!Z8^5TUSDgs_0qATQ}0Y&bC7-ItYD9G{rb$J{+3p?|RJ)Tx8xCR9wB zFxK8D0^Xk|M%r3JZ@#sxXu{;o+@d}cA1aVCf#uswM^VQuNH95Zc=wJCfBWMvLw%jp z#|=eUmsj7|sbwHHzqReESrD)tHC}05RhhzV8_#Hp?HD+g*~-jG8-$%zcwtsFlOv&~ z6NlOl@4D=BU*)(~c1K_^0&7<<4Gp%QIJ}|1uRSNXEG;cNE|M9Eqz=a=bEaWGI}Nlt z%2QDqAfEQqZy`)#a(YH-HfJoL*bvj*j*gZ#Hsd#)Jl%5Q#TPfd_{@8ufm2UD{mA(j z)@eTt-i`-QrP(c?5MH}>OJD0iX-x@>#jFL>H}L)V?v8eSeZ8-X_A9@rtQXLzkyIM) za8{h`37{l#Hji0>tC&@OstwF&P+BL_Vh%A?Z;1;6gtEy2V=)A`uN8e_4J3DnumAo+`oSH z`eiHDY}l}|qxtBFm5NIMinLX-qYT~+;65|=i>a7DViy7*-7EjNFD;rzLO zy8r%{UgJfv|M>DPpSk6WpG--XG5K_|%ZnAQXv9a#yTX1aP4ragvUV&nNLTX6^#K6U z2El(~Fj_eo4po$Ab1v!1)$4c#wXSZ;0LO1)G)&JG6+nn$Z9;LkuoM?fIYl5(G~bFX z05hamMj&=fb`w+R5|BS}G@g>KE6t1d}C59|44+BBG>#OBO|T za&{+)ylA!sglDA1h1wu8(!k+H88?bYhJb_|{WU^HHEMVf703vXMZK^LQY8M*<=RD) z4bJeOCRB}|RdZx8*$p041C=kSe9FdcIU`;GHK0PCY)n07=qj^O2!TMt z<#J;D29gUodYQJC5SZIVaE?NZUdF)95zvdt;$TtY62trnOjCy+<%xhaF=l?FeYe3G zJy%jnX!W|az1>|4=hr1C15Q_KO>K;S5HPMD9up-RGGiQxt!b3H6|IV^qA=|eA$3n08=14< z2zHULzEAd225Dphft|GY>2o%J6_Axx8}B=K7_F59$dv8_t2(@K3yCOfP5# z4zdVzw06J_bsYt$?h>&OOnU?*AF^pcCeZ+gIo$ZXvqmb?m&2<&LJbFx?AWoZe*MOE z>(+1EzLT*M@+GBbRFA1yw0Lpt>{-($b5?dWUqwny)?411()01I!QtL+wlA2~LG z8QMr+JA3;54?ePI-=VtNN-Z-YxCF4`Myi3(#7W~jtDsK+03ZNKL_t(i(^A+Mf5sV8 zm8;1l2PF*m4n-2h36BLob! zwX|2&RHH~QgBmjrB_nQVYr1xJcc-MJBq!TDxTY>#H2I@mswgD%h;vFzMOmt-sHi9| zDO8Z)Dz53GH4ePdU z-_7w_85uca#*8`l?6YqF&ex|*o>WxGI~IKFfhj1TZsv^=O(--svE>iSeCp&W2^q=D zman|d63- z-!zi@%EH93HKa8@F|Ez~V9RAy5UMIniDYU63D8uX&86{Sd#77M7MGZp&qzqI6%&Qb(%9tRiE|Eq8no>*vh^Uz@phZN(XDP1? z!nPtJLkLwO7z#QVjEf{$v@O7}0Fo3c?HttT$N@mfA?-qDV0XnPby z6Ouxk*6eILeDb`ju8KsGXzQJwSfRKHY|+X(tm~si|y`i+MR62Jdif+qyn9+{5cX zOnPZ%(U5P!eEj1dL9(^$w;kB>_JKa|lS8SQsrjYM(lc{PvU7_QlGEeZ`LEr@@-}KL z+pG9+E3TluO|VEv&B)8m%&ji3<{ZTS_~D*iTb6EJ{TzGs>2bu|=Tej-D{zs}TW`M~ zic3$+C?E$p6XJ#&PoHL`fbU0kwfCiD=JH;DU+(~i!kQ}LVM@CZ6hUC~5{Y9@V)h_{ zOsW><1S${*#tv#>)6z46J8|+9dT2e?=*pwb&DFT^HAI?$P$Y?d&~mlqhjSMDc{1PE z-q}HqKyBh^f>S40XE=H4)G3ZAJlVu&3ivufYg-YK@^aJDGx(NJVSZju_rQOB{lCZ6j4LnKCmTS~nuZInb$G2)NIi)nO}LPhHyTWI z;Iti$$|a|eGN`0sKp&kP#|-xZ5X#MtJ7ZzZ*^6tw{$HPai2M`&h+D80=-Spl;%v z#XDEN@yyfzy!Gq<-OqT)8#A?-5=ATZ=E9<-CMT-D3d=xj>|tOsj0qMr^|F@=K%`=# z<1K;g65Z$-S$7z-tD9By&7xE#WRTIhgCaZyRSHf6IW4AarNK~agItY{EXJJ-bwj*X zNv2>qq>v!CZ2zx>}{J^YuyKJ)A|cl_vAZ@vBQPygq;GiR1!54kszz*p;1=D%Vm zS#$-;z~F;X&l49*=N3aDAc3Ok<}wzGr6L*4Z`_iz7A{@7Y{l|b^XE^|E>UZ#WIhLs zfjcQARDeG+bcwgQlP5%FG5a`(5ERmna7`#nu<}=mC6PTE46`}DyMPh#1S2Av&Nsl0 z$^|vi5l}SA(2Rh1Ssr!Aiq54D_^S{+TM1ARkti(-3EOEqs6_(^%W+mpaq$%Qg7gFd zQO;%_g`<}^!O%O`4#-L<%QAV5h5?C&lNR5o=*G{0%nJgXKnUQ$G4^CA zCPWdD`ayA%Anhk_;jm1;homRONeu>8&*L05el8$vGKa!wQ-`3JS{skA@dfQjZD@r(= zsh1}axQ%yJ>LM|X=7f5_CUlcj)yJ~z$-Xh6#DUPX)JHisp^^v!Rc{+<>l!$9x`p@c zJG%#ylak8H#&24)V$0T@Ji(TXDty^hKC5Ga7|^pOfE@JP8oB7M0|RW9j7%_NB!i#H zdo<7E{aN2507hre@WK6!JGSmzyMDv^`uZI^ceI{tWSp3knO0Lh=F&?ptewpcyBU>L z6*)Pn9Bqw|%*xsE&1kH%8*+9@6S39+$hH6@gyuw?VK5Y)I(-I%O`dnNK)?W00Ei@2 z^?aUKer{xJb=AsMt8WWkFY!eN1yN74aczzWhZoK%U--yf+qQk>CwKqy^2@Hh@uus( zaogup7#qUK-X+e+OzrIKpg7n7A(ydc%L;?X#VE~Ii2a2{#hmHQCUc033&zo-3UQLd zp^b_Y5p@l3=QwgYr z;S}^~)26OiwqjuLHi5BXBm<*``RqXW%tiD6`llz49@;f_TwNrb&~FZ=canuK<4_cK zld)7uOnaMklPt>#h-ETHEt+g12#6X1D~BnWmdS)BcU6|sb?l(*VHy1Bfvq_;vwpZ} z7)};m4FY(oFM`%)12qd;w3fao!GB2^y+IpD1QJgJAWJfWB*ykD9wd^lA8Cg)uwxSe zM!~M~Lgr?Yaws9fw@Hrf-m*NWH0MJfzND*v_~gls0bHB|IrQ8KMM2i#9KAz>$6E(a zwKe0Mx!Gxj`N=sMp=6sEs5I2VU>4?Y$T8H{qrqr?PV)6PTzK7e7yj3`e*M6`k8fW8 z`uuaQ>eDU`+anOjD>adYm(CX8Qn~wQett#b1;PV1d&bgpeusl7e1vS zk9s2Aov<}vFq35<204Nt1Ycn>Q<0(m< zjYmVFem-uZ2Ai)3Xu(##!~XfV-h7AWxRWMNwb~Pv*Q|>2$bqRam-HDPOo&Zv^ zP96=VXC)^k_O`dSwX_cC3n;Y{)eS449u>8U%l`jr=6?r3VRn>W9*W*nyq zP?6BcmUbyi?NY;#vWTAi_ix>}wrX7E_;F=Cvz384N}+$~;!Do{(4}Yf^$#CC+Ri6z zwT#Q5g}e3~+PpC|5En|wNX(&;8&h0Zk)Bn+Y53uUWL6_-PY_YF7n}TOPArND8PD4R zCr&kIJ;D@3hYWA9;&b9?eEl-@J%vJ4?Bg)`^oRY2N83 zyrnQJYdVf^b+q-o^u!w{j-NVtk{tjoryEb{vxI!QpuN4LvujYF8PJ8|e3~F5BQ-lS zo$nD8=H^eCI3YJbkJAbBvh%aEv-wy6hZLlxXRv(C3J&kn@xmGvnquRo@{kJ*zxMk2 zq0YAX^X8d+p zjARxRa_JQx-@Sd^#J*R7d7XJHTi#~^_EBX^hMi;{|5_D~Qr zSek0B_}WshF*7ktaMA^5saOf4$Sl-Z9D{1gO@m!P&hs+=iE zOk)v+Nfvv^vv7>NvCf8r1(MPb3fGpeM8Pp%Rl&wTAGpTGG_ALE>6*zl#TKuQ&-dO&1DcyPH$QG+u25=%e=B;`bf zP*R|8fS}lDNb7p>GZqMb`qSa%D^}j}6yDCN1- zKSj&U5&##9!y|zUU}T9v3S3Pyl8*E{q_YxAMfr1SPCX?lAfqiJB=!_!=i;K}a;XaXC}FN0XE)rpC)70#y>f zfsG8pjX;Y}7MCNL^&MD1f{{7NkN!Csi#iTj$}gdVJ6uFOAk2^4 z(-RyOA2lOIL8AT}qZBv?NRH{^1bm~3LDncFqbD6>kd_%OdNQ~S-F_`>iP8FF0Ctnw zMunT>1wTd}_4G@YnP&t|Az^rXF(L@SBQgc_qI6@w&dC{$upLEQh|ZsT)QACH^~IiT z{v>|hBnS9jCQ&JjRn!szgyawnqolCOpyt*oD@y>fi%_kZaznU1JYATkzF`?{No&}K zNK8tY0vb;9j^T+@LmM`4&C5%jHEV)RxtzW5)SjC?T?(TYmDD5uU-uY)5wri?)S3qu zgA$zoi6`Ir!4K}=~*{?dmpy$EOM>Ix1c1kYrZyby`$$ewC=}x zK$vJKVuhewS|NHiMpqn-%#&&so5AfJ47auo9BnwZbLXy&8@8<9P|rC@r%yF9{z^_u zt*NfQa&6_{_*=JwoSX<|b>#pbYKrp zOL$CZ$x`2x6d5Vuclov1hg8`H7B+w)-&X`=6!S#k2}dqt=1@pkK$xd!kxaHGDi$^! z1;zBT{zm*&B_)Oc#M(MoLPlIn1KA{?WRXBf!d-%ZWlTgvSt?l3FfO)KWio0IN(aZp zgdzY;%^Dfb7xzm_9NM^TZK(a|$8WrL%$V%v_Hbi!*D%j-C0;S&CS+Y6cC~mcI~vJX(luhdRl81 z6LJ3O2PPge3o1eB#t7$f`|4L2o+ohFVHhzJe=QwxVN{EnOrpdX7Z_G$%!C5AR02p& znmDQKjh_n7D68}p;7Lg+PH~RdV6{)9JQz7 zB$+g;#G7fb!o!{IZHISl`P^qe!DsWjx>#Y+i@nUxg_uef|6m_1#? zM-Cm|v}yaA`pxy5c5(7u!`7wYa6%|0E4`q+sJJ>Wza%{~J1HfZ!we~Zw^}5W#OF?i z`uiIjkDa|>W=>AL8ZOpEL>{R)dM0k`mLvQ29?mO2Hxi#dIKXNcOPF2lEvJ}9_p>$` z3UdO#2(s57;rPsoCi1kuDlwWJ`IT&nMf4+^z&ik%KxMxudrFMB6{Kp9%q<_li$-0K_6!YnI@>hnq!zF7;UA<8%%Z#Wm(b^f$fq7$n$Iq57 zd;hNg`R=6gc^cP9W>Ht!^J~P#UWrk`T{6=_w`lUHuqR3U7*sS@DN+3(IXrXvgo=t% z&ZufQ+Fo45M_cGkOcld4y@eqCotg;5Vy^Uvg&ahnk{?hP!0seK2~w6V-Xo@_v;mc| z#b@;81V*O-;B~~P3tX)?aAN7#zas@yJztOp=E4&+8pd8Eqf{h~5@Td7W;J_6EyNa? z0LP?&hFBC`>Ul;AB~kfwe6V zNJ_(&aov21yNQjE=PJ{#SeoKdC6LX~gM=6@Pj|!^u%c07PEB_wrF26gYJ&|g9|toQ zBYZ4T2%;?O@WUUXd)#cGG|SMB2J~u21Y&vzH^Jy~tvx7uh76wSkWmpAU6x_BA)rmN z=LA@ze9{o2*#U1^OPBHYpx>45gaUr<5hPoxTiK9DD3B9G97=H^=-05K3}R45G?2lS z6tFIVxD~wUybPd2Vl>YH9sUF4l}>`0oe+K|&m#p=gKT9CZQHW@__4+_7tbmyO`~*` zZ=$+ZVoXSUqs^Le`uCeuGeNnJzB~$dXsG29eYSv}IyLa!AKd-7$DgM2zVt(ve&s8- zl$I9v^zwAr_Wa328f!3^<25vpB(WX_u~w~ekA(CIdhwJ6$l}Hi%%mT8)hu+jP7ONr ztV(ilEE)LckY~r9(rv5fnzhKmT=0rjAcG<7L*lbx$v+a3-yPmjL-hvZ@x>I zCu0%?t@}e4Uv$Cm{`i-*8xGE$RYg?$ei`xEccWOr*thq@?(N&}{Lvjq1tp$vX>5Ri zpxdQiP4BQDX*Na^AX^wTgR85X1+xw7HqMw)Ecx zjPih4?vvu>1lJjO^7_U2srA;1#!)2ufU!Y8l(2-qhZ`@04ZmQK;$l?7DQSN}AYM+Fs# z#=GopY3mtmJJx;pRCh*lQb7)f6ogV(cT)|gaBvP@cPXudwaVR zd4GrLqikqp1zFQYx?vy;CLJ^jl})7(*=j@(L1keZh-7?M956LER;k3?Efckz==e|> zd_$1t@+~wFZE@v44kdz$qM3A11(RH&t{l?DU6vq87Ia)K$|>J!gj4~C2^lt$N60Va zE8+pF=ouT+*+>XT&MxZ820*|hs&kgId}(E{;lN%3+1dF+VJ&U4r=Y9j)IjsGvp;en z^UbaRg9 zoZHafD|08shbN3LnLM%N8e2hbZ42!?aD3yYEo;};udCm>d*=&#*U)n$gwnEd^UL_O zUQRAwy2(pO%8n!?b#@*bZaZ=Ik}Ks-)`VCQBR>5|XzBZ_!@Z%*oMQSo^R1!&p7!CM zw#2N|KDG@crsoxw$WLhT;^VDRL4NE8ENQAdT8AQHno>wU-4c-g*&-le&D5m`7}R>< zvNcEF=1n|)qDiX*f))~m3ncZ1b%D~7{8cO7ibIF^NW8s}1%%dKRdKoNzr2#7v`hU3 z>5%8HL~ckZ;-tWZFxc8Ap&F(7pgZIuk&e#L(&ej@)6zH^hBrP`Y*xh7elwf>gtfX2 z0|QRf{FBib_fzY}A#Q3~F;JZK*6G@;zAr z+eus3NJT_h(0LjRh%$|!g-u^+`&~eStn5O?l?OQohGiNoq6Zrd2n$QR1SSat=iRvC zB58e;ekFld2({r{<|ImoQ+H15a}B$lg!aZODL z=`J~AaHf|E&?x=8fR-o;JTQuv%RvtRqvJ=&s(O;9h8>b>J+*_tFBe28R&$K1(e;8C zo{2m<4WLn1ObTgbGD$VT1W^U77?fnh9NQ6fA0dbp49oLI1sz574cLARNKs1)90Cwe z7qV3uWs5F94ydRlT81bqUB-#!DABF}!+zugzyxe*Xbi&H1>mE8oS38%oFVb6R0(e; zacIjj%ARR32B1Whor z`udHWCUE@NiN5{;KATjKS6EqHebtp$PMbD`&s%D zK6oNPuFZLnR^2qdZaswc=0dfSR>x`1ZK_3+>2R6zsUp?Y&V1*sw+kvi z)3iYD*WVX6or3^}BlYVy&zxDp3XGDiQGufdVGyTaxD&-doF^vh0i_FAhIe!4PF^^F z-tD*F@zV2u)_j%odLnU*e*220fdQf_I?V&YH-BC*As$VYyb5h95 z!m#1!A5IO-Ei8ENy`?wa^idK4M+`6=g+WMSQrzN2i(Y!^#rC$rloYli@;OMo1WixP zT!3904Go;^uxBG@Pi@@1|G<&9_Kt+4)Qq(3v(8!4*50&f>()gJXU1zEu!@(Ng`Yad z%gVggaoLA2`^is#(${5_x{q0FPPPDo+r;CkI~cMAg@u>&7HA*%kw9XH&kbr^8Gj) zCCf^32bBPWDM)Hk1BzHENjI#g7|HS!GbIV4P4SAq7nDPiDqJDRwKT}l^apqmgg%MD zKux18Ivj1^R+O+MLYV(9mbiB@1kZw1hRDv4f-q}zZM<)F9{@sN=dw=3ID-m zc0fpibJQR+rGY&=HV-r%z3k)X&YC{Ht2^A-*3H>(V&_t7s0Ilen6ZT&oyA0>O1^j= z=ACd(h!`4d=@@G1IDO>UaAtZ!VQyx6dYF|0Ug%&POA#ce#5bPmKX&Y7LRyxdcrq%s zIfVq*pNpq@$&vATyFz6|ItP8Bj#)>d>yqHgLIy*{x?p2#CnU)NT#cmoRIv| zxBG-HBAD1p1U{M-Fc=Vj)n69Rgf7}Lo|G16A#hpI8+B0$N=l$6njUfUg%LKuQ|N{u zb6a^p2JW;o_=AOrf4o+tnQh(2wXko=J= zuZ>SiXR3|a`}zi2TU!dtEA=f-YMzXs-8xJ+dE>pOyN6xtyur@m7H{YuI=GL+WRo)r z3rouS_3;etC4mTDf<9DR8PM#cj~mZtDX{T$AFn>uZ`iVW-R4c( zcJ1EsdZ@EMl#mum&#Nl0NC@|a6MD`*a}k(uXR(SBkrbM!hTh}=f~546^qc`clz?p_ zL+!1n*>aQ^pVHaZpPpHikyX$)Fhs+}f~=~L79>$e$*v+|r4EY9OO2j?UX;4SLUxp<=-L9X20!s(mMyHr4O@5u zRLSZOLagIpdVjociE>U^QFCMgsT&FH+IxKe{sU7cO(-wVL_4aE>b5Qu25ERxy?^M* z7hlWIFQ9MD%}Yzx%SW~=fqIIp653RjeUQnTI&(InMn?UduQ<3pqH>zBAR#O>RVyX{ zL{B7L7l=w2qzV$uqCq&&I7kvmP$Gsa?p7Y5(DJ2gLh;F!H4`{g2o};#KCLr`($e$K zzvN@jJ#z2MFTXfv!J?wla+WpK+*7K60SjFev=a z(#g|gbdy+SkcLKyRSBj;9UUEYvup3Y_ufA}@aJcqeDc<>fA5Vq-oER{-x@bAR}`Tu z`E-wJ<@zbbvbjrd$tGyOMgp;rWqdFuT`h(3j)cxT@9cj(@ygP7mw)8)MUq&S5epMn zToA!DHBKsex3@tBQHkjm6gzT8BE$vnDZ=qALh?2#=duV%ssxxuW7N&z0>escGm9gE zDf0%<#%)9lGrXxJB*ZkXx{Grlm%#0k=ePt=<1zpxD&$F$(?Be0sp9OJCYNFAX5tzb zMPkW>Rk9)*6F@PUNq@44NIHUrxX}(-5`eR~708fBWthbR8ZMXF-Bb&7b7&_??J(I%bBd-Ic^}Y8&Jn;zkv&Cd zDrA04(I7WKmJN*h2s(zdh$99x^&@nLcZh(*CMbi?G_70B?*2l)54~( zs(|NkHymzC;3tqz(l|9`S&2FZsqQ6);z(ZSTnvZO(9?){qEm|U3LF^7Al*ngqzhqY z4H5zi%f#k)L9z_VI+VH-r($<*0^`38wg>UKj?UqwD^^G15*D8^4?%reNuzH{88Ppc zTwkXZ@E9c@DS>95C*d{Q38a!VBr!)m)i`|n4}SXS-=1ci|Iv?LcI$0lE-K3H;praD zp{W82Lm$~dheu&3^++1rLBV9V6YzORu1>`dO1B-f(hLaTxYVJUr>Kk5z=%I8m#v61 zHj0lV@foW=t;!9?4JD_g7Znt3-@Na@frDiwle8Na`=}HpHaF&@&22qDyyO1WYd37) zzJpis`5+_jaF&)8&#s*@{l;n2r%fHphXxArGBV?}$5L;ZYU0Z9QO8#M#n3|{N;~zt zJQVWb2-9qPx+oQKq>(uwYM3srnYwT;@XV&PhstG;q~Z6h+L@vL-fcT})J!PR%d6^$ zF&yBU8*yrPd3k9;ammtEt8Vzzg@{82gmg(s>;SA1_)`LIW1SOW(?&6}e)pT7&tJ6U z)1Ut4umAV%l7g_-0un+!y`gV??~iNOZ+hvOCzxw$*a)nM$%Bju4n3tcP!N zF#iN8GE7l%V_!WohcRjrm24HQz}+c@fk%t6a3wN##S}H(Vq-z!+lS_GQ&eQG!D7ik z$JUL@LWx5++;9!Yy)~Zb?e6Z2#HAvW{L%5R{s#L`hg4Gx&_BUnn$;81tV z(5bc-POQt#Oe)Od`}EqpP5oK6Z1u^btz)LmN=ix_uvwqkLIZJ0u2oT1Oc07=?)u`H zfrR6`b*Q*rfrYeGG%GL-Mp-4ur0S!kwhRIs;z(I_>DV0rJ}O5{>on+~mdxyr^1{*$ zH8rrNAVrCVLLw9^)*%sK{nHQZXel(kRLh4M%n3{k(qte>z#X1cDwP^q+Z@ERTzp7t zQAgB`vjG50y2fS3PJ~G3=0&Y_qYaJnBwKPT0I|^;@sKeDc_d!NLB-xWuxms&g;Cbn4{E`}gd? z$VDaPJcwqq2rY&^?bGp_=m|44;rV!CWN4tLedp%-3(lRFof}8{EFt)kVM5%458THJ zdSBPb^{-h9XEd5nS6O~(So@%Ybz_+Y%e<4iPn#EUQr<@J#p@wvGeN2 ze*W_x;i&u*r+Rj5-?_GaOa1yS+qdmFbmYM7+0!OXEY)r-TW#b=Mv4y~Khd{(-KNB> z!uX^V?Kwh>@NiShDc)IwGz$`i#T9Y!sT_;Sz8}^HK!>qZ3CcuGho0!F$c2tDDtlZ7 z+sb>W7gTs-sLl8)Tzfo#XAUPNr6eV%HaEBORs~ZsYBGSjk}tC&H^1;mzwe_xJS8 zn>#x_EsW=&5X$ghqy(rX-L9_wpa1-qySDG4^RB5LKYLEyg86g!%+I*7)j8Q(b-{+J zLU;+yEx5*C+K7r;H(v=SfkYX}Wfpl4V@y>Y>wCo3FVZ{`1&d~wXhf85mq{9g#KH;! zT%=*gR(o5RRivc6vZCS&oKrf|*Qs?=33m4n&tH7@nq_Yt+r8=8XP&zGKW|l&CUZM~ zS(S<->d^JoMzfOfvzz1)FbZn7BT>PTVpx)vA`p5IBvVb4wQ4F`#8h>std&mD(-@kN zWU6fs?1xC~YZ48S!Wrny^nRu7OH{8V)jZp|E20!=N*W0!S5R*y*~r0{Sb|g{F3ZqK z7*Ofz?PBTgwy%8gj79T*ea}75zx>|1`fdOH-(UI6jTh(v3w|d*MJ2%HzS2gFVwW== zonl!Mzy*|XTop?)qs6i)0NiRQw0OZ>*6^0CT-n;%pOg@9D~gg(5}1d(pGs|`tY3FO zsb_FTU2^c}+$|+4h;pJ~%K%PA5J1b5jhPr2969nXlU>XLbXnJMB$u#6*e(fVsGtOi zQBvT>z?`~q6TGE!^8_PgEMwAoVLDe+&bgT-OwhpF1R)~+MDR}CQO&$=y1T zQ@J?S;qnA^$s_9Ifr`Z4hy<(CY6m6ifmc&9es!lqf z;<^N!)qIPA6^IxrV(~!BsP3eJs8SRtlmkG=ab5-!AUIKx(luI7#jUsiv2@+sVA4BA z7fueLyM=UfO2Wt0h;Xp*zI{h`?b=;ZQaEGUWKc+@@zn)97eG=ukll*k(nsH%sxfhy zXuZ|gYnfnZB}d0G71ybfWZ|#?H)Y51oRz zvcyJ0nP8}DBOXPRVT?@WXqU2c%#^0&Wdq~~9G) zEaAs@p{VJM)?_<`FePB{ng;Y$QR*M6yOm$^_Zi zgdUMkp-r7MDL#eo6l}cw@^b;E6;THYIE@Yz`Ug|f;%Cg5$vK70z*!$rOJucLz{W?m zQKGtSp$XmCYW`^!91K@iXT1LMvsYg8>Dt-zF2C%OY160f+k5D>*WXId%z5Uie~ulS zHPFMC(rMnnbj1-6@}{H6@@FM$yo{}Gj0_m7EII3px8HjA@S&4q#}@XPhC+7349D?J zL5?Bdar5fctIt?G<%Q>8*uHC5W#yQK3ua$`?bX#amBmGD>(y)0I1*0}nUgbeRk)y{rBx1{s?K^hvK6L2N@#BrDsadz(cC&q;AvC5U`{plv zl&6J!GtaA&41&*SBqd`}G;Fy=MIOH}ByH~uH5@y(Z|{MvTX!`aIeg&2p62GR%&b%Z zTy^GPsKK^ay+)CeaOCj*f&L!$qp*GiDKga|xUpq74ROpbEMg=8GoN&;A%Qv&cM*`? zjG8&h*{oEp{#x;ZFAotJF!&Rmxaf@qcHc70_j#+jYH?KNNa=gr?xwtvhnmV1BK$BG zSK%o^=?dG(hOk&u0Zb!|03#;^!=sZsCl@XViA}g&JEr z?R61mE#hN$6#_BBE~MgckV>jT{3Bao8j28`cCg`KSN}jyV`pPyoVzOmuRUOrx#oRVHrF|KCpj7U-@Yn8N5 zke896EmaH5E>pSom4Yn3{){gwj5Z4uVI7y zg(S0x6XYID8_YiNGGiE!R(WEqjjI(3VyIn0hQNg4FKSAW8;H5wQbDC^7BG|$H+1me zUh=YX3(W}Z%jbpRmcEvg=U=uUFDIpwW7+voA5$NFnJlzz=doRz_slxys`!-5u3pj7 zWr|}u_jtBT@>a;^^()paeLWmEG|PkiEv{=q)x>iM}@$;pYmy?u?RP9SDHb5dT~ zN=ba~nWx`-{u!+nFgakEcBpsH_ALjFG~96QRgEW4FnlU2FOS3}4Y4r*(PdvbrL;jq zuHnJNgz&*#yF)D}F23kit1-${RwOcc>V#=CCVc8MpJe9We7bkn?tSYvY+Si|)yuEG z_VB}xvOPa9FK@=oDYMyHP&;$-#0e#(dFgs5PY3(c)bRaR3ZuLzxvX&Jxl3k3mDPvC z2alxiv|H0x4k1(rrxFZ>6XQdhHg0b@*h3|reyr==!yQVCFnr4^jn zL5r5a`W7eO>J1|V#r!H6ziF+vD`nXs6vtKu_ArvaaM2vb04xy0TSAJAaQLHD$w*Ir{f*ZfjvQN8zhO0{ zvTp6OPd(Y&*OQ)_Heuqpx%28~&zU`S(v^#tL_{i~^sb{5U zWq0;z$v_wMfXBV*vWDZX_}Eo{xM%;0r7O-_a!&26y3QVIjv8>3RN zNup-o>M;e=W=>nPww~>xbLyrH@+K;mOv5FbGK+8xpA>#gTTd|3LI5R5F+fZ5n-E-M z;>wh{{0by=2xwR~)+0fHx|@*7ksQt=%FF1;q9$a3;&{RpapNTN0X6 zCaA#&xP}*{X+;{9$f2SPRPa`~vW*iGpy>N0V_Jg5(j`xc<(sWNIhyKl0fhaCv`iyp z6cIxYDkZ9++tv(a6y%G77K}5sh>U3>STeaz*JA&Vn^9Gx7^oNgj^YmmlP_Rp(wR&~ zTSbb#62pH~4{UT{>H;Y5rghZvoJ=K1SJvc=Nhej5;xZ~05QsL}rn%?-Kkm{4B*~y( zF$wM-G^>(h`dW^{0XGMBMT8t95D-yLlx!3w`YTrax5191I%9dkNI3{3U`@cJG^V=A zV1bZ|jV4T#q`)eIvCJSaf@7pVNYpdMN!UgqxIx9qxXGNNvyddpRGOv7euSh8xDWCn zMXW~262SdiBIE)X6N%h_fq@&-p!iJ!HL@{)7;&}uq|>|mWxu)w2~eP`Kq4kZ>(+1R zXm2^^jPvvJc(>lnFiP@~vOq3xft-wUCrrS@&^C+E#b{W;y0XRx5`Z<~=GM^dKm6ZE z9{mR!=PtkevafyZtHq_+eLcJm&%_4b2a?82Pdq>gh6PjwkTs&wcbLiGk-XJf7Wvs& zK%bvcff=1y z9AB|wJ~^;`_r9Tl!RqRYin4S%%f3E3N4i#x1Y~2Cym!=^lrYE%$f#zUR5F(c+t5L4 z4TVLiHDk(GtzILk@I0;OL(@BA9`*AOD1OeI*)PBH%AvzY$Br%Kp=MNC8X>jn(m}?u zI&C+rV2lR?YcTBS=^UOirDFNJuRQknlW)BJ_Kux<%FD{W`<<^}{-JYO^56-)#^TaB zl$fNcOgH<)tpxa_5m7Wma4zW)aFnzf_ztlHe>M;l!NiH@F+XSSC=+N}q%sDfvOJ@v zrfTW?%WwPYr+)auuW}4Es|KRU(>y#Z#7a~DK(`I2Y(`*T8-!P6{`>_${-6K7qV5E-DLclOz#zH{UMsyqb@_dAc$c$y> znW2{EP{ZMqJ9h0_zi~_bhK<{|ZD$T+&l3lWOG|J5(&sp|i?N*4)PRhqL#P;Gs9Ii` zJ+@}d-b07G+L|-6Q)C(q3gwYp#!msDnYYVCDgbThF_%#JfMUg@fa(Y_)gE2;Ku=z$ zx+I$ciZ2aN9>HkPT3&|7IJA3@DjdlA&zIp%9MQ5&Bsa4B5b&_zB%PrIiSkrzq9m*C zl1fn&mqG+hJ92F`f(Z@^lYxYyVBKA~XUm4Ap>WTqZ}>!dM&$6RP?o4$s6`_){sACo7Wrz0c%AsS($ty1{PDo7d?;C7sI?W<7lzA(xe$~o%Ih%lUR{Dl3 z#!ZKgpy-Eto|YYTyFth3YE3Nf^0rBEzgXP%}=Q=NN4Cs?2dS=Gn{08RSza_2i%11ZK?)4BV97vh{n`z~y`h?# z$?P6MN0}8r6@aWm0>@HTPncde|J-%&zxv#h|C%~wDzBDEGzrC}7M7R{ZCF9N!qLa? z%9jt=e_T#+E;qkZA*!Nv3MxGkq_NUWCc>nuo1lBKriEUNQq`DB7%A2n2dwkph7N^nj#6SU8&CxX~oBj0r@RyGlUcEAfrl)ynGzxK5S0hI4#_JGKZK`OP zSA3Kl~A04QFp@_XG``(-2*9bm8b|LiUFEA7lTogX8-}bjs>49Ox3CNa5y1F_4{MSDZAMMW0)-cd_!il9l2Ql8<%(lWr5);hr z5ROYu37=~0{nodC`1+g6I1wCq1_yf2K6}v*zW?2tG1;sUxB(GQ7#hn<6De*wX;2ni zJ{S~v(~yUDoB;SqeA+s}-(Nd62q9_~n?(z$^r+nzc7rylJTg-z0 z<1?S0Q#Yf!hEvBmf81!xXDIGrw)C2_^QclX=_wXNp}2UKDq33y4jeqPZO1k~c(!Kk zhP^xYbhNdD6iG}it09uA{wQU1X=MivG~!zjdIP-$|Z%PKpuVgU!j4-$Ey7g_LXIMn<sv0QUblxO# zvEKUCgO&3%gWM9HC>{DnhYo+^^|SSC#67k5l8vBF|j&LrkV@9T?7a@36i;F zE4z$<^wc00aRh__Rxt=F!wVO&B%{fvbctW#Bo5mAD{ZBpq zx1N?3T9$#{!FS$x@7=do#ieKF7Zpz!J0>MLrK7c@v#rgJtz{2U|0_DVaCoS5m9RY!TrZJ zZQ8bc)v8tN*8TCm`+M1!6&@-sDPoymZta{|vuh_z9A8?TjUoH`Y1v^fr$7YS8>Asb zL;C)Et3%0INogF;kB#?wuwn_8M$T3cG$ z+uGZ^y1V#@qZ~z|MN(1|CQlq+RaVTpxp&hN1f@((YybFUhK}>;?P1592^SjX!@vs{ z)-GN&>r4N66Yc!5NF>7FEgArU1m(p%tcP+&|OEo;m!>>#Q4q4%h$72g z&vZ1xq99ppfG0g9YLF5mAd!@c6akWP3qT!RASg+JI(rk)=!u%q)vxq41|sBP$jI2y zR03{z12B4ooVigFBWnN*05p+uGXdo^g+aQ}w0uj5-AqJr6hMG#2qx=@gN&p(YQR56 zXB25Q&RVr}kPnbBaL#OZXdAssWYgc(4lH5ZEhl>WKPs4dfvt=PRQ2lwqi953ju;>1 z7_J9KbdI8^O)^pZ}7l{?wbY=C^ilfkobBGBaV{L z-Ze!z+!7dxV0UfFqlbYs!w#uN-@{USQaG9SFEipYPjLOD^Drp-hTF7fO@1ePn z!an3R(qw4NPZkDLX(D8V4FZon`j7ql4&=`sD;r5L6(K>Uf`bFYHDkvlrzEXiTmSKo zosWG?N3Waa5WrF7y2(w<0HO;abDbgHgynsT##T<=UNvRf#0g`whx_GzY*_#fVeMN| zEEdEulKb?hK6~wrH%^{1`Mh)I@I=nEkX=kG8-r1f_ISd1aCTQtPD1VMx>dXc(Sz+7 zl0a0JL?RQ4GL2ifaN*zo`p*Lgj!qiSJH0%}RFP}4ro|-SY*s0|=y`_*7wk(O8mcHS zce=zANdJp+M=dBEU0DQXtdZ656}>$mY#_rE()DOYhrvu$w1);h~I- z^s(b=K7Qrp)2B>DwJ}wd`2`tC$(o8Yk>GpUOq}|9WI7Gl7(A(rkVYI~%>K|NXD)i= zkN<2qxNrQVxeSBwe%qF*k~X0+2JkF?for2n)kGotAMk?IBT63>s%C&}vol`5ut#B1 zkN@&p1;J2_!kY3ToJcNVIhe<&iva?g3MS!j69KG2ExGVw0WFXufCf|T0VY1%H?Il}bX@hxn@Y=4Pd0}-J9^k6j(QTys4Jv3 z2aB5=5YRt02>fVPB%5oSu0)U(w6aBDFd;IKpR2+>aJb{KC!S9$9$QvDxsNjt_-N%2 zA2r|$2Yo5=L)+FZU-8ysap9H+{`~VBZn&6jL7iRwB_)}Ee&|Q%oqyIXU;fUU&pfc; zypNBYc9wRiNGwztL`EwlO)X?!=|wFtJIhSSr~M=P9~35#S}G&K?WWew$mxzFlCF|f zfakJO&o9R?l2KZiRH?dT32mcRQ0ycG79qvGPZh!HoJz*vb@#EnC8(+i2UInBkdu58 zjtsG3dF9xVz0{eU+&oTM8}1J$XrkWQ+j5MzLdwf>c_u6bQ;TJEwWa6}?nMHQiwl4s$}p(l=h-yJ2-CDJ{34Fe^L%z`=t3JHt;hE^AKShmDK#-J zA-C0AT|{R6-I<={XM-=oRM z%-~xJCJ1UsCb_&uQp9*lAAe-;p5DfzmtJxso4NXW*ttNxiSX5f*Is>Njb{y-`G81l@5IKCfb<6fW$=TE6le6gS z=uN_*{E;&A`I{7OYHn?9Yin-fa}%ANo!uQ>9eSS%;joz+pM+3+Qap=2sp+Zd=^0st z#ns~{W@qx*#7y?%WoGB*=Iq

    9GfXH-Fyjv$j$l$|JSsZc_YRR&4a?iWu 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 z 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

    ;#pm&n!)H?d2_Tql$OLt zIalx4_UMluJ9y~$+I4wzv*-tTEzKk~*&G%z>_jtZ%wJY8dbykeU96y;&d>?}ve5K4c6%xeOjY@uvtcH$g|q$+3EOObFP66gFc_S-IRZKMI?G z3fXlTXM*E$Sv;bS6NgN9hXN?LQda(Z@P^IBSh9-;NLehKK}bkFfy|!0NW6+G3g$7t zBDw72WV2Fbkn(lqv5XFvo}(ySiqTRc|6R&u>6b?nc8~5ZDCxGw*dU53OGC8ha< z5>PM?+8^6^_V{)jl5C9dLwhDa90$gBKU9dD~VC&qrjIXctL&)LllicD$Ow_d?Z1RyRjlNF7FC2 zQS6SzC>z3Pj^S`f5^|E&uv;sku;LZtgoKEDG;jwbL<~3?Q&16-etTB%278M zQHWkP*Xel+abinJ(8Y{VwR@44M-Zlcp6t~%&ql;j4N?Vt6{W?i3L_H4p|HQRtM}Zw z^BXtUmK7(h;9M;xQMHi7vGDJB*N1-gt3T6UddJ%ze#g7sz?Q<(3=6p!#<`&gV><1A z2YwnQE?NSMZO*>@4xxw*Nr;?hG;FSWIH?Af)>Al5%nn9X+nBa3#*A9GjA{^{@Wr zt9S4G<6r*RcjkOaQGQ&kuc`SAYX|=ABOj?>my3Yx*hf!#Zf-d9 zU&gVQj%?yaB8zNgp_y6V*)!A3$~2ug*?9aoI{^OsCq8(?jXUP1RTrs=C%+BRwD-Qg zIh9A>a?2hbmgW%(ia@Gk4Ut$D2+3cYmy~3rC+PS?l*LyMU|U+8oRVuWgyiE}EgCkR+ugiJ-YWneRs!+> zeL#Z0UPYOsNaytE#JF5U7Esxc$XIE?&*5IY@IG_8b75g76prN;hZcKCRIk>dmrN$T zdbSb;W+lkRGNrot&{8a>b)4`7pHh%Ynn|M=u>%XrL{`eODH2pJL5z`2e{Om}IX!7b zN>n92)s1A41iGBmz>0u+f{qQwRyL@kM$n9yhFW?b>YEP*7LFc%dU<*LHLtlZCByg3 z;l;smX3t`D+=p0@RwWPQkQbZ;m=ICCg8J@GWT8cU6U$DMlM8bvd*|9twX*3zX+a{c zo0rbg5Z}qR!Ka_zyRa~O^{%Ua@}qBOWQ1mC`AU2#DLzzDlHGac(l}oP_+uEMNjd07 z)WB^7c`#p7^`$VBMbtDV;?~W@w_?VpmfCyS4<$7@o(=hU_r}Lo)QN$)1>d&qoB#G? z)9mb2D4q!mIU;`$GycuKR7^VcK@`ngx~XGs4~q4G)dyGDmI0AUx)@alS;&;A;iBA2 zTZve_)d$gf5bKbr*(POHSTnb>)GA>sSU8hjOah}}0PmR>x_Rrq6iiCalJHD|2K*Bv z!;`}ocJACzSeU&qZzrOG2NfFU$W&aI_S#q9^3VgfOwakwUto{=&O=9z9zN38(z^fT z!QX=?6qk~nSHj0rB_(B9d25nWv*O~C_~=UW&DPzQtU@W(h-K-*oWSZ}4Nx>L@f;pu z&<|5WY$FMe;==SMtDzvp&;+p3ZLG7sarf0*vvMMA)S{1FBEE^qQTDCa`_ymtKK196 z{F0)g%8HuxB}L_#Svg^j#H5Dd{8Y}w(;gQpubL}E3(HGWtevAiV-Opgwx%MZsIu<* zTNh`iCq_mFdOI3^`-^Y==*Pc&$-Qi6pn`yTP4VK4ITtpZ<4cB=)EqJ+D0R)k?1XP- zIGh^CDl=a&F+021W>lBMabZqdVAcR(Ri0FBswBxP%_F57sYekS{BW5ITd`4sw~M`| zU~xICiUrAqO6AVdB&Ynw#|9$d{(&LWwp>e2U<#I|eZH)W48Bxnn}l?oJ43S4MT<*d zYI}4Ubr%#WGlT;+SCtBh)yFkr70TTB6Iy!nUUKrYZ z&4#%JT0`mq5fDPvQOon1DiyRpkdU5Vow25R%kDeal5S>Vs{i7-p03u;&J#y8OLfGz zJj77p%NVjG^FWCB{nInkem}>*L|7ZcJUts0%}mYFS|%pPudm#=BP$iZE%EY7^A*!VXgd))-SKYCmOgpcAmkEqFC!7(j<( zQd_9HMw8a!q9GAP73>}T&UZec|74 z=xCH#J^Hx%D+u9}Iw3BW_))>59rhSgx+}A;n0o90ZQ^@8iUlFEyFAMgC!kAw>ISbu zY|q@$w{WgrS7btLCxhk2GjJcl!>nrbXqo{zI(9c4%0dqD%CqD$4d~Y%E#7f!j5!z> zG51pLXf`idJQ`+xJ#@mZSf@9l1tFrkgvW5W8&G1|rL7<`$mq?HG%6-tG+w__sH~!# z=nzcO8xf8r7ZAtxkA~4`D-o4(R5zmu<#yL<$TAoThX+wi7@jPzDKDChU(4x;T^1V+ zIvnJrfC(6eVFSYOKw%?!m9jBt8O-Mm64Hjs!xKg8ewDOJIT}*z3iwLk%ACER5A~+MxpVP1C!W=W-^iIvah_DxT$^wirX)*$!wKRb19jK`cr=-&z z7Z(|um`X`bEGRB**!N^xTTj-mwfbm5EsnZwhC_A-o5H3H1zq_z?5?XuDzC!0i(UDN zdd_qS(lP?+X}r~miHnJ;uCAd=)p)$c=er9`dfQ;iQPr&$$Cr}qU%PH?b8{1iL9l*L zjhy}qE$?=CKl$$WeXP84!|iw6HOH6z(vW%si~!ZjTFoN;s&Pa!`q*1@A@Il8I^dt- zyM1a}bxV=YdQ8d#2M8pFl^1Y}fT~qB){H_&-DTdH$5vL>wlzLKa%qv3_6)!b+BE=J zF33vPEt~4-|27_PTVI=Zq2K@5@1OY4zkM=2HSM>*J=opZeuy3UnopkTJ3Boy$6KbR z#)jJ3nit-2OZ|rRwKY||U{A46`r(BY7W#seHH#A(5vu0nzd9??4vSPL74apcP8?)` zfc(dY>P~l_Z*6Tmc8m=Kj<>dT4bn+n@+TxF6qS~+d0|O$k#Zq6QsFv;t$|m2kIXVQ z`+EVPa|b#10d*}d1V)CZ`}+FWMBsSi@uLkKnb$csJcj1j2ce{*{Fa+< z^bG<>9;kz8XBl#IA`>F0S1XVszIdBkVynfA7YF&sFh4(E$3IE$?mxD`@AXB%YKbu; z5+RJ3SG>y;WocZ+20{HzNX`Z#SnC3B5{luey0A$K(f7+lM)+=|C7 zpo>p2F2b(rB@tmvkj2!6p^a6*Nzf&Y8OO>_7&gR?97>RY5d@t$P^2TJUvN8E5(p|r ziGqSbq;bHAj4N7_KulKiSz>jTo5pEF17~_W8}kaY@4V}U^iEsa&oB9TCrQUq#ofbg z9&R|rm*EnR@&aSj9-yopLxR2-Ub4~27@im(JbJRMD7`p0GBLLN#y7luXk={X)mJ_G z==Wlie3Nsy9J5gz_%@#q7p^JI=sLq!w{v_x$_gGvBSMT;)nY?X!g)d|Y{iZgF4GLQ zGj8dL`lsgSdQM#`E=W(&K_sSGdE?TdgGbne4R^QFZ3gvZ5kgELQugQRPrjmOSx}Hp zfBZVK#-9j_S63j!4AD9-LcppAqQC;NeC8@LlvuaR8ODL?g}Hpp{!uRhpe_IPOaWb( z9qH|E_r-AvUbZX?V}bdx(F?x0u{-X#i9I`}dHXMK6g+jPvZKLZV1CvQV=6{*$OC0EQ6{x_A$^t zbGmnK`21}*y^eih_|}U^K6WT6&fB;5$rG(ToJVuu$ngeh^FvSSE4YNT(u(Su+Vy1> z)l84Z#UxSG7@sciK^-ea_;^P}7{x_2B3Te0m_87bo|&7Pot^o+U;Lo1ezUBpD$4*h zK_tFHAvPd*-WQ5bNXn#=mSH&HaBPTbEH08XJTeiNk(Zc~P4y4Pcuwi0bb~-8R+XJ( zmT5%L)J+7B`X?h`4C94o=OhfrxXiDV4QyUELM|gk7CvI*V`CEr1_zi;R$Zf9;ue=g z*UT7ZWTxR5V-sUVs(($rqzj(`DkOM4x1jh zMw9tSm8h~_X!-Dw2Hd)&qH2!mH@TpQi-;8h^-!&>@H9uw3|>Nk*kD|IL0Ni9)rOk` z_sq{tjtpEleM&nQ^mcdt=6Cyk^ON86nT$U%fh}@5&vG;0kFjlOVO~laGr4rxwWE;S zPZ~05Ou-DOy_FLdZIViC0>+PH%fUNcSgI4=SmxPuWEwHOxa=;{bmSycv?*hWW@vJ9 zxv{Cm7l|(@DxII7O-s+f9u!gDA0Vw+k?w@%R>)-q(eW)LTyh+vg~I2i(XtAKp8`fo zkd3O@q&Jk9l=6Z*UUcwi!@+}xcI>>0H9go3u54Oc8aIscDDw*%62fvDY$&tgF+4ai zJY_(cjDXXQ3KfuYLdzxd5}^z$s&h{QUr~&bxc~)B5Bygn!ViC1_MwxDbhBK-fcMMq zlueZ@m%|2Dn{6an07~FPyk%zemS1qkHRYAnpZd(_o_hA+sW-jr{qKF-HM?tFH$!0m z$0afj2b25BDamY8)PG?%B_+)39FIS8iA8f#hXH*`e=gb>K!5tRTNK>oQx2(9|0E6q z3ep5rnx{Jx(~B3BC2@0S0;G+ho$jq-CD zCPrDxZrmEAZqh(BqcFM5#7G^MW;bcXMVS?iCjkI%sIDMqyqQoyIF22=9&!)Z;uIwi z!(tTw9v^9DHbJhWt@uKeVb5i(kO-rR>Y??Ra84j}QF=sQeKfcJ;h5N_xe_3 z@Jm`Uh|tlb2?#PJAX%^uaduh1%|y_R*B`v+Ra@cd-AQGxBd#G#A5U*f@n@jyovqW@ z5^p({m#2WKD643A?g{GUYxk_BXwW*MCt7x`x|7n3GIcy{gmstbzlk5fU;v%+14^>6 zhg*n`7kJ_gJ>T9hA3xsx`#=1(tLJ?G#r~oGi+mK?)YQmpZMAZqw%d-SP4oa#Nj zabu}E75d(l46rHb`B=NKs4yuh@rRH8>U8g=KR@}m{(*t7fBnb9gXjHAv#g;`O--q- zt-blCn>W_4uc_q={QTq;23TT}VTBG%Sl}FKb>_r?{w(|b_U(Sc4)z#H``8i36TI9-e5wQFl0dg%VT z`VBQz?021?lqBzCE{1c?=yY-r-J-TDL#}1Mq2MzFG(0iAj6zPfo;-5AvFUhYM@Kj7 zCbn+b@bh2(IBd&1^)03RYAFI~M~6ooEE1RV+9R)|9PfC?KTB<)yUb zATPCk`@84Pp6SWRS)TOe$*JTU)N@rM3uNbu|#Yzz7 zw8{Xn<`#WDrw0o2;y6CZF`?!Dvwe%B1Cfk^nB)}JcQYff%=ZSD&iUj0H{N(HCmMjpOh;Ll^To#T z$T#*_UbALg45}CBmgh7*No^XesK~CY%D(5mJ$x)SFtpgw)_wGNGoL{y30R#jeJo42MkIV~%O!Fh<)87$|qE|8>`!c+%J8%}#N8O+P46(K>SIayF9 zW4@-nt(jdcuD*I3Mx(|AR!Z~xQW8Vg?5w=u8g^B@Z*tmq`phtu2z!qmIDGu^-|U^6 znp+OX=N6P!R@#$>oaq~7h~*r!H`z$P*>5M$jRqgnolfGj9-8Kbu6L6 zaAq+IH0q#w4Dk8MvwM#QQgY)G(wGSrAO5+~kwNC{RogGjXXO@#ViMVH2c)c;lYIK8 z6*guUlt7BT&avVrW6PGPU+yINxzt#g*~Ogci6@~V70guAYF?qpFS-i`A_;LxgM*i7 z>|lhNM6>&*U9y2PBO?Xq@zD`6>_{kNN+-ftH2lOyf1xN6dN!VvPoUhGZw~pU$40uk zTQl=B*40$7nG4F&>t2a!IPkUQWqK*WgtW};ym=in=;jbX3joT6zDfc(kx2ePX7H@IdEHB3r z26!T1|F!wW3{9%O)l@3Gfp8=aNZ4i-{e{E9n5n55y{15K_$wROcsz=N;lP5V5bGhN z3xfNrO``NeM%;_81W`k%T3q~z58{A;YcearEJaA|Bk9PXDL?gu1OZM$>gh;MA>o3K zy*n~R8)kTs8I(>(K-#myAm1PkK}AmtgWA>U1`E$-HQLvSsadv5{?Zrz<4a%q>NC$i z_fPNroJyA%9Cc;(E>KvfK(vYC$D^urB?>A3RnE*L zdJgKCLzlx4$}&dI^0*Wap|A=mx%j7$3tPa#USu@F{Tfw=D4Jjf5ISA%!3!(S{zHI_ zWOH;}tkaMKH5FMRH)XLO7onhY0n-x{oVLs?R%C&Wl8W--q4jV>6rB}J6RniFIm}F zz#vIp#gI){+>PHAL?YPe*-t(vudrs_y5^Tf*-8g(ODc^8>=s!O5^eL<FS@s;A>kC%0@Z)rSVwiI;)M$`lNn zu(+sb$5k8a>hIsMwyM0Mw6GvEG09%_Gi+e{0C<|?J&ohl z7_jjtqjxoU>U8Vl?+}}Mh1CBef*FC)k%jKw?uO&d>Tx$ToIZP=Pg(i2mbdZDKD_v@ zJGXA$SW!`ulam-9XUzfo|5=}5ah~nNF(RF66r#qSKC)}_WpZHERY4H8+gyI&H4h%% zcZfX~a`HHLaQ!`Z-$O62rn(|4Cl$X1p6wspLDo}K@;a1<8#;dg_vFMv_vy1Ot*s5m zjvYLFwDn~BG-qco`@)II6%|#xckNogp?2ejYI;|URMqK$yg4d&S~YCJE5=oVo{S3u0pIRj+kgAm6C9{kxA`h$vMNViBb-?XC<7W)0!hFG7YezAjS7Ik zuY_KnDXOL&(I7%ufWUN|-|lwzAUBwmrkr9|Ft{}Cts)~U@J}v|XogPYpe~$peMtbE z=SUXdQJ^rvBZEZoY-0}@Ntz%rxI8~K(tD~sHaX_rd+x!u4b44vk|dpPO;wN+)WRgr zAS4Rr*4)7>Bua$33V}LVl0iRG_`>XLMQz!@Mc;jQ-`&>McK6*c`tnykO<{ay|M{kl zOLTYHdf_bz05JCxr8MhEc zky9jb=I830214@-iyYL+uH$d}$M^7E)cU&Z;cx;&YuQ41HKPC`Ww$7=)DtDd4zHK) zG@w|)ixK57Lu@$G z$wXsPY6c(PFR=t8&ObjnJUe`5Z&FGOXg;lE?$^uYH2-kPY%Arn#x)Ndi-h=^V=JC%Vwmc%-_z zq^vv}8#oXH0|8Sy%S=Q991aAlO44d8cfazbyIEj0Fu2&#+I8U2F*edaa_nz^`{U0U z*hW$_i#f}rW?e~XRYq2Bd|a|TXMT?9lKGj%xWu@|;|J67vNzV%GVX#8%r4*M&o<6% zXzaXjdN8YWrxtr_mP2RLvY&iHEC(F2-g~*Is7%|_umV5ArUbkt;t533ve0NWCh;Vd zYJD|tW;6V$6!tOAmBb!z)nHr1}J&dp9rOtf`M@@F@Sg$>cucv_RD)-1pdj9F0pS+Xi|F5`)idr(ebr4(=<)rIHW*}()*wRIXNw8Myp-Ggd><9*%3W8MuO>O{Zz*ehRZBL9<(ezY| z0WylTb3Ouwfuc!fxvL7Pkl0;~g|eGh8N&#|FKSePyV8LdfA*gzArcpoSr@-d&>@T9 zEJn;LyAd_?F0Y|h8gU@zKbvdB#KeB!{cr!(uhxI>(MLb~`LA|&b-eSPZ_G+n4qe8e zV^?g0Hkxwdjk}(D>gnhA?z`#cEqbA2W)P&_VgPDa{NGwu$ z-9<=Y{#!oT!lmiaBPSY!C8R`k_Av*s7$?5&(uAS)&toF$zTIdqPq*fvrQhfsQmB@&N{=WajB?vN8g5W(s)6o4zUB9+BS?E-oR z0X~cfqPCK#yt;^R@s`#33lWxyPlGI7#e<1>0lG|BkNFEf){xOtjiI-id{@EO5j&OuEZL!6W?KQ`7M(Z%m`eL67CFNR1+)cy`o~+9dj$B9n1=E zsKOzM0+1p_naT8HPtbR57`k^!m$BubqO|Q-ge91V+r=5mXwW6gAsm0)Esx!uAsrjk zT=wWdO=C_;&f%2_1qzMRf{KQ4ny+}Gxsjs*2~d|~P?%&3k2N4Xmd);jh1sPlx7D96 z$yBcq#gf*&wzjrkym)@ko}GEQv^sWOMy<7d?5*$kz}|g_a_`|`ZM_nsGMsN0nb)SJek>7Tpxu|`2%3N?ENowx#-EQWg+!aXg3V0wXa&( zD24FHYgCE6v=|c?j>H6KXQqpa*KmRzLwYtO*Qx^Ejf*^7LBU>qz=W33v3gufQ6p>_ zu)I7m>Ob9avGrs}Q%g%@Q*(QJ$NBST=^MtxgbUW>Y^dAtikH2ts(QohV#F6r4ux3c z9{<_TeDwLpf8EvHQ(RKd+ETrNmzd(28!tVoD$6(-@$j+ZFL}u|nsi4bdL%yIKmF^6 z*4Aym@z&c|oDZyPHJsiUMlg7iX<$*3!7~}{urzfSC4y!cZP?%*GG$t&Rg}yPu z<1T{(OP$@PSRT@Ftl{|aV7G;gn(E4jA9~fM`c0M9<+<7UNpy@EJlfm& zg?U*`eSX-4KeM4ZwKEoEkq2HGjEXDiSiIl?a%a^G%ugX!lx-wo1jP|wd|Q9&bQc}C za3s!_RfETdl;o05?CcNK6d2hnYkD88?wa*O^e$08AaeYdDFjF@D0R`6&^;9kR@vw# zy#ph6qRawLjQqlW)j5oH z9l3DoWv{xusygFTzptxrEEvvJB_P)MdIN_R2jU&uN)+=~F{S^yPzOa@vjhBsSg(~e zi4h_rB*JAMWXFx$mWSf9$=)wWwpt2WMP6$n)Wb7dM?sk=+Lb+w`D3s4cGZmj9c=u2%* z=_aCR$mpgP9;74HLsYDaV|PTU!q^12l&N&B1z?E-rpF$Nml*a+&0s`GG|e_BRcM8c z5{FQ*xv)4tf2y~O6&I;#*$eE9p)WKRFO8h{&5pe2g|DMP&CQA?oPwHZ!HKE)SH9wP zBLm}^d3o#W*6rT0W6Rc!RW)VV*>Pqk97W%I<23s0LM?^VI76Az;-J8qf~4Z&ZFkZP!IWNDoyrP;3;=H_qq_m8<*n~wNUx@II7p5hG zWH3QZE~F!p?FRkBmoA(?(|y+)UYZccnFF|vre8@z3#vn;QWUP0As}KrDGdaCsVTu- zJFE8Ws#;op*~ApzM+_ZrYTCE|(BY#EfBnsK^L!x_PRv?UUS74nqLMZ0Wf__2k>Kpf zro%VwS)Y=o<56rnTDGCA@(>g8J@fSQzJ+jFdOi~bs(%A)b2!Y115i5Xeh zYS4U(u`x7Um`$?-T)3ZjB1J+{3S@NMO$w$lWG=F@PKRRjj`FASc6w`3LpOs zA5|`+#^mIbvu7qp#wXL#Q}}2?l?YkU4c@xsOGt>1iwj@6G^pl_(kITG-V9C@S1-|o zo+x;-FP-Jie=~je~G@?%H8E=~<{+H{Nh6CN%wBUFXjAoxkzU8>qmf25?Ad zA=TOsP zID49H4*4G8nL`~s>v|*9=PcsEwFylK7k6^OaaA^CX$Ln zHM+DVi-AVmA)~57X6mJI$qCzXU;>&8hI?kEwDeOkVuc@5g7{KjMN!02X~{Pb!O9@h zRY)PP(5|*5n2lBYlb|J6(yMAtA(7C4m=B3Pb3xF%1eIEW>uVpe%3?23GOVI3=Ti3Q zB_BYawC(fE?JWlHx##+d%AzlQ_3JR|WHqr|kR*pkSBb`q z19Dl36p#V0W>?5^Ig}n^sZOyjzk@IqS4nt~LT6CMcT@w4wabu@P67Z%UN=R%%b6(p zBtW49+~}K7Jfa}ehbTE3hQZX87BO#Uyn~IglVQ2tMpN_m? zFb{#Q1eBMO$+}!*6-oPV61hAU1vY0E%O&ZIRen^)N%WXf*e)6zC{P-VC&G#ss3Qeo z2gqHqm;IM7S*kEAlOSb3wy?FZ%WK@rtCZCM1?9pXQbR5Db~zxsOGYnNKQ5cID34;s zyDnF_(_NI9V3aD3R!f+R1)t-9AIg!7v>zw5!|(W6O*a4VGJ4rPE-!blXo{n*JE>lz z;T2l3Wh$5UiFFJKw_TEV^-`><*aC)3i4K_iWx!4y7UcyUlo90SJ$bm@lh`vXCZBnW z`Gj#L(pTg%1zARsUA06M*Q%^eY{wn2BH}m&dlaWdN?NiTch2r&M=CPUwybpY_U}8y zOOLB}US-2ePXzb#^IskK;DC|#XW9=Ay0nI>E*()SZZ!y^ zsY{ZYwDMkSEDqwfwB4N&c3XhG?rlzD8 z78G}O96Nhvpt>@f0i`pBA*EBS;z>`4)#EM4+nbx4Pqv(FYHaT8>=_vygXQ@6#Dc=Y zt?b}m{~Gq&udJ%b$&QbWfv6g<{fGL`USzBN#o4)qvhwQZ{~9^o*nIQN^{m8J!-P0u zSrX8Z&CO3JD=j*5_z1@-v;LMHyBI3}*H?ep(ti3gU--)GtUg5vN79xO9v`LVHZIed|uI$ih5R+-#nOal4vYlmh}5{!dO$4PO`@=;x(K z``p|_W8<-zS)n%znr_ju6s%RdH8thyH_kgPjvj41-puKYw70?7_~Me{`i+|&e)x6ub?eKDi_R0KqnHbRqr8v+EbDY+`95JIg z?rcnML1-hNe11U<>y|AGFRCd!7DVT& z;grdW2Z-qkfm~<}Mh&sm&Jco2a<4KcrZux8G(<`-gas!Nv{^O*N6!+hYY3c8 z3s5=98y#_IS-YmpLZe>`MtL)qpaFX}vkeLAnZ>2qp~15pc=GC3y%cF$yXL3oVj^L6 z4y0?-hjbzq9b*z+tXdC(FpP_DL5K%a3Ikv?yONtxzS7KeUXJ5Z@O;Q8U$)? z`L$SEdS>r|k)c^%D0ONk+}3gN>8JinXNtxKDr+mRzG}e`(APl!@^5L^BtW%`wtv@_W8rdkN$Q4?|+J3 zV=~e!D=L;o&Rl=(>yS(1Hc>EJo9&oyee$X2eTkVd@flXG@ZP0~@e!FJ5S*Hv&dM!K zOh{pKM~XEo=D0h1$ZE2uE$Sd>&6(O=>i5LN* z4&~=DDJ6MfYVOkDaCu3J5CSd?mS>R-fP6`bNh6m=PzqV>f`(-^62$P}dA34imx5JZ zl_oq;kxJx@>UXrZG$YmaEnC^qQ&=UF0|l6u=K=P>@y#w(RIP^)2n69k1jd6fTNaNl z&qT`OU4kT*xCW|NHJO%6`R!s4;MsX53%O|1;^WiesTa&S|$((qVF zx(G^#(Ugr{oXs z`jd}8@%DGT@1NfBrn_Hsm2w$L!?Jp#QC?S@Ur|J^B1Ad}1spTZ+l;a@ zn(;go(v-32;qsmoLzkkl8FlI_K|FRCuy1Vp5Q+q&;|k9DsYi@@}{- zlNWM4nS?8z>M&fHQF@6IBLo*nWi}$#iofwA<#~(=S|vb_QDT?jG$?Kk%;VWTu0nYP zE{ia-4xQ;m^7H8Km;D-M<+Crw3*DnTpWevOYFEGIG4*eiuy##WT0-~|8w)<)2gqBd8LK~<^R5vN)WUU@^oNJ^~>ts&9EpmZB@sTUP(3=ADl z;Gxl>p`zV$ZH0ir93LMuHabNWUs7J)-gLO-MC*oiS<`T+K^pA^14HpeM&9~9^4*_) z;DaB7WKLFESw+c9UUJt4EjzC)DlEvzN{VBlfCeqB;MA+~`8gQ!GlI=XjX!sBlBIoc zy=KiCwn=B}D!2x}y4zxm8(6WIkM~jQ>(>AI&rfh#TSlVVq1N`%Pk!dBZ+zRk6O%JI z=mBuatO;d_Afe?`=6c#Q!5S`jX6P*vrdQ;k11$|pTgW1n+AA-`8FgNSvyh)<0(2Mn zj&N#xbZ~I+Y~LyRGVPu1XZw0*M~B(%N)ijw)x5S6z(g2? znHEi~=q-X?=VCLx^MqM_GNAqc#Q(^!?{weAw)XZT$D58GW&gj{OM?USreovc%F0Tv zx#sH4n>MdoS6ftEn4X!S9y{K^o5Ka2`@q-8LdOe{AR8oUzb+mDxHRPBeg5(06N~_w zjyGI5e=aFL^6TIHxTGi>wXyP@n?OxJ#)YRAOUxJjxG0|KG$-x z^;kpWkt0Xi+FK`4$nsKhY6|Bs-hAr~TefUoTfH`aO>RnREJlY*W?|S;0e734)~jCG z&6z;%1XAdT2`SKVKr*Zo9|%jK@@}}H0+OW_K>|ybc|#M@a0u}QtW5G$p;OO96Hdv= zzD;%2XL|OYIn`NIT^0}erjQ8hfIfa5JRcqqOGo<;2q?ff> z*nnqfXs;P0;Q8`a-E{UpVdTN9eA9sx0w=)G;gz}h)2{o1PR+yrK3DRjIu*HSaT);sWulR6osthk3yK2InsPN^*4anHRw7=R57Eu3ua zJbZ*tmX1*awHqf|Ka6)jnva~ z?&y)j`&eCYt!nSSesNL~r5IS`;{lfb8zOy688&AfkuM5N^ahL;6AMnjhj1I9k zy%uLL`SLj6&|da38_r-&exi9LQFQFedKw>sSKP`4R4(L9avlQ{Rh4D(N*=Pv4Rj}q zDpJd4Kq|Xd7x_8CCzWLO8xk&}Rj`eKm7Yk9kCg?(BbVUP@HnvqAX`b3M$OU)OHaD& znN&1~2Xd+CXj$L*#3=jVX0ORDuPk8`UwNmTTwX~{Vch!n9X#xdOUueF*4OZ2Uu@Zb z(1}AZDuMuLC5nvWi6@@;=Rk<2nsEc0#Yx}G65RmJI#=mPU$UxvY~paebxNZh6c;B zk@zHt#$-HAH7bFsoLC1UehI3^A<{9Sbv~Xjf`TY{qwNJSFaZH&5mVG$LSO`)X@nDG z@MWbDLG^CLR0EU>f<%|j$jVLd@_lE2o=D>+A;ghL*rk#zzI1o917Ot$FHTg)C_9v} zIrQ{wd`!#--}C0OlDtPA`N;=9`k$R$cfai|FHO)3BqI=|BE$h7XFu)PeRb=}AMSmA ze{Jnu9Ck?Eg5e+zBT}FhBbQYuq`WH;iBmwO6#lpz*D4W2D9vI`X)frX1ne@{vjd7k zyC@VOHF24`9bxEUU>LD7XJj0-zzpM+amGTFu(2anbn$DNHllI@`{yN^pa!PczvGm| zC=ybH+<^;+Jk_FB%(sGSRUJYgsbu5JvAajb2&rAtfCuClHU=-x`{z{%dm=b$BO8D~YO(ce7wm!#D6554<+uYUQBWSNh8RKY(I#0>Mz&_?s78=@A=DU8T0_$&h)}zif50*zKn?T?kvg*$kBWu7)^BiG>Kr`p(W7N@+`JV2c6D=p$sp066#*XfuSvIKf z2U9aLD=RDSx%VF44Q^OpT~xrff@*qj8~X9|Z+Kn7?2?EvstMBH;x7Brh+aHD+}+i~ z0RBh=iw;ioojX52w~(BgTvb(j-L=Vh?C^sLA(44xn9*G8!7ZOWINH|gVf ze^>jd1BVVDK78ot(PLd*ee)XVhqCkYH>}_ArZ>NF(}uc=s?xmdOg`k48q5voce2me z)LgXoch=Q7RecOtmAjZL!h;GDTN!AZB&CZf^f)2Ej()CDCzns&uOEqS44^Tf=m`pq#4AQ79EpqxGlR~1aRLf}o0uE~}QHCff zNg<(vB^6F%-|o_i<^sGZI&{oWh!p@?Ei$7;s*8)Sec+Y6G44M*Jw9^I@5_jU*?EFx z9!%0$`>9cqIKu}`cKMH}n)>ao(U46ls8I0ve?n~FY;W6lzWV98(Y_CUnDe|JVCnbM z&z)=T9QTFN89dTWbt_n0{;1e-1L-$Kw9$h{%2cW{oq?K4KCE}xpU*z8>bf#DjXBh zHw#WhQWygT^^i?@(zPLzqrrf=4k?Boa;91{g5YpCMyq5-t->Tfb45XwgXR~QgA}wb z<;6<)1x(8u?7{d37tgxLp}Tl75qXlKL{>dz-)vV$D|@FWr)JYJhd*pPI(pGJIeN>D zFJY<36Z@B3d_rEzDN&Cb1e>gM~`-=M?C@QVH;pTf6X2;H* z>FMomJ>A`L{ABxcPapOzO#9*kC8ed*R99`^vUy8=Y3Z7@B$H25wwg7-A{wx$s8OFR zv6lgA$W9C8?XJ1;nwsV1dnd+yy{G$+HMSf)+{oMJgU|ipnLjWq8VMz*7ZjEhl$4c} zR}>W#%umd;H6MN9ZCf+bSYB=nqZUe*wT>E~Ac5qTI=B<9A1PZkvnfoB367h}f_#&a zALAjyvEk6VwRxL1-1+*4?qt)}sp&;NTVwk|Lm_A~@emvK9X@z$Zfr8WFqiEd*kdIe z;uE)t*|EWxYWTt@DkkZdwxzW>`324i!RGp$vh{>vM zG%SrVSr+p5o;o!!G*Vi=IVClf#SVOBDTZB5OkOXl|FyRxzlKgf}OTx{qBTC%cgLyHjg9g?(W2*j^cz)CBs6VntCIExX@PXFl-$f5^^Yxevg~Q#6T@c;TTVvbv(AuB)p zHx0t)N|G|`aW%sgNiG+6#VWs}E=yY2Os_R##;Mc}oOiiMGMMa_86FtvR?rTemkZ}` zDl}_4$2ELjwGLhp5F1e%{9g9BQX)X(qN5CvOQaM@QZ!aE&T@uNMN=@s9u?Fw0&m?x z5qD^=01{g7vI<3cEkETCT*j<{tQyz}5alwOn_mx=%B^G5MZkdp3sQL%%dc_cQCJa5 z@%nE7%CH*H16e%`&LrFw<Yei*7XpJ*K#8op-Nt(oZ>%kh5r;E@aO{HG5#G&I(2So`TuePr{d zB8FFbr3@ZbFQ#~qDk#i&R8(`+vvMrCto&Ckxg^B7sPh?%tMaBoQsV&vB|7`5Ndc8O zRjY5}(j+j^PE!#bA~{kXefk#haV&zPlQ+*!PQIAL!^fIt=V;eMYJ9|~ri4}bsrTlq ztgaXwyvT5s9uHr4in_HS)_OA34>0;QZk5?M)2J;j&L0~S!zqKIrC?fGT6R|MxxUtO z=Pp!L=Pu8?W=2gJ!qK$x?w!pGP)0*T^VZFIKmQFIa<_l>i{G3WV>ckzTZ1O-KuKB( zBdrvmMYifMK-T&QHo!xHbQ{#X5zCvjaIBTQg@u`^$-%+?i)YXFo?=tQt}}hzV?%@f z#c5EcW~Eh^m)?5q3pQ-voPp|+(xRNq5a)P7gAOX45<9Vp{uVsL2A?qMEdZSHK!n8S z53BitG4ayi>?|LOPxf^8@_qhM7UMTI_4S=zn46~Su%;kq{rYuxzUcN18#Yu|RpjMm zGwq@=2>l*gS~<_|<>my^G@D1m25#c_u{U^M@94>sZAXuB9Qxt*w)WwH0bUcOrY2WZ zm0y3u?yZ|QuivniEfSNH_5KXS(4+F4LN16y7^CtGv?*oU_(!akc;ozS;c@4%uJI9Y$`-tcz|YLh~Uz45)BJb ztXxr-zCt%IbsmleK#Xju={WHu6G#qa_c;pCrJ9p*`r=o>oL%Dfb zS6#JLoe*1CABP(wqSA&*)fl_!G&ECr&QSFY`tEb=U8rFy>~&KXBj9rna*^ zr$>gzIi@0&?>*QLRf1uEd5w_cs+2TP8oLmOBX|%Ev(aK=e5mWhfk*%Qi;Gj|Kl<_a z{`0@Qa(vqN>=s2AW`&jv|qSc3c7(P`1RC_$VHg%m;mQ`PoV7iA*W_e)WrI-t^{wnVpW?wCBYe zwq8Fy1IHo0+SUM*sRy=7H6xm~gvkW(6e*#kKu@1Yt{0k8fT(F*FG@9gx;@@?*0<^h z+blr2P`tX)h-a6|1o%a-V}BzMCM3?8|1$@Kb)j0i|kLr#qKk6h^UC#8oI zGI+U-%W*j1@X%SGfBwcBuhqy{UIeKA_<;H7k>lh2<2CEI^$$&5|ALqJt#ABr zcI@S^ef<>g%0o#xC3OWA^%!%J*@DsG^XL0|yH0krxBcR`2Y>OyKkA@G=e4Vl>r@kx!5kg2_%`Tc=)J#fwW^L6Ks000z zh{j!lOrlGUZi6lj>BI_$8rZ}Qj*^%VmdoR~jHx`&F`EZ`PyF?1wwX&z;roJ+RU8X5 zt?kazTBM5eaCtjKIxkf z@gl7Wg*2rcMp6DCxAh(cCgFM37*g(sGf`o8cC`6sr*`e!Va|zMfKlP`OF#?3`c7Ty z?&-Vwrt6jiVXd9f{H2pdWMvS$0CpxZ=hclzRgRL|`1j(J*X5KNh!jgw3b2ajZY5DR zr+~ZsE)&{C1$1I)PFdZ94T6!>oTAM9qWbN-;CgC$VrXda%;}!q&bFTJ&LiLb!}3>u zLa!$~Cu4n0#g@$*Hf^lej=8ystZM-?=knlu%%7^9s(uqARz?X4zb!6YW`osZO-)O) zi$!JSp%9;d`C~MV%l8->&^)6!ckDw_PddL=pF)WO1r%g(t4r9FPi{mG^BA5*RF#VrLK2NPxhQU9AH-Qk zz@mnw5@59)D#GKy4k7;3vWgPxX_uz_dv;cp{?}(d_OZ|Y{!h=JIXCoy_rGh?h79#D zy*_}W;oGr&Q+j$DpI4qcKboDB%o(bhszn}HLRPR@HQ-c19CR$F3+mY^TJhpi*_38L zQi_4t4_Ns%D2LvZh32F(hgBGa$!^N&we>4x1t4VJFZz)5p2n1*OJoep0xoPpmrEK` zx=U4@7%@RS?8hR>~hL=NTYG~Ym8pTq_C4!IHR!^ zROibvO(_Zl$6phKwK47u%jTEW2q?5YA>4OBHf~>k_E6tF9Lz z3h|;s001BWNkl9Ac>#xAmQ|XG;~==h z#47k|NU?vHBGm2@29KKXMB$t=B#$lwu#f?WRFskeCO%OXuLw|@DjX0oigU=+t#phN zFnf{9dc=x0P$T3Diy^Su)v!7iL`FzN#Qu5umnl7!7=VCO;z%|Qm8$C47Vky&K7Rnq zUwh3iKzQx>(_cLQo)3KT!o}gcUwr3BKm7hodQ;PMQq&xqwCaLJaSn_E_vh!|W zc5XT&GdnXomu&?G2c~%|Om<-fN`U;=SMVD)tfksHcyQm^%G>5x?XPx-L6vHLX!m?_6Q4!O01k1~cIk>x} zqbm@;`D6d_h1b2|Extf38+=J)#*L`h!;0D{!fF)hH^YOx=Se=sh#peX<9&9(LQwe@wiRaK?AxoNz&*TzB+qnpaB z`}rkiH)IVE(>8iV)B1&|277T++v=1m78xo`PE3CO^Z$KB8~Ar#9O$P@&PTpQg+)w% zJowtzur#-ikPzs+owlnnk{= z{(xM-3X!ocuQ5NwQFt*E`qG!a$d#TEu_*?<@ZdE*I~Q`2ll3pjZeF57A)#fz%LA&e z(30vlv7!r5)t72>sDSCRAiLkk&f;A3<1Y~{W`J2Vn$@rRK!OIZtiJoc4ewk~d{}>L;=jXEIC6txw`_6y=?(J{? zfG?D>^OpN6*KVJhh3#-sLPEfeZ}qZ_ZmY^6ay%#h(uGC1ZGA50mW=Lxm^2ijb!A2lzuw8YnE zJ*_>y>FK1L%1})5{G3h!^({|K4xP^_&R@HsR%@q~OJ5|>ri3HDzdZgd=f4ybmQOGE z=jY~j?7B8F6!^*4zxJbG=#{U1JsZ3(FNde76!DFvNH9LPxFWZ-a?_2svGf1L$fbd^ zr#rhlPquZp?SK9e-`v-I5nowlDbs4(w{PY+lH%e#P6O54oDfJ{x8&S!M$;L&UiBRVFMqff1d80~{K`GJ&bmu=sTXW>9-VKw@2#X=5nNcMH0YhV6 zV(1Zr1Vg1na~8~DjW*lgs#IwUOn)RPw;(ycsBG7+8~Kik;~V>Rl44hfK1S$#;%`TM zGm}gb=HzFuUstnbQ~j3B^=oU(bFvfdU>%_sBa|ljj|!-|`|2V14jw$lM*$rBsSOC| z`_N-xiw(0Sc?3f>D}^`(njt`<;!TXnphi>m52~A|B(o-m0W&^hjTs|qh-poMl*+GW zh(Ty7HkXo0q$PfUkjg-ALvG?k2p((zV|BB&R`5+8*~Qtxya^=yGv0&{CoqJLMU@~a z*!4`5Q~ZkyO@kU0@jxzNHa|0-m}Jv517R?uB5MUz;X6};hG6KO3#F3G0?^ zoBsUACyq57yX&s&CgzwD*BH$6ITcvz;%J&t_@MwN3d5)|FWy9zo3ou5G5i2adchH+ z2Zus{O5-1Z#7cR(84l4<3YT;*E%28nikSgF^4wcj@u5>qktT$ZBBrv)ZoJh40iivTqVZ`B1>9ku8xu{r3H;)ga zt8~(2ooFju8S*VEQq! zmCgl9^8zo~MFOSR%h0;8#gp9y&QyMjie=*BUt8@R0Hq?TcK&Jtn%a7 zvn)~o&?cY*Fv?eu6>}1hNYkP_+m2_aloq{MqtN|HBe_=y>k}>$xnRxr(gc^H<_{hz~i2GoVe$n-4dRX?`kuNMn_>GJw2wPvZSZC?~$K2<`h-bZ`n3HHpM(V`ezA{=|G~X za`f!Q(jcl7#>-kF1kQPV+BQrr&+Jq)!i|0@%-}CI1I-nC6tyGUj5=d8#k=0 zsjV$9EzIP2<~S*bnvi;kWdb@Ii;rWaRP`0~1=j%H+)85|MeBz|m95goeojNr;KNS-S7Zw(-U%&n(FS&C)8zGjKWap;F#!B=2 z!3kd-^R2jEK+Ae!$EIzJLGyY9z!A8kCnS_zEdV$LOg#ho;M#zWUcypZDhnpHVq$ih zVGgi3gLSo}efua-{)d}FNCi;%^rzR=!bb+k8Iyy1CNT$=aiOgF_vX6fbxf(u%kp;YHcXiz!Ke|4A9K%{;W zPohG=lq=2&h5d=_zVOFCwjJDmC?hB9o_p?8q2t6nzJsOE`hxKR-^MCmeRclG1nX%> zTe~jw4-L%B@v1DzAB+KmB!n@Lt5$`CtjZH>caQD=>(9UcRsYiP$3FhAZ+q)Kqtm{} zpSyUndps1AV)HAs+gioo6c0lx;o2`$GYu4CJ^@$^rXDzcZhUI?x~sET?_#mYu$-I4 z2rav#cSvhuv`YhAs3)poy)+*Q%opY+rzM3m(tMx${0~3yzEAsO3a+{NzM_halXDCX zgNaFTZugCV4t}xemlXpc0{XX(judNNV3gGxhDTzoD3})tSmvX?0G4??i~mL%Itas26`ezn$Kt% z$EBFi;^c6@Z(```yKYQQim-8@mMyU01~&|ZCdQYaeDdks(h82so08Xtr)L({Uv=$# zAo9y^e(jO@`By*uMyCF3t4J+=pesKMUF&o$2a{5Bk}}qmZMpgu*6dGCjt*Wtd#b0q ztF7s0zuNzk@BfZ93-KAr>uM{vZQ8J9OI`iCwM8ZA9KT9kw8#t~PGmZflvKxB`RN^1vDjQt}ST{*o`rOLylUC#|o zrQFEE<)A3t>bn6&UEyXnHQ2L`7;wt1ue%R7x18@gpHXsEFc8aIMs{{#FgZ3l8V+F# zBw5Z~Q@Z2}BSfseFTg0Q?xTpp462q<#F|5=ek0UW#KZ}SDt`uHg^)pyt4o!Oc!8nn^0;!%l<>he6b1n z`9(VQRyf^6iKFSYtM(vv$>t;liJlxHMcO6CRO2GE#Nm>y5df_zWR<1GlR~XVNjErf z>DOV=uacyWsP;vSy4<(Sj+O*Dx|OCU9G_B9npRl8?wXtU`5@OU)acowWfECaIn4ot2V%k}-OD&qx#Lz! z<$?UFoq^D!zDW}r>I$VOgO^X!9nP3$Yq=sl5yNR{tn!mxjag`j4xKK3%xwu-e~)Lc ztjiNn0$IQXDybvDhR5@$>;3P2h?AJV{hdeu?PFg%b?W60K6pcNJS~YB1rFd_uD|xr zzyH%;|N6wsUw)l`iS;!cGhvmg6%t5_c_!JN#FAW>X-DSfvKR}=awe;ymEgK73YbN0 z;RRx#L}G{r*d$lERfm>%$*5Xh859(#M^jV@D#p-9qlI1(x)g9Q_Ne@Vw{(|X>B8y& zFHdukmhPerk#fPZ3F|0YUSS2b#fw!vh-Zsenz16vD3ZGgXC}lyc$AC+Gcm1#!^jkL z@{uOIA_HPQD7#7TJ&O);*a$UByFgaGS3*Wa4tyYjyqp21z7&))Z{AoH7ODNvi-sS7}O2OG6O^?TLUvz_t=mmfW8Q?)>MO7~oAZAQ1p;SjA{4D`IeD zSBMR+V}>rVx;{`|QPJ@H<42D-@7}XsSd?EZ01Gv`S&2!Z&Gj2u)IKq>6bY$piz1|C zAt04QjxC?(KNYaC;*x@t6kb`&LwKpot7dwB;}i3!#~f8{p1M}n8Duzy z7LBVg8|U%KtLcFkwo)u`sD}K=PrPRpNyFX>3z=D2Pd@dS3IY+D4p4~q8~QR~PEAw3nhx)}lkOTqb1`+UDi$NT<7__FQme2H@K6&!wQLTeG z*4ElJIy?fFxRlh&%IceMy=}|JP3(EeBuH{93z_8;lsuJ6R5!Drw-s2&@h6|r%#tLN z%ON9A;@&zqa>8q`z4}K#_+@WT+pfhKEUG5Q+8cQtGFaUyuQQFfc`ou>q5vFz5peLz zV&+t$2_@0VZOITvWn4U>37FBJxFH(PdBuHu^bNIfkEcl|2JRF_P$mN%b)2*DNDOD!r);WA865U? z^iKDjy4XK>k);PAzO-RW3~>M;%GD;+@sYrheNX-R2VV^Zr#|=je}B{KZy(X@z^Rkn zlfFp0nnHETq*XB?u_dZl6nlDSB=4cZruasJC%T3vCueTGwlFagq&v-Mh_*5#IT%x& z)!H>QJ5Oz)xjgoiqqm(9SuDs)OG{)|Lf^+e`nCV~_pe5him$ol75OD~9G?-1#3XQ{ zJzj)-&|(HnuN@#OornwhoQ!Tlqgpgh!IUSPbxe^0ahy|Xl}qaaWDT_?QGYOO24{wK zE^JcjW`>mgMAL|x35^36%Nu#qhF9D?zyN#c`B^f3wy)2hkQkqoY#)cu#e{rAW9NK} z`OU9B;tSsY&};E( z9U;%832ZU&l|&Q@zrMcLL=M=3q1c=?Ww|94n{T@H?#213$&rCGXS*0o_Vjif{_d~+ zUwf3&m6emWv95N{)jO}=xv9FUBrPpG!+tLkK$A~|@D}ujrWaTThIah^)YMqFbRR`Z zYW;J3T0U-4nf}WFpy1*MAWv;(HOu7^NfH=T^lUAoQ->89XCoz0BdB0#|I{a*e8#sJ zNlwexC{nC0PESwHPmU#~Mwlb^MPk^1U{(jI`eNDI(wab7PWX*C)d0o;{zQbahq%1- z#TfE1S0+`QB)^k`2UxUJFssX}e@Lr%K?=G3i;GJL$0aa7$25u(iFZ|yk)>$o<>pZU zCMP(?5_>s679_|7%%w&NR;+P^h|&b0HWhQz!sNDcoghl}bWVWMOLpl^(Gn7P$!{;yB@VMYd^x6~t&f!$B}yaa>7D-D&n(7xzeDW<7A51r(S z%4h^c#Br?oBl8dtC{C@YG^Pp*O*sV;>uO=O1}>jcJk2SaSawNZ5h7U7{JAWn%P@%o zivVH;>hq>K9*GQAcjSgx|KwLWG~99ik=!A zVWX7JbBb5^6)(TBrh4tiKJlgh`RVUC_~NB6y`>;0s47s!+jq@%S4U#~`}ZE0nenBi zvDAt7LVbJ6xn$zO2_p{d+3{j9s2*v7#HrLCz=mYkT^?v2y8^R{MyPZ-^e)UjN=lLm z1A4GgjLoh&!SGVUZg~x}UZ{v$Mh()6_yLc{6)_fem|fTuBuk5D*+DSMYmisM2+!pd z9p?W79)4VTg1Yelj3?gTnb5$ZO7cX%Tn|wttY}4AHJKzAmjfWmh27&yE(9Sg>UI&1 zvS$2nledUIKMqM0y~}as-Dy)Mb@8qM7%IacTq_qb&UB8v(}?KESLMeZ3qls+lpCd3 zelg?_xyLAHiQ(C3qEeF3aoj zsYZ?%yNi}l7ZC8&2wtig*x5vw?J`sfxx9`a*c44mBc5OB$v6?D>BD7ow2Wt?8|704 z08r(XT1@3eMK_B!03k7ARKEr$XjSr1|U2M)0nbw;Tg#VKqbiqXCKmV_>-MB&aT>J71ew=f8=Px($dS-V2hZk#H6-q8Q=D+w*KkQ zzdd*ETzT0VmNIG`g_%cu!4<*?Gk2}0R&`8Xzs@EI1$n_aH@_6g$jJ%CC$*mJ7#?0o zif1EYW)LlpayhT@ZQr*2d*A(OUVc%)AIHfBth8sP10!QDxChO|`1rY@fpce0pE}jk z#VG@4PtCBY{`_npHkgx}zIko=hIQBR-kvj)3Jdcy7;Q4cz$jgxJnC!wsReeD(ul@s z(yRe#-khUM$xT0-MS|M&8Z#}i6Sc3a=TviZ%Yg%j_8;7T&F-te__+_v^QMCL1?s^l zgX|}pNz=R+&_}3qXn-iSDd>cW4|Z5Xue7kk!}Dia&$pa7ajdcF$gv}wlrT9yLLW3e zJ*B3$>Sg!7c+2KZ>uT2)7UU+U=&Uilo#S9k`x0T6gW$!TFU&azL480wJ?-!BACHTP zq}V%u+(5>HH1?Mv<>NApvk&y;1Bi+nxMfz%+pv6BTMNhnau9rq3pn!eApo05OBC|R z#6)T6&Of|Z(GrQHp#$tEBv<4OG4e7SGOp9t&z)>N$v%h733RldoZ}@J&eDr?q6q8qlGpg#y^c%%Wgk^`#}P~5@? z+%t~0X$`*CSlYgAYcM{1_DuKG_)tt-rcGwJ(TwYa0FJLp4)V$wOg2#2CCRPIRe2&2 zA@Pl9C&|j7Caln+W+!a!TY9i+S56ON*x^qMF6#xXDbQ>n+#*7f5No1^{r`Q{g2z4h9X>@>GKne>+&6WCCd(bjcoYKCL~@Rs?c*hS9iW8Z=Jc;9>8{rN9_@sUtk z^>sJDG_Rm~j`KM~fw_`ftN_4r-LvmM%i4cD2or#H57B&st(d zy^qe#$fjpyR{a2zG>81DYG8Mt#Dt_vmqzDjl}j>^-!AZ@)y(V++KZ9lp;FpP+!6{R z4g|Qw9{&*6=)kGXjsm2M#)P&No3r;VM+N!!b+-8Cr?zjar|w;vghdue001BWNklu3^ z(#*I9P+~ijoV}(hxagZ*+`4s}Sa)N1nNBVRBF$bB@+}`f*1R+|S5QixRa(D$Y9+KMJlton-Gana&i&HFQ^q` z(Q*@zi@xj9+cdMl1tSV1u_=Zgl#?}+A}%&8g>5wq6LDxoOl#NzsH-}O28W6TP`1Md zI4Mv4q76lyCj2!cra+L_&~VF2IjHDMD`Jbgk6Yi~L-~$eAs{ z*!1LeaA3PEi-*$sOr8=hOBFKj(Zgmq{#RIhn^vPF?AK{fe7k7f6?Bi6MS2NQQuer- zydua-ly(&JNUH2X$JC=ARqj%()g#i80@9b!)uVJr*;6S{nl30<+ag33XUbJ^Sz*<~ zqYPH>0H!qkH}`NpqKepy6o5*IfE*St#d3hz09=01IJ$tkc=zm{lq$)D$lx7m&nHB{ zj4jDjvk4OcN7Ljs!o`{7Sc-?DX`=0l_IUzwix6xF&iDQW?@$FjWS&fJ4U`v7o ze{`|{atomaC{;S8x@<(r3Avj-ElC*#B}@d>RVLuIHw2^thY8=+LPqr%jF^G@=HvB( zj*}YaiV6#3l2cDKwN6d=!V$Io0#kNykXhexvzhSn!orCYCn~Gf_*i|aOC}MJQ?;0b z3uGsx1BP)yhPc}4VA?l3x0IZmo|Tn*y7y>L_v!i#dCqG&s}K+tbw4 za_G>JqsJOfpFT4?Hy^_$0!2mJHgCP_MXc+VW}JCI>~!o*i3wFU%){g3RHZYlsE*{3ikCpBI>AgDb@54gkJtX}@W zm8M9vD*^5i8XaEhICZ+YspV(`XMr8(EXL8H!8g7Aji3C)`{~51rEtcOaa5#LYsrS( z2#7Z;My?=H_c56xr;$ut-jA|SLTOZ41w;4LDhb|Lfk!y$bpgRp2fdLS3><7ZIy~Le z(|zJZ%l>_AEO@-P=k(I-4Dw{J$*-%gyX&qywr<*3Sy`T)&F7z-)QH*D6$TRrB8GWa z8uSkhk0-H@g1I(5J9;a42W&$YJ3&ZXsT|VpqYkl}68(yK)=!$h%Jr7!=9dfBq}NoJ zpE!Pg@Z!1R^6YuNxK@2AbGh>4{MSU5(53-ZN>CS&!0cCA;erSI0f+1N2uhWefTVFD zkWUZ+Bw?!|$w;|FNR?b+Aq9)b*LjTIJ;q2uPD=nCo*>)l@C)8fx$d~{hmZb*eKl^r ze$Tpf$!$IUKm7IN(sI&Yo^Gu!OS)=H<@PN_1#4I+$I5+hL6Xt&9Mdf^fnZ@~q$oG< z>g{>Gr+n=_7tfpezSS@xL~ApP~HO+47PV zol8L1N0uHXpJyZzdC-)R#PQED#0^AP0p33{{oBVoZoam%FgLW!Is%Y1!1U0pQ0<07eO|pzg7EJ>hG>^pFTp@8Rc<=5w$-#xm zDVgYod10miW~N7HMlW1*&4&E^)ah9^Xk@YjOw7~i(A>wL{97ceFe}eigFBpd$2liw z7Ps!)LtXjHZ++uiU;Ela55GPpCP~YZU>!x#BZnvcRM{h$8}6V8_JY8j!qkIH^PDuI z37SYuYF2JMTdfZbjL-Ye%`Ybe;{4-dEXEq6CYu zo|;MpN`cir49t&Hf2z8Z{Lr*+h%{m<)DR8~aOMpdOw%OuC(ZF+K|LtOvJoN2(z7L* zW?hn{=vgyIeWwSSo7-a3H-=+U_2mF3o&=Ughc9S(7?U56lo&h;gr3 zPd0YOGxG|YHHe}u10sePbIgc4G2s~DSCW_u$l6k~F(%6?R*zN+)b8W4k=Uf<)JsF` zlgb)8K>#B%pwpT%UuI?+)%xhjP)snu2|z4|lP0m0M5M-GR+e3R7iRg=o%8gjXQp&9 z^)WU&HZneTY2?xfCk0N7Ub=YxEUAp}wr<<3`kzHMs?jB;^s>w{9Diqf&;0O2W%XM4 zhrT@6*cL%-EM=GkdTlA@C7ohq1t3%_igO93{K{*oP9nj&OL+-dKE+6CJ?e649t6*Z z$Hki_r9KEyokPs#0`L&EG6GbcD=&BOJR=;eG26zHoR*U<=yc2G&CH?GWRS)WJqr<` z2H*)feap`uI7l%pEw5xpqmY(5Q3(jjwFBrx$lcsC0_f2r?N~=kiZkRSvqK@%Pt*rg z2-qq}^9*4DNNU%ll4fY+;8Af!P?QixErN-p=1hKwv0S|av@JuBN>GPJwkj?{V?0SN zabv0C)2n_w7Dx~VtF{#;S^_Bu6?7~5pp#%?7}2C9ki#)b6?SnZT54GJ245JgDmECy z;3){4s!oNKEKDqE!c9-om}XucjY)f#0IGD@sQL>((t0_)D|2vnH*SJ^(cJy#lF?U(? z6~QagE`!3!jYUzk?5luL-pvDumP^>B3=~-vD*lMHagQe}G7-lNA$O~~WPRmuD%O+G zNY7m4Hd93_IjPPhahYU7fQ&bRE3a^IS-c^zu=l926GRq+gvH~0M3RD=nt{}d7E)BE zyR4`}Zn?eITTfh0W>4={08C=Bqzed9Fi;Dt80a#(79y42m}^=r!IBI;w8fY%j}A48 z&^bR+SUii4)0;(jWG!A8$e>J?(Fj{ERq)Ogg;19=JI17K#kqKk=E0-lJvwLy^u!%rT zWm!>CR%UF3@9>e&cIU=|Gt*ivpqJxtVk6s_aG1U-trYw*9u2YyAOj9~!&#So?7wxY zZ;SVpF%%-nDLS*#A!*)Stx#V#Mje(=6GZCfx|4$Kho3H&9)It^ylWK*Vfd$ z@g`oy*KgUnnJq9>Sw*daX5}PuHI*uU2$=hsW0Gi|gCH;bA%U;X0I^=qpa7Z)OQBv_@X zCBG(yYFRkY*8td#O&q7E1N70PJ&Y}{HZg@i$R{1_dB1zdRVNPrkaH`GE9!9oIxC23 z3spRzl}ftUirBT;;0Zm;|CcJ|v>IgMv; z02L0P0N{<2`3!b(#Ypt%#+q1oD^TwFGtYvm5U7F=ZI=jz9krlcA_&{J|wQo~R z&hS`H_o%FCM8*G(x9}!7brW z1d=$oXf^&|)Gn>ac%{o5zouiII*wv4Gdz7hiAVth=nq9o0Qd z@cV!C=wpew8*aGmzSPVjhMmkWgk$&&hs6V;h#o{;^!yRtnJ&zXTcn*Sm%FyY6qA znF;YaQjl1GWxxqsVc50uVM>}{w50b25tqkkcczQEAt?&OA7TN@Hc{fCI~K^ zotl`KPD$Z7VZ*{rB}cGnDV#DKI@i}TI&`t`%-NAk!;JiyIU5?eG(IvqGCDlQfg}^7 zvy)SNNaka~p5~0Tpog7Ef^qC`laQL4lAe-UwskF^55(tWm6eua2nax2B;ZB;Jx0RI z2lnsx#l@9YRGG|Dp;tdUZR zIhJ{~z$X~E`vvufj;6M>oo+taKQ=LU?e3bawB>8B-}A*U|M0KR?EB#2gY<>|{t};m zALmqU+Ay8K7K#-`T_&b}&CvvFm-nk�jly7fcCq0ja@6uvEiiH7m$L;0OtmFgObk zZ(+ml(es#)lDv!Th(H!%q#zd!5t)MrOBM<5a`>a{DiaV&1BPFh;EI|H8-JE;KqjB@ zYpTZ>5 zmWE7u%p$9(6ca@iO)~V5HvHa$%b^FNr3K4nYPU$Sx`K!pMMkN5z#hM(=yFPyfL??| z21OJL4>AKdl`c3gGmOQnvtel<7cG@bXEx{x*51J>k8p|?!{Jy_G#W9K&~ZiDGrMu) zk_^moq3kQ1Sw0$0OV`bDr<|%Roafqu5|PWYsum-C1(Pre=yF;XHZX$&+%BS}9A&p_ zm9&d6$|j~uzw*9H!OL#Rk_!VxK`-}_XdJ(!i!ddlp}F(I#le`k_%DCyvoE@HJ3}T- zk4mqSn2TSluq{shrvGLND-c!zsh6VWma2%i*m}_+3Ie4>skY*V3N1l|z0ze(q;w-P zQA3z2X@AH;Z%z3vRc_;H9Onm|47$^&qX|olk4#K*G*qyxs-m;ya9dl)+S)97BVtvU z&3M!VOUr5L;mYbV8rpfb@skd$SriLuY3a`cIyTN*jHQg!h*}ng(~DY9k(?TTVQ9ph zFj!bphQtRB9lHO47fUvvCA(MxCF>MYQ+=B^R{rJ}k4KWy^Vei<+P!|mhT6KdwQOFv zrXV{l#m~r@MpjGi=Xn*w>;a=h^_~$|EbC-Q7J9pw_ z%h98}&TnjQ>l_{#LuV-&>6H}~x88Qk#*KCB)>ai2u1QbvvppUcugfqu2g^;(slQ|P zGUXs7RHRDtM=3zMK&$LD{>MN4eqeZf*VViJ=^x%+yRN2iO+iYUUIxIVdK65eEG^Uh zqeI4LP0R)8qe#A6nO*81nCNKlYHDfbn8y>%O}%}6i*vkPjA02weSO{iuYTpm`nrnp zl8p2SJ7IBQEQa6uX2q2=r_L467FWifB#Fkl0w~t)lBVE`n_O3&SeaF)cJYA*Mk0aZ z70;g^Y-?*}b->}HhnpK)E}mm-Ht&nXt|>0sv~lz6Ui;w2jT=kZ`Y|)kT-(PQOf3Yr zxtW;A^6Z@d;`zbW_V⁣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

    4G*yn))9e4Wk|ufqL2Zh8qGs7Z5q1SZ3&H zWqN>wXrevVGHsn~fF-SkFSO!pYotxMd7bIDT8FO4J{-iBe5tPu)@1p1z|g0S~MBpOpX z2RlOJR)zHR#1OXnxfmHlns{2>)Qu7VLHMc^YXq|kw>E6tv~T~xm!AKs!7i%r!jz@z4!R);mbT(`1)IC&R>KobK@iT-S;Q{SktF}?44{KVN;Uw-}BXP^7_x4-+!t4D8M6OB(jMB9~xjQIGz#U zv2Jb=ajWmvtwm&YT*7lK4B;}cu*-GVeFeAS@>(vBF8Zq)AgzO_JTn4N1~@fzNI|Pk zkaZHBDQ3VRQX@xS(7QriLnWPPwU$DV-73@`f!Z zHIPsJg*o#w>{C>s=7>LBBqTR=j;7$Kd1M2#p^d6sop*1-44gzHp@+GSP<^ZKX5#vSL4I4HLpTCU5{JDSW-~7^V{?hZ$z5M*Q z{~HD8;K^xB>;ef=>Qd~*2~7vrjuZK1Tuqg_y~4(UgG>j8h8Gsuvwh>w{DXhI|Ij^u z{onfYOpkEQ`MJK=-#Gon-~P(4{pJ^6eEuk3_Us$xO_d{i4jkEk=*W&82Zu(d*-V^g zd3@O27J=Hq!iRHK7W>!*Z(?$MVvOxp5QuEXS}3XraS4-D7IE<^wJihXLcDRd$es2> z{fKd)hG`a62<_ z=^2cDh@Ejcnfb~Iwi%$xkFW?hvofQ&GzN>T5%PgUCQy8TBxO`SXMu2|993k`glT%` zzL`A-@8MH{xA`u@HMTiCarzXWML5s*6mML;c;oVAIQEZD@R-09FH?>4Y{4Y6tm&!A z!Cl*Vj$mgn-^~0JbzAq$|DJrQ*4X4iOmstu%G2gW#y}D z_$T+eGfUKJ+FF4;u$fhw`a*JwlEf5Y*$g+aNlAe^yh_1Yh3S6iJS-_b7HEFuhQtsn z!wWaBuFPGX*tY4$%?0|pJ-hdFj~^i>$4B@wi_2TK=N^`T=$56$-4s};MieqjT=Pmu zVFZPU*RW3|M=B&7(rUYT_g{Tcl zk|kSYh?fhgmI}#^Lp_%_ZJ3&#o@CP>oEgVv3 zzhx6orzr)SS#m?fm0eZy86zaHAGGE~HC5-=9?BO9ZR?2uEd()(+y_%^(eOtN6b4`jlg^Z^#LJsQ z9b83)k!L6*VxlEb7K4m>r$`V(xj4*Dnno_RWsIol2?&ppTP)LJ1#^hR=ZbZbNi8Pw zaJU)V3?#_nu+FaZf9`Xi{*{0BPrv%LZ+`xB4_RyxFW1PdjbxyJ%^xxOCxvV0Fp)#( z0!|>|Hq>4lYKb;zZI;&#=>(eC8o1tQZ@8h;N$Sw*WzZWgfact4FM5$khGkKfZ!tAJ zz(fnPP48Yi>207;1ZYzVxFafo)j3^ahB|Polh?(d!O;WV6a4-h){+u2zT3KK1JEla z>xXfzRUFq6Dv>I+BTWyLo?wf5hom;^4|DzBN)G%wI^wqpUa2Z&t3+0rq8JytFfAdx zfukJD&<}8|;&LbW;&lfnN=B1=C&blhC1NSM4#`XfNtoG5j?^m7l^NpEW0yYj z**~&p&)(nu@~=;fvC2-PZ2q9?EWH?9j?_JvTs|}FPqS2_^{3Zur@%`~V>*@)s zux<6}U1Wd|01VNmz5Vvtih8?} zw-w}GD5GcYxSu+?z`n%a`QG=w{p_=^yzG{&Y);&A-@>$0HY}2%3=cY|tn1LY) zw#AWd^ZG1%al7~1AkPA`nb{cM8Q}GSAwD#a&Rln)r{h26!_`2dk&P%KjC8=;$5*dd? zog0Zs_n^tmBgJ;>u*|()jTs$)fnLVmQP%23ZPQCR)RePSRYzsyB}tNfg_sm{vlJV# zqNu~4k}CI%0Lm-9db3<0fx~7DRqr>DXfg{#>>j3_C5c3+I40#NePaRRVsNQ4lbyXR|4B$$S=oVMII0sGWO`-2D^CvJ#4LS%8F;L~ zUS$n!&FT{#7Mh$m$O;>%IW*^$5dAxnG*A2}R4cP36lZe0TN@+!;pNsFQSM(4KmS#LSTs<7ZY!(#%k2V>c@D zZRTl9^I0rdVDkdJfDcP(EI=}?5mDyMp>bB*CqG?zn+gBLi>w!%Id%Hfg$w8BuV3Z; zD;Fk)2Kf3Zk7ThA0l%@aX3W@m5SymoW;CaVpLe6Z&ho21U!oFLEe z@Hh{axY^<6iOG#4W4z)u#@&AQ%b@Q1p@|eInri151<|yUlOS3et%Ug~7n3Zv0wp62 zCM}hg1C|tg&MSC=_494>rHdzC{qU`qw(i|~;rv-V;xGNn|HpxmO|+p0_HLe<7$uG={M>mm**M0mu`uh;?pqJ>nvDn2e7RZ>1#sHL|HVMVP=0yMbMst0)e07 z#>;%e#m)cwmss#w#9MfEE zC|1-`eIlr$fF772W|u?~s(6efPQD#0h9lab7rqf%K+Otb7EzJkX1F$U4fSFGE@ZfA z4CCR^fq(U1`wxHRm%se4|2zNDUH2T>yK{Qm)+v@~wU!kYtK(&jP;op6H39>om|-aU zCfRPH{%jp2k(Nqlr5u&6JC9k{g1kCrG#}I9b z6$K`ASJor4C7@jTkhJ0h*oIWw1+IKIgTsQi%@i57G!=$&w5>61Mey{0`%I7|lM{H7 zvWbaQ`i+I81SAV*K$^D8f}0~dXeCp_z~77Dv6xV$ruD7hgVf*WY1UXcs5{*~oFx{g^ z$(~>fUUj00wL}WBhf5{=0Owu~9V!GW{r9K19>2>pEkQL39k7nlrc~|gC=s9rGL6@& zV$e_?Qs|INN)!DEVGD0nDRm%=ONdC9V>RWHe?q)nAv0%bMYOx1%^GK*%N3#{9drO|KXi>P#&-VO?LIfSC4kc@sy zkhK2{J_E#Xu78;az6KGVPrfxv*Gal_y6>t{plZi^5YLbc>nI*j0>Hs^Hk(5mK8E~SzOQtbgk)yDUZem zt>w^7!_j4GD1-K_1f#1iVW(If5UGgnR|b5Uf(-7@T)nz<>g3ti{1(GYFTL`{8*jaJ z>HHNYE`APqbZYaKt&cqVDYlV1u>a7`y?dr+HnWu@1eX|9u^Th{9W3&0?FuUZQ==ne z8zx7`eP3XNw+Lb`Wm6B{O-Fu(qc61JRe~QvFqm*)nW)(rYb1xkD1A7cxH{=C@uMc+ zq!cVT{Hdo3g)25PE90Gjg>Dgnfx`<;Bvg!stsJdnV24PJMMDt){$y{mM@VyO1{a|w zh|Q__b^jKLjC$LeJWEi9N(7{8J1#(>l3w~IB)8^m5E3ABLMUYf2bgpf0&ipd?DH4u z$xW4}(2KB8@IWSym{(btMleNfKQQbZuzz^&`sJ5i z{N^h!JoAljzVY?1yd;gusU3SBJ#g^w-h+oXY~DFCGO?Hsp3Ucxb;vjs#^m0)S{WT3 znVM#IJ3m#(-7GX5@Pn6e3ra|fIjK_3*hDpRXnK+}&Mq@>HV|7B3=#a;;cFR3vx1?O zwX*|9b1)~#fr7mD(lxA(0nEwf%D6+^z{)0|;D(qbf=?DnbR^qvd0|Io_74S{rZF6V z5n9hqK}v@s9wo2=iO08!uJY>?`X?NsFBrrW*(hUPeNaN;DzpzIYDsgkyQ@se$6G@L z&BGts4IP>u>EmaLV>&Li|)PZXnlcwarklI_WDKLk8+^CLv6K z05MaDIO~f>(p00wAZahf*{}BzrvK)J6}H3lCAv{+9?w>=QotV@Iq>-do<&(mh4if< zz6`lx+u=<+4&VP6ZaKGbJ z2lz6=6OTT6-;u-HchY9~UJ}ys%^Zs;JwwepV_bF8BVz(ifFhwkPK~8=)p%4HY>iG< zN1~RMMxZoV9DodX{OH;>7XTXAm&&B;`zSduQcOt!4qU(9_v*{9jZJUby?YOj-r&(R zC}nC5$WMtia75GCEftE-2>g^32dMfR6$rWg6*1|EFOq46t(t;FD$5&)WXG|B zfbWqcjSoBpesM=GEkV-6M|P(SAC+V^m+c}z`>aZj@1fdJr zp$rBPt;_j=5;}C(2yrK}rmarzVBd*Xr@&Wd`d(X47A=Rh zhME8|x&xXc{W*F+J~4}bd8Pto?q8OU**5GRp95!F~Km?E_+OC*Zf zq8Y2B0HbgpN001BW zNkl zU}JQ`2*xa(DvW@PKoL0OJg(}GAR5?<{ZliMHb(%)In{T$ivZ6;vQA+ez=yO}*zxGY z58i+6^*3KW`Z^zT=0V3x7cTcN`PlIa`wDK~`N+qAh)+-PzjNpA=?xplM)~A2PfXt8 zU0(<+%q_A{(#Xj0)c6pK1w7%vcL%wl<6zXG5hw2a_@rzKKw;oqlB$X07cB@tFtjK* zn9~geC?z=AHFbS5CuOJm2t4%6ix4kZbyj}u@b={Vca zKP20XoJhb{0BB$?WH}lz$$(rU0c~a}7)9a<8Eh4uOuc!v*g*qIA%O!wX5lI-5f1q4 zzz8CLsU{6bLU48jA5ijL+(AH=iOO`5Dprf^kqCL>;`m>tlJR!9hHi}Ib1Uc&qPg`O zSAa_d01zk`6L}F<#wvUXA>$t|2pfkGm4$IMKMz$Ety) z!4bnFiXxgGCrmy@v5lz2MpPmioIg!w>2QU#fGbN-4LO`qr?nK|*u1iiJJui+tHt86 z4=^#lRGemO;L26F+DIYA13;$Xu1N~w4SWlm9mx2ssYK2)~lC3SqHg4Xz zdF!qt50iA82L!HNxN!2+sWYceojZSe;p&y8t7mzgi#j+kHZp}LP0oxn=jW}2joYTS z>_Rv8Q{>r#`T1FPJDi)l&g%?)i#O-bU!6bu&Uwm|XA*d}U}o#&^u~$FO}tIjKQO+` zB0~RQ9z??hnf$tN(O6BTv^VC=IzsG~I!{Up$DQ!efTu9<5uIk?=Jl&rHqDIQTDVS( z&HM)j*uZt3RSMq1;v28n5}R8eIe2XxkD@UvCm|hQa{*QIR6H7BniAPVTHn(p0r$ZJ zEXS>ZjQ#YOJk#P7Gq4mvN<_~{X%o|PswKgrjF3}TIarE3ry~p7Z7e_-T0*#VPM9j)#RvK!0Ue%38r!^W@78U5?|@FERs^EUBK3~8aG}6_ZQO<6b z1bCs1hn*|(BQW7IDYmw#Vil_eXih;zz!74tXlf*RA!IuRj2;7w^vkRRE5}cr`{09< z`wl(KmYeVz9~_$di)~N*5=a{nidSWHJb8IeBOR3>=+~So)do_cVzH$MVFcm8R5EuZ z1(|$R!BjhDla*g7kTx6X*zW0*N@dqw-&odWkrTaWyyO8V4_!!2ph6K^d$C5!lIKyl z+EdYr(#Hozh617#)a4{5l7z5?_)8o)v{#N|72HN>*pk@fH=&9_w2=*Il-p#OfB~08 zV<s=@*SbpJaBu67da#{&0rva%; zD->BIbYtC+NFA!7usSbEYfmjmdu{R)^;85qB9PtT-pgwZdWXxZ^bSI$=G;)WeyuxJ zAvd{#Vb4}m8#9ZhLB9i$UaBozka{wD&>E1g6ZC-nz`+i^mf@W-SLL!_PNRn%sf`hT z)ie`s8stV#5PMXB8wnqAQ~{PiYoWUQJGG%Bc@McRn28arC-)B!yc6+4Z&|e0u9G$7 zdr?~;)A$iBv!v!XVbi)+X|M~p(3_;zaRUGSPA$`QFdv!GxMUE%k2`f`Ye`G7$Hhq& z=E}9cr@#H(k+F%7ef;q}vhF%|9K!~(si!@{q&t(O$aZ{HX@~)odYuMMh#XQVDs8^W zx>+#D3UR3w$z+QnJVzKPIfqa-_eSt$vP=pmI2l(;NDL`t z91;xsm%<8jirwUiaVER{OSc!dZr#e~_}+Q@R1@y#!ug50rV=Od3k_+vlzM?UuWWB1&BaMw=0 za_BPx7@y{z7Z7eQG6+%f?7EI<%La z1$XY*uz53ceh_(QfI%2{YHr+OMWCNI1-9@?_t-G+4KSHQ>y%PPa;UP*lnfy$uuN2{ z)EG1%P!0RiJ!?62vbYsEE{E3oph`r1L86rU+WiV043!g!vS@(_nF2Xs;-U^Mq^W@Q z>Vd!GuKIIPkNfu=>npR1|KgOe2bb7)JlgZ!AgDTfpf3HTVE10Z8`r)mr{m>4_3 za}@%WB*ef;*9)JNBG}MWpIjq2GLWX%M)s&sL;V``#Nt{*SH#wi$sF9r91J34$zN<^ z$h*)rV3QFnOw@of#zx5tX;0j+(dBA=C4)&ueJ1msgQkcl!W~@W4xa}5CPv2&?AgVu z-ZyXZ@;5IH``k_n-8u*`6d{hhoKt$BIt26|(isk-GJ;Vd28Tv@mtgCT1Dm(+Qx_;L zudpk=5Bq8xxwBAEb&;LD_$vCueMni4}6{S$a~lb?trX-$|j{mlS7B+xd+9YRSVlo7aQ z(MTdgG2976*UaaIHqUI9SOl;zqhv~4Q2t5dFQ}e@u&@b*wOGVdOKMOdicHW}3n-Fk z{S%8U1S-$B*3gz(5rqObR3W2AQf=Z*phPvj>{JTr{AF2@8b0!1d(~!=!#XL?jt>tH zOpTB9_45!lPf;y1|KsWM#RX=7JPnd*2A_|?S$ssqby~&g9~vFsv}@lc9y4*?JwJQ( z@`dwfPMkdX{<*Vfu3ouv?ZWwM=P&w-*YFrGK8^DJ30^bC;|08wFu7yLHWpjv7v}gR z;f67U{WvusJ$&U&v0In84rO4WEnP)WBLOzkxCU_Q@Y1@m)@tQ1gmw{V(Fgnd4cXXVCbcI?}@>%cuf^vNG#0c!Tf zwF~FYojmo<$>SfKI{Cqy@1H&P+Hd{h|NN`$WU_JF#v}LN`}m`eJjMeC_uqGL|IUdi zUhv~#Df?@@7VB75=;PD~UGc+6r3MIQ%=)4U8TCD;^kCeFx(E)61Jv+ zu3P|94x@!ll13^#Xiz{l@W6@@LR_UPTA6|5QeXBmHX)hGFZ$|G2$4*Nq|k{I2pvgS z_2MYn6yvix`NKc_x&PxZvY zgSno33%dH+!gbiKm#zhASjZuT)^J))FR^tp_9S$u-2tz)N&}wPb;_JNj@?Fkbi^eg zzKKk$DX)&Tcx$g~q1MH_k`v-6fYo5DW2;&8Vy({k0b>yF$k5BElPI0uj83$LXs@Bu zM%rr+E=h&k%}dHhor>ulfO|#019FS8O6Vq$OC75+TdUhA*wEQzaBuI}v3EZF@ckqA zJ#gUQE*|G3l{Oa`X%!(rB?LI<3V8`YRheo8Tj#N{6U;-P_FSk9Y_*dG(E=0;(5v+= z{EiGp!#?SV=`}53+T_5=S|}%$1nn4nYtw^eTcuN(ay1{D%(-?9JKe&XO@RY z2PY?nuU%gnot(P&-h1DE^?R=#eeM4HKC`sgm?t>u4m)N&Y!~#cZ@>Jn{LBC9jqBI> z6!^@>nS1X&^dmp=*(V-<;(-Tv-ErTRO+5IliVh{SD8L3qDHLQ^mLBVoOuyzGP#H8v zZIaYKR#bp=VJOBTh(ncZ3q8yhZxQb1{0gr#y!Y0-ue@^fWwuRx?Tz<8Jauc9H*YZ@ z?>tOx+OhBOeFqO6I(X==BRhBPn%S_CmjgicF<;) z-Bplr2ukQJ9Lv1@%eka-oPF}TORfxE zvcQpS?8#FpD>wOA;vC;J@W}wj+l+sK;=6>zfii{fwDYPyoEi45u#G6&eoyehyU~%X z3&4oMdmIH5J7ScvegpTgR~Bg@MSO@X?NDXqkl!o`z%z#Pv4dC?3^Sumz#ANtN^<#< z3n&`UhDIN%tOlk5Y8~q1UCwTOGrWwz!&kRfc&%xH$IBP_jN+}^>^=Z_ z7O!|=iYGN#WgQq`JrlzHBU4*ewd>c&sA$>SKCs7&$+jETt^mH;+x*@H&hmWI*I8`pXDfn@_Gohx%UW^Y`bU3up` zHIX+F0B5maYSZ}S#-Z^kzRE(?Vc#^p8cp)_xZ2y8#WJQE(9N8-E(|WupFQzT-w1os z4D;cJQMOy$w3Vd;zVJ6O!7XBzcjK4XhP$JDkh2QG<^c1#F2aEgt=7)|H8h6o@gzAi z2GpJgEN=uz-Lvt;{74+jBef+)?W6Jm?lNaXuP{(b1Pe_SY;h$VFp8KY$VVbiw#@)1 zm=hji69Z!W8ejtO6RZJ*pRIAg6&77cihDW*CdHlvX{&XkHL$Yjx!Rh&P55LATUB~b znm+8-^4#pgEM-4OXU6uot|ie5v70H|ZH`TEIj~{-T}K||aTs1|xqRgU?;x;JaPq_V z_&CCMo_YH_Uw@@<yd{ae3FO#o_P4)d+*-1oi`qI>*ZT4QC07a4e~{R zSO%RmTWqJHIATTyBNQ4{M`&$NvL;QYhOkVrh^U;bBZjDOtWEXzJ^SqQJh5^2-S^VG zPEGQJBN><>y_FRVmOh-q0cAKCYL7@@ACtj{0DuEaiOI>R4ILbPN=LpVg}a`FsK91% zuy1+DhZ!|{S^<_Jpo;eq=RY;QXqr+`VwXu^1M$rFg+z6k0>_y=t3Pd#mZ9p0DT@ON zr03e}v3{}Sszije{;V36lD$VpZKOtkmk-vcwMdBg}<540ckoFlatT=U zu}mkw6Ier`qTfIFjwneiK59|X(j(N?lU$Wjk&bq&@)~NTPY0w){R3V;8eNvf0+QuM zp}k&|RWus3KY$o5K?ichr|FxuUeUp0bjHL3p7d3GKbm1nzZYU%TFWRv=6*lo=7+*Z zk?CdCq1fZi>+(y{b>xJr#Ev)(j4eTsIvH)Csa^5#)_zTs(1|wu3#CO|FVr1U?hL%P zTK6h)M+_2$X)br*qo_@DWhnmjzNu&@PQQ=g>20$Kl+?1=R>3fz6ffP%Q+nWCjH`+9rWbH<4jI zs06Xklb?L*$l-f-?%F&x;WV6lErbBv0-Zy2MTty^#Q@CF zLQDtG$fYU_q_7nMPwD9$k^#sw!9tm-Dym50;L3=%&{nSBSUz+1>bvi}|LW0KUuMI@ z*Nz>3|HSev8@pk+;l8nPM!kC;+;{ighY#F!&(58D{WkdIDD>P=+?@nCuJew-$XNdb zkJV0&aAVdl4LDe2e#WrGbpyn5K|+R>xH2L|I_xAku`CygsC3qtP>r#zj|P`lse{7j zX#LD#0ZDkHGd>zF=N7RG=PG)}2JGEcL<*ZO5d@$d{3t<5RMwGvQ8OND8C5%k5E4;C zEIG=9I~7M|BR>OcC(p?QDU8Yj68BI7i&26IL7C>8OW<0*YE(MN&%)CpXycpk+ZM369S9dS|A z{Zmt;x0d*P=G?U#4Cxoy6hEAur0|G2&=ef7ZdyM+$-QO1RH&O!!!$Ba4Jd^+kHnBB zrpk!Iyuh^`eaNEH_`qU~<|;}ZB3XnQn_@*;K*&yY3_)9=Ittm+PCj7zwBe>$2yh?+ z1n|uaoFm4lbsL33Ax1yLrjs$n5H6abGzIGAn| z7~ll;R8Uki${Sb27^!i%Pb3W0@)dMKs4^_c>ZHh$@f!b(j){{WzF5(CDV9(pgWSU$ zM&wpwDz!2~I24VVZvX}gYeSX`?=kgJ^gMo#J*Y2yB$3;yJY?=$>Fn3S8xw3ni}Smf zHpmt*x9|`W2FGVMjc?wz`^bHdEVHmMd*d>@9G?B~+?kUX&z-$??J7GR&R@CgGXngN zOpc7>WgGmG;@J519Xn|R`?xv1usAn+ePMy^4rdp6x`4o?i?io1o@ZrtXl!L-3iz4q zTrfU1;b&&j;;~!4Heml&%1M)D8PCF5oEYgld-C1ItEXpn?OnLVR(iL0?%h2xK8;d5 z!Zykl8Y_!2b+r&yP;Qpu@v&-3K)Y8VWV#Nc+*}nRe@#oL%{9M8$*P-Ev=p2!q$tEZ z+lpEq9>$c{T~De1x~Wl*Gz6`GD4H6uI(qoe_Y4W1r$Xa_6NX$-Qq65*qf)L3yOc06Ki~J<3orMLPvRlifwe3vPplauXa($nGPzb!m7zio zmMW?oWoOS?E?pKMCafp+8)S+bSkNsk=v&B~Ev6=mEW+D{R!I;I6|@vkht%Kn&@v)vrbE#N(llcp!Rtm#s>(`c8?38#g=!*gX+xr+ z#WkJ+k&u^7K&jl~!CXsFlB|Ah-!b&qBai;}?|kvaSC0PZ7ak=icC6YfmbUzXj}EKC z&~h#FO8NcIJ=_{Q5?wGxX#Oi2Vmn5bpcD+>= zN+KBb&Cz2p@G+|k;jTj^!&6s+ZfI3%TQ0LZ>196}?)i9+j7 zBb!N~R2&U~8)^hK0I)z$zk{_xOrBYs9OEIrg@uKC?mpZ%KJo1H&+{1qxxz6TO4`ww z;LA(P4?lF*$3FJg^FS;h3`cC^nRPJ)0morM>0>WvP|+dh&?xE>5sw^ufwmLMm`ZU- z^d6ntu{*wS|3Y>xI)41@8?PUG>E+j6J^IEQ$KK|RhQ2vA2tcr*zOk8&+wR@-=)V2? zcue4~9lQ2y-n@nP0$|4@;5@0z#|GwZE-*0QTlJeK$EPOP@O^~u4%EF{xbQV7%!!!( zxUXc#WC5#(lVBD1u1F5YADL~a1NxPARiLr4i#C`8LdnuNWk*0Wv`}nJ+azL)yi{08 z@YifkQJL^-K3zd6nrSl;ZhW!CfK=pWauP{!1@0RGs<4r(=CCkgs7<0{GYN|2xVa?f zuA=2)YMxVUovf}YDT`56phO8fG&CYc3NIcAL03{jAK1#%!*D|2oOmDsg`0s3^ekKW zN|%$|d1Hf%Q~0q*1;hvH`5mwLP`PShtf4#^*3}| zx0kVM2ZT%B6>yCR5~|A`9@WGH!Qk$W<|8Nqk~@|JyYUS^VuvJRI7gE%5CC}RvvDN6 z!D>hKz-5Q~H*FrDnHjx#bN(h9$1&@3)36ox_#7S?9v$af82YE&5xgpDT9bY@_IL0K zEH+kFr6}`hJJtwH!E^8;s$;UP#R?>30)~(m3ho|aD_I1&nx?+62$b;UkSMH0LDM*7 z3d7l1oTbDesHChh7Om{42NLHb79s4JVA>O#wa^15=yCyvGq8Tpv?wA)wH1~ImH>}O zH_Q#uERGP-A8h%wkvU3FWrjO58_V4S2$s_-t2PF z7`Ch-Fl*~95I$GLT_yj4crbR=TW~rqx5F)K)6`y4ERcbw0q?I3s7vOHf zlZmM1REeAsP*zxlrb>k@TuTsyVk-NJC@4~a5xwI}5|V1#}D5WR$9;-W`0 zYX#pY;OOIX!UKNFWCNR+O!AmgEh^2<-}V!V_{!}8{Do(qcr*;w<5Qb>kmJBz_xAVw zQFb=CdiC<@(=4Q*ZQ2F^IP4qXhGI%bv1agrqTXG|Az}4VZUt*RRdOUtLasJ?LPiQ5M)6IOnY!D; z)5@W5>LjpA!YLH=(yAXOc{KaJOCird*bM{fA)3s7zXLFfQ%(U7UOELxkgiS~+OeTs zpyVXk#@ZC&@SNp7b`bm07k}fM-+1~*KKCdXkv}A?Xe3k{Unvb+A|cvPZt@~gCtQIj zwIbB@S|bx|09*L=LJ3p2 z-xubNh)G<7wqEKr0P85Vl6QpdKy-6DNhsH&eou0X%|`4nl&2o0DX2a+Muts`%f*eT zXR8R1ZTH`mH^7bWu7O+~EkWhiiqYhEWwm{g^eUi+RV61T^M$sCX=Ezsj*B(olj%`# z4p#`r2SjT!1JRt4Dl`Y-Cd388_NF8@_~~7WX=nl)dN@AQ0Ea@V;^0^!oN@pBNfaP* znVWbo#SVjB$bpkxLKtwJnc@~Dw-e@f?bx+_=dO3&dhgsz+WNK<(LEFtZgTmV?U zH8*QDar%b6oTeRGY9S& z&E%NPzE&~Au`8&h<}<4PVQYMZ1Q7^3ycL1Lgg1hmo{$(iN)|>!RT}C!J`xpCfpm^8 z%WzaXk{!PZPoe=SCqTLj5QK>rtj|>EZk7mA7D1B5hFBP7O#$h_&B#pc)ghVQVGC&~ zJA7j8Pv4VTXh}1wKpM74W}%fxMMgZU375`DvBW^L7|E+LVn@WI0)=}RO0+r?QIZsL z4mpDr1Chj$f|ZGNLRs9p+cgNkX*V^^^lE}ZG$n$BEJJ8+swo?I@-TpA&&0Ey?}#NS zdbKQR)S;>pH3tInFX2;47D;rBSgN970E{XkE3M_01k{Q_phz;XTrBQnruej}T;$%^ zC%MrYDpvWj9=M7C5cuM1Ov@l#r9uFSA*e=4jfIrR<`evKfB6)Bas&)-sEStuL#WF< zbhNpgOG4AC+(~HIGyfME4(S+rr?Z?n7I=XaafQX>{5z4seIfTlO@0yo$h+ z1#F7}EgO&2NrdG=gGDPm&NVSPJvF^?=b?KZWR-Dg@#f{rd=KHonNug(z~IW2t8>?{ z&0V>6abUE6czk$#ntRfd(;LQpBVl4@W_n;?8*aI@G`BE!V}9=D+|BFr1m@@Fu3VTq zfA*Xbk8V8KKnrWHSS`kkjpA1^l#on*s8bkBIYa_HYeGbfo1C)*%FZMJ7dugG zWwCU51rhIakwPC9tcu3cL826O!jiR^O_og+nPsmS5RBI-1cktn)}CuRBReaU7UoNv~KvOh@6dUu+HjeZFeupwReJg}>#01#uUSGZ zHc>bQtC(;J13fG`sAw~ygf{Z}f#T{&@j1?Vkx6%uoTyKP5p{GAp4#O*3vzLRID(ZAM-WXB zK&~X%#NF!u{AWMGw@$wL^{4;+fA_DA@dj%{fC~z05spsc>Hx7;je@IlBb-&ciyS$d zXaiuZ6O>RdyqP_WyMVok1ytvbXshu=>;SBSA+>DUShlNWi_x-50XNwlfjdOI(1zCJ zcM~dOtpqJ{a(i)m!|RC#?W1V5G}m808l#i5if<=%Jt%CNB^hyx0qHFlAi3VC~R+@E3C#fsdIv5i=xE+K$f~`&jwnMfPfEM8#rUj-)(ZB_u z$pWUJy(G7y73)n3K$@i%qQMMD+vdh#y@Yxwc8uGiNu~++CbiU8T?=3xn7Xb@ROnXa zu28P?9)11o(`U~=_0-4r?V0A4P8yQxOVhE$Ai#SxWFg(QgGp0CTV{GcxdKI)gXT<9 zg;w&|f>wJMxbzQ+H>5=?n!)5$DNO(<4n(qfOoK;{ri7-Xl_xC!7E63Pml_w*^lNU` zx5au^99;3L9EQg~6!`fWERaGTP63&a<=2)6)}oAH4fpUw`YZw?5plVuy5L$|XCJpl_SW4;Ha7@;3dEZMVH>Si3H6Z%EgsO%a_j$*}tHt$>SH z`abyJ^jpW?eCg=xufFmopC06!@O|@3XtOfJd#@Yrdf-!gcJYM3U3>QI+q`|-%+y9k z$&8x$S~#!hGM<^eb(7)6_~_{Pq_5dd@CX6l(?S;K$4(%9OaKXMn4(eadc9d$hAts3 zVCOBdy;|DKdI6S^J@^<-C%~l6u89zC6-K`*HUiR+KpmDs5;Rz>1rncDv{-DNpdmF! z%9;qX*{K6eVo|CRB&|iG9hMDSVj>O7s^(P z5lGrd?d=~&UgG!wiOG>u53ZsG)p9hSpFYB1jz<6jhk;b4bViKO_E~U>B5MdNQNblQ zib$<$hH(5jkk1`3Nh5$_(AseSips1|tzaq+0+QyC9kzmqc1zXfR0Sm@wl`UTEfk@8$4NX z_BvdLhDO}wkd*>Cvt`?!yEbpyaOT9ZzJ;qB_uRE{>mF7$#zu#Dzrdyyczo24ccdIs7%3cG(R%G zJVtI(=4Zro_fV0W;d1h{9{}i5aM7tC>cr0`!W7QB@8tT72JnB9>0~AJ5p6E5!KYSs_iK z)jeBAF_$vMmcVJ!0uaa_-GqgNAwvZW;v`dul83EjZG)AE6hyHUpq)a->PnSVJ&e{$ zVF0n5X+eBjArCN0mSWBmgVHcJyln0LDvt$;Ll)Om6FnN*)j7x_qC3tigObESEPC0h z(2$@Ev<7&zhsPqUIw%sA0OfTCODBGA$tYzG7bu9>Nt9VC8F`7D29KN#DF{a)bFQo= z#dx%D@Pup;5KJA23PE`*c-ksSFo2s~>^pLJ*WGs?c=gq{-hThek$W}{>p!x}*%QCS zysSHlLlg^KgDIR@-D7pQ6YB}AhVLO1A_Z7-HB@^dJ;9b`PZGH3k0SA+My$&BOdjSS z#35*}wm~Dkv2am}_jby-Bnx&C5IBVgDV?KY9k33g7R76F3#9n>hF2M~7i)dEBYYbZUGF|*iZ_XX}Ox^AR^+p5JP%EndM;xhPUSTm;Ifz+gYRC#{)znX;s}(LsDd(#2 zAHX+4{SSZYh>w_^Frg@@fnZ|1@5U^~pjGxn^J0fZsI3?siO5cl zVDgY;>YYuP#%Te_HJG!Z%1LfZEYQg!6HYSpC@Q8DVozeVizbv#0Zx9B8dM3j#ELJ= z$-KZUuTINKw@gQ(^fES!&Ob~`brOW;`&I*e)03k&uFpZ_z9aX4>nmS;;iZ?q@P&tS zCqkgMi*3|wIAcMmL0?I+C&Z;kF1?{aI`j;gOyQM*5qnI#oLhZ27y2%ooqhkqlgEy| z`RdVQufG2Jd+(gM%%i7^h&bFgI=N}%<_8`)ynFAy0|yT6-m`bh)~$TiZE#?O(JxO2 z@S9^liP;-`e_?cJV3W6DH%?ECjIg;NQ%r|yj4BxCuqK2RScAs)j=Z$D13LR3WlgbQ z6Gv|h&rC_77_L#GCbf*!kq^!>8qkn!NorZCaFA|4>ir^d1A-mw*b9VMW}Vp`-gyYiG2 zf5JN?KpRm~Oe!LU98PgOBxi2DNTJ)6I^@D!-8h*FCqkY>pCYLO4;_G{C10RnC*Rmj zBY*hAJ86X*6gY@Twx}aF|E{bkoRXSlL4<qH!Efzy#x7QhcTf(j0}AND$g|u7w-<2r?FSf)wgDU`4XHdB%R_mV%TB zU{$c?m4cHptN=qT3r^_XBeDv`_!^~44B+q(Ar&98R)7Xs6OiaAA3GS-H-c9f3RVdS zDNI{b0!zjdQiV<%Q^I6f>dG0J3m(04#NJ^kB!Q$$p%gQbBwD$uu@)q6F89$0vhVEe zzDa7z65mi|MWe%xhZga@+tyo;YvPcwYU-skT6aKS&`ztqT0^KQSp(`A-3AC%TDGHl zAwH=uH56=`sth5RDy|^$8)T6Q*vbhvu9A(65gWJylA4pdiixF;LFCm6S2h74vmhX& zXI4EV+z1nQv9zOEWKc-5J(NZEE{>$(8(@urcvUi>P?~w?3fr5^Opl`$Ydt)CGV6OJ z>|J1|$!mF#UtVSj&Ch(&tWR&)ylKg9@4j>5gLmFLe&+3C zU;3qA_*LFV*|=l-*U3)VsB+Ol4!E z+Y~e{yo)Km;a1YgLq()e=gMN6<)f}Kp8%58tIv{$R(m)n`MN}%9wWmObA(*|yg);?_bXlwk<(0{q z{!e}Csh|1TpMUndFWq;~=UZWfD+_e!C&l#k2;-8a6%d^NFCBLzv?{SD(i3diw@F-; zGiD-B3nZ&d(G51rHo3vE+yv(A5m+uoE(r!Jw<(4I0%?Z-;uM88ElCCDxd3|uEx5U& zuRRK*gSRTXN%a!1Y4GnvW)XaN5xEU(+ZSiIz^S@GeM%6F1`u ztB0M6S0>avL^?RcKGsWzkKEfgI`sT=-&ZN{4ur= z*td7zw(Yw%Y}!0AF>W{5*UvY?8NcvEE0p;p*y!lc=IN2C=?OnIz#FfFLr$OUb$u|K z9>pPzNA9(Olf8ntz$}iQLjB0-X1p-Z>ombt3RT8%$f{>dTF&HHz3awt^g6 zg_EkzvWW|XYwi_kgK#cE9c7x%IgOkC6IX4DPt!>UN*qANT+}z$o7538BDW?bzu?r; zkapFKcx3a_D(0G37D8P`31&fQ76JIl0xKv35a3Ekw;)|VlXoeSB>3a2Xka~N{*r$!_q%jQNgW=9+S;ZniEvtYBQEM*Sx!YHwer2FNX=GMoQWj0K6pzz7xPXSWRG};% zCLkdgQSmLe$F~Rs%(T&Rg$XPzOwCIXXC4`KDRt$XmDa3d_WwD=~_30>vCU)#T!1H{c{OliL?ditV z%O_48fB(JrK78+;Q>Wki-QRiccfR;dwou?rghwBK@RLtI@v$dAe*Xja@7y)TM_mzw z#RB%TjMGCotKmp4-NEZO`(AqGjZNEkZQi_z8w%sBb+H+RiduOULjrA8QGIM#^KC=w zo@P1a*Qi-$j0!+h;S-Zk$YKHQYzo$}9Y8d1sxw$bJRF!K%>e}CNw5LHU}&UFC^`i2 zVKfpoKQs}SMh3W8yJ39`7##!AMHI?S3ivpV?U4yhxnd97>f25E$A9z?(R4}W41(gT zn5Sq0grt4)gnm}{%*Z2>3FU|b+{B3?VF?t8D_JgaC8Gf>QNs}0CV5e5Nf_hAK~Cj| zgZcb%X>&yZBxj`s0~AeN5Q-COWo!hk8$K&P{KKF9AAa^1zWTMN|MH*ze6Y2H29aeI zM#c|vDpH}IaD*z!DzWEW$(%WQ@rbrrCEA)y;X7CbY0}!`qjT0k7J1LTj1n#yy~$l% zt&o`K4oD|pR&P!>qZ5ErKh zg+}{P#`Ow1;G7@V0{g6;3U4cmR3%zQ*gy_(!uuuxf&!f%&1*;N5t>T^R3ba5# zSEXw5!85C3IqSFr>8B*{bFA4w0NWxqUL5|U@$b}uW|A=qdF{cFfN@Z-&!d75?8!B~ zpjS`_H_Y(9D9ik}4jw$XY0I{wuf2Ko#tIw%*S6{%H6^Tk%pPExhTMMMI!15GzhhE{ zo69TnH&@;}bN-!o-aY!p>#x4_#%piAdE&&`mANG~8W@Vb%qy#o>3u_+!AyTYcRQjp zs@fBBcDrHCq8$;~9eOe^C&}ChPiB>8YaeYIlbbIH%?OG>CDw8-Eegs)Fa^~yHTvs0 zl$p-&n9JpbFaTa^(gQqzc4iTQ)L?}dQ#bJe_fMk=W0T4NyPQ%f(QqEC`pTh#g49Ge9$(;u#yV=}`^jL>%Rq^odgj--l zX=T;}V?&>u1W0DBn$Za)z@U$DfB{|!6b1P+gv}_>1Rt-|rv(Oy4tJEn0fWU*)hN}leGzD`tSQwFlGKg1Rt2-j6ik1JXI+-2@#R|I$lNB2T zMqxTJ+8^99*zy&>unm^jmV)?3IpGa1Cn=JU3KcOUe5;X30w_n$pf#;xgD9V5sf6}5 zqDL7ci$f6jsiMHr(=aYx6i(zWBGSSr9t~mSNjzvp4-oR9;0hqwkv81IR1&2op-9qH z0kM@qlGVbB#4k14Ktnlc$q6MU72r`&%{sNpxl2JFw5BeP4h^r2jVw=3APz5QE!esJd zx_OzVi?_vinv2a}r$)zT_*U!)-{c%&ipSiC_ul7kTse2;(&^jt*G4yN`>{X%C;Nv+ zZ!auv;t_=L5uRZvZM3bW%c1~xeOSNE_^nDchKhg0>^6)5TZ-Bo8HwSYv~4sbY7kOh zn)|o1&_&3yc#}g)W~Ug;7Tepcnp~&=S_F9#+jXlZL)WzsZHE;_$FLEsa*;7dQxl1W z4p5o@MljZNf@TiC$kVuuj5*+>O05v-N-4rS1^@sc07*naR7glB$V#BzrbwjVXat-` znG!a1#F__l*rygX6UqZ)39JQoW{{>w35YH8@b>V;;AH>!N*{Oc2bXU1O`-+%ESR68 z#MrQsrwwQ(`q@*}>8r*cncBGfp{?v(@ag5-i?cVcpFPK02ycJz-dk*5@XXUkpZUsn z`v(60;NMONN8Bb$qtJX*oQD2eEY8I5(t#JstmSEIc7$B4+ zAc{q7rj0k3&MlV)gOTgkP3oq%`Rx@rj`jI%O8H(3-Mvb`U^pA;5b6ZFRL$?A{((Y;cLxH0Sb}%r z-jM&kBs(GirCSC#Zme>h+#=slN@|4 z%iCdn&%f}>#S0gH?2rD~j%}lS8#q?1cSjuwHO+Iu7fwX(7F$uZE22qn8pAf%D5x>7 z$PFwP*E`GVoXs+?Ipn(9juIy`%2WjljFSvZW4qMY0aiG7*qT!WTkA=oQZrKFW>E`b zHGqcGRW6asET}=9Lq>FCE90a6qoad!i}M>dY`E*LdtP|q_uhN=_@fW)XM=1RBS{T` zw1lJO49i$AU*WAy24%OF`Y&I)ed74(H{N>twKv{)?X_d?zW3qjGv`<47nGSz1ZFnw z-|uGz4jeqVfA9V+J9bP@&hTL^#%0{H@Eyq8w-)BEa+8$@0>(!NCN_*tOwCNNojYIp z8nUlM0=kM7?t1w~rL$=cXQD_^b6bMQX_z}piiO^&t!>H5R7%CQgodp(gIb>^rbQeD zno-t`ksPUJSnfcJ{yMWHH~<0_NjvhVm$tv>M1mgET#B{D6~0nu>`}eGg7`!O@J{M* z8`CqS;EMdMMCt@Vl~#6WD28Jnn>o#3GV@dJ%8%aS&neR$YO!_$OMrh<9DeL5k`KRBv(_t{dYTb1ebU51w}a|5lX;9GT6#n zv+5u~)NOz7OY5P^eA)Bz)EB$E8NJx-IsqkJ6KfmlcIke2tP;Z26p z#may<^(L${NDt+-5r=}t)|NOsuoEwtq6f4cX_XmeNF3c!Cjmg?8lHgrd z4c$Oh6&7ld8D%Y2J_zB=B;WixywgX(7Sy-QNt7gq=7pa@PW+opo|*B=hL$j* zl<{mxuv$51aJ8zbfD|>fmo}L)<}n=1Xp>~+*EDLNS=3Kf5rJ^y6c$;Ml%Dc1#=o%S zglhN_#Ml}T^F|(?d4Y%aDFK?vRZ!*2p{*3xD?(y{v>vSxff258A&GUNZ8D+~bQB6N z;p#W+RSY|EXsD1ZK;t3m?d*WT-$E<{;YT7wF3v2&S*+AY6~-bk^anU!^cx!K;{}1f zNk4SU`v67oj|K8hdb@=k@@4o!KU;eq3pXbXL`ws4Y?2(6_ zc>Lif9)0YdyASQ$J%*?7EX&c?-s)ReK79CrfxcT4FjWrLJz2R?T1{F8QzJb)%cL4u z(>NZ`a4|R#R$iinB%!sSqMZB<+UOe64w`|yrfDF>8}4XECg3v`Bgn!KB&*57-5OZ-^#@t-h+x#B_P8*S0xprkDIro5fK=o3 z(b6^&#gREH8f1~8tSCn!e{`l%Gg-j^0+VXCQeTQ3jg{lS4P0eNt5oX7!=^DxN}J-Whj++N^2 zAQXOy6S)+HM2CKP$agGE?kdgN$VW-h<~J_X5bwPJ0Wwr2k&4*CSReP5;W*zwtC%JAdkvp8$vfgd=y+q-Bq&Mg&^YAxcwaQ$QLl zD#hSxE-gmdyl$>YqCmAh*EmE99#Af)DDp`QEk{4%lr%Cit8_U7liZ*h>52xv zBvM4&+VzH2035{F=A)G04r-w2WX0~sevS$E@@@9_AD1+Z@l@+%ST^({SDqkym9fGT`|ox z&zx@Ddg!i4*g;_bfdl(k5!kkUW_o&PbZ|H$FFv?*`}Wd}>z5gU^JM|Hww_>v#PN|a z_81&x&#f4M4mUR!R+hboKsA@LreZ*5=ciD1*=kLCN)9mfD`jKwSRsC)+$x>{H^_{Q zK=+0^eNc=;LK&5SO^HJQu_6u-Aq>0$hFvnMJQC=es^m%GpN#Gyt}@m6?9&O)}S6FbK*$?21uI9D&}px5=YIM&?`uW*I82tW&{uMuyv$` z?(V=~oT0w6J18P*Y^W7dD6x+~h$=(H%|zHb?_8gB1xzs)iXw`Di0;!C)`-M(z?_mB zh_(O&3mEL89wb{MNm&$AJRt)5mM&(5U~>+xP*}PKU|@@+)DlO;(8FM=5o{E12^O{3 zS_n5~tBXq+`S)9$OXJvXO>P`#`{SjiiD&29t2+UPQ<+ zF`gVcRvhP{jS^fM*_5k20vWEBA*m5duSpEb5NvZGC>MdW1KgQyXy6c z3aXvz)v!D|7I6vjXS*j!p`uC5rg@1fsi`q9u@V&?;x_YYTEdt_GG#)}VT_Y{1JN2J z?VOZSp+Z1-o0NzcX36oyUx5KrO%JJJRR$cRxiI{48UXmd};nvEs`TUBICkbk<~*X5j=rJJlT8OhYOTE+i~@d z89C*M{vnc@767fvav-95h)R$Y3Q+NZDQt2HDr_K=W0*e`^H3&0Q~~#CG+bjL%TzVt6qnW$N)0kP zVTh#xrD?9VuS^N3WdJ&Q$yQO^CZO^VYpPckX}U$R-+lAMspG%?t6%%|U;ZLx z$%i%XzW2bVKlRif`H>&}t>5@+-@xeJ-FrdDJ=8<~5nG{1KzEx9l6`hQqH>DK0v=Ht zEYa0n3c%2<*yy?{?8<_)W0`$#W~F;~^ANm3vkn;$4!73>ralIs-a~5_TZw8ZAdS(vaF6KqgKE zYQY9GD_9Mjz7eBnkn;PoL@Q%MGR3GTL7uE|GK<3$E|RtZlz+m)RUT(k$tR~^Jy&93 z2T&*L90eJX)L2*N9@K505*-{``Qa~o_A6ic?QcB&%ojfQAOm{VKcN#MA(U`H3 zqb`Nti`-n;6{1TCbs*&kQ;oyNTKCa=hKiAJPe zkAroSTTB}ChG8eGBrIkf3-^dEk1xHCXUT%d%gatLgX0<8s#VJD*#Si`HA z=$foX^DwBa3ic!~VrxByxAe{YXfE{r5ZbX$Axr#6EZ5khP17MjDP**7l zCM#w{u;k7t1h_d$QhI&*df^-hf)%%wPA~y=i6^QB|y8 zR5zxy$ihG+bQtv+$}AANAVzM*%m?iC4`EP=@dG z_krP1KsAESoA}G{9nyxA0E!mUdV~}bAOO^YWX$VX4IC6YV@-m3NkM*?n=0m=deP8} z6u?_T!t>MP^q`FM0JR8NCJFZ-$y=DV5k( zW$uVs1W7|VGSx`pu5xsMVL=)%&Z7uWi4jyWZsvQHJ`6xlx*AlGl$bII+bkj~lyFMN znFGE$Y5c>?h+&dJXzNvSvq^)nLaG>tG!z+JD!<>A!Evdf^$<@83T4aD zc$*u)TdXn;Ul;NSX8Mi!72BN!BuFxOsaCOn3`=%-Zm^2Kl094VJxwUo7ryQ>Qr54y7mWjZS zD`e~kZ};(bfj-5ue*eVi=;oPG^yGsGY;19p&sog7c>$l*Waogq^)SQ=lPp;+nAmXO zo=u1Ddl){g+wB&)TG%S6^aEzK^2G9g4l=dePU0 zMJV_AK`~ZSXr=i5vEx`E_dq7dXAbc?9hv&0EZT(tnMGVETh0uGV~>_;msTf5xE8TZ z?BST)@JQ(Uom#B++W32`K$9#FgZv2cOROtc=}^EWPj9%xzp4AH&5g&+Twj%ar`YOe;ZZfCg%ZtbuN%(kMYaS~3=p9#zx@3Z)4+g^i972*(!8B^`4> zBL`raszMvFa32ALR)k~#tNfQFiEAzvjmVCEF{t*F{M5q?65;7{eY8!V9Fr$WFPV&C-umqcZ;i< z!h$FVy;TD>R2ZG>!WK-Dk`Xs6%&HG!MwlWN-P)1>HC!5@Qn*P`lE%isK*8l)6FWMf zY+Q)s2-#!>D1cE>tvO%{ZOlZJKoo+MYcW+aMAS_jv$aY?Br++cpmA49Sd-L~HLgx% zDZ-jN%1ykn@xJ9Tc0BW?be0L`Z!NIj;T&(I^T2^L`T7i%kExbblY@5*hQ^1-CbZ(M zJ|9C^@+l+su4CS}XZNPDG3J}~6oaL}QFI6>up)zsL8j3%o3r5&Dn%V1}*fY!%
  1. 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

    hB~EFaw0;0Rjm>=a~`BE=M{ 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%0A* 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𝔓l{TNUVKYpt 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

    +a<;?hH$K#vx%80UW%uNtUG|!yKh` z@M3Os;m}uY!NohyS6=hov~1Q^b|6KAlz}nngVBwyc=>j zH9Pytt1q#e)iHv2mX!MqhE*r~2MZhPqq))k<;;Tz54#0V`X$B=?kKPJVwm!#7-5ma z#4!V9&z}Y~k|JzOW4jI>2;xcAy2`Z>3r?I*P~Ey@Qfck>^6H&~{X6>yEXidXZx+`& zsMVqPPxOp*P1}&HCyrU^JjwGy1uox=aE8iiZedt4OB=4zaw;3ZBi}nlc@dmtNcA>C zlAs+WRh&QyW(Bfs8qz2fC37fBYEqF7V={Q=cYJY-1Sq8Tzj1)lQFAg>n2-~=!6;-X ztXvheHd7#ATBT6gEJrz>f+i1{k>Ha_!VLU=?0f`R zLj2<44v%OOsw9>0@DXO_fS6Rzy`oQ08*+KC(S|z83m!_LvmOL=*2)uD$d;`+WsQZM z^=~xsRD&S*LwSgdT)!HW+JVr1LDP1w%{;A^Je;*nhcqz(D$~ohCnudmDIIuol#4Gn z$-G~~7~C6JZ%DZ{weD~m%6fm<#jIR9>F)iH1>Q8W^%uADKJuSq+8D^9``_|~;Kj|g z^%tMJ_3{fZ-oABnYjd5=$xxJLcX7;wwo3waL@Y-ea@Y=tG#mescXWDu@2v+v^ZKVh z_Nkxw%)Pt&Y)8PBu{=UYUHVyUAb7AAIood!ie7Ppce2=@^;pCkB!mdip@{m?(tA{d>;Nd8Yz2Rze{C>@>U0`)SCT@$AeC*SEj=E54jPfKdls zC<*lg**?)OPjS{wJ!B`Iws>i zh)$?eS;Wz_r@&i!u)SQLY*7YBOdy&LZQ~6m)S@@x+lI%7r)<;6cRNg7HKY+>ExVx!Zj+S$AVF@O4W$SGNlU;c@i&#LH%+GMS&}ryd*c@<Q-ECnc@Mbhy}8Z3iJIRGd=U{#$hmj<=-81RR>6|YJXhT#~B zX<5Y=9x)-PT2tjwrxGAh`$gaAk?K)aAj~o>X~U@*3Taibb~GQ_B2Zd*CmHQ8Pfs6> zk*pwZV=k!T^Zi-+dOAu^*p%_a$$dyZwrm{bb^R+dPWYI+WQeajEabQdaWH6(v;QE@| zc&sSTcwX6NMIR>-96Eb-EQkv5Z*{AZk$F;FwOt_3<(@fsZqAlgmNvF- z%q_3bdz@U%jhENC^|Qrnd_6|(f0Pwd1?k)_W%GO z07*naRPXyTv{J{kT+wkT=E2O7i#{M1u2shFTSX>ADF=~ik$Wd3O9qji@rBCEITnmw zE-{(5&;Et8BlG6ZE{}G0XK$^_oiQPcBIN*)j@5Ty5hiw->cQ-aS3ZeWuAwm5QK!!x zIE7vyj#p?pw4b}QFe~5_;xpgGlv6mJFRbyV#md`z`;QL}P8hp6D9EdKSV!NKS^luW z+>kh#3P*%D7^2hj@#|@50@jh)qrD9#U$E}IU zWjYkAxUQjF?vPrHFtt?t2b73Rdk|Q0m22_>3%Y70RF%NWDBhTpNp{JZ@DvoRRKT!| z?9NIG6#-9~k{i`Nv=pEo9Xz2Thpfts6OBtyExV z28dIWTU;fdFhw9YNsspTe(a}zYGFKL?J84%g&njih^9m6T5i{Zq!5ym3}PjrBc

    F=J<%}8a0>D~{CO>!Z~FweeOI!^_U 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

    (-Kq!ht4bwE3Tp!9T4*0NW1W1oJ#Lu z#X^Ch>)`~3Ib90BMD`HMaN4lE-oG905MuCpZTbYk{Bm#?FfunevF&CAWEVs0^a7P= zj@yKIyHLE+nwg`a_XI)022<>W6gcp5sGK;gnuIK98Kvs{YWL0QP;qH_V0lU1=TvFr zZ8p<7a%5&<{(ei#YiCchnGx$w5DlB4MGnlGM5FQ}*-)uLs1wG}8Pu+P1S!G{p%b?6 zI%S$*h&e?TK=>x+*&~-$(jX|1%t`Ui5N)<5|%kABm?y!&;pecg}# z=ue)$^XX6i!cU!@!$EwBaPLq4g%PYwZHv~ zzx}n}`rQi`Rv-I_M||pIAGJrFg4FS?)7)c|Q*ZhAcdp`cCq^(J7HbUd#s{LZal)x9 zuQ~mp58U?JS8i=?KjaagG|SfnY-jeD&!7IAe|*LAZT~`<*Ga$+6b_=T-Qz`J*S7jxTMTz3cUV{j%ka-CI8H(bH3`4WvNsp8fELUi%L(+q~-z zwnDk=@@v@enr*Ofhx0V)^K_pwjprHye2x>WVuf#-+EsdRO83%?gu;uLy&~L2fbZ~T+ zf^XCA08=|nEB`k;%OMu32r6GimTLQ_Q>COR(kZZ?6t5W!rat}&pM2uR>-Hzccg99` zk~It_@?-*heNIW`PQQp@PQbiVR~_LJCh8z%((hxlp4x#NFO0YeFPp|Q*xB6NUEf;T zT;E(>W54ySwT-PcUZh)R9&Kc2cZ@gb{IDX%VB9Wu`RspS6U7*Z8E#4{lLb5jg)P#^ zqs$s)GdB`N;GhQNr-?rB2Z-mpYi8CN$S#0bDTBNm$8c zK)OYYh+*7^8))13@s?24NLG^>0-n7^M3oW^Lv4OXH(&zV$$&>CRrv5ZIvk*&eyMvH zi1m78r%2>VGbxWkRQsgep4AGxLzi-LedMW~qM- zppX&Fg&thqkL+E5Kl1{UeAarBDT5jIKAbx;HM=mFV&~%l@9$D9-5H9-IM#XfqL`s& zG;tE!uFnLd^JggpMO2VTQrnCVm}^V1#sc1q*x@q=l-7w!`=1=KzKcjpk;N5Bf(lnzoA53EVvR;tjZrAiBI1cogyUMgesdrPleG>wDY?5T_=rkD~a z$n^NB<1VO)>rH5BimW0k(!n7tETdE4DWj@aN+{z}xu$YxwwI=C2LxJNqYo(hJYwn^ z-T^i)f;$ab4z+BON?shE8-3z+0@A=unL_N&2bglw2Q4Mn1HCbFd~afJdvo=|+~CR* zNjaw_w06=Bw5~70Iv&Nmw1agd^jV@}b|;w>NZrQ{1ln}%?W|mLYWA|DlY9HCYzOLH zkZy(|#R%IgV?B`m-D1%XJ)o|JEz{q= zL9POSx&SltW}^vn{!uJddi~ma`@0UN}dNAN`FN{`Pa9^PJ!N%@;1+bNc`L?(bk`nOtS1v`HUV@qC*!`f~SmNh9>kEpCs##LlK~dc-|`(7)>LR9h8pj&reOP zY;IBqciC+fh(iUg>V1fxX+jPZbOd6I6PFqgI6?|NXIna?L}2SWxlJ_xU}Rx1Ju*BI zOxQ6s&{WkXkcw<(^9L_d_m3RqOXRbQ7go-lUgA9zD!Hu(3mBtHDIT6(TL4|BxiSN8 znl>FuZO|%?Jc|~p8sG_{dyaY2fl5I9lcm9SXiT(7ieLxuVADc!gFqb+KV6DMqe9@m?cf*Y|pm*GH$A><62lema4}Zurp80e(AfP}` z9+{a~n%X(b=VRdn7WE}=EPY_jK(IY~p;GP6OpJfiSAFdZe(!hR@t$}8@K62x{a$p< zHCJ7=y|;J!hwixh?lXKv`%@qDiC_JtUpT(Ki5dDh@0`*wuWfJq^S`}~=dodlxAX~( zyN)fH2-+K)nZNwRH52DP^8OFK>F+=EjyE5_{BpJxSy@_IJ##0o48dn`^2*CjUCTD2 z=A%PG-Id%SltaPt#_jqvX%1p{$FIEl`nyL**3X@O$1DHr9dCN&$&*)1OiWx@Jhy)K zG~2)LPfZ=a;+olo%XsaTq6Z89k{3GOtVqGj%vS`#KK&U+MjHK&B8i#71_})(H3+5Q z%I-p@!44?5F3v)PqU4p@jZ~0K&HkWS#8r!2)VHNnC#Kr1rgw=Bs7}x~bHZG9;TbT& zWV;o@=jzEGk|`0+&S(9&xoNLT6I=80@UgK30u`Ad|NQC{4I%}5Ik3W;*H{u2gaEhv zo2*@R$g{@zTFy}jy3K)stW-qj8;gTj^NHFf=~52CPUtr&;q0A-Z$Fs}lyxMsHXeLh zkYiV#y!@7%mR;FK9m1e2o?)XjIJh!EmVB{*7tx#wFduBH;7SC`xqW6!Hj4oTX=}?( z(bni#);5+`IrENy3zYchl{&WVaBhpKYBZoqg%7ttR%1smoG2*R62A&XV_m0FhMcp& zTcCLq+();%!aFHUV|oJn(NYXDCrw&cgZ`4B+V&uA6;n+(r0dbUTo-lJqAkNoT zT7x#nm%NdPRvvO+^GcUq+)_PLe%U!Srj|Tq%Dx??M<0z=L$MC6gI|Ugv4ky@{J(SRqG*Dw`Io1~tnr)nj^{7@5B05-4%Uz~|qP7${Y}?JZ ztev5hne{<)znLlz!Dl( z%W%i;2MW)x*pe{s%if36V}1+t=*)mw11Aoqre@eFg!KZf5~Y}0aVW`p$OadqQPK`2 z>gY@Y&ROV3?V*YSWSQXD$oksS2w%0~n<5hf@f)=+mQ^5umsyGsn%wEmE&Tv3SaDp$ z4W)ahDs-5x~?#S z*&!=h%7#b)1%!nVqL2=!n{wEDjbR3bMcE{Uhs;ZxM5ES$apiEt%au#}HJSpdTza5} z6&BH$kVm^TP$SYw!)e0=q7)ZGJ^8S;gl!h>BiJB`wK3b_%^SblSDiZckXs*o<>hl@BTNk}x5i4|iqQv|6||=evAtnj;w@!rysYB^artDO zTMJPVc{k5LJI>NG1sR+~Z6Ld#%I1i?-u8H)b3PFY1LIixSf!yH@AR_a*7O1k=OFKD zMB_DlF)7@Xqz2Jq7($q%rM62z_jc-R7)tAz3cFYO4%l6r5<@)Hs-3ip9?4_{8`9(Dyv-;Sc?1sg<+roWgp9i+7ZnRQ}&utMwFMQe?v2z8wivwrh6gSri#)8)q191+ygsTX`jbLpJkQm(v3%G8d$#4*I3$-*vQo4&G3pWKIoQr}9qh(EBql~$3?-G5mje^9cFryRG$7XGz zJ$84tws*I-H`vNxV{2=ZI@0IEaoM!^{j{;bwcVusMb#Ziedy+jx#s}74*k&^2ZV@8=6r&!XgEql2ql>nj$0>B%$>Sy zZf|#ql{3_r#x6EB7UAE_Cv3}ZCds^UEIH9ZNu3TdJ4h-mlU$e`TE!~avu#DtI*JUn zV1-n=&FZc^S9-|Bk6sG2WpiXfpH#gCgnYbkWN-b{@yU;S(5=^8b=erR^?U5dh|4pK zE2iFwyOi8g#jn>jH*w}qdTk^y9#Eeuso;9hR@qzuhM9cgw`dpTikq&Bk)p(bVi;&8 zsxwOVU|14DDMuKyAGRA4+5id%yVnvvm_t-Z_bcv&)QRgUTA-L*#7e^ZIEw5Le$TQe z>2d==pLnl=NEO~Q4MB3C=QSL_2;F5SSV=q}=O_m{E@rI31HZq2#T$O@*I)2gfBi~U zZnN}kV}0vep83q@|H`jC{E@eAY?zVmRBj=mPi0u*z?asXVzIWm_nDvj*;ik4-FJN3 zw_mvHu94ZPx4z|HKl}4PXMK5-VTfXTktvM~Vt5$qFpB;MzAnFH+=YT>2mQdCU;Fm0 z)irgT82|pC_{pbz_0!md*D(@#EC&yGLag%k;|`yW%uT=W1;76%Fa84(ch+{k;p?CI z-~QW;U-r~5{+h4(id$|x#aq*kis*Rk$myjij8ftp&Q-LM-=(cCLYg|XbAtDEGDC*a zD%wLT(Blllk=93t7<{Z?&kMwh==&t$L^=$j#!?g-4Ir!i$jI#2tnwm> z87&ZJfv;6Ll-?nXjUPQVKYx7g!nvh$XV3H2S3Yru

    kjl?CQ;>7mChF`ZUk(}Id& znio&eGC)icOOL3Ot(r>1!)Ssg6YIPiyN$`Hp38efz*9TPU}R}$gp@`{2_awSas2qPBgY0~V>|0>R6WLA zt^&pCREVvKv44E?Kl2V42GKg0Nm$~)wKaD(WIt7pO2=2RMkWTwuDIWkt?jjSUdi6x zXEiEr@ zuJfrbRwb}G;_U3~0@D~Cq!&b6ojzZu~dS0jpMpR-=Yb6~23+Huxra(9|TMr5~9_)_qEp6Dn= zgT}Ttw%ssSo;>dMevEC`!JtFHFMcUtllQ7OnF3g6yBhx2RwUWn+}_+^Re%D0Hp+_t zs=_ve*vu3|JVG_AMFIPpNJme)rONz#T_p;7f`RJdEUc^hX>~2VTZot*%*0T0H|Qck z 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 +|p!g-(JqBa1~m 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%0AcxwLi8mr~c;bRZKe)ho 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 literal 0 HcmV?d00001 diff --git a/dist/docs/3.2.0-beta.4/images/guides/creator-economy/episode-products.png b/dist/docs/3.2.0-beta.4/images/guides/creator-economy/episode-products.png new file mode 100644 index 0000000000000000000000000000000000000000..921c909a3965edd7eb7935f55b1b29c7be9f16eb GIT binary patch literal 1357473 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%0D3K0QdSd+aJ9h`1gq;;W-C|Ud*}UUPo6Gs-f#l6 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%0DG1y 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%0DI~_>4$P@zd)MX{=tYgq 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%0Dx=6eemT7@lkA(^J4db>}Kn|MpsPg9U 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%0A+{Zh1-9r9SmE8?iu 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%0D%Qr)cp_!~0KPbyfstBJz-^8k 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 literal 0 HcmV?d00001 diff --git a/dist/docs/3.2.0-beta.4/images/guides/creator-economy/play-button-progression.png b/dist/docs/3.2.0-beta.4/images/guides/creator-economy/play-button-progression.png new file mode 100644 index 0000000000000000000000000000000000000000..03914adb642267cb952bb778cdbf257eeca8faae GIT binary patch literal 1233029 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%0D4|9k)C!NZ3h`NG4` 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%0D~)}WLFdw_jaiRs>erx?3vC7<C9{goOQ*}gx6hL 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 KMNUMnLSTYtR7MK` literal 0 HcmV?d00001 diff --git a/dist/docs/3.2.0-beta.4/images/guides/creator-economy/three-stages.png b/dist/docs/3.2.0-beta.4/images/guides/creator-economy/three-stages.png new file mode 100644 index 0000000000000000000000000000000000000000..b6db948e2b86c606f12ab02818f1fcb10fd85557 GIT binary patch literal 1211679 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%0A|0rz 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%0Db*$1xoH|W= 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 z%0D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 literal 0 HcmV?d00001 diff --git a/dist/docs/3.2.0-beta.4/images/pr-screenshots/event-speakers-admin-modal.png b/dist/docs/3.2.0-beta.4/images/pr-screenshots/event-speakers-admin-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fdc859545a15a86d258e9ef6c0374b30d45a7e GIT binary patch literal 74196 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 N#L(QJ__Et?{{S)ultBOh literal 0 HcmV?d00001 diff --git a/dist/docs/3.2.0-beta.4/intro.mdx b/dist/docs/3.2.0-beta.4/intro.mdx new file mode 100644 index 0000000000..5f7449ae84 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/intro.mdx @@ -0,0 +1,726 @@ +--- +title: Introduction to AdCP +sidebarTitle: Introduction +"og:image": /images/walkthrough/adcp-01-fragmentation.png +"og:title": "AdCP — Introduction to the Protocol" +description: "AdCP is an open agentic advertising standard. Follow Alex's team from fragmentation to a unified workflow across all protocol domains." +--- + +<img src="/images/walkthrough/adcp-01-fragmentation.png" alt="Alex stands arms crossed in a war room of mismatched screens and tangled cables, surveying the chaos — her team hunched over laptops in the background" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Alex runs media operations at Pinnacle Agency. Her team buys across six channels — CTV, display, audio, social, retail media, and digital out-of-home. Each channel has its own buying methods, its own terminology, its own way of handling creatives, targeting, and reporting. IOs for some. APIs for others. DSPs for programmatic. Dashboards for everything. + +Now her clients want to try AI-generated creative, influencer campaigns, and local radio. Each new channel means new tools, new integrations, new workflows to learn. She can't keep scaling her team every time a client wants to try something new. + +The problem isn't her people. It's that every channel speaks a different language, and the industry has no common standard for how agents discover inventory, execute buys, distribute creative, activate data, or report results. + +AdCP is that standard. One protocol. Every platform. Every step of the campaign. + +## More than activation + +AdCP coordinates the full campaign lifecycle — from brief intake through measurement — not just activation. It works across every transaction model: direct deals, sponsorships, broadcast, and out-of-home, not only programmatic exchange. Most global ad spend flows through non-programmatic channels, and AdCP is designed for all of them. + +This page follows Alex's team through the entire workflow — from finding new partners to measuring results. Each section shows the human problem, the protocol solution, and the tasks that make it work. By the end, you'll understand every domain AdCP covers and how they connect. + +--- + +## Find new partners + +<img src="/images/walkthrough/intro-01-find-partners.png" alt="Alex reaches toward a glowing network map on a wall display, about to select a new publisher node from a constellation of connected partners" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Alex wants to work with publishers she's never talked to before. In the old world, that means sales calls, contracts, and weeks of integration work before she can even see what's available. + +With AdCP, discovery is built into the protocol. Every AdCP-enabled publisher hosts an `adagents.json` file — a machine-readable declaration of their properties and authorized agents. Sales operators publish `brand.json` for company identity, sales-agent endpoints, and signing-key discovery. Alex's buyer agent can resolve both files the same way a browser reads `robots.txt`. + +``` +https://streamhaus.tv/.well-known/adagents.json +``` + +```json +{ + "version": "1.0", + "publisher": { + "name": "StreamHaus", + "domain": "streamhaus.tv" + }, + "agents": [ + { + "url": "https://ads.streamhaus.tv/mcp", + "protocol": "mcp", + "capabilities": ["get_products", "create_media_buy", "sync_creatives"] + } + ] +} +``` + +For broader discovery — "find me CTV publishers with sports inventory" — the [AgenticAdvertising.org registry](/dist/docs/3.2.0-beta.4/registry) provides entity resolution and agent search. Alex's agent can query the registry by category, geography, or capability, and get back a list of publishers to connect with. + +<Accordion title="What the registry returns"> + +The registry API resolves brands to their AdCP agents: + +``` +GET /api/registry/agents?capability=get_products&channel=ctv +``` + +```json +{ + "agents": [ + { + "domain": "streamhaus.tv", + "agent_url": "https://ads.streamhaus.tv/mcp", + "capabilities": ["get_products", "create_media_buy"], + "channels": ["ctv", "olv"] + } + ] +} +``` + +</Accordion> + +<Card title="Learn more: adagents.json" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/property"> + How publishers declare their properties and authorized agents. +</Card> + +--- + +## Set up accounts + +<img src="/images/walkthrough/intro-02-set-up-accounts.png" alt="Sam shakes hands across a desk with a laptop showing a teal checkmark between them — setting up a new commercial relationship" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Before Alex's team can buy media, they need a commercial relationship. In the old world, each platform has different onboarding — portals, forms, sales reps, weeks of back-and-forth. + +AdCP standardizes this with the accounts protocol. Sam, Alex's media buyer, sets up Pinnacle's relationship with StreamHaus in one call: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/sync-accounts-request.json", + "idempotency_key": "f6c0a3d4-2345-48b1-2345-6789012345ab", + "accounts": [ + { + "brand": { "domain": "acmeoutdoor.com" }, + "operator": "pinnacle-agency.com", + "billing": "operator" + } + ] +} +``` + +The seller responds with the account status — active, pending review, or what additional information is needed. Once active, Sam can buy media. + +`list_accounts` shows all active relationships across every platform, so Alex can see at a glance which publishers her team is set up with. + +<Card title="Deep dive: Accounts" icon="id-card" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + Commercial identity, billing models, and multi-advertiser management. +</Card> + +--- + +## Discover what's available + +<img src="/images/walkthrough/intro-03-discover-products.png" alt="Sam gestures at three product cards on a wall screen — CTV, display, and audio inventory options all generated from one campaign brief" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +This is where it gets powerful. Sam wants to find premium sports inventory for Acme Outdoor's Q2 campaign. In the old world, he'd log into four dashboards and compare apples to oranges. + +With AdCP, `get_products` sends the same structured request and brief to every connected seller. Sam keeps semantic intent in prose and exact constraints in fields every seller can process deterministically: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655442003", + "buying_mode": "brief", + "brief": "Premium sports and outdoor-recreation contexts for Acme Outdoor's Q2 launch. Budget $50K.", + "filters": { + "channels": ["ctv", "display"], + "pricing_currencies": ["USD"] + }, + "targeting_overlay": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 25, "max": 45, "include_unknown": false } + } + }, + "brand": { "domain": "acmeoutdoor.com" } +} +``` + +Every seller responds in the same format — products with pricing, forecasts, targeting support, resolution, and creative requirements. Sam can verify exact constraints without asking every seller to infer them from prose. + +<Accordion title="What a product response looks like"> + +```json +{ + "products": [ + { + "product_id": "streamhaus_sports_ctv_q2", + "name": "StreamHaus Sports Premium", + "channels": ["ctv"], + "pricing_options": [ + { + "model": "cpm", + "price": 28.50, + "currency": "USD" + } + ], + "forecast": { + "impressions": { "min": 500000, "max": 750000 } + }, + "format_option_refs": [{ "scope": "product", "format_option_id": "video_16x9_30s" }] + } + ] +} +``` + +</Accordion> + +But Sam isn't done. He likes StreamHaus's sports package but wants to shift budget toward CTV and drop the display allocation. Instead of starting over, he uses **refine mode** — an iterative conversation with the seller: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655442004", + "buying_mode": "refine", + "refine": [ + { + "scope": "product", + "product_id": "streamhaus_sports_ctv_q2", + "action": "more_like_this", + "ask": "More CTV inventory like this, willing to go up to $35 CPM" + }, + { + "scope": "request", + "ask": "Drop display entirely, reallocate budget to CTV and OLV" + } + ] +} +``` + +The seller adjusts and responds with refined options. No new RFP. No starting from scratch. Sam iterates until he has exactly what he wants. + +<Card title="Follow Sam's full journey" icon="cart-shopping" href="/dist/docs/3.2.0-beta.4/media-buy"> + The complete media buy walkthrough — brief to delivery across three sellers. +</Card> + +--- + +## Build the creative + +<img src="/images/walkthrough/intro-04-build-creative.png" alt="Maya sits in a creative studio with her iPad, surrounded by wall screens showing ad formats of different sizes all generated from one brief" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Maya, Pinnacle's creative strategist, needs to produce ads for Sam's campaign. One campaign, three sellers, six formats — CTV video, OLV pre-roll, display banners, companion ads. In the old world, that's six separate production workflows. + +First, Maya discovers what each seller accepts: + +```json +const products = await seller.get_products({ + buying_mode: "brief", + brief: "Summer video and display campaign", + brand: { domain: "acmeoutdoor.com" } +}); +``` + +Each product returns canonical `format_options[]` with exact constraints—dimensions, codecs, file sizes, duration limits, and slots. No guessing. + +Then Maya briefs the creative agent. One brief produces all formats: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/build-creative-request.json", + "idempotency_key": "c1d2e3f4-a5b6-4789-c012-789012345678", + "message": "Adventurous, aspirational summer campaign — gear for people who live outside", + "brand": { "domain": "acmeoutdoor.com" }, + "target_capability_ids": ["video_16x9_30s", "display_300x250"] +} +``` + +The creative agent pulls Acme Outdoor's brand identity — colors, logos, tone guidelines — directly from the brand's `brand.json` (more on that below). No brand guide PDFs. No manual asset handoff. + +If Maya doesn't like the first draft, she refines with natural language: *"Make the opening shot more dynamic and swap the product shot for the hiking boots."* The `build_creative` task supports iterative refinement — same task, conversational guidance. + +Once approved, `sync_creatives` distributes the finished assets to every seller simultaneously: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-request.json", + "idempotency_key": "d2e3f4a5-b6c7-4890-d123-890123456789", + "account": { "brand": { "domain": "acmeoutdoor.com" }, "operator": "pinnacle-agency.com" }, + "creatives": [ + { + "creative_id": "acme_summer_ctv_30s", + "name": "Acme Summer CTV 30s", + "format_kind": "video_hosted", + "assets": { + "video": { "asset_type": "video", "url": "https://cdn.pinnacle.com/acme_summer_30s.mp4", "width": 1920, "height": 1080, "duration_ms": 30000 } + } + } + ] +} +``` + +<Card title="Follow Maya's full journey" icon="paintbrush" href="/dist/docs/3.2.0-beta.4/creative/index"> + Creative generation, format discovery, and multi-seller distribution. +</Card> + +--- + +## Execute the buy + +<img src="/images/walkthrough/intro-05-execute-buy.png" alt="Sam presses a launch button on his laptop with a teal pulse radiating from the screen, Alex standing behind him arms crossed with a satisfied smile" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam has products, creatives, and accounts. Time to buy. One call to `create_media_buy` executes the campaign across every seller: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json", + "idempotency_key": "e3f4a5b6-c7d8-4901-e234-901234567890", + "account": { "brand": { "domain": "acmeoutdoor.com" }, "operator": "pinnacle-agency.com" }, + "brand": { "domain": "acmeoutdoor.com" }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-06-30T23:59:59Z", + "packages": [ + { + "product_id": "streamhaus_sports_ctv_q2", + "budget": 35000, + "pricing_option_id": "cpm_standard" + } + ] +} +``` + +For sellers that generate creative — AI assistants, conversational ad platforms — the media buy can include a brief instead of pre-built assets. The seller's creative agent generates on the fly, pulling from the brand identity and campaign context. Both models — provided creative and generative creative — use the same `create_media_buy` task. + +`update_media_buy` handles mid-flight changes: shift budget between packages, adjust flight dates, swap creative assignments. No need to cancel and recreate. + +<Card title="The trust surface underneath" icon="shield-check"> +That `idempotency_key` on Sam's request isn't decorative. Pinnacle's buyer agent signs the POST with RFC 9421 HTTP Message Signatures before it leaves the network. StreamHaus verifies Pinnacle's signature against Pinnacle's operator-published JWKS, then accepts the buy. When the campaign moves from `pending_start` to `active`, StreamHaus posts a signed webhook back to Pinnacle's orchestrator — same signature profile, with StreamHaus's request-signing key published through its `brand.json` `agents[]` entry and optionally pinned by publisher `adagents.json`. If Sam's laptop drops the response and his agent retries, the `idempotency_key` makes the second call safe — StreamHaus returns the original buy with `replayed: true` instead of charging twice. Governance approvals ride along as signed JWS tokens on `check_governance` so no agent in the chain can forge Jordan's sign-off. See the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). +</Card> + +--- + +## Match at serve time + +The campaign is live. When a user loads a StreamHaus page, opens OutdoorNet's mobile app, or asks an AI assistant about hiking gear, the publisher needs to know which of Sam's packages should activate — right now, for this content, for this user. + +The [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match) handles this with two structurally separated operations. **Context Match** evaluates content signals against the available packages — no user identity crosses this boundary. **Identity Match** checks user eligibility using an opaque token — no page context crosses this boundary. The publisher joins both responses locally. Buyers never see identity and content together. + +One protocol, every surface: web, mobile, CTV, AI assistants, retail media. + +--- + +## Add your data + +<img src="/images/walkthrough/intro-06-add-data.png" alt="Sam and Kai sit side by side with laptops as translucent teal data streams arc between their screens — combining campaign and signal data" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam's campaign needs targeting beyond what the sellers provide. His client has CRM data (existing customers to exclude), Pinnacle has audience segments from their DMP, and he wants to layer on third-party signals from Kai's data company, Meridian Geo. + +**Audiences** travel with the campaign via `sync_audiences`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-audiences-request.json", + "idempotency_key": "a7d1b4e5-3456-48c2-3456-789012345abc", + "account": { "brand": { "domain": "acmeoutdoor.com" }, "operator": "pinnacle-agency.com" }, + "audiences": [ + { + "audience_id": "acme_existing_customers", + "name": "Acme Outdoor — existing customers", + "audience_type": "suppression" + } + ] +} +``` + +**Signals** — third-party targeting data — are discovered and activated through the signals protocol. Sam searches for what he needs: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "signal_spec": "Outdoor recreation enthusiasts near sporting goods retailers, 25-45" +} +``` + +Kai's Meridian Geo returns matching signal segments with pricing, coverage, and activation options. Sam activates the ones he wants: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json", + "idempotency_key": "f4a5b6c7-d8e9-4012-f345-012345678901", + "signal_agent_segment_id": "meridian_outdoor_rec_25_45", + "destinations": [ + { "type": "platform", "platform": "streamhaus" } + ] +} +``` + +The signal activates on StreamHaus's platform. Kai's data reaches Sam's campaign without either side building a custom integration. + +<Card title="Signals deep dive" icon="signal" href="/dist/docs/3.2.0-beta.4/signals/overview"> + How Sam discovers and activates Kai's targeting data across platforms. +</Card> + +--- + +## Govern it + +<img src="/images/walkthrough/intro-07-govern-it.png" alt="Jordan studies a governance approval chain on her tablet, silver hoop earrings catching the lamplight, her expression focused and deliberate" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Before any of Sam's campaigns go live, they pass through governance. Jordan, Pinnacle's campaign ops manager, set up the governance framework before Alex let any agent spend money. + +`check_governance` runs automatically before execution — budget limits, brand safety, targeting compliance: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/governance/check-governance-request.json", + "plan_id": "acme_outdoor_q2_plan", + "caller": "https://buyer.pinnacle-agency.com/a2a", + "target_agent": "https://seller.streamhaus.example/a2a", + "tool": "create_media_buy", + "payload": { + "brand": { "domain": "acmeoutdoor.com" }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-06-30T23:59:59Z" + } +} +``` + +If everything passes, the campaign proceeds. If something exceeds the agent's authority — say, the budget is above Jordan's \$20K auto-approval threshold — the governance agent escalates to a human. Jordan reviews, adds conditions if needed, and approves. The agent can't skip this step; it's architectural, not procedural. + +After the campaign runs, `get_plan_audit_logs` provides the complete decision trail — who proposed what, who approved it, what conditions were attached, what actually ran. Every decision is recorded and attributable. + +<Accordion title="What an audit log looks like"> + +```json +{ + "entries": [ + { + "timestamp": "2026-03-15T14:30:00Z", + "actor": "buyer_agent", + "action": "submit_plan", + "details": { "budget": 50000, "channels": ["ctv", "olv"] } + }, + { + "timestamp": "2026-03-15T14:30:01Z", + "actor": "governance_agent", + "action": "escalate", + "reason": "Budget exceeds auto-approval threshold ($20,000)" + }, + { + "timestamp": "2026-03-15T15:12:00Z", + "actor": "jordan@pinnacleagency.com", + "action": "approve_with_conditions", + "conditions": ["Weekly spend cap of $15,000", "CTV only — no OLV until brand safety review"] + } + ] +} +``` + +</Accordion> + +<Card title="Follow Jordan's full journey" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/governance/overview"> + The governance walkthrough — from nightmare to audit trail. +</Card> + +--- + +## Track performance + +<img src="/images/walkthrough/intro-08-track-performance.png" alt="Sam stands before a large performance dashboard with trending charts, coffee in hand, turning back with a confident expression — everything is on track" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam's campaign is live. In the old world, he'd check four dashboards. Now, `get_media_buy_delivery` aggregates performance from every seller into one response: + +```json +{ + "impressions": 1250000, + "clicks": 18750, + "spend": { "amount": 34200, "currency": "USD" }, + "by_package": [ + { + "product_id": "streamhaus_sports_ctv_q2", + "impressions": 750000, + "completion_rate": 0.87 + } + ] +} +``` + +For deeper performance tracking, AdCP provides two more tools: + +**`log_event`** records marketing events — purchases, leads, sign-ups — back to the sellers for attribution and optimization: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/log-event-request.json", + "idempotency_key": "a5b6c7d8-e9f0-4123-a456-123456789012", + "event_source_id": "acme_website_pixel", + "events": [ + { + "event_id": "evt_abc123", + "event_type": "purchase", + "event_time": "2026-05-15T10:30:00Z", + "action_source": "website", + "custom_data": { "value": 149.99, "currency": "USD" } + } + ] +} +``` + +**`provide_performance_feedback`** closes the optimization loop — telling sellers what's working and what isn't, so their algorithms can adjust: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "b6c7d8e9-f0a1-4234-b567-234567890123", + "media_buy_id": "mb_acme_q2_001", + "measurement_period": { + "start": "2026-04-01T00:00:00Z", + "end": "2026-04-30T23:59:59Z" + }, + "performance_index": 1.35 +} +``` + +--- + +## Connect your store + +<img src="/images/walkthrough/intro-09-connect-store.png" alt="Overhead view of a phone showing a product catalog connected by a glowing teal line to a laptop campaign interface — catalog data flowing between them" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Acme Outdoor has a Shopify store with 200 products. They want their catalog available to AI platforms — AI assistants that recommend products, AI search engines that surface them, retail media networks that need feed data. + +`sync_catalogs` pushes the product feed to every connected platform: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-catalogs-request.json", + "idempotency_key": "b8e2c5f6-4567-48d3-4567-89012345abcd", + "account": { "brand": { "domain": "acmeoutdoor.com" }, "operator": "pinnacle-agency.com" }, + "catalogs": [ + { + "catalog_id": "acme_outdoor_products", + "name": "Acme Outdoor Product Feed", + "type": "product", + "url": "https://acmeoutdoor.com/feeds/products.json", + "feed_format": "shopify", + "update_frequency": "daily" + } + ] +} +``` + +The seller ingests the catalog and makes it available for product-level targeting, dynamic creative, and conversational recommendations. When a product goes out of stock or a price changes, the feed updates and the seller syncs automatically. + +--- + +## Protect the brand + +<img src="/images/walkthrough/intro-10-protect-brand.png" alt="Tomoko stands in a corporate lobby before a frosted glass display of brand identity elements — composed and assured, she controls what goes out" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Tomoko manages brand operations at Acme Outdoor's parent company, Nova Motors. She published Nova's `brand.json` — a machine-readable brand identity that AI agents consume directly: + +``` +https://novamotors.com/.well-known/brand.json +``` + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/brand.json", + "house": { + "domain": "novamotors.com", + "name": "Nova Motors" + }, + "brands": [ + { + "id": "acme_outdoor", + "names": [{ "en": "Acme Outdoor" }], + "identity_agent": { + "url": "https://brand.novamotors.com/mcp", + "id": "nova_brand_agent" + } + } + ] +} +``` + +When Maya's creative agents generate ads, they pull brand guidelines directly from `brand.json` and the `get_brand_identity` task — colors, logos, tone, visual guidelines. No brand guide PDF. No manual asset handoff. The brand controls what AI agents see, and the protocol enforces it. + +For campaigns using licensed talent or third-party IP, the brand protocol handles [rights licensing](/dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing) — discovery, acquisition, creative approval, and lifecycle management, all through the same protocol. + +<Card title="Brand protocol" icon="palette" href="/dist/docs/3.2.0-beta.4/brand-protocol"> + Brand identity, rights licensing, and how brands control what AI does with their assets. +</Card> + +--- + +## The full picture + +Alex started with twelve platforms, twelve integrations, and a team drowning in platform mechanics. Now her team works through one protocol: + +| What they need | How AdCP handles it | Key tasks | +|---|---|---| +| Find new partners | Publisher discovery + registry | `adagents.json`, Registry API | +| Set up relationships | Standardized onboarding | `sync_accounts`, `list_accounts` | +| Discover inventory | One brief, every seller | `get_products` (brief + refine modes) | +| Build creative | One brief, every format | `get_adcp_capabilities`, `build_creative`, `sync_creatives` | +| Execute campaigns | One buy, multiple sellers | `create_media_buy`, `update_media_buy` | +| Add targeting data | Audiences + third-party signals | `sync_audiences`, `get_signals`, `activate_signal` | +| Govern everything | Human oversight, built in | `check_governance`, `get_plan_audit_logs` | +| Track performance | Unified reporting + events | `get_media_buy_delivery`, `log_event` | +| Connect commerce | Product catalog sync | `sync_catalogs` | +| Protect the brand | Machine-readable identity | `brand.json`, `get_brand_identity` | + +Sam buys media. Maya builds creative. Jordan governs. Kai provides data. Tomoko protects the brand. They all speak the same protocol. + +--- + +## How it works underneath + +AdCP doesn't assume a single AI handles everything. Specialized agents handle what they're best at: + +- **Media buying agents** discover inventory and execute campaigns +- **Creative agents** generate and adapt ads across formats +- **Signals agents** find and activate audiences +- **Governance agents** enforce brand safety and compliance +- **Orchestrators** coordinate the workflow and make sure humans approve what matters + +These agents communicate over two transport protocols: **MCP** (for AI assistants calling tools) and **A2A** (for agent-to-agent collaboration). Same tasks, same schemas, different transport. + +**How you know an agent does what it claims:** Every agent tells the network which broad areas it handles and which specific flows it supports — and those claims are testable. The protocol ships compliance storyboards that a runner executes against the agent. If it passes, the claim is verifiable. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). + +## Brief to live ads + +Here's what Alex's team does now: + +1. **Write a brief**: "Find premium video inventory on sports publishers for Q2 with a \$50K budget" +2. **Agents discover options**: `get_products` goes to every connected seller simultaneously +3. **Compare proposals**: Products come back in a standard format — pricing, forecasts, targeting — all comparable +4. **Agents build creatives**: `build_creative` adapts assets to each seller's formats +5. **Approve and launch**: `create_media_buy` executes across platforms in one call +6. **Match at serve time**: TMP Context Match + Identity Match activate packages at each impression, with structural privacy separation +7. **Monitor delivery**: `get_media_buy_delivery` aggregates performance from every seller into one view + +Each step uses a standard AdCP task with a JSON Schema-defined request and response. No platform-specific code. No manual translation between systems. + +## Trust through governance + +When AI agents spend money autonomously, trust requires structure. AdCP's governance layer provides it: + +- **Before a campaign launches**: `check_governance` validates budget limits, brand safety, and regulatory compliance +- **If something exceeds authority**: The governance agent escalates to a human — your team approves, not the AI +- **While campaigns run**: Governance agents monitor delivery against approved parameters +- **After delivery**: `get_plan_audit_logs` provides a complete decision trail — who proposed what, who approved it, what actually ran + +Governance isn't a gate that slows things down. It's the safety net that lets you give agents more autonomy over time. + +## Where do you want to start? + +<CardGroup cols={2}> + <Card title="I want to buy on AI platforms" icon="cart-shopping" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai"> + For brands, agencies, and businesses who want to advertise on AI surfaces + </Card> + <Card title="I want to build with AdCP" icon="code" href="/dist/docs/3.2.0-beta.4/building"> + For platforms, publishers, and developers implementing the protocol + </Card> +</CardGroup> + +## Get started + +<CardGroup cols={2}> + <Card title="Ask Addie" icon="message-bot" href="https://adcontextprotocol.org/chat"> + Ask questions about AdCP, explore the protocol, and test tasks — no code required + </Card> + <Card title="Client SDKs" icon="rocket" href="/dist/docs/3.2.0-beta.4/building/schemas-and-sdks"> + JavaScript, Python, and Go libraries with CLI tools for testing + </Card> + <Card title="Brand.json builder" icon="palette" href="https://agenticadvertising.org/brand/builder"> + Create and validate your brand's brand.json file + </Card> + <Card title="AdAgents.json builder" icon="hammer" href="https://agenticadvertising.org/adagents/builder"> + Validate or create your publisher's adagents.json file + </Card> + <Card title="Registry" icon="magnifying-glass" href="https://agenticadvertising.org/registry"> + Browse registered agents, brands, and publishers + </Card> + <Card title="Building with AdCP" icon="code" href="/dist/docs/3.2.0-beta.4/building"> + Choose between MCP and A2A, learn implementation patterns + </Card> +</CardGroup> + +## See it in action + +<CardGroup cols={4}> + <Card title="Media buy" icon="cart-shopping" href="/dist/docs/3.2.0-beta.4/media-buy"> + Follow Sam through a complete campaign — brief to delivery + </Card> + <Card title="Trusted Match" icon="link" href="/dist/docs/3.2.0-beta.4/trusted-match"> + Real-time package activation with structural privacy separation + </Card> + <Card title="Creative" icon="paintbrush" href="/dist/docs/3.2.0-beta.4/creative/index"> + Follow Maya through creative generation and distribution + </Card> + <Card title="Governance" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/governance/overview"> + Follow Jordan through the trust model that protects your spend + </Card> +</CardGroup> + +## For platform providers + +AI is buying ads. Make sure it can buy yours. + +If you operate a DSP, SSP, publisher, data platform, creative platform, governance service, or any ad tech solution, AdCP lets AI agents discover and transact with your platform. To get started: + +1. **Implement an AdCP agent** — Expose your platform's capabilities as AdCP tasks over MCP or A2A. Start with `get_adcp_capabilities`. +2. **Publish discovery and authorization records** — Use `brand.json` for operator identity, agent endpoints, and signing-key discovery; use publisher `adagents.json` for properties and authorized agents. +3. **Test your implementation** — Validate with [Addie](https://adcontextprotocol.org/chat) or the [client SDKs](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks). + +Implement the protocol domains relevant to your business: +- **Publishers and SSPs**: [Media Buy](/dist/docs/3.2.0-beta.4/media-buy) and [adagents.json](/dist/docs/3.2.0-beta.4/governance/property) +- **Data providers**: [Signals](/dist/docs/3.2.0-beta.4/signals/overview) and [data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) +- **Creative platforms**: [Creative](/dist/docs/3.2.0-beta.4/creative) +- **Governance vendors**: [Governance protocol](/dist/docs/3.2.0-beta.4/governance/overview) +- **Brands**: [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol) and [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) + +## For advertisers and agencies + +Run campaigns across more platforms without scaling your team. + +AdCP-enabled agents work across all your media partners through a single interface — the same tasks buy CTV inventory, activate audience data, and manage creatives regardless of which platform you're working with. + +1. **Read the buyer's guide** — The [monetizing AI guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai) explains how this works for brands, agencies, and SMBs. +2. **Check platform support** — See which of your media partners support AdCP, or browse the [registry](/dist/docs/3.2.0-beta.4/registry). +3. **Try it with Addie** — [Ask Addie](https://adcontextprotocol.org/chat) to walk you through the protocol — no code required. +4. **Build your own agent** — No engineering team required. The [certification program](/dist/docs/3.2.0-beta.4/learning/overview) teaches anyone to build a working advertising agent through vibe coding — describe what you want, an AI coding assistant writes the code. +5. **Connect with your team** — Share the [building guide](/dist/docs/3.2.0-beta.4/building) and [client SDKs](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) with your technical team to start integrating. + +### Client libraries + +<CodeGroup> +```bash JavaScript/TypeScript +npm install @adcp/sdk +``` +```bash Python +pip install adcp +``` +```bash Go +go get github.com/adcontextprotocol/adcp-go/adcp +``` +</CodeGroup> + +- **NPM**: [@adcp/sdk](https://www.npmjs.com/package/@adcp/sdk) | [GitHub](https://github.com/adcontextprotocol/adcp-client) +- **PyPI**: [adcp](https://pypi.org/project/adcp/) | [GitHub](https://github.com/adcontextprotocol/adcp-client-python) +- **Go**: [adcp-go](https://github.com/adcontextprotocol/adcp-go) + +## Open-source examples + +The [Prebid Sales Agent](https://github.com/prebid/salesagent) is a full-stack seller agent (Python backend, TypeScript protocol layer) with GAM integration, built by a Prebid working group. It is a community example, not a maintained reference implementation. To build your own agent, start with the [official SDKs](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) and [skill files](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent). + +## Organization + +AdCP is a project of [AgenticAdvertising.org](https://agenticadvertising.org), an industry organization of publishers, platforms, agencies, and technology providers advancing open standards for AI-powered advertising. Members join AgenticAdvertising.org to develop and adopt the protocol. + +Foundation governance — structure, voting classes, Board composition, specification lifecycle, and conduct rules — is summarized in the repository's [CHARTER](https://github.com/adcontextprotocol/adcp/blob/main/CHARTER.md) and published at [agenticadvertising.org/governance](https://agenticadvertising.org/governance). + +## Need help? + +- Browse the documentation +- Ask in the [Slack community](/dist/docs/3.2.0-beta.4/community/joining-slack) +- Email: support@adcontextprotocol.org diff --git a/dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising.mdx b/dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising.mdx new file mode 100644 index 0000000000..44b246f4ee --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising.mdx @@ -0,0 +1,75 @@ +--- +title: "How to explain agentic advertising" +sidebarTitle: Explaining it to others +description: "A cheat-sheet of the clearest, most-tested ways to explain agentic advertising and AdCP — by audience and by job-to-be-done. For decision-makers who have to make a CMO, a board, an agency, or a publisher get it in one meeting." +"og:title": "AdCP — How to explain agentic advertising" +--- + +# How to explain agentic advertising + +Half a decision-maker's job is making *other* people get it — a CMO, a board, an agency, a publisher — in one meeting. This page collects the framings that land, drawn from how the community actually explains agentic advertising. Pick the one that fits your room; don't use them all at once. + +<Note> +This is a companion to the [Decision-Makers track](/dist/docs/3.2.0-beta.4/learning/decision-makers/overview). The track teaches you to reason about the shift; this page hands you the language to pass it on. +</Note> + +## The one-liners worth memorizing + +> **From bidding to reasoning. From impressions to relationships. From milliseconds to months.** +> — Ben Masse, Triton Digital (egta CEO Summit, 2026) + +The most portable description of the shift: programmatic optimizes the next impression in milliseconds; agentic advertising reasons about outcomes and relationships over months. If you remember one sentence, remember this one. + +> **AI executes. Humans stay accountable.** +> — Ben Masse, Triton Digital (egta CEO Summit, 2026) + +The cleanest answer to "but who's in control?" Agents do the work; the decisions that matter stay with people. Delegating the doing is not delegating the judgment. + +> **One open protocol. Any platform. Any format. Any channel.** + +The standard in five words — why you build once and reach everywhere. + +> **Programmatic sends a thin request out; agentic advertising brings your data in.** + +The [reversed data flow](/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising) — the platform closest to the conversation has the context, so you bring your data to it instead of sending requests away from it. + +## Analogies that land + +- **Autonomous vehicles** — making programmatic "smarter" is putting an AI driver in an existing car on existing roads; agentic advertising builds new infrastructure designed for autonomous vehicles. *Use when someone says "isn't this just better RTB?"* +- **A treaty, not a takeover** — *"not a new technology imposed by a conqueror — a treaty negotiated by the parties who actually own something"* (Ben Masse, egta CEO Summit). *Use with publishers and broadcasters: the standard is theirs, not a platform's.* +- **Containerized shipping** — global trade took off once the world agreed on standard container dimensions. An open standard is that agreement for AI-era advertising. *Use with standards skeptics.* +- **A shared language for transacting** — like a common settlement layer in banking, AdCP doesn't make the product; it lets the whole ecosystem transact at speed and scale. +- **A personal shopper** — a brand agent knows what the brand wants and visits every store to find the best fit, but the store has to have its doors open and its shelves organized. *"You're not competing on price anymore — you're competing on being findable."* *Use with publishers.* +- **From campaigns to ingredients** — you stop trafficking finished creative and start [providing ingredients and a goal](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai); the platform assembles the outcome. + +## By audience + +**CMO / board.** Lead with the stakes and the shift, not the plumbing. *"AI is remaking advertising; the question is whether you direct the change or react to it."* Then the triad (bidding→reasoning, impressions→relationships, milliseconds→months). Close with the reassurance that defuses the room: your measurement stack and agency relationships don't go away — this is a new channel, not a new measurement paradigm. + +**Agency.** A buyer agent is the equivalent of the DSP for AI surfaces — it sits *alongside* your stack, not on top of it. What you build once works everywhere; the margin comes from one integration reaching many surfaces instead of negotiating direct deals platform by platform. + +**Publisher / broadcaster.** The antagonist is the "ID aristocracy" — walled gardens hoarding identity. You are one of "the parties who actually own something": real inventory and real audience relationships. AdCP is the treaty that gives you a seat at the table. You compete on being *findable and legible* to agents, not on price. + +**SMB / founder.** You already do a version of this on Google Shopping: you push a product feed and the platform merchandises your products. AI surfaces work the same way, through a partner — no new creative to make, and your existing ROAS/CPA tracking still works. + +## By job + +| You need to… | Reach for | +|---|---| +| Explain the shift | the triad; "portfolio management, not high-frequency trading" | +| Handle "isn't this just better RTB?" | the autonomous-vehicles analogy; "doing better than programmatic, not programmatic better" | +| Handle "another buying platform?" | "it's a horseless carriage; you want a car" — it has a context graph | +| Answer "who's in control?" | "AI executes. Humans stay accountable." | +| Answer "is this a fad?" | AI is the *cure* for signal loss, not the next hype cycle | +| Reassure on measurement | "a new channel, not a new measurement paradigm" | + +## Go deeper + +<CardGroup cols={2}> + <Card title="L1: Agentic advertising" icon="arrow-right-arrow-left" href="/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising"> + The reversed data flow, and how to explain it to a CMO. + </Card> + <Card title="Monetizing AI surfaces" icon="bullhorn" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai"> + The buy-side guide: what you provide and how to get started by role. + </Card> +</CardGroup> diff --git a/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising.mdx b/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising.mdx new file mode 100644 index 0000000000..7429b1ac65 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising.mdx @@ -0,0 +1,91 @@ +--- +title: "L1: Agentic advertising and the reversed data flow" +sidebarTitle: "L1: Agentic advertising" +description: "AdCP Decision-Makers module L1: what agentic advertising is, why it differs from programmatic, the reversed data flow, and how to explain it to a CMO. Reasoning only — no code." +"og:title": "AdCP — L1: Agentic advertising and the reversed data flow" +--- + +# L1: Agentic advertising and the reversed data flow + +**~15 min** | Prerequisite: none | Free + +The first thing a decision-maker needs is an accurate mental model — one you can repeat to a CMO without hand-waving. This module builds it. There is nothing to run and no agent to query; you reason through the shift and practice explaining it. + +The core idea: **programmatic sends a thin request out; agentic advertising brings your data in.** A bid request carries a page URL, a device type, maybe a user ID — to a remote decision-maker that does not have the conversation context. The AI platform closest to the user *has* that context. So instead of sending requests away from the context, you bring your ingredients — brand identity, rules, goals, and (if you sell products) a product catalog — to it, and the platform generates the response. + +That is why there is no creative to traffic and no segment to buy. You provide ingredients and a goal; the platform assembles the outcome. + +The shift in one line — the way Ben Masse of Triton Digital put it to a room of broadcast CEOs at the egta CEO Summit: + +> **From bidding to reasoning. From impressions to relationships. From milliseconds to months.** + +That's the sentence to leave in a CMO's head. + +<Note> +Want the hands-on version? Foundations module [A1](/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising) teaches the same paradigm by having you query a live agent and read its response. This track assesses you on reasoning instead — same idea, no building. +</Note> + +## What the consumer sees + +Picture a shopper who asks an AI assistant *"best 65-inch TV for a bright living room."* + +- **Old world:** a banner for your TV might sit next to the chat — generic, ignorable, disconnected from the question. +- **Agentic advertising:** the assistant generates a sponsored recommendation from your **product catalog** — the list of products, prices, and images you already keep, the same feed you'd send to Google Shopping or Amazon — and your brand voice, naming the model that actually fits a bright room, in your brand's tone, with a clear disclosure that it's sponsored. + +You never wrote that sentence. You supplied the ingredients — product data, brand voice, the rules — and the platform assembled the right message for that moment. + +If the shopper has a follow-up (*"how does it handle glare?"*), **[Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview)** lets the conversation continue *with your brand* rather than ending at a static ad. That multi-turn, brand-to-consumer conversation — not a banner — is the deepest form of this channel, and the one worth showing your CMO. + +<Note> +**Agency?** This is your pitch to clients: stop trafficking finished creative, start orchestrating their data into platforms that generate it. + +**Solo or SMB?** You already live this on Google Shopping — you push a product feed and the platform merchandises your products. AI surfaces work the same way: the AI writes the recommendation from your feed instead of showing a banner. No new creative to make. +</Note> + +## Reading list + +<CardGroup cols={2}> + <Card title="Monetizing AI surfaces" icon="bullhorn" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai"> + "Why existing approaches fall short" and "from campaigns to ingredients" — the reversed data flow in plain language. + </Card> + <Card title="AdCP vs OpenRTB" icon="arrows-left-right" href="/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb"> + Where the two standards differ and how they work together — Sponsored Intelligence sits alongside your programmatic stack. + </Card> + <Card title="The full picture" icon="map" href="/dist/docs/3.2.0-beta.4/intro"> + How a media team runs discovery, creative, execution, and reporting through one protocol. + </Card> + <Card title="Sponsored Intelligence" icon="message-bot" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview"> + The advertising model where the platform generates the message in the moment, for that conversation. + </Card> +</CardGroup> + +## Key concepts + +- **The reversed data flow** — programmatic sends thin signals out to a remote bidder without context; agentic advertising brings rich data in to the platform that holds the context and generates the response +- **From campaigns to ingredients** — you provide your brand voice, rules, and goals (plus a product catalog if you're selling products); the platform assembles the ad. Better ingredients, better results +- **Not banners in AI apps** — the ad is generated from your brand data and feels native to the experience, not a display unit bolted onto a chat window +- **Additive, not rip-and-replace** — Sponsored Intelligence is a new channel that sits alongside your DSP, your agency, and your measurement tools +- **AI executes; humans stay accountable** — agents do the work, but the decisions that matter stay with people. Delegating the doing is not delegating the judgment — the cleanest answer to "but who's in control?" + +## What you'll demonstrate + +Sage verifies three demonstrations through conversation — the same for every learner: + +1. **Explain the reversed data flow** and why bringing data to the context beats sending requests away from it. `l1_ex1_sc_reversed_data_flow` +2. **Explain it to a CMO** in plain language — "the platform generates the message from our brand data," not "banner ads in AI apps." `l1_ex1_sc_cmo_explanation` +3. **Contrast it with the model you know** — no creative to traffic, no segment to buy; ingredients and goals instead of trafficked assets and targeting. `l1_ex1_sc_no_creative_to_traffic` + +## Assessment rubric + +| Dimension | Weight | What Sage evaluates | +|-----------|--------|---------------------| +| Paradigm understanding | 35% | Grasps the reversed data flow as the core distinction | +| Executive communication | 35% | Can translate the concept for a non-technical executive | +| Contrast with legacy | 20% | Contrasts with programmatic / IO without mismapping | +| Framing accuracy | 10% | Avoids the common misconceptions | + +Passing threshold: 70%. Scores are internal — you experience the module as a conversation that continues until you have demonstrated mastery. + +<Card title="Start L1 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module L1." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance.mdx b/dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance.mdx new file mode 100644 index 0000000000..eda85434db --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance.mdx @@ -0,0 +1,91 @@ +--- +title: "L2: Your data, brand, and governance as the control surface" +sidebarTitle: "L2: Data, brand, governance" +description: "AdCP Decision-Makers module L2: the brand-side data you control, generation-time brand safety, and why your IAS / DV / Nielsen measurement stack persists. Reasoning only — no code." +"og:title": "AdCP — L2: Your data, brand, and governance as the control surface" +--- + +# L2: Your data, brand, and governance as the control surface + +**~15 min** | Prerequisite: L1 | Free + +If the platform generates the ad (L1), where is your control? It is in **what you put in**. This module is about the inputs a decision-maker's organization provides, and how those inputs — not a campaign UI — are your levers. They're a **dial, not a checklist**: the protocol needs very little to *run* (an account, a budget, what you're buying), and the more — and better — you put in, the more the result reflects your intent. + +Three ideas do most of the work: + +- **Your inputs are the dial.** The platform generates the ad from what you push in, so your inputs *are* your control. **Brand identity** (voice, guidelines, positioning) shapes how it sounds. A **catalog** drives product recommendations when you're advertising products — there, input quality drives ad quality: a thin catalog (titles and prices, nothing more) produces thin, generic recommendations. A brand-awareness campaign needs no catalog at all — brand identity and a brief carry it. Turn the dial up as you want more control and better results. +- **Brand safety happens at generation time.** You push suitability rules the platform enforces *while the ad is generated*, before anything is shown. That gives you control over how the AI represents your brand that no post-hoc check provides — and where content is generated on the fly and never leaves the platform, it is the only workable mechanism. It is a different problem from adjacency: controlling how the AI talks about your brand, not just avoiding bad placements. Legal and regulatory compliance (COPPA, GDPR, HFSS) is separate and automatic — governance agents enforce shared [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) rules regardless of what you push. **Content standards are the *brand-specific* control you add on top, and they're optional** — reach for them when you want a tighter say over how the AI represents you. +- **Your measurement stack carries over.** You keep your IAS, DV, Nielsen, and Comscore contracts and accreditations and evaluate this channel with the same frameworks — MMM, multi-touch attribution, incrementality. Sponsored Intelligence is a new channel in your plan, not a new measurement paradigm. Two adaptations: pushing conversion events lets platforms optimize toward real outcomes, and on ephemeral AI-generated surfaces the classic *send the page to IAS/DV* adjacency check shifts to the content-standards calibration model — the contract persists, the mechanism adapts. + +<Note> +**Agency?** Your ownership answer is orchestration: you maintain your clients' catalogs and `brand.json` on their behalf and make sure those inputs are rich before a campaign runs. + +**Solo or SMB?** Your existing Shopify or commerce feed already *is* the catalog, and a partner handles the plumbing. "Measurement carries over" means your ROAS / CPA dashboards and conversion tracking still work — you don't need IAS / DV / Nielsen contracts to start. +</Note> + +## Reading list + +<CardGroup cols={2}> + <Card title="Catalogs" icon="boxes-stacked" href="/dist/docs/3.2.0-beta.4/creative/catalogs"> + Why your product feed is the main ingredient — titles, descriptions, prices, images become the creative input. + </Card> + <Card title="brand.json" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json"> + The machine-readable brand identity — voice, visual guidelines, positioning — AI platforms read so they sound like you. + </Card> + <Card title="Content standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + How suitability rules are enforced at generation time rather than verified after the fact. + </Card> + <Card title="Governance overview" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/governance/overview"> + The model for pushing content standards into platforms and getting an audit trail back. + </Card> + <Card title="FAQ: do I need to change my measurement stack?" icon="circle-question" href="/dist/docs/3.2.0-beta.4/faq#buying-ai-media"> + The short answer: no — you keep your IAS / DV / Nielsen contracts and accreditations. + </Card> + <Card title="What AdCP does not standardize" icon="list-check" href="/dist/docs/3.2.0-beta.4/reference/known-limitations"> + AdCP is not an MRC-accredited measurement standard; it carries the data your existing tools consume. + </Card> +</CardGroup> + +## Key concepts + +- **The levers you own** — brand identity (`brand.json`) always shapes the output; a catalog and conversion events come in for product and outcome-optimized campaigns; content standards are an optional control on top +- **Input quality drives ad quality** — rich, accurate inputs (a detailed catalog, a clear brand voice) produce strong ads; thin inputs produce generic ones +- **Generation-time enforcement** — content standards applied during generation, not as a blocklist or a third-party bolt-on +- **Compliance is handled for you** — governance agents enforce shared Policy Registry rules (COPPA, GDPR, HFSS) automatically; content standards are your brand-specific control, not your legal backstop +- **Measurement continuity** — you keep your measurement contracts, accreditations, and evaluation frameworks; conversion-event optimization and (on AI-generated surfaces) calibration-based suitability are what adapt + +## How good do your inputs need to be? + +Better inputs mean more control and better results — this is the cheapest lever you have. Nothing here is a hard prerequisite; it's a **quality dial**, and what matters most depends on what you're advertising. + +| Input | Thin | Ready | Strong | +|---|---|---|---| +| **Brand identity (`brand.json`)** | logo + name | + voice and tone guidance | + positioning, do/don't language, visual guidelines | +| **Product catalog** *(product campaigns)* | titles + prices only | + descriptions, images, availability | + structured attributes (size, color, category), kept current | +| **Content standards** *(optional brand control)* | none | topics to avoid | + approved claims and suitability rules enforced at generation time | +| **Conversion events** *(optimizing to outcomes)* | none | one core event (purchase / lead) | + the events that define real outcomes, mapped to your success metric | + +**Where to spend your prep:** quality compounds in **brand identity** — and a **catalog** if you sell products — so strengthen those before you spend; a sparse feed or a missing brand voice is the thing to **enrich** first. **Content standards** and **conversion events** are controls you turn up when you want tighter brand suitability or outcome optimization — useful, not required. And set **a goal** — what you optimize toward (a target CPA, ROAS, cost-per-engagement, or reach for awareness) — so the platform knows what success means. + +## What you'll demonstrate + +Sage verifies three demonstrations through conversation — the same for every learner: + +1. **Identify the inputs you own as control levers** — brand identity always, a catalog and conversion events for product campaigns — and explain that input quality drives ad quality. `l2_ex1_sc_data_ownership` +2. **Explain generation-time brand safety as control** — control over how the AI represents your brand, distinct from a blocklist and from post-hoc adjacency verification. `l2_ex1_sc_generation_time_brand_safety` +3. **State how your measurement stack carries over** — you keep your IAS / DV / Nielsen contracts and the same MMM / attribution frameworks — and name what adapts (conversion-event optimization; calibration-based suitability on AI-generated surfaces). `l2_ex1_sc_measurement_persists` + +## Assessment rubric + +| Dimension | Weight | What Sage evaluates | +|-----------|--------|---------------------| +| Data ownership clarity | 35% | Identifies the inputs the org owns as control levers | +| Governance model | 30% | Understands generation-time brand safety as control | +| Measurement continuity | 25% | Knows measurement contracts persist and what adapts | +| Org application | 10% | Connects the control surface to their own organization | + +Passing threshold: 70%. Scores are internal — you experience the module as a conversation that continues until you have demonstrated mastery. + +<Card title="Start L2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module L2." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading.mdx b/dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading.mdx new file mode 100644 index 0000000000..5f0a966b2a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading.mdx @@ -0,0 +1,129 @@ +--- +title: "L3: Deciding and leading" +sidebarTitle: "L3: Deciding and leading" +description: "AdCP Decision-Makers module L3: brief your agency or team, decide pilot-vs-standardize, and produce a decision artifact — a business case, agency brief, or phased adoption plan. The capstone is a decision, not a build." +"og:title": "AdCP — L3: Deciding and leading" +--- + +# L3: Deciding and leading + +**~15 min** | Prerequisite: L2 | Free + +L1 and L2 gave you the model and the control surface. L3 is where you make the call and lead your organization through it. The capstone of this track is a **decision artifact** — not a build, not a spec, but the thing your role actually produces: a business case, an agency brief, or a phased adoption plan. + +Two judgments matter most: + +- **Brief the people who execute.** Your job is the brief, not the build. The brand provides catalogs, `brand.json`, content standards, and goals; the agency or in-house team runs campaigns across AI surfaces and reports delivery. Frame it as additive to your existing agency relationships and programmatic stack — a buyer agent sits alongside the DSP. +- **Pilot or standardize.** When a surface is experimental, pilot one surface with one partner to learn cheaply and reversibly. Once value is proven, standardize on the protocol so one integration reaches many surfaces instead of negotiating direct deals platform by platform. Reason from reversibility and risk, not hype. + +## Reading list + +<CardGroup cols={2}> + <Card title="Getting started by role" icon="user-gear" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai#getting-started-by-role"> + What brands, agencies, and SMBs each do first — and what to brief versus own. + </Card> + <Card title="FAQ: agency or partner?" icon="circle-question" href="/dist/docs/3.2.0-beta.4/faq#buying-ai-media"> + Whether you need a buyer agent or can work through an agency, ad network, or commerce-platform partner. + </Card> + <Card title="Experimental status" icon="flask" href="/dist/docs/3.2.0-beta.4/reference/experimental-status"> + Which surfaces are explicitly experimental and may change — an input to the pilot-vs-standardize call. + </Card> + <Card title="Find a partner" icon="handshake" href="https://agenticadvertising.org/members"> + The member directory for agencies, ad networks, and platforms that handle the protocol plumbing. + </Card> +</CardGroup> + +## Key concepts + +- **Briefing the executors** — what the brand provides (catalogs, `brand.json`, content standards, goals) vs what to expect back (campaigns across AI surfaces, delivery reporting) +- **Additive adoption** — the buyer agent extends your stack and agency relationships; it does not replace them +- **Pilot vs standardize** — pilot to learn when a surface is experimental; standardize on the protocol once value is proven, so one integration reaches many surfaces +- **Economics and the competitive case** — pricing is set per platform (e.g. cost-per-click, per-session), not a single fixed rate; weigh standardize-once-reach-many against per-platform direct deals and the time-to-reach that implies + +## Decision-artifact templates + +Your capstone is one of these — a starting skeleton, not a form to fill blindly. Use the one that fits your role. + +<AccordionGroup> +<Accordion title="Business case (brand leader → CMO)"> + +- **The opportunity** — consumers in our category are already asking AI assistants; today we have no presence and no control over how we're represented +- **What changes** — the platform generates ads from our brand data; we own the data, and our measurement carries over +- **What we own** — catalog, `brand.json`, content standards, conversion events, and the success metric +- **The pilot** — one surface, one agency, one success metric, a budget we can write off as learning +- **The ask** — budget, timeline, and who owns the data pipeline +- **The risk of waiting** — competitors with richer brand data reach AI-surface demand first + +</Accordion> +<Accordion title="Agency brief (agency exec → client / internal)"> + +- **Client and goal** +- **What the client provides** — catalogs, `brand.json`, content standards, goals +- **What we deliver** — campaigns across the chosen AI surfaces, delivery reporting into existing dashboards +- **Where it sits** — alongside the DSP and existing programmatic; additive, not a replacement +- **Pilot scope** — one surface, one success metric +- **P&L note** — managed-service (we run the buyer agent, mark up media + a service fee) vs self-serve (the client runs it, we charge for setup and strategy). One integration reaches many AI surfaces, so the margin comes from collapsing per-platform labor — not from negotiating rate cards platform by platform + +</Accordion> +<Accordion title="Phased adoption plan (SMB founder)"> + +- **Step 1 — pick a partner** — an ad network or a Shopify-type app; [ask Addie](https://agenticadvertising.org/chat) or browse the [member directory](https://agenticadvertising.org/members) +- **Step 2 — connect your feed** — your existing product feed plus brand basics (name, voice, any rules) +- **Step 3 — set budget and goal** — start small, pick one goal (sales? store visits?), confirm your ROAS/CPA tracking +- **Step 4 — review and expand** — keep what works, add surfaces from there + +</Accordion> +</AccordionGroup> + +## Sizing a pilot (without a price list) + +Pricing is set per platform, so there is no single rate to quote. Reason about it instead: + +- **Size a pilot you can write off as learning** — a number you don't have to defend, not a forecast +- **Pick one surface and one success metric** — keep the variables few enough to read the result +- **Discover the actual price per platform** — your buyer agent or partner reads it from the seller's products at buy time +- **Compare cost-per-outcome to a benchmark you already trust** — your current best channel for the same goal + +<Note> +**Worked example — your numbers, not ours.** These are placeholders to show the *shape* of the reasoning; plug in your own. + +- Pilot budget: **$25k** you can write off as learning (not a forecast you must defend) +- One surface, one goal: **qualified leads** +- Your benchmark: your current best channel runs **~$40 CPA** +- The read: if the AI surface lands **at or under ~$40 CPA**, it earns a standardize decision; if it comes in **2–3× higher**, you learned that cheaply and you don't scale +- Note what you *didn't* do: negotiate a rate card. Per-platform pricing (CPC / per-session) is discovered at buy time by your buyer agent or partner — you set the budget and the success metric, not the unit price + +The discipline is comparing cost-per-outcome to a benchmark you already trust — not forecasting a number for a channel you haven't run yet. +</Note> + +On *"is anyone else doing this?"* — characterize the landscape by surface maturity (which surfaces are [experimental](/dist/docs/3.2.0-beta.4/reference/experimental-status) vs live) and how many sellers are reachable today through the [registry](/dist/docs/3.2.0-beta.4/registry), rather than waiting for a competitor headline. One surface being experimental is an input to the decision, not a reason to wait on all of them. + +## What you'll demonstrate + +Sage verifies three demonstrations through conversation — the same for every learner: + +1. **Brief an agency or team** on the division of labor, framed as additive to existing relationships. `l3_ex1_sc_brief_agency` +2. **Decide pilot-vs-standardize** for a given surface and justify it on reversibility and risk. `l3_ex1_sc_pilot_vs_standardize` +3. **Produce a decision artifact** — a business case, agency brief, or phased adoption plan tying together economics, org-readiness, and a concrete next step. `l3_ex1_sc_decision_artifact` + +## Assessment rubric + +| Dimension | Weight | What Sage evaluates | +|-----------|--------|---------------------| +| Leadership brief | 30% | Can brief an agency or team on inputs versus expectations | +| Decision reasoning | 35% | Reasons about pilot-vs-standardize on risk and reversibility | +| Decision artifact | 25% | Produces a coherent, role-appropriate decision artifact | +| Competitive economics | 10% | Reasons about economics and the competitive case | + +Passing threshold: 70%. Scores are internal — you experience the module as a conversation that continues until you have demonstrated mastery. + +## What's next + +Completing L1–L3 earns the **AdCP for Decision-Makers** credential. From here: + +- Hand the [Monetizing AI guide](/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai) and your decision artifact to your team +- If you want the hands-on path, the free [Basics track](/dist/docs/3.2.0-beta.4/learning/overview#basics-free) (A1–A3) teaches the protocol fundamentals, and the [Buyer track](/dist/docs/3.2.0-beta.4/learning/tracks/buyer) (C1–C4) builds a working buyer agent — no programming experience required + +<Card title="Start L3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module L3." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/decision-makers/overview.mdx b/dist/docs/3.2.0-beta.4/learning/decision-makers/overview.mdx new file mode 100644 index 0000000000..bf61feb6dd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/decision-makers/overview.mdx @@ -0,0 +1,102 @@ +--- +title: "Decision-Makers track" +sidebarTitle: Decision-makers +description: "AdCP for Decision-Makers (L1-L3): a free, reasoning-only certification for brand leaders, agency executives, and SMB owners who evaluate, brief, and decide on agentic advertising but do not build agents." +"og:title": "AdCP — Decision-Makers track" +--- + +# AdCP for Decision-Makers (L1–L3) + +<Info> +**Free and open to everyone.** Three short modules, about 45 minutes total. No agent-building, no code, no live agent queries — you earn this credential through strategic reasoning alone. +</Info> + +Every other path in this program gates on hands-on work: the Basics track has you query a live agent, and the role tracks culminate in building one. That is the right bar for practitioners — and the wrong bar for the people who **evaluate, brief, and decide** but delegate the building. + +This track is for them: the brand media leader building a case for the CMO, the agency trading-desk exec deciding whether to adopt a standard, the founder figuring out whether they can reach AI surfaces without hiring an engineer. You will not build anything. You will learn to direct the people who do. + +Completing L1–L3 earns the **AdCP for Decision-Makers** credential. + +## Who this is for + +<CardGroup cols={3}> + <Card title="Brand leaders" icon="building"> + Heads of media and marketing building the business case for agentic advertising and briefing agencies on what to do differently. + </Card> + <Card title="Agency executives" icon="users"> + Trading-desk and programmatic leaders deciding whether to adopt a standard for buying across AI surfaces — and where the competitive edge is. + </Card> + <Card title="SMB owners" icon="store"> + Founders and operators who want to reach AI platforms through a partner, starting from the product data they already have. + </Card> +</CardGroup> + +## How this track is different + +| | Basics & role tracks | Decision-Makers track | +|---|---|---| +| **Assessment** | Query live agents, build a working agent | Strategic reasoning through conversation | +| **Prerequisites** | A1–A3, then a role track | None | +| **Cost** | Basics free; role tracks members-only | Free | +| **You leave with** | A working agent | A decision artifact — business case, agency brief, or adoption plan | + +Assessment follows the same [fairness rules](/dist/docs/3.2.0-beta.4/learning/instructional-design#assessment-fairness) as every other module: each module has required demonstrations, identical for every learner, verified by Sage through conversation and recorded with a stable criterion ID. The difference is *what* you demonstrate — here it is reasoning, never recall and never code. + +<Note> +This credential certifies **strategic fluency**, not hands-on implementation. It is not a substitute for — or an easier route to — the [Basics](/dist/docs/3.2.0-beta.4/learning/overview#basics-free) or [Practitioner](/dist/docs/3.2.0-beta.4/learning/overview) credentials, which verify that you can query and build agents. If your role is to build, start with Basics. +</Note> + +## The three modules + +<CardGroup cols={1}> + <Card title="L1 — Agentic advertising and the reversed data flow" icon="arrow-right-arrow-left" href="/dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising"> + What agentic advertising actually is, why it differs from programmatic, and how to explain it to a CMO. ~15 min. + </Card> + <Card title="L2 — Your data, brand, and governance as the control surface" icon="sliders" href="/dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance"> + The brand-side inputs you control, generation-time brand safety, and why your measurement stack persists. ~15 min. + </Card> + <Card title="L3 — Deciding and leading" icon="chess-king" href="/dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading"> + Brief your team, decide pilot-vs-standardize, and produce a decision artifact. ~15 min. + </Card> +</CardGroup> + +## Reading list + +These are the same narratives the protocol publishes for buy-side leaders. Read them in this order and the three modules will feel like a conversation you have already started. + +<Tip> +New here? The two essential reads are **Monetizing AI surfaces** and **AdCP vs OpenRTB** — the rest are depth you can come back to. You can read everything, and [find a partner](https://agenticadvertising.org/members), without entering the assessment. The credential is optional; the understanding is the point. +</Tip> + +<CardGroup cols={2}> + <Card title="How to explain agentic advertising" icon="comments" href="/dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising"> + A cheat-sheet of the framings that land — by audience and by job — for when you have to make a CMO, board, agency, or publisher get it in one meeting. + </Card> + <Card title="Monetizing AI surfaces" icon="bullhorn" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai"> + The buy-side guide for brands, agencies, and SMBs: what you provide, the shift from campaigns to ingredients, and getting started by role. + </Card> + <Card title="AdCP vs OpenRTB" icon="arrows-left-right" href="/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb"> + How agentic advertising and programmatic are complementary, not competing — your existing stack persists. + </Card> + <Card title="The full picture" icon="map" href="/dist/docs/3.2.0-beta.4/intro"> + A walkthrough of every step a media team runs through AdCP, from finding partners to tracking performance. + </Card> + <Card title="Content standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + How brand-safety rules are enforced at generation time — before content is shown — rather than verified after the fact. + </Card> + <Card title="brand.json" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json"> + The machine-readable brand identity AI platforms read to sound like your brand. + </Card> + <Card title="Catalogs" icon="boxes-stacked" href="/dist/docs/3.2.0-beta.4/creative/catalogs"> + Why your product feed is the main ingredient — and how it becomes the creative input. + </Card> + <Card title="FAQ: buying AI media" icon="circle-question" href="/dist/docs/3.2.0-beta.4/faq#buying-ai-media"> + Plain answers on partners vs in-house, controlling how the AI talks about your brand, pricing, and how your IAS / DV / Nielsen measurement carries over. + </Card> +</CardGroup> + +## Get started + +<Card title="Start with Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I'd like to start the Decision-Makers track." No account required — this track is free. +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/failure-mode-scope.mdx b/dist/docs/3.2.0-beta.4/learning/failure-mode-scope.mdx new file mode 100644 index 0000000000..7bf3c2c2b4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/failure-mode-scope.mdx @@ -0,0 +1,218 @@ +--- +title: "Failure-mode competency scope" +sidebarTitle: "Failure modes" +description: Curriculum scoping document — which failure modes belong in which certification modules, depth target, and assessment approach. Authoring is a follow-up issue per module. +"og:title": "AdCP — Failure-mode competency scope" +--- + +# Failure-mode competency scope + +This document maps each AdCP failure-mode scenario to the certification module(s) where it belongs, specifies the depth target per tier, and defines the assessment approach. It is a scoping artifact — authoring of the actual content in each module is tracked in follow-up issues per module. + +**Depth levels used below:** + +| Level | Meaning | +|---|---| +| Surface / recognize | Knows the failure mode exists; can name it when prompted | +| Diagnose / explain | Can describe the cause, the affected protocol surface, and the correct recovery path | +| Resolve / demonstrate | Can execute recovery hands-on using protocol tools against a sandbox agent | +| Evaluate / create | Can reason about multi-domain conflicts, adjudicate competing rules, and construct novel scenarios | + +--- + +## FM-1 — Idempotency replay / conflict / expired + +**Status:** Partially covered. `#2346` and `#2367` established idempotency in the training agent. This entry consolidates the assessment scope. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Resolve / demonstrate | Spot-the-error: three-call transcript — (1) retry with same key + same payload → `replayed: true`; (2) re-plan with new payload + same key → `IDEMPOTENCY_CONFLICT`; (3) key used after TTL → `IDEMPOTENCY_EXPIRED`. Learner identifies which caller violated the contract and explains correct behavior for all three. | +| A2 | Surface / recognize | Learner explains that `idempotency_key` makes agent retries safe for real money — no deeper troubleshooting required. | +| C4 (Build project) | Resolve / demonstrate | Learner's submitted agent generates idempotency keys correctly and handles retries without re-planning. | + +**Gap to close before authoring:** Confirm S1 lab exercise 7 ("Lifecycle management") stages all three error states in sandbox, not just `NOT_CANCELLABLE`. If not, extend exercise 7 to cover `IDEMPOTENCY_CONFLICT` and `IDEMPOTENCY_EXPIRED`. + +--- + +## FM-2 — Creative compliance failure post-launch + +**Status:** Not yet in any module. Prerequisite reading is present in S2 and S4, but no lab exercise walks the post-launch discovery path. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S2** (Creative) | Diagnose / explain + demonstrate | Scenario: a creative passes `preview_creative` compliance at build time, but `validate_content_delivery` returns a violation after flight start (e.g., served variant omits a regulatory disclosure present in the preview render). Learner uses `get_media_buy_artifacts` to retrieve the audit artifact, explains the discrepancy, and describes the remediation options (pause and swap vs. cancel). | +| S4 (secondary) | Diagnose / explain | Learner explains how `get_media_buy_artifacts` and `validate_content_delivery` connect to the governance audit trail. | +| C2 | Surface / recognize | Learner knows that creative compliance can fail post-launch and that the discovery path is distinct from pre-launch checks. | + +**Gap to close before authoring:** Add a numbered lab exercise to S2 that explicitly stages a post-launch compliance failure using `validate_content_delivery`. The prerequisite reading card is present; the exercise is not. Without a staged scenario, assessment relies entirely on conversation and cannot satisfy IACET Element 7 (demonstrable competency evidence). The authoring issue must specify three things to prevent a reading card from being filed as a lab exercise: (a) the sandbox agent must be configured to return a `validate_content_delivery` violation on a specific creative ID after a simulated flight-start event; (b) the learner must invoke `get_media_buy_artifacts` within the same session and correlate the audit artifact to the violation; (c) this constitutes a required demonstration with a stable criterion ID (e.g., `s2_postlaunch_sc0`) — the recertification machinery only fires if the ID exists. + +--- + +## FM-3 — Payment / settlement reconciliation differences + +**Status:** Not yet in any module. Schema being finalized in `#2391` (billing reconciliation, AdCP 3.1). Scoped now against current delivery and accountability-terms surfaces; depth will expand when `#2391` lands. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Diagnose / explain | Scenario: `get_media_buy_delivery` shows reported impressions 12% below the guaranteed commitment at flight midpoint, and a `billing_measurement` vendor entry that differs from the `measurement_terms` accepted at buy creation. Learner (a) identifies the discrepancy type — delivery shortfall vs. measurement vendor mismatch; (b) names the correct remediation for each — `update_media_buy` to adjust pacing vs. escalating the measurement vendor discrepancy per `measurement_terms` negotiation; (c) identifies which protocol artifact is the settlement record. | + +**Flag for authoring:** Assign a stable criterion ID (e.g., `s1_recon_sc0`) at authoring time. When `#2391` ships a reconciliation schema, S1 credentials issued under the current criteria must be flagged for targeted recertification — the recertification machinery in the instructional design framework only fires if the criterion ID exists. Do not leave this implicit. + +**Depth TBD pending `#2391`:** Once the billing reconciliation schema lands, add a second criterion (`s1_recon_sc1`) covering the new settlement fields. Credentials issued before that addition are candidates for recertification per the protocol-triggered recertification policy. + +--- + +## FM-4 — Governance token mismatch / authorization revoked mid-lifecycle + +**Status:** Partially covered. S4 covers `GOVERNANCE_DENIED` recovery, the 15-step JWS verification, and the `governance_context` correlation model. Mid-lifecycle revocation is distinct from denial at check time and is not yet named as a scenario. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S4** (Governance) | Resolve / demonstrate | Scenario: a `governance_context` token was issued at campaign launch; mid-flight, the governance agent revokes authorization (brand exits a market, rights grant expires). Seller's execution-phase `check_governance` returns a revocation status. Spot-the-error: a seller implementation that silently continues serving after receiving revocation. Learner identifies the failure, explains correct behavior (halt execution, webhook orchestrator, re-run `sync_plans` with updated parameters), and explains which step in the 15-step JWS verification catches key compromise vs. a valid revocation. | +| C2 | Surface / recognize | Learner knows that a governance token can be revoked mid-lifecycle and that the seller's obligation is to halt, not continue. | + +**Gap to close before authoring:** S4's "What you'll demonstrate" section covers the 15-step JWS verification and `governance_context` correlation model but does not name mid-lifecycle revocation as a discrete scenario. Add it as a demonstration item and extend lab exercise 7 ("GOVERNANCE_DENIED recovery") with a revocation-during-execution variant. + +--- + +## FM-5 — Lifecycle state stuck (media buy, creative, account, SI session, catalog) + +**Status:** Not yet in any module as an explicit failure-mode scenario. S1 lab exercise 6 covers forced rejection from `pending_start` but not timeout without response. S5 covers normal SI session management but not stuck or expired sessions. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Resolve / demonstrate | Scenario: a media buy has been in `pending_start` for 36 hours with no seller-initiated transition and no webhook. Learner (a) uses `get_media_buys` to read `valid_actions` and confirm state; (b) identifies that `cancel` is available from `pending_start`; (c) explains why `pause` is not valid from `pending_start`; (d) describes the webhook the seller MUST send at flight start and what happens when it is absent. | +| **S2** (Creative — sync stuck) | Diagnose / explain | Scenario: `sync_creatives` call returns `accepted` but creative approval status never updates and the buy stays in `pending_creatives`. Learner reads `valid_actions` on the buy, identifies the seller-side obligation, and describes the escalation path. | +| **S5** (SI — session stuck) | Diagnose / explain | Scenario: an SI Chat Protocol session has no `session_end` event after the expected TTL. Learner explains session expiry semantics, what the host must do, and what state risk a non-terminated session creates. | +| D1 / D3 (Platform track) | Surface / recognize | Learner knows that async protocol operations can stall and explains the polling-vs-webhook reconciliation pattern. | + +**Gap to close before authoring:** +- S5's current "What you'll demonstrate" covers normal session management only. Add session expiry and stuck-session recovery as explicit demonstration items. +- S1 lab exercise 6 should be extended (or a variant added) for the timeout-without-response case, distinct from the forced rejection already staged. + +--- + +## FM-6 — Webhook delivery failure / retries + +**Status:** Not yet in any module as a failure scenario. D3 prerequisite reading references error handling but no lab exercise or assessment dimension covers webhook failure. + +| Module | Depth | Assessment approach | +|---|---|---| +| **D3** (Platform) | Diagnose / explain + configure | Scenario: a seller's `active` → `paused` transition is lost — the webhook endpoint returned 503 on first attempt and the retry backoff exceeded the buyer's expectation window. Learner (a) describes correct retry semantics (exponential backoff, idempotency of delivery events); (b) identifies what the buyer agent should do when the expected webhook doesn't arrive (poll `get_media_buys`); (c) explains the tradeoff between webhook-driven and poll-driven state reconciliation. | +| S1 (secondary) | Diagnose / explain (consumer perspective) | Learner explains how to detect a missing webhook, when to poll instead, and how this affects campaign state management. | +| B3 (Publisher track) | Surface / recognize | Learner knows that webhooks can fail and that sellers must implement retries. | + +**Gap to close before authoring:** Add a scenario within D3's error-handling discussion (not necessarily a full new exercise) that walks a webhook delivery failure end-to-end. D3 currently lists the error-handling docs as prerequisite reading but has no lab exercise or assessment item that tests operational recovery. + +--- + +## FM-7 — Signed-request validation failure + +**Status:** Not yet in any module as a failure scenario. S1 covers the buyer-identity resolution chain (signature → JWKS → agent entry → brand.json) conceptually, but no module tests a fail-closed implementation. + +| Module | Depth | Assessment approach | +|---|---|---| +| **D2** (Platform) | Resolve / demonstrate (implementation) | Spot-the-error: a seller implementation accepts a request where `iss` matches a known brand but the JWKS fetch fails with a network error, and the implementation falls back to trusting the `iss` claim. Learner (a) identifies the vulnerability — accepting identity claims without key verification; (b) explains correct behavior — fail closed, reject the request, do not fall back; (c) describes the SSRF risk in the JWKS fetch and the mitigation. | +| S1 (secondary) | Diagnose / explain (reasoning) | Learner explains what each link in the identity chain defends against and why a JWKS fetch failure must not trigger a fall-through to bare `iss` trust. | +| B2 (Publisher track) | Surface / recognize | Learner knows that incoming requests must be signature-verified and that validation failures must reject, not accept. | + +**Note on criterion IDs:** Assign separate criterion IDs for D2 (`d2_sig_sc0`) and S1 (`s1_sig_sc0`) at authoring time so that a future change to RFC 9421 request signing triggers recertification in both modules independently. + +**Related (FM-C below):** `adagents.json` / `brand.json` authorization failure at agent discovery is a closely related onboarding failure mode scoped separately. + +--- + +## FM-8 — TMP provider integration failure + +**Status:** Reclassified from "TMP attestation failure." TMP cryptographic attestation is a SHOULD (not a MUST) in AdCP 3.0 and is marked "future enhancement" in the specification — the current conformance model is publisher-attested via `adagents.json` over HTTPS. Teaching cryptographic attestation failure as a certification topic before the mechanism is stable would credential knowledge of a future feature rather than current protocol behavior. The operationally real failure modes today are: (1) `adagents.json` binding failure — provider not listed, `seller_agent` URL mismatch, or bypass-mode misconfiguration; (2) TMP Router provider configuration failure; (3) Identity Match returning no result due to integration misconfiguration, causing the frequency-cap logic to fall back to no-cap behavior. Home is S1, not S3 — TMP is a media buy execution mechanism, not a signals/audiences topic. + +**Deferred:** Cryptographic attestation failure scenarios will be added when TMP moves out of experimental status. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Diagnose / explain | Scenario: a TMP Identity Match request returns no result because the `adagents.json` entry for the match provider does not list the seller's `seller_agent` URL, or the bypass mode is misconfigured. The orchestrator's frequency-cap logic falls back to no-cap behavior, resulting in over-delivery. Learner (a) explains what `adagents.json` binding proves — that responses come from a registered TMP provider without exposing user data; (b) describes correct fallback behavior — conservative: treat user as unknown, apply default frequency cap; (c) explains why Context Match and Identity Match are structurally separated and how this failure affects frequency capping but not creative selection. | +| D3 (secondary) | Diagnose / explain (router config) | Learner identifies a provider-configuration gap in the TMP Router setup: `adagents.json` entry missing or `seller_agent` URL mismatch. Explains the diagnostic steps and the configuration change to recover. | +| S3 (tertiary) | Surface / recognize | Learner knows that TMP integration failure degrades identity matching — not context matching — and that the fallback is conservative frequency behavior. | + +**Gap to close before authoring:** Add a failure variant to S1 lab exercise 9 — same cross-publisher suppression scenario, but Identity Match returns no result due to `adagents.json` misconfiguration. This is an extension of an existing exercise, not a new one. + +--- + +## FM-9 — Cross-protocol policy conflicts + + +**Status:** Not yet in any module. S4 covers composing governance domains (campaign, property, collection, content standards, creative) but does not include a scenario where rules from multiple domains conflict and must be adjudicated. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S4** (Governance) | Evaluate / create | Open-ended exam question (no lab): A campaign plan specifies `policy_categories: ['fair_housing']` with `restricted_attributes: ['zip_code']`. The creative governance feature evaluation (`get_creative_features`) passes a creative referencing a zip-code-adjacent geo signal. The signals activation (`activate_signal`) for a geo/mobility provider includes a trade-area segment derived from zip codes but not labeled with `restricted_attributes`. Which governance domain has precedence, what is the buyer agent's obligation, and what would a correct implementation do? Learner must reason across campaign governance (plan-level constraint), creative governance (feature evaluation), and signals governance (restricted attributes on signal metadata). | +| S1, S2, S5 | Cross-reference | Each module's "What you'll demonstrate" section should cross-reference S4 as the authoritative home for cross-domain policy adjudication. No independent assessment in S1/S2/S5. | + +**Rationale for S4 (not a new cross-domain section):** S4 already covers governance domains composing, including their interaction across campaign, property, collection, content standards, and creative. The cross-protocol scenario is an extension of existing S4 scope, assessable with S4 + S3 prerequisite knowledge. A new module section would require authoring scope that this issue explicitly defers. + +**Flag for `#2391`:** If billing reconciliation introduces a governance dimension to payment authorization (e.g., a plan that constrains spend must validate against billing reconciliation rules), add a second criterion ID in S4 for that interaction when `#2391` closes. + +--- + +## FM-A — Account payment required blocking active buys + +**Status:** Not in the original candidate list. Identified during curriculum review as a real, high-frequency operational failure. The account state machine allows an account to transition to `payment_required`, which blocks new spend but does not terminate in-flight campaigns. Buyer agents that treat all authorization failures as transient will over-retry; agents that treat them as fatal will stop managing campaigns that can still be modified. Neither behavior is correct. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Diagnose / explain | Scenario: a `create_media_buy` returns `ACCOUNT_PAYMENT_REQUIRED`. A second call on the same account to `update_media_buy` (modifying an existing buy) succeeds. Learner (a) explains the distinction between new-spend authorization failure and modification-of-existing-commitment; (b) describes the buyer agent's correct behavior — stop new buys, do not abandon existing ones, surface the payment status to the orchestrator. | + +--- + +## FM-B — report_usage pricing mismatch + +**Status:** Not in the original candidate list. Identified as a billing dispute trigger: the buyer reports a `pricing_option_id` in `report_usage` that does not match the rate negotiated at buy time, and the seller agent rejects it. This is operationally painful for CPA and performance-priced campaigns where the pricing option ID changes between the buy and the reporting call. + +| Module | Depth | Assessment approach | +|---|---|---| +| **S1** (Media buy) | Diagnose / explain | Scenario: a `report_usage` call returns an error because the `pricing_option_id` in the report does not match the `pricing_option_id` accepted at `create_media_buy`. Learner explains where the authoritative pricing option ID is recorded (in the accepted buy response, not the original product listing), why reporting a different ID is a protocol error, and the correct recovery (re-read the buy, extract the accepted pricing option, re-submit the report). | + +**Scope note:** If `#2391` introduces a formal billing reconciliation mechanism, this failure mode may merge with FM-3 into a unified settlement module. Flag for review when `#2391` closes. + +--- + +## FM-C — adagents.json / brand.json authorization failure at discovery + +**Status:** Not in the original candidate list. Identified as the most common onboarding failure for new integrations: a buyer agent discovers a sales agent via `get_adcp_capabilities`, attempts OAuth authentication, and the seller rejects the token because the buyer's `adagents.json` does not declare the correct `authorized_agents[]` relationship — or the `brand.json` entry does not match the agent identity presented in the signed request. + +| Module | Depth | Assessment approach | +|---|---|---| +| **D2** (Platform) | Resolve / demonstrate | Lab scenario: a buyer agent cannot authenticate to a newly integrated seller. Learner reads the seller's error, checks the buyer's `adagents.json` for the `authorized_agents[]` entry, verifies the `brand.json` agent identity, and traces the resolution chain. Correctly identifies which of the three common root causes applies: missing entry, URL mismatch, or expired authorization. | +| S1 (secondary) | Diagnose / explain | Learner explains what `adagents.json` and `brand.json` encode in the discovery and authorization flow, why a mismatch produces a rejection, and how to diagnose it from the buyer side. | +| S4 (secondary) | Diagnose / explain | Learner explains how a `brand.json` authorization failure interacts with the governance token chain — specifically, why a buyer without a valid `authorized_agents[]` entry cannot obtain a governance context token and what the escalation path is. | + +--- + +## Open items tracker + +| Item | Status | Unblocks | +|---|---|---| +| Billing reconciliation schema (`#2391`) | Active / in-flight (3.1 scoping) | FM-3 depth expansion, FM-9 `#2391` flag | +| Idempotency coverage confirmed in training agent (`#2346`, `#2367`) | Shipped | FM-1 authoring (verify lab exercise extension only) | +| Lifecycle state stuck issues (`#1612`–`#1616`) | Open | FM-5 S1/S5 scenario detail | + +--- + +## Module impact summary + +The table below shows which specialist and practitioner modules need authoring follow-ups. Each ✦ is a new lab exercise or demonstration item; each ✧ is a new exam scenario or cross-reference. + +| Module | New lab exercises | New exam scenarios | Cross-refs to add | +|---|---|---|---| +| **S1** | FM-1 (idempotency states), FM-5 (stuck `pending_start`), FM-8 (TMP provider variant) | FM-3 (delivery reconciliation), FM-6 (webhook consumer), FM-A (payment_required), FM-B (pricing mismatch) | FM-9 → S4, FM-C (adagents.json) | +| **S2** | FM-2 (post-launch compliance — required for IACET), FM-5 (creative sync stuck) | — | FM-2 → S1 (state machine cross-ref), FM-9 → S4 | +| **S3** | — | — | FM-8 (TMP provider surface) | +| **S4** | FM-4 (revocation-during-execution variant) | FM-9 (cross-protocol adjudication) | FM-C (adagents.json / governance chain) | +| **S5** | FM-5 (SI session stuck/expired) | — | FM-9 → S4 | +| **D2** | FM-C (adagents.json/brand.json lab) | FM-7 (signed-request fail-closed) | — | +| **D3** | FM-6 (webhook delivery failure), FM-8 (TMP Router config) | — | — | +| **B2** | — | — | FM-7 (surface/recognize) | +| **B3** | — | — | FM-6 (surface/recognize) | +| **C2** | — | — | FM-2, FM-4 (surface/recognize) | +| **C4** | FM-1 (idempotency resolve/demonstrate) | — | — | +| **A2** | — | — | FM-1 (surface/recognize) | diff --git a/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising.mdx b/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising.mdx new file mode 100644 index 0000000000..af6f3e8efa --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising.mdx @@ -0,0 +1,98 @@ +--- +title: "A1: Why AdCP" +sidebarTitle: "A1: Why AdCP" +description: "Module A1: What is agentic advertising and why does AdCP exist? Free 15-minute interactive module covering platform fragmentation and the case for a shared protocol." +"og:title": "AdCP — A1: Why AdCP" +--- + +# A1: Why AdCP + +<Info> +**Free module** — No account required. ~15 minutes with Addie. +</Info> + +## Learning objectives + +By the end of this module, you should be able to: + +- Explain why agentic advertising is a paradigm shift from programmatic +- Describe what AI agents are and how they differ from traditional APIs +- Articulate the fragmentation problem AdCP solves +- Recognize AdCP's breadth: 20 channels from display to local radio to cinema +- Explain how campaign governance provides always-on compliance for autonomous agent transactions +- Explain why security changes when agents transact autonomously — the manual sign-off that used to backstop every buy before money moved is gone + +## Reading list + +Review these pages before starting the module with Addie. They provide the conceptual foundation for everything in the certification program. + +<CardGroup cols={2}> + <Card title="Introduction to AdCP" icon="book-open" href="/dist/docs/3.2.0-beta.4/intro"> + What AdCP is, how it works, and the protocol domains. Start here if you're completely new. + </Card> + <Card title="Why AdCP" icon="lightbulb" href="/dist/docs/3.2.0-beta.4/building/concepts"> + The strategic vision: allocation vs day trading, the fragmentation problem, and why agents need a shared protocol. + </Card> + <Card title="Protocol comparison" icon="code-compare" href="/dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison"> + How AdCP compares to OpenRTB, platform APIs, and direct IO. Understand where agentic advertising fits in the landscape. + </Card> + <Card title="Building with AdCP" icon="rocket" href="/dist/docs/3.2.0-beta.4/building"> + See how to implement AdCP. Optional but helpful for building intuition. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + How campaign governance ties campaigns to media plans and validates every transaction autonomously. + </Card> + <Card title="Embedded Human Judgment" icon="user-check" href="/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment"> + The five principles that define how humans stay in control when agents execute autonomously. + </Card> + <Card title="Security Model" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/building/concepts/security-model"> + What changes for security when an agent spends money without a human in the loop — and the trust primitives that make it safe. + </Card> +</CardGroup> + +## Key terms + +| Term | Definition | +|------|-----------| +| **Agentic advertising** | Advertising executed by AI agents that can reason, negotiate, and adapt — as opposed to rigid API integrations | +| **AI agent** | Software that perceives its environment, makes decisions, and takes actions autonomously | +| **AdCP** | Ad Context Protocol — an open standard that gives AI agents a shared language for advertising | +| **MCP** | Model Context Protocol — a standard for connecting AI models to external tools and data sources. AdCP uses MCP as its transport layer | +| **Task** | A discrete advertising operation (e.g., `get_products`, `create_media_buy`) defined by AdCP | +| **Campaign governance** | Always-on compliance that ties campaigns to media plans and validates every transaction through three independent parties | +| **Embedded Human Judgment** | The principle that humans define intent, set boundaries, and retain override authority — agents execute within those boundaries | + +For the full glossary, see the [AdCP glossary](/dist/docs/3.2.0-beta.4/reference/glossary). + +## What you'll do with Addie + +This module is grounded with a live agent query — you'll see a real `get_products` response from `@cptestagent`, not a slide deck. Addie will guide you through: + +- What makes an AI agent different from a traditional API? +- Why does a shared protocol matter for AI-powered advertising? +- What problems arise if every ad tech company builds their own agent protocol? +- How does the "allocation vs day trading" framing change how you think about media buying? +- How do you trust AI agents to spend your money? (Always-on compliance: every transaction validated against the plan, grounded in [Embedded Human Judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) principles) +- What security changes when there is no human approval gate before spend — and how AdCP answers it with three primitives: verifiable requests, retry-safe transactions, and signed approvals +- 20 channels: display, social, search, CTV, linear TV, radio, podcast, DOOH, OOH, print, cinema, gaming, retail media, influencer, affiliate, product placement, AI media — and why linear TV and radio measure differently: broadcast impression data matures over days after air (C3/C7 windows, not real-time), which you'll work with concretely in S1 + +## Assessment + +Addie evaluates your understanding across four dimensions: + +| Dimension | Weight | What Addie looks for | +|-----------|--------|---------------------| +| Conceptual understanding | 25% | Can you articulate the paradigm shift from programmatic to agentic? | +| Practical knowledge | 35% | Can you query an agent and interpret the response? | +| Channel breadth | 20% | Do you understand AdCP covers 20 channels, not just digital? | +| Protocol fluency | 20% | Do you use AdCP terminology correctly? | + +Passing threshold: 70%. This is a conversation, not a test — Addie will help you get there. + +## Start this module + +<Card title="Start A1 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I'd like to start certification module A1." Addie will take it from there. +</Card> + +**Next:** [A2: Your first media buy](/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture) diff --git a/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture.mdx b/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture.mdx new file mode 100644 index 0000000000..556318c950 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture.mdx @@ -0,0 +1,101 @@ +--- +title: "A2: Your first media buy" +sidebarTitle: "A2: Your first media buy" +description: "Module A2: Execute your first AdCP media buy. Free 20-minute hands-on module walking through discovery, purchase, creative sync, and delivery with a live sandbox agent." +"og:title": "AdCP — A2: Your first media buy" +--- + +# A2: Your first media buy + +<Info> +**Free module** — No account required. ~20 minutes with Addie. Prerequisite: [A1](/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising). +</Info> + +## Learning objectives + +- Execute the full media buy lifecycle: discovery, purchase, creative sync, delivery +- Identify the agent roles involved: buyer agent, sales agent, creative agent, signals agent +- Read and understand real protocol messages at each stage +- Recognize that 3.1 products may describe creative requirements with canonical `format_options[]` that narrow shared `format_kind` contracts +- Observe a live agent-to-agent transaction +- Recognize the two things that make agent-to-agent requests safe: the request is signed (so the seller can verify who sent it) and it carries an `idempotency_key` (so a retry doesn't double-book) + +## Reading list + +<CardGroup cols={2}> + <Card title="Protocol architecture" icon="sitemap" href="/dist/docs/3.2.0-beta.4/protocol/architecture"> + The complete architecture: domain map, identity layer, transaction domains, governance, and ecosystem layers. + </Card> + <Card title="MCP integration guide" icon="plug" href="/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide"> + How MCP works in practice: tool calls, response format, context management, async operations. + </Card> + <Card title="Capability discovery" icon="magnifying-glass" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + How agents advertise their capabilities so other agents can discover what they offer. + </Card> + <Card title="AdAgents.json" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/property/adagents"> + Publisher authorization for which agents can sell or enrich inventory. + </Card> + <Card title="Seller setup" icon="store" href="/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup"> + How sellers use brand.json with adagents.json for identity and supply path verification. + </Card> + <Card title="A2A guide" icon="arrows-left-right" href="/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide"> + The Agent-to-Agent protocol — how specialized agents collaborate on complex campaigns. + </Card> + <Card title="Task lifecycle" icon="circle-nodes" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle"> + How tasks move through states: from request to completion, including async operations. + </Card> +</CardGroup> + +## Key terms + +| Term | Definition | +|------|-----------| +| **Sales agent** | Represents a publisher and exposes inventory via `get_products`. May also implement the Creative Protocol to handle creatives from the same endpoint. | +| **Buyer agent** | Represents a brand or agency and purchases media via `create_media_buy` | +| **Brand agent** | Manages brand identity and guidelines via `brand.json` | +| **Creative agent** | Any agent implementing the Creative Protocol — produces and adapts advertising assets via `build_creative`. This can be a standalone service or a sales agent that declares `"creative"` in `supported_protocols`. | +| **Signals agent** | Provides measurement and audience data via `get_signals` | +| **brand.json** | Public identity record for an advertiser, publisher, seller, or platform: name, brand assets, agents, and signing-key discovery | +| **adagents.json** | Publisher-hosted file declaring properties and the agents authorized to sell or enrich them | +| **Tool discovery** | The process of an agent reading another agent's capabilities to know what tasks it supports | +| **Request signing** | A cryptographic signature on the request that lets the seller verify who sent it and that it wasn't tampered with in transit | +| **Idempotency key** | A unique tag on each mutating request that lets a buyer safely retry without creating a duplicate | +| **Domain** | A broad protocol area an agent supports — `media_buy`, `creative`, `signals`, `governance`, `brand`, `sponsored_intelligence`. Declared via `supported_protocols`. | +| **Specialism** | A narrow capability claim within a domain — e.g. `sales-guaranteed`, `creative-generative`, `signal-marketplace`. Declared via `specialisms`. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). | +| **Canonical formats** | AdCP 3.1's v2 path for creative requirements: products can publish `format_options[]` that narrow shared creative archetypes such as `image` or `video_hosted`. Validate against the canonical first, then the product's narrowing. | +| **Storyboard** | A scripted compliance scenario shipped by the protocol at `/compliance/{version}/` — agents don't write them, they're run against agents. An agent demonstrates its domain and specialism claims by passing the matching storyboards. | + +## Protocol versioning + +Every request carries `adcp_major_version`; sellers advertise supported versions on `get_adcp_capabilities`. A3 and B1 go deeper on version negotiation and the object-presence pattern sellers use to declare capabilities. + +## What you'll do with Addie + +Tell Addie what you want: audience, goals, budget. Then walk through each step as it happens: + +1. **Discovery** — `get_products` against `@cptestagent`, examine real response structure +2. **Purchase** — `create_media_buy` with targeting and budget. Addie points out two things on this request: it carries a signature (so the seller can verify the buyer) and an `idempotency_key` (so a retry after a network error never creates two buys). Note the `confirmed_at` timestamp in the response — this is the seller's order confirmation. +3. **Creative** — `sync_creatives` to deliver assets to the publisher +4. **Status check** — `get_media_buys` to see lifecycle state, creative approvals, and `valid_actions` +5. **Delivery** — `get_media_buy_delivery` to see results + +You'll see the actual protocol messages at each stage. By the end, you've bought media through an agent. + +## Assessment + +| Dimension | Weight | What Addie looks for | +|-----------|--------|---------------------| +| Conceptual understanding | 25% | Can you describe the transaction flow and which agent handles what? | +| Practical knowledge | 35% | Can you direct a media buy and interpret the delivery report? | +| Problem solving | 15% | Can you reason about what happens when things go wrong? | +| Protocol fluency | 25% | Do you use correct task names and agent roles? | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start A2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I'd like to start certification module A2." +</Card> + +**Next:** [A3: The AdCP landscape](/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance) diff --git a/dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent.mdx b/dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent.mdx new file mode 100644 index 0000000000..b492feb7ad --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent.mdx @@ -0,0 +1,270 @@ +--- +title: "A2B: Testing your first agent call" +sidebarTitle: "A2B: Testing your first agent call" +description: "Module A2B: Hands-on lab — call get_products, place a media buy, attach creatives, and handle real response shapes with copy-paste curl examples." +"og:title": "AdCP — A2B: Testing your first agent call" +--- + +# A2B: Testing your first agent call + +<Info> +**Free module** — No account required. ~20 minutes with Addie. Prerequisite: [A2](/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture). +</Info> + +## Learning objectives + +- Call the stateless MCP transport exposed by the AdCP test agent +- Call `get_products` with a natural-language brief and read the product response +- Place a media buy with `create_media_buy` and handle all three response shapes +- Attach creatives with `sync_creatives` and check buy status via `get_media_buys` +- Diagnose and resolve auth failures, schema mismatches, and async polling delays + +## Reading list + +<CardGroup cols={2}> + <Card title="AdCP quickstart" icon="rocket" href="/dist/docs/3.2.0-beta.4/quickstart"> + End-to-end buyer workflow from setup to delivery. + </Card> + <Card title="Media buy lifecycle" icon="circle-nodes" href="/dist/docs/3.2.0-beta.4/media-buy/media-buys"> + Media buy status states — pending_creatives, pending_start, active, paused, completed — and what each means for the buyer. + </Card> + <Card title="Create media buy task" icon="cart-shopping" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy"> + Full field reference, required fields, and all three response shapes. + </Card> + <Card title="Sync creatives task" icon="paintbrush" href="/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives"> + How to attach assets to a buy, dry-run validation, and assignment patterns. + </Card> + <Card title="Error handling" icon="triangle-exclamation" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling"> + Error codes, retry behavior, and how to read the `errors[]` array. + </Card> + <Card title="MCP integration guide" icon="plug" href="/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide"> + MCP transport and tool call formats. + </Card> +</CardGroup> + +## Test agent + +All curl examples below target the AdCP training agent: + +``` +https://test-agent.adcontextprotocol.org/sales/mcp +``` + +You'll need an API key from your [AgenticAdvertising.org dashboard](https://agenticadvertising.org/dashboard). Replace `<your-api-key>` in every example. + +## What you'll do with Addie + +Walk through four calls in sequence. Addie demonstrates each call, shows the raw response, then guides you through reproducing it yourself. + +1. **Discover** — `get_products` with a brief; read proposals +2. **Buy** — `create_media_buy`; handle all three response shapes +3. **Attach creatives** — `sync_creatives`; validate with dry-run first +4. **Poll status** — `get_media_buys` until `valid_actions` shows the buy is serving + +The public test agent uses stateless HTTP transport: every request is a direct `tools/call`, with no `initialize` exchange or `mcp-session-id` header. Durable sandbox state is keyed by the authenticated caller and the `account` reference in each task, not by an MCP transport session. Use the same `account` object throughout the workflow. + +## Step-by-step curl reference + +Use these as a quick reference while working through the module with Addie, or to reproduce any step independently. + +### Step 1 — Discover products + +Call `get_products` with `buying_mode: "brief"` and a plain-English description of your campaign goals. The agent returns curated `products[]` and ready-to-execute `proposals[]`. + +<Note> +This public training-agent lab continues to use the pre-3.2 brief flow. The 3.2 +structured discovery exercise will be enabled only after the beta SDKs and +training runtime implement targeting-aware discovery; follow +[issue #6199](https://github.com/adcontextprotocol/adcp/issues/6199). Until +then, do not use this sandbox to test `get_products.targeting_overlay` or +`required_overlay_support`, because the live runtime does not enforce them. +</Note> + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/sales/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "get_products", + "arguments": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655442055", + "adcp_major_version": 3, + "account": { + "brand": { "domain": "nova-motors.com" }, + "operator": "pinnacle-media.com" + }, + "buying_mode": "brief", + "brief": "CTV campaign, adults 25-54 in the US, $50K budget, brand safety required" + } + }, + "id": 1 + }' +``` + +The result is in `content[0].text` as JSON. Look for `proposals[0].proposal_id` — you'll pass it to `create_media_buy`. + +### Step 2 — Place a media buy + +Pass the `proposal_id` from Step 1 and a `total_budget`. The `idempotency_key` lets you safely retry if the network drops — use a fresh UUID v4 per request. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/sales/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "create_media_buy", + "arguments": { + "adcp_major_version": 3, + "idempotency_key": "mb-lab-20260428-001", + "account": { + "brand": { "domain": "nova-motors.com" }, + "operator": "pinnacle-media.com" + }, + "proposal_id": "<proposal-id-from-step-2>", + "total_budget": { "amount": 50000, "currency": "USD" } + } + }, + "id": 2 + }' +``` + +**Three response shapes — you'll see one of these:** + +| Shape | What it means | Next step | +|---|---|---| +| `media_buy_id` + `media_buy_status: "pending_creatives"` | Buy confirmed; attach creatives | Go to Step 3 | +| `media_buy_id` + `media_buy_status: "pending_start"`, `"active"`, or `"paused"` | Buy confirmed and ready | Creatives already attached or not required | +| `status: "submitted"` + `task_id` | Buy queued for async processing | Poll the AdCP task with `task_id` (see [Async polling](#async-polling) below) | +| `errors[]` present, no `media_buy_id` | Rejected — read `errors[0].code` | Fix the request and retry with a new `idempotency_key` | + +### Step 3 — Attach creatives + +A buy in `pending_creatives` state can't serve until you call `sync_creatives`. Use `dry_run: true` first to validate your creative shapes without writing anything. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/sales/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "sync_creatives", + "arguments": { + "adcp_major_version": 3, + "idempotency_key": "sc-lab-20260428-001", + "account": { + "brand": { "domain": "nova-motors.com" }, + "operator": "pinnacle-media.com" + }, + "creatives": [ + { + "creative_id": "nova-ctv-30s-v1", + "format_kind": "video_hosted", + "assets": { + "video_main": { + "asset_type": "video", + "url": "https://cdn.example.com/nova-ctv-30s.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + } + } + } + ], + "dry_run": true + } + }, + "id": 3 + }' +``` + +Remove `"dry_run": true` to apply. The response includes `creatives[].status` — `approved`, `pending_review`, or `rejected`. + +### Step 4 — Check status + +Poll `get_media_buys` with the `media_buy_id` from Step 2 to see lifecycle state and `valid_actions`. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/sales/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "get_media_buys", + "arguments": { + "adcp_major_version": 3, + "account": { + "brand": { "domain": "nova-motors.com" }, + "operator": "pinnacle-media.com" + }, + "media_buy_ids": ["<media-buy-id-from-step-2>"] + } + }, + "id": 4 + }' +``` + +The `media_buys[0].status` field is one of `pending_creatives`, `pending_start`, `active`, `paused`, `completed`, `rejected`, or `canceled`. The `valid_actions` array tells you what the buyer can do next. + +## Async polling + +When `create_media_buy` returns `status: "submitted"` and a `task_id`, the buy is queued. Poll until the task completes: + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/sales/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "get_task_status", + "arguments": { "task_id": "<task-id-from-create>", "include_result": true } + }, + "id": 5 + }' +``` + +<Note> +`get_task_status` is an AdCP application-layer polling alias exposed by the training agent's `/sales/mcp` tenant. The legacy root `/mcp` alias does not expose it. Other sellers may instead expose the AdCP `tasks/get` surface; inspect their advertised tools rather than assuming the alias exists. Do not confuse either AdCP polling surface with transport-native MCP/A2A `tasks/*` methods, which use their own task wire shapes. +</Note> + +Poll every 2–5 seconds. When the AdCP task `status` is `completed`, the `result` field contains the full `create_media_buy` response with `media_buy_id`. See the [Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) doc for all AdCP task status values. + +## Common errors + +| Symptom | Likely cause | Fix | +|---|---|---| +| HTTP 401 / `error: "invalid_token"` | Expired or wrong API key | Reissue the token from your dashboard; confirm the `Bearer` prefix | +| HTTP 401 / `error: "invalid_request"` | `Authorization` header missing | Add `-H "Authorization: Bearer <token>"` to every call | +| `errors[]` in body, no `media_buy_id` | Schema validation failure | Read `errors[0].field` and `errors[0].code`; fix the field and retry with a **new** `idempotency_key` | +| `status: "submitted"` stays indefinitely | Async task stalled | Check AdCP task status via `get_task_status` or legacy `tasks/get`; if `failed`, read the task error for the rejection reason | +| A later call cannot find the buy | The `account` reference differs from the create call | Reuse the exact same brand/operator account reference on later calls | + +## Assessment + +| Dimension | Weight | What Addie looks for | +|-----------|--------|---------------------| +| Conceptual understanding | 10% | Can you explain why the stateless transport relies on caller/account-scoped state rather than an MCP session ID? | +| Practical knowledge | 40% | Can you trace through all four calls in order with correct task names and request shapes? | +| Problem solving | 30% | Can you reason through what happens when each step fails or returns an unexpected response? | +| Error recovery | 20% | Can you identify the correct fix for auth failures, schema errors, and async polling delays? | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start A2B with Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I'd like to start certification module A2B." +</Card> + +**Next:** [A3: The AdCP landscape](/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance) diff --git a/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance.mdx b/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance.mdx new file mode 100644 index 0000000000..0918473c03 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance.mdx @@ -0,0 +1,113 @@ +--- +title: "A3: The AdCP landscape" +sidebarTitle: "A3: The AdCP landscape" +description: "Module A3: Survey of every AdCP domain — media buy, creative, catalogs, accounts, signals, governance, sponsored intelligence, and the Trusted Match Protocol. Free 15-minute interactive overview." +"og:title": "AdCP — A3: The AdCP landscape" +--- + +# A3: The AdCP landscape + +<Info> +**Free module** — No account required. ~15 minutes with Addie. Prerequisite: [A2](/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture). +</Info> + +This is the survey course. Touch everything, go deep on nothing. You'll get a map of the entire AdCP ecosystem — every protocol domain, every discovery mechanism, every governance layer. Designed to pique your curiosity and show you where to go deeper. + +Completing A1 + A2 + A3 earns the **AdCP basics** credential. + +## Learning objectives + +- Describe what `brand.json` is and why advertisers, publishers, sellers, and platforms use it +- Explain `adagents.json` and how publishers authorize agents for inventory +- Name all eight AdCP protocol domains and what each covers +- Identify which areas you want to explore deeper in a role track +- Recognize the three trust primitives that make the ecosystem safe: authenticated identity, signed governance tokens, and agent/account isolation + +## Reading list + +<CardGroup cols={2}> + <Card title="Brand protocol" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/brand-protocol/index"> + Brand identity claims, brand.json discovery, and brand hierarchy. Four variants: house portfolio, brand agent, redirects, minimal. + </Card> + <Card title="Seller setup" icon="store" href="/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup"> + How seller identity, property relationships, and signing keys fit with publisher authorization. + </Card> + <Card title="Governance overview" icon="building-columns" href="/dist/docs/3.2.0-beta.4/governance/overview"> + The governance protocol: property governance, brand governance, content standards, creative governance, and campaign governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + Always-on compliance: ties campaigns to media plans, validates every transaction through three independent parties. + </Card> + <Card title="Policy registry" icon="book" href="/dist/docs/3.2.0-beta.4/governance/policy-registry"> + Community-maintained library of advertising regulations and standards that brands reference by ID. + </Card> + <Card title="Embedded Human Judgment" icon="user-check" href="/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment"> + The five principles behind AdCP governance — how humans stay in control when agents act autonomously. + </Card> + <Card title="Creative protocol" icon="palette" href="/dist/docs/3.2.0-beta.4/creative/index"> + The creative protocol: assets, formats, manifests, creative agents, and 20 channels of adaptation. + </Card> + <Card title="Signals overview" icon="signal" href="/dist/docs/3.2.0-beta.4/signals/overview"> + The signals protocol: audience segments, contextual signals, measurement data, and optimization. + </Card> + <Card title="Sponsored Intelligence" icon="message-bot" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview"> + Conversational brand experiences in AI assistants — a genuinely new advertising model. + </Card> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.2.0-beta.4/trusted-match"> + Real-time execution: context match and identity match activate packages at serve time across all surfaces. + </Card> + <Card title="Capability discovery" icon="magnifying-glass" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + How agents advertise what they support so other agents can discover them. + </Card> + <Card title="Accounts protocol" icon="building" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + The commercial layer: advertisers, operators, authentication, billing, and account lifecycle. + </Card> + <Card title="Security Model" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/building/concepts/security-model"> + How AdCP defends against unauthorized spend, cross-tenant leakage, replay attacks, and SSRF across the ecosystem. + </Card> +</CardGroup> + +## What you'll cover with Addie + +Addie walks through each domain with a quick live example — just enough to understand what each area does: + +**Discovery and community:** +- `brand.json`: a machine-readable identity record at `/.well-known/brand.json` for advertisers, publishers, sellers, and platforms +- `adagents.json`: how publishers declare properties and authorize sales or governance agents for inventory +- Community registry: how agents and brands find each other +- AgenticAdvertising.org: working groups, industry councils, how the spec evolves + +**Trust primitives (how the ecosystem stays safe):** +- **Authenticated identity** — cryptographic proof of which agent is calling, not a header claim the seller has to take on faith +- **Signed governance context** — approval tokens from the buyer's governance agent that bind a plan to a specific seller and phase, verifiable by auditors years later +- **Agent and account isolation** — every piece of state is scoped to the calling agent and the account it is acting on; cross-tenant reads are rejected with a generic "not found" + +**Protocol domains:** +- **Accounts** — commercial identity, operator-billed vs agent-billed, account lifecycle, `get_adcp_capabilities` +- **Media buy** — proposals, forecasting, refinement, packages, keyword targeting, geo-proximity +- **Creative** — formats vs manifests, 20 channels, AI-powered generation with `build_creative` +- **Signals** — audience data, privacy-compliant signals, conversion tracking, attribution +- **Governance** — content standards, property lists, the Oracle model for AI-driven brand safety, campaign governance (multi-party validation, budget authority, policy registry) +- **Sponsored Intelligence** — conversational brand experiences, cost-per-conversation instead of CPM ([experimental](/dist/docs/3.2.0-beta.4/reference/experimental-status) in 3.0) +- **Trusted Match Protocol** — impression-time execution: context match (content fit) and identity match (user eligibility), cross-publisher frequency capping, works across web, mobile, CTV, AI assistants, and retail media ([experimental](/dist/docs/3.2.0-beta.4/reference/experimental-status) in 3.0, feature id `trusted_match.core`) +- **Brand Protocol** — `brand.json` resolution, brand identity claims, brand hierarchy +- **Registry** — entity resolution, agent discovery, community directory + +## Assessment + +| Dimension | Weight | What Addie looks for | +|-----------|--------|---------------------| +| Breadth | 35% | Can you describe what each protocol domain does? | +| Discovery mechanisms | 25% | Do you understand brand.json, adagents.json, and capability discovery? | +| Key concepts | 25% | Can you explain format vs manifest, billing models, the Oracle model, and context match vs identity match (TMP's two-operation model)? | +| Synthesis | 15% | Can you connect concepts across domains without prompting? | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start A3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I'd like to start certification module A3." +</Card> + +**Next:** Choose your role track — [Publisher](/dist/docs/3.2.0-beta.4/learning/tracks/publisher), [Buyer](/dist/docs/3.2.0-beta.4/learning/tracks/buyer), or [Platform](/dist/docs/3.2.0-beta.4/learning/tracks/platform) diff --git a/dist/docs/3.2.0-beta.4/learning/instructional-design.mdx b/dist/docs/3.2.0-beta.4/learning/instructional-design.mdx new file mode 100644 index 0000000000..a4ba8fd8b9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/instructional-design.mdx @@ -0,0 +1,315 @@ +--- +title: Instructional design framework +sidebarTitle: How we teach +description: "AdCP certification instructional design: teaching methodology, adaptive assessment, AI-guided learning, and IACET-aligned quality processes." +"og:title": "AdCP — Instructional design framework" +--- + +# Instructional design framework + +This document describes how the AdCP certification program is designed, delivered, and maintained. It serves as the authoritative reference for teaching methodology and program quality. + +<Note> +This framework is IACET-aligned and CPD-aligned. It is not an assertion of current IACET Accredited Provider status or IACET CEU issuance. +</Note> + +### Accreditation element reference + +| IACET Element | Section | +|--------------|---------| +| 2 — Learning environment | [Simulated workplace environment](#simulated-workplace-environment), [Learner support](#learner-support) | +| 3 — Instructional personnel | [Instructional personnel](#instructional-personnel) | +| 5 — Learning outcomes | [Learning outcomes and curriculum structure](#learning-outcomes-and-curriculum-structure) | +| 6 — Content and instruction | [Teaching philosophy](#teaching-philosophy), [Module design patterns](#module-design-patterns) | +| 7 — Assessment | [Competency-based assessment](#competency-based-assessment) | +| 9 — Evaluation | [Curriculum maintenance](#curriculum-maintenance), [Quality assurance](#quality-assurance) | + +## Teaching philosophy + +The certification program is built on five principles: + +**Socratic method.** Sage teaches through conversation, not lecture. Most responses include a question or task, though Sage also affirms and builds on strong answers — the rhythm alternates between teaching and questioning rather than interrogating. Learners build understanding by reasoning through problems, not by receiving answers. + +**Mastery-based progression.** There is no failing — only "not yet." Learners keep working with Sage until they demonstrate mastery of every learning objective. Assessment is invisible to the learner; they experience it as continued learning until they pass. + +**Personalization.** Sage adapts to each learner's background, role, and communication style. If a learner sells running shoes, examples are about running shoes. If they're technical, Sage is technical. Context carries across the entire session. + +**Active learning.** Responses are kept under 150 words. One idea per turn. Brevity forces participation. Learners construct knowledge through exercises, demos against live sandbox agents, and scenario-based reasoning. + +**Concrete language.** Abstract jargon is always grounded in specific behavior. Not "agents reason about impressions" but "agents evaluate whether a placement fits the campaign goals and decide how much to bid." + +## Learning outcomes and curriculum structure + +### Three-tier credential model + +The program awards three credentials with increasing depth: + +| Tier | Credential | Modules | Requirements | +|------|-----------|---------|--------------| +| 1 | AdCP basics | A1, A2, A3 | Free — open to everyone | +| 2 | AdCP practitioner | Basics + one role track (B, C, or D) | Includes a hands-on build project | +| 3 | AdCP specialist | Practitioner + specialist capstone (S1-S5) | Lab exercises + adaptive exam | + +### Bloom's taxonomy alignment + +Learning objectives scale with tier: + +- **Basics (A track):** Understand and apply — learners explain what agentic advertising is, how AdCP works, and the ecosystem structure +- **Practitioner tracks (B, C, D):** Apply and analyze — learners configure agents, interpret responses, and reason about trade-offs +- **Build projects (B4, C4, D4):** Create and evaluate — learners build working AdCP agents and defend design decisions +- **Specialist capstones (S1-S5):** Analyze, evaluate, and create — learners demonstrate protocol mastery through hands-on labs and adaptive assessment + +### Prerequisite enforcement + +Modules have explicit prerequisites. The system prevents starting advanced modules without completing foundations. Build projects require all track modules. Specialist capstones require the Practitioner credential. + +## Instructional personnel + +### AI teaching assistant + +Sage is powered by Claude (Anthropic). Teaching behavior is governed by operational rules injected at runtime, not freeform AI generation. These rules specify: + +- Socratic methodology and turn structure +- Assessment fairness and scoring calibration +- Learner data handling and privacy +- When and how to use tools (demos, exercises, checkpoints) + +### Sage identity and voice + +Addie explicitly hands the learner to Sage when a module, specialist capstone, or specialist delta assessment starts. Sage identifies herself as Addie's teal, protocol-training counterpart and then remains the instructor for that certification interaction. A restored conversation or active assessment resumes in Sage's existing identity with a retrieval question on the last concept covered; it does not replay the introduction. + +Sage treats protocol precision as care, not gatekeeping, and assumes learners may bring real production experience. Her register is anchored by three patterns: + +- **Required field:** "The spec requires this field because both agents need the same unambiguous contract." +- **Supported prior knowledge:** "You've already shipped workflows like this. This builds on that experience, with the AdCP contract made explicit." +- **Retry:** "Not yet. Your approach is close, but this value does not match the schema. Fix that one point and try again." + +### Curriculum design + +Module lesson plans, assessment criteria, and scoring rubrics are designed by subject matter experts with expertise in advertising technology and the AdCP protocol. Content accuracy is validated against the AdCP specification, which serves as the single source of truth for protocol facts. + +### Human oversight + +Program leadership oversees teaching quality through: + +- **Score monitoring** — admin dashboard tracks scores by module, dimension, config version, and time period. Anomalies (e.g., consistently low scores in a dimension) trigger curriculum review +- **Feedback review** — learner feedback is collected after every module completion. Program leadership reviews feedback quarterly, with negative-sentiment patterns triggering immediate review +- **Teaching behavior audit** — changes to teaching methodology require a `CODE_VERSION` bump, enabling before/after comparison of learner outcomes +- **Curriculum review** — all curriculum changes go through code review before deployment. Protocol accuracy is validated against the AdCP specification +- **Learner escalation** — learners who need human assistance can contact certification@agenticadvertising.org. Assessment disputes are handled through the [complaints process](/dist/docs/3.2.0-beta.4/learning/policies/complaints) + +## Competency-based assessment + +### Formative assessment + +Assessment happens continuously during instruction: + +- **Socratic questioning** throughout every module — Sage probes understanding, corrects misconceptions, and adjusts depth based on responses +- **Teaching checkpoints** saved at concept group boundaries, recording concepts covered, concepts remaining, learner strengths, learner gaps, and preliminary scores +- **Checkpoint consistency** — final scores cannot jump more than 20 points from preliminary scores recorded during checkpoints + +### Summative assessment + +Each module defines 3-5 assessment dimensions with explicit rubrics: + +- Each dimension has a weight, description, and scoring guide (high/medium/low ranges) +- **50% floor per dimension** — learners must demonstrate baseline competency in every area +- **70% weighted average threshold** for mastery +- Score calibration: 70 = met bar with coaching, 85 = demonstrated independently, 95+ = depth beyond what was taught + +Scores are internal only. Learners never see percentages or dimension breakdowns. Their experience is: keep learning until mastery, then receive their credential. + +<Note> +Assessment occurs continuously through the instructional conversation rather than in a separate testing phase. This reduces test anxiety, enables immediate remediation, and aligns with mastery-based learning principles. Formative assessment (Socratic questioning, teaching checkpoints) and summative assessment (dimension scoring at module completion) remain distinct processes even though they occur within the same learner interaction. + +For expert learners who demonstrate competency early, teaching is compressed but assessment requirements remain identical. The conversation transcript serves as auditable evidence: it shows the learner's own words demonstrating understanding of each assessment dimension. Teaching checkpoints record which dimensions were assessed, preliminary scores, and learner background context. +</Note> + +### Simulated workplace environment + +Learners work in simulated professional contexts that mirror production environments: + +- **Sandbox agents** — implement the same AdCP protocol endpoints that production agents use. Learners practice with real tool calls, real JSON schemas, and real response formats — the only difference is that sandbox agents serve test data rather than production inventory +- **Build projects** (B4, C4, D4) — learners create working agents using AI coding assistants, then validate responses against AdCP schemas and explain their implementations +- **Specialist labs** (S1-S5) — guided exercises using real AdCP tools against sandbox agents, followed by adaptive questioning + +### Assessment fairness + +Every learner must demonstrate the same core competencies, regardless of background or experience level. + +Each module defines 3–5 **required demonstrations** — specific, observable things a learner must do or explain during the conversation. These are the same for everyone: + +- **A1** (3 demonstrations): query a live agent, interpret the response fields, explain that the protocol works across all channels +- **A2** (3 demonstrations): direct a media buy, identify each transaction step, map protocol tasks to lifecycle stages +- **A3** (4 demonstrations): identify which protocol domain handles a given scenario, explain brand.json's role in agent discovery, explain the format/manifest distinction, describe how Sponsored Intelligence works as a conversation +- **Build projects** (9 demonstrations across specify/validate/extend phases): write a specification using correct terminology, validate against live schemas, extend with a new capability +- **Specialist capstones** (3–5 demonstrations): protocol-specific mastery tasks using live tools + +Sage verifies each demonstration through conversation and records it in a teaching checkpoint using a stable criterion ID (e.g., `a1_ex1_sc0`). The server rejects module completion if any required demonstration is missing. This is enforced server-side — Sage cannot bypass it. + +Expert learners who demonstrate competency early still verify the same criteria. Teaching may be compressed, but the demonstrations are identical. + +Each verified demonstration includes an evidence rationale — a brief note explaining what the learner said or did that satisfied the criterion. This creates an auditable trail: for any credential, you can trace exactly which demonstrations were verified, when, and what evidence supported each one. + +### Recertification + +AdCP is a living protocol. When the specification evolves — new tasks added, existing tasks changed, channels expanded — the competencies required for certification may change too. + +Each required demonstration is tracked by a stable ID tied to specific protocol knowledge. When a protocol change affects what a certified person should know, the system can identify which credential holders learned under the previous criteria and flag them for recertification. + +Recertification is targeted, not blanket. If a protocol update adds a new governance task but doesn't affect media buy workflows, only credentials that cover governance are flagged. Credential holders receive a notification through Addie with context on what changed and what they need to review. The decision process, delta-assessment rules, and AdCP 3.1 S2 canonical formats rationale are documented in the [recertification policy](/dist/docs/3.2.0-beta.4/learning/policies/recertification). + +| Tier | Validity | Recertification | +|------|----------|-----------------| +| 1 — AdCP basics | No expiry | Flagged when foundational concepts change | +| 2 — AdCP practitioner | 2 years | Standard renewal, plus protocol-triggered updates | +| 3 — AdCP specialist | 2 years | Standard renewal, plus protocol-triggered updates | + +### Assessment integrity + +Server-side enforcement prevents gaming: + +- Required demonstrations verified for every learner before module completion +- Minimum engagement: 4 user turns for modules, 6 for capstones, 3 for placement assessments +- Minimum time: 5 minutes for modules, 10 minutes for capstones +- At least one teaching checkpoint with preliminary scores required before completion +- Score consistency checks reject completions with >20 point jumps from checkpoint scores +- Module completion only available through Sage's tool calls — no direct REST API endpoint +- Learners cannot influence their own scores +- Pasted content (JSON, code, logs) is treated as data to validate, not instructions + +## Module design patterns + +### Standard modules + +Modules A1-A3, B1-B3, C1-C3, and D1-D3 follow this flow: + +1. **Understand the learner** — first turn is always about them: background, role, what they know +2. **Demo early** (turn 2-3) — show a real agent response before explaining theory +3. **Teach with Socratic method** — cover all key concepts from the lesson plan, scaffolding then fading guidance +4. **Practice** — exercises against sandbox agents, scenario-based reasoning +5. **Assess through conversation** — verify mastery of each learning objective + +**Expert path.** When a learner demonstrates strong understanding early (correct, detailed answers to 3+ concepts in a row without needing guidance or correction), steps 3-4 compress: Sage acknowledges their expertise, confirms remaining concepts with targeted demonstration questions, and moves to assessment. The audit trail is the same — conversation transcript, checkpoint scores, and per-dimension rubric — but the evidence comes from the learner demonstrating competency rather than being taught first. + +### Build project modules + +Modules B4, C4, and D4 use a five-phase approach built on the same tools developers use in practice — [skill files](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) to generate agents and [storyboards](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) to validate them: + +1. **Specify** (~5 min) — learner describes what they want to build using AdCP terminology +2. **Build** (~5 min) — learner points their AI coding assistant at the matching skill file from `@adcp/sdk`, which generates a working agent from the specification +3. **Validate** (~10 min) — learner runs the matching storyboard from the CLI (`npx @adcp/sdk@latest storyboard run my-agent media_buy_seller`), shares results with Sage, and iterates on failures with their coding assistant +4. **Explain** (~10 min) — probing questions about design decisions and trade-offs +5. **Extend** (~15 min) — learner adds a capability, re-runs the storyboard, demonstrating they can iterate + +Sage is coach, not builder. Assessment spans five dimensions: specification quality, schema compliance, error handling, design rationale, and extension ability. The validate phase uses the same storyboard infrastructure that developers use to maintain compliance after certification. + +### Specialist capstone modules + +Modules S1-S5 combine hands-on lab work with adaptive examination: + +1. **Lab phase** — guided exercises using real AdCP tools against sandbox agents +2. **Checkpoint** — required after lab, recording observations before the exam +3. **Exam phase** — 6-10 follow-up questions covering assessment dimensions, with difficulty adapting to responses + +Formats include open-ended questions, multiple-choice, scenario-based problems, and "spot the error" comparisons. + +## Learner support + +**Returning learners.** Teaching checkpoints enable cross-session resume. When a learner returns, Sage starts with a retrieval question on the last concept covered — not a cold restart. + +**Disengaged learners.** If a learner gives repeated short answers or seems checked out, Sage switches approach: runs a demo, connects the concept to the learner's stated goals, or acknowledges the abstraction and makes it concrete. + +**Overqualified learners.** Teaching and assessment serve different purposes. Teaching is for the learner; assessment is for the credential. When a learner demonstrates strong understanding of 3+ concepts in a row without needing guidance, Sage compresses *teaching* but not *assessment*. The expert path replaces instruction with demonstration: instead of "let me teach you X, now let me ask about X," Sage asks "show me you understand X" directly. This produces stronger audit evidence (the learner's own words demonstrating competency) while respecting their time. The same assessment dimensions, scoring rubrics, and minimum engagement requirements apply regardless of path. + +**Placement assessment.** Learners who demonstrate existing knowledge can test out of modules (except build projects and specialist capstones), satisfying prerequisites without repeating content. + +**Pacing.** Sage suggests breaks after 45+ minutes or 2+ consecutive modules. Module transitions carry personalization context forward with a compressed warm-up connecting the completed module to the next one. + +## Credential issuance + +When a learner completes all required modules for a credential tier, the system automatically: + +1. Verifies all prerequisites and module completions +2. Awards the credential and records the date +3. Issues a digital badge through Certifier with a unique verification URL and QR code +4. Notifies the learner and provides sharing options (LinkedIn, public profile) + +**Credential validity:** Basics credentials do not expire. Practitioner and Specialist credentials are valid for 2 years. Credentials reference the protocol version at time of issuance. See [recertification](#recertification) for how protocol changes affect existing credentials. + +**Learner identity:** Learners authenticate through their AgenticAdvertising.org account (WorkOS). Credentials are tied to authenticated accounts. The program does not currently require proctored identity verification for assessments. + +## Curriculum maintenance + +### Protocol change triggers + +When a protocol version ships (minor or major): + +1. Check `MODULE_RESOURCES` URLs — do any documentation pages move or rename? +2. Review teaching notes — do any key concepts reference behavior that changed? +3. Validate documentation examples against current schemas +4. If a task is added, removed, or renamed, update affected module lesson plans + +### Learner feedback loop + +- Post-completion feedback collected through Sage after every module +- Feedback includes free text and sentiment classification (positive, mixed, negative) +- Patterns in negative feedback trigger curriculum review for the affected module + +### Program evaluation (quarterly) + +Program leadership conducts a quarterly evaluation to assess whether the program is meeting its goals: + +**Data reviewed:** +1. Learner feedback patterns across all modules (sentiment trends, repeated confusion points) +2. Score distributions by module and dimension — consistently low scores indicate a teaching gap +3. Checkpoint data for concepts where learners frequently get stuck +4. Completion rates and time-to-completion trends +5. Credential award rates by tier + +**Process:** +- Program leadership reviews the data and documents findings +- Findings are translated into specific curriculum changes (updated teaching notes, revised lesson plans, adjusted scoring guides) +- Changes are implemented through the standard code review process and tracked via `CODE_VERSION` +- Results of changes are evaluated in the following quarter's review + +### Version tracking + +- Teaching behavior version tracked via `CODE_VERSION` (format: YYYY.MM.N) +- Protocol changes tracked via the changeset workflow +- Score analytics can be compared across config versions to measure teaching improvements + +## Quality assurance + +### Server-side enforcement + +Quality gates are enforced by the application, not by AI judgment alone: + +- Minimum turns and time verified server-side before allowing module completion +- User turn counting is server-side, not client-reported +- Score consistency checks reject completions with >20 point jumps from checkpoint scores +- Module status validation prevents completing modules that aren't in progress +- Credential award checks run automatically after every module completion + +### Feedback and evaluation + +- Structured feedback collected after every module completion +- Sentiment analysis for trend detection across modules and time periods +- Admin analytics: completion rates, score distributions by dimension, time-to-completion +- Organization-level reporting for team credential tracking + +### Continuous improvement + +- Teaching methodology constants reference this framework document as the authoritative source +- Code changes to teaching behavior bump `CODE_VERSION` for before/after comparison +- Quarterly curriculum review driven by learner data, not assumptions + +## Accreditation alignment + +This framework is designed to align with the requirements of: + +- **ANSI/IACET 1-2018 Standard for Continuing Education and Training** — Elements 2 (learning environment), 3 (instructional personnel), 5 (learning outcomes), 6 (content and instruction), 7 (assessment), and 9 (evaluation) +- **ASTM E3416-24 Standard Practice for Competency-Based Work-Based Learning Programs** — competency alignment, formative and summative assessment, simulated workplace settings, credential issuance +- **CPD Standards Office** accreditation requirements for continuing professional development + +Organizational policies supporting this framework are documented in the [policies section](/dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination), including the [recertification policy](/dist/docs/3.2.0-beta.4/learning/policies/recertification). diff --git a/dist/docs/3.2.0-beta.4/learning/overview.mdx b/dist/docs/3.2.0-beta.4/learning/overview.mdx new file mode 100644 index 0000000000..9a7e9207e9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/overview.mdx @@ -0,0 +1,133 @@ +--- +title: AdCP certification program +sidebarTitle: Overview +description: "AdCP certification program: three tiers (Basics, Practitioner, Specialist) taught by Addie, an AI teaching assistant. Free foundational modules, member-only advanced tracks." +"og:title": "AdCP — AdCP certification program" +--- + +# AdCP certification program + +AI is remaking advertising. The question is whether you'll direct the change or react to it. + +AgenticAdvertising.org's vision is a Cre(ai)tive Economy where every brand and creator thrives through agentic collaboration. That economy needs people who understand how these systems work — not just technically, but strategically. + +Agentic advertising is already here — AI agents negotiating media buys, optimizing creative in real time, managing campaigns across channels autonomously. The people who understand how to direct these systems will shape what comes next. Everyone else will be catching up. The certification program exists to build that expertise. + +The AdCP certification program gets you there through interactive, AI-guided modules. No lectures. No multiple-choice tests. You learn by doing — discussing real scenarios, working with live sandbox agents, and building your own advertising agent. + +<Card title="Ready to start? Talk to Addie" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and say "I want to start the certification program." No account required — the Basics track is free. +</Card> + +## What learning with Addie feels like + +Certification happens in conversation. Addie, your AI teaching assistant, adapts to your experience level — asking questions, explaining concepts, walking through real scenarios. It's like having a knowledgeable colleague who never gets impatient. + +Addie assesses your understanding the same way: through conversation. Can you explain concepts clearly? Can you apply them to real scenarios? Can you use the protocol tools correctly? + +The program is designed for anyone in advertising — programmatic traders, media planners, brand managers, agency executives, and engineers alike. No prior programming experience is required. Three modules, about 50 minutes total, and you'll have earned your first credential. Most learners finish the Basics track in a few lunch breaks. + +## Everyone builds + +You don't need to be an engineer to build an advertising agent. + +At the Practitioner level, you'll build a real, working agent — a buyer agent, a seller agent, or a platform agent — using an AI coding assistant like Claude Code or Cursor. This is vibe coding: you describe what you want to build in plain language. The AI coding assistant writes the code. You validate it against real AdCP schemas and iterate on the design with Addie. + +The coding part is fast. The real assessment is whether you can specify what you need, reason about how it works, and improve it through iteration. These are skills every advertising professional should have. + +**By the end of the Practitioner track, you'll have built your own working advertising agent.** + +## Three-tier credential model + +<CardGroup cols={3}> + <Card title="Level 1 — AdCP basics" icon="circle-check"> + **Free and open to everyone.** Complete three foundation modules to demonstrate you understand what agentic advertising is, how AdCP works, and the full protocol landscape. + + Modules: [A1](/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising), [A2](/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture), [A3](/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance) + </Card> + <Card title="Level 2 — AdCP practitioner" icon="medal"> + **Basics plus a role track — ending with building your own agent.** Complete the Basics modules and one role track (publisher, buyer, or platform). The track culminates in a build project where you create a working advertising agent. No prior programming experience required. + + Modules: A1–A3 + one track (B1–B4, C1–C4, or D1–D4) + </Card> + <Card title="Level 3 — AdCP specialist" icon="trophy"> + **Protocol mastery.** Deep dive into a specific protocol area: media buy, creative, signals, governance, or sponsored intelligence. Combines hands-on lab and adaptive exam. + + Requires: Practitioner + specialist module + </Card> +</CardGroup> + +## For decision-makers who don't build + +The tiers above all involve hands-on work — querying live agents, building an agent. That is the right bar for practitioners and the wrong bar for the leaders who evaluate, brief, and decide but delegate the building. + +The **[AdCP for Decision-Makers](/dist/docs/3.2.0-beta.4/learning/decision-makers/overview)** credential is for them: brand media leaders, agency executives, and SMB owners. Three short modules, free, assessed entirely through strategic reasoning — no code, no live agent queries. You leave with a decision artifact (a business case, an agency brief, or an adoption plan), not an agent. It stands on its own — no prerequisites — but it certifies strategic fluency, not building: it is not a substitute for, or an easier route to, Basics or Practitioner. + +<Note> +Specialist credentials align with the protocol's domains. Within each domain, AdCP defines **specialisms** — specific flows an agent supports, declared in `get_adcp_capabilities`. Agents demonstrate each specialism by passing its compliance storyboard. The specialist track teaches you to reason about these claims and validate agents against them. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. +</Note> + +## How it works + +Each module follows the same pattern: + +1. **Read** — Review the reading list on this page to build context +2. **Learn** — Start the module with Addie for interactive, Socratic-style teaching +3. **Practice** — Work through exercises against live sandbox agents +4. **Demonstrate** — Show you can do 3–5 specific things that every learner must demonstrate + +Every module has a set of required demonstrations — the same for everyone, regardless of experience. An ad tech veteran and a first-timer both verify the same core competencies. Addie adapts the teaching to your level, but the bar is consistent. See [how we teach](/dist/docs/3.2.0-beta.4/learning/instructional-design#assessment-fairness) for details. + +## Learning paths + +### Basics (free) + +Everyone starts here. All three modules are free — no membership required. + +| Module | Topic | Duration | Free? | +|--------|-------|----------|-------| +| [A1](/dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising) | Why AdCP | 15 min | Yes | +| [A2](/dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture) | Your first media buy | 20 min | Yes | +| [A3](/dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance) | The AdCP landscape | 15 min | Yes | + +### Decision-makers (free) + +For brand leaders, agency executives, and SMB owners who decide and brief but don't build. Standalone credential — no prerequisites. Assessed through reasoning, not code or live-agent queries. + +| Track | For | Modules | Duration | +|-------|-----|---------|----------| +| [Decision-makers](/dist/docs/3.2.0-beta.4/learning/decision-makers/overview) | Brand leaders, agency execs, SMB owners | L1–L3 | ~45 min | + +### Role tracks (choose your path) + +After Basics, choose the track that matches your role. Each track is four modules culminating in a build project. + +| Track | For | Modules | Duration | +|-------|-----|---------|----------| +| [Publisher / seller](/dist/docs/3.2.0-beta.4/learning/tracks/publisher) | Publishers, SSPs, supply-side platforms | B1–B4 | ~103 min | +| [Buyer / brand](/dist/docs/3.2.0-beta.4/learning/tracks/buyer) | Brands, agencies, DSPs | C1–C4 | ~92 min | +| [Platform / intermediary](/dist/docs/3.2.0-beta.4/learning/tracks/platform) | Ad tech platforms, exchanges, data companies | D1–D4 | ~89 min | + +### Specialist modules (protocol mastery) + +Each specialist module combines a hands-on lab with an adaptive exam in a specific protocol area. Requires the Practitioner credential. + +| Specialist | Protocol area | Duration | +|------------|--------------|----------| +| [S1: Media buy](/dist/docs/3.2.0-beta.4/learning/specialist/media-buy) | Transactions, pricing, multi-agent orchestration | 45 min | +| [S2: Creative](/dist/docs/3.2.0-beta.4/learning/specialist/creative) | Asset workflows, format compliance, cross-platform adaptation | 45 min | +| [S3: Signals](/dist/docs/3.2.0-beta.4/learning/specialist/signals) | Signal discovery, activation, privacy, optimization loops | 45 min | +| [S4: Governance](/dist/docs/3.2.0-beta.4/learning/specialist/governance) | Brand safety, supply chain compliance, content standards | 45 min | +| [S5: Sponsored Intelligence](/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence) | Conversational brand experiences, session lifecycle | 45 min | +| [S6: Security](/dist/docs/3.2.0-beta.4/learning/specialist/security) | Threat model, 5-layer defense, idempotency semantics, governance verification, SSRF discipline | 60 min | +| [S7: Brand identity](/dist/docs/3.2.0-beta.4/learning/specialist/brand) | brand.json identity, distributed publishing, verify_brand_claim verification, trademark disambiguation | 60 min | + +<Note> +S5 (Sponsored Intelligence) is temporarily unavailable via Addie while its `si_*` sandbox labs are completed. S1–S4, S6 (Security), and S7 (Brand identity) are live. +</Note> + +## Get started + +<Card title="Start with module A1" icon="play" href="https://agenticadvertising.org/chat"> + Open Addie and ask to start the AdCP certification program. Addie will guide you through module A1 — no account required. +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/policies/complaints.mdx b/dist/docs/3.2.0-beta.4/learning/policies/complaints.mdx new file mode 100644 index 0000000000..6a993b9508 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/complaints.mdx @@ -0,0 +1,65 @@ +--- +title: Complaints and grievances +sidebarTitle: Complaints +description: "AdCP certification complaints policy: how to file grievances, investigation procedures, and resolution timelines for learners and stakeholders." +"og:title": "AdCP — Complaints and grievances" +--- + +# Complaints and grievances + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +<Note> +This policy is IACET-aligned and CPD-aligned. It is not an assertion of current IACET Accredited Provider status or IACET CEU issuance. +</Note> + +## Purpose + +Any learner or stakeholder may raise a concern about the AdCP certification program. This policy describes how complaints are filed, investigated, and resolved. + +## How to file a complaint + +Email certification@agenticadvertising.org with the subject line "Certification complaint" and a description of the concern. + +## What qualifies + +- Assessment fairness concerns +- Recertification or protocol-update targeting disputes +- Accessibility issues +- Content accuracy disputes +- Conduct issues +- Privacy concerns +- Any other matter related to the certification program + +## Timeline + +| Step | Timeframe | +|------|-----------| +| Acknowledgment of receipt | 2 business days | +| Investigation | 10 business days | +| Resolution | 20 business days | + +## Resolution + +A complaint is considered resolved when the program has investigated the concern and communicated the outcome to the complainant. Possible outcomes include: corrective action taken, curriculum updated, policy clarified, or concern determined to be unfounded with explanation provided. + +If the complainant disagrees with the resolution, they may request escalation. + +## Escalation + +**Internal:** If a complaint is not resolved satisfactorily, learners may escalate to AgenticAdvertising.org leadership by replying to the resolution email with a request for escalation. Leadership will review within 10 business days. + +**External:** If AgenticAdvertising.org holds an active external accreditation applicable to the complaint, and internal resolution is unsatisfactory, learners may contact the relevant accreditation body under that body's published complaint process. + +## Confidentiality + +Complaints are handled confidentially. Only those directly involved in the investigation have access to complaint details. + +## No retaliation + +Filing a complaint will not affect a learner's certification status, progress, or access to program materials. + +## Record keeping + +All complaints and resolutions are documented and reviewed quarterly to identify systemic issues and drive program improvements. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/conflict-of-interest.mdx b/dist/docs/3.2.0-beta.4/learning/policies/conflict-of-interest.mdx new file mode 100644 index 0000000000..0844c8534a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/conflict-of-interest.mdx @@ -0,0 +1,39 @@ +--- +title: Conflict of interest +sidebarTitle: Conflict of interest +description: "AdCP certification conflict of interest policy: disclosure requirements and separation of commercial interests from curriculum and assessment decisions." +"og:title": "AdCP — Conflict of interest" +--- + +# Conflict of interest + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +## Purpose + +This policy ensures that the AdCP certification program maintains objectivity and that commercial interests do not influence curriculum content or assessment outcomes. + +## Disclosure requirements + +Anyone involved in curriculum design, assessment criteria definition, or scoring calibration must disclose: + +- Employment by or investment in companies whose products are covered in the curriculum +- Advisory relationships with AgenticAdvertising.org member organizations +- Financial interest in certification outcomes + +Disclosures are made to program leadership and reviewed before the contributor participates in curriculum decisions. + +## Separation of interests + +- Curriculum content is based on the open AdCP protocol specification, not any single vendor's implementation +- No module promotes a specific commercial product or service +- Assessment rubrics are defined before instruction begins and applied consistently across all learners + +## AI instruction + +Addie follows operational rules defined by the curriculum team. Teaching methodology is documented in the [instructional design framework](/dist/docs/3.2.0-beta.4/learning/instructional-design) and applied uniformly. Commercial interests do not influence how Addie teaches or scores. + +## Non-compliance + +Undisclosed conflicts result in review of affected curriculum content and potential removal from the curriculum contributor role. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/intellectual-property.mdx b/dist/docs/3.2.0-beta.4/learning/policies/intellectual-property.mdx new file mode 100644 index 0000000000..7d0b8c9bb4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/intellectual-property.mdx @@ -0,0 +1,43 @@ +--- +title: Intellectual property +sidebarTitle: Intellectual property +description: "AdCP certification intellectual property policy: ownership and usage rights for curriculum materials, assessments, and learner-created content." +"og:title": "AdCP — Intellectual property" +--- + +# Intellectual property + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org leadership + +## Purpose + +This policy clarifies ownership and usage rights for materials created and used in the AdCP certification program. + +## Course materials + +Curriculum content — including lesson plans, assessment criteria, teaching notes, and exercises — is owned by AgenticAdvertising.org. These materials may not be reproduced or distributed without permission. + +## Protocol specification + +AdCP is an open protocol. The certification program teaches the protocol; it does not grant or restrict rights to implement it. Completing certification does not confer any intellectual property rights over the protocol specification. + +## Learner-created content + +Code and configurations created during build project modules (B4, C4, D4) remain the learner's property. AgenticAdvertising.org does not claim ownership of learner implementations. + +## Conversation content + +Teaching conversations may be used in anonymized, aggregated form to improve the curriculum. Individual conversations are not published or shared. + +## Credential marks + +The AdCP Basics, Practitioner, and Specialist credential names and associated badges are trademarks of AgenticAdvertising.org. Credential holders may display their earned credentials in professional contexts. + +## Third-party content + +Learning resources linked in modules point to the official AdCP documentation. Third-party trademarks referenced in curriculum examples belong to their respective owners. + +## Non-compliance + +Unauthorized use of course materials or credential marks is subject to standard trademark and copyright enforcement. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/learner-records.mdx b/dist/docs/3.2.0-beta.4/learning/policies/learner-records.mdx new file mode 100644 index 0000000000..146a708291 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/learner-records.mdx @@ -0,0 +1,60 @@ +--- +title: Learner records and privacy +sidebarTitle: Learner records +description: "AdCP certification learner records policy: data retention, privacy protections, transcript access rights, and deletion procedures for program participants." +"og:title": "AdCP — Learner records and privacy" +--- + +# Learner records and privacy + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org engineering and program leadership + +<Note> +This policy is IACET-aligned and CPD-aligned. It is not an assertion of current IACET Accredited Provider status or IACET CEU issuance. +</Note> + +## Purpose + +This policy establishes how learner data is collected, stored, accessed, and retained in the AdCP certification program. + +## What we store + +For each learner who participates in the certification program: + +- Identity (name, email, organization) +- Module progress and status (not started, in progress, completed, tested out) +- Completion dates +- Assessment scores (per-dimension, internal only) +- Credentials earned and award dates +- Teaching checkpoints (concepts covered, learner strengths and gaps, preliminary scores) +- Post-completion feedback + +## Where data is stored + +Learner records are maintained in two systems: + +- **Application database** (PostgreSQL) — progress, scores, checkpoints, feedback +- **Certifier** — credential badges, verification URLs, expiry tracking + +## Retention + +Learner records are retained for a minimum of **7 years** from the date of last activity, aligned with continuing-education accreditation record-retention expectations. + +## Transcript access + +Learners can view their progress and earned credentials at any time through the certification dashboard. Each credential includes a unique verification URL and QR code for third-party verification. + +## Privacy + +- Assessment scores are internal and never shared publicly. Only credential status (earned or not earned) is visible to others +- Teaching conversations may be used in anonymized, aggregated form to improve the curriculum. Individual conversations are not published or shared +- Learner feedback is reviewed in aggregate for curriculum improvement; individual feedback is not attributed publicly + +<Note> +**GDPR:** Learners may request data export or deletion by contacting certification@agenticadvertising.org. Deletion requests are honored except where retention is required for continuing-education program records (7-year minimum). In such cases, records are anonymized rather than deleted. +</Note> + +## Non-compliance + +Data handling violations are escalated to program leadership with corrective action within 5 business days. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination.mdx b/dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination.mdx new file mode 100644 index 0000000000..a8578d204a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination.mdx @@ -0,0 +1,36 @@ +--- +title: Nondiscrimination policy +sidebarTitle: Nondiscrimination +description: "AdCP certification nondiscrimination policy: equal access, inclusion standards, and accommodation procedures for all learners regardless of protected characteristics." +"og:title": "AdCP — Nondiscrimination policy" +--- + +# Nondiscrimination policy + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +## Purpose + +AgenticAdvertising.org is committed to providing equal access to the AdCP certification program for all learners regardless of race, color, national origin, gender, age, disability, religion, sexual orientation, veteran status, genetic information, or any other protected characteristic. + +## Standards + +- All certification modules are available to any learner who meets the stated prerequisites +- AI-delivered instruction applies the same teaching methodology and assessment criteria to every learner +- Assessment is based solely on demonstrated knowledge and competency against published rubric dimensions +- No learner is advantaged or disadvantaged based on personal characteristics + +## Accessibility + +- Instruction is delivered through web-based text conversation, compatible with screen readers and assistive technology +- There are no time-pressure assessments — the program uses mastery-based progression, allowing each learner the time they need +- Learners who need accommodations may contact certification@agenticadvertising.org + +## Language + +Instruction is delivered in English. Learners may ask for clarification using their preferred terminology. Addie adapts to each learner's communication style and level of technical familiarity. + +## Non-compliance + +Violations of this policy should be reported through the [complaints process](/dist/docs/3.2.0-beta.4/learning/policies/complaints). Reports are investigated within 10 business days. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/personnel-qualifications.mdx b/dist/docs/3.2.0-beta.4/learning/policies/personnel-qualifications.mdx new file mode 100644 index 0000000000..2a29378a9e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/personnel-qualifications.mdx @@ -0,0 +1,42 @@ +--- +title: Personnel qualifications +sidebarTitle: Personnel qualifications +description: "AdCP certification personnel qualifications: standards for curriculum designers, content reviewers, and the Sage AI teaching assistant." +"og:title": "AdCP — Personnel qualifications" +--- + +# Personnel qualifications + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +## Purpose + +This policy establishes qualification standards for everyone involved in designing, reviewing, and delivering the AdCP certification program. + +## Curriculum design + +Module lesson plans, assessment criteria, and scoring rubrics are designed by subject matter experts with demonstrated expertise in advertising technology and/or the AdCP protocol. Expertise is established through direct involvement in protocol development, industry experience, or both. + +## Content review + +Curriculum changes are reviewed through the standard code review process (pull requests) before deployment. Protocol accuracy is validated against the AdCP specification. Changes that do not meet review standards are not deployed. + +## AI teaching assistant + +Sage is powered by Claude (Anthropic). Teaching behavior is governed by operational rules documented in the [instructional design framework](/dist/docs/3.2.0-beta.4/learning/instructional-design), covering: + +- Socratic methodology and turn structure +- Assessment fairness and scoring calibration +- Learner data handling and privacy +- When and how to use tools for demos and exercises + +Sage cannot award credentials without meeting server-side validation requirements: minimum engagement time, minimum conversational turns, checkpoint requirements, and score consistency checks. These are enforced by the application, not by AI judgment alone. + +## Ongoing qualification + +Curriculum contributors stay current through participation in the AdCP working group, protocol development, and quarterly curriculum reviews. + +## Non-compliance + +Teaching behavior changes require a `CODE_VERSION` bump to enable performance comparison. Curriculum changes that bypass the review process are reverted. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/recertification.mdx b/dist/docs/3.2.0-beta.4/learning/policies/recertification.mdx new file mode 100644 index 0000000000..b0ef0da91d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/recertification.mdx @@ -0,0 +1,142 @@ +--- +title: Recertification and protocol-change updates +sidebarTitle: Recertification +description: "AdCP certification recertification policy: targeted protocol-change updates, delta assessments, learner notifications, and the AdCP 3.1 canonical formats S2 rationale." +"og:title": "AdCP - Recertification and protocol-change updates" +--- + +# Recertification and protocol-change updates + +**Adopted:** May 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +<Note> +This policy is IACET-aligned and CPD-aligned. It is not an assertion of current IACET Accredited Provider status or IACET CEU issuance. +</Note> + +## Purpose + +AdCP credentials are tied to protocol competency. When the protocol changes, the certification program determines whether existing credential holders need no action, a targeted delta assessment, or full recertification. + +This policy documents that decision process and records the AdCP 3.1 canonical formats rationale for pre-3.1 S2 Creative specialist holders. + +## Decision levels + +| Level | When used | Learner requirement | +|---|---|---| +| No action | The protocol change does not affect the credential's required demonstrations | None | +| Delta assessment | The protocol change adds or narrows a bounded competency that builds on prior demonstrated work | Complete only the new or changed required demonstrations | +| Full recertification | The protocol change invalidates the prior competency evidence, the learner misses the delta window, or the prior record cannot support a delta decision | Complete the current module again | + +Delta assessment is available only when a written rationale maps the new criteria to prior demonstrated competencies before learner invitations or engine targeting go live. + +## General process + +1. Program leadership identifies the affected credential, module, and criterion IDs. +2. The curriculum owner writes a rationale mapping the protocol change to prior evidence and the new required demonstrations. +3. Engineering ships the updated module criteria and records the criteria effective point. +4. The certification engine targets credential holders whose prior completion predates the criteria effective point and whose records do not already include the new criteria. +5. Learners receive a notification explaining the change, required delta work, deadline, and escalation path. +6. Delta completion is recorded in the learner record and retained under the [learner records policy](/dist/docs/3.2.0-beta.4/learning/policies/learner-records). + +## Access-entitlement review + +If a credential may have been earned without the required AgenticAdvertising.org membership, treat the record as an audit candidate rather than automatically revoking it. Program leadership must establish the learner's effective membership at the module-completion and credential-award timestamps using subscription history, inherited-membership evidence, and certification audit records. + +Until that review is complete, the credential remains valid and no learner-facing allegation is made. The review outcome must be one of: + +- **Valid:** evidence shows the required membership was active at the relevant timestamps; +- **Grandfathered:** entitlement cannot be proven, but program leadership decides to preserve the credential and records the rationale; +- **Annotated:** the competency evidence remains valid but the credential record needs a non-punitive administrative note; +- **Revoked:** evidence establishes that required access was absent and program leadership approves revocation under the complaints and appeals process. + +Every annotation or revocation requires a human decision, an immutable audit entry, notice to the learner, and an appeal path. Automated audits may identify candidates, but must not change credential state. + +## Effective dates and targeting + +For any protocol-change update, the curriculum change record must define these dates before engineering targets learners: + +| Field | Definition | +|---|---| +| `criteria_effective_at` | The later of the production deployment that adds the new required criteria and the protocol GA date that makes those criteria learner-facing | +| `delta_window_opens_at` | The date learner targeting and notifications may begin | +| `delta_window_closes_at` | The final date for delta-only completion | +| `auditable_record_required` | The minimum learner record needed to offer a delta instead of full recertification | + +For the AdCP 3.1 S2 Creative canonical-format update: + +| Field | Value | +|---|---| +| `criteria_effective_at` | Later of the production deployment of `496_curriculum_3_1_canonical_formats_criteria.sql` and AdCP 3.1.0 GA | +| `delta_window_opens_at` | `criteria_effective_at`; no learner targeting or notification may run before both AdCP 3.1.0 GA and production deployment of the new criteria | +| `delta_window_closes_at` | 90 calendar days after `delta_window_opens_at`, ending at 23:59 UTC on the computed deadline date | +| `auditable_record_required` | S2 learner progress completed before `criteria_effective_at`, plus an S2 completion record or teaching checkpoint trail sufficient to verify the prior required demonstrations | + +Holders whose learner records already include all five AdCP 3.1 canonical-format S2 criteria require no action. Holders whose records predate `criteria_effective_at` and lack one or more of the five criteria are delta candidates only when the auditable-record requirement is met. + +## AdCP 3.1 canonical formats: S2 Creative delta rationale + +AdCP 3.1 adds canonical format declarations to media-buy products through `format_options[]`. Creative specialists must now read a product's canonical declaration, choose the correct `format_kind`, distinguish product-level `format_option_id` from creative-agent `capability_id`, select the right asset-source model, and explain the validation order from shared canonical shape to product-specific narrowing. + +The change is material enough to require recertification for existing S2 Creative holders, but it does not invalidate the rest of the S2 credential. Pre-3.1 S2 holders already demonstrated creative workflow competency across format discovery, creative manifests, preview, sync, pricing, tracker-slot reasoning, and broadcast identifiers. Canonical formats extend those competencies with a new product-declaration layer rather than replacing the whole creative workflow. + +Therefore, pre-3.1 S2 Creative holders are eligible for a targeted delta assessment, not automatic full recertification, when their prior S2 learner record is available and complete. + +### Criteria mapping + +| New S2 criterion ID | New competency | Prior S2 evidence it builds on | Delta rationale | +|---|---|---|---| +| `s2_ex1_sc_format_kind_selection` | Select the correct canonical `format_kind` for a product and manifest | Format discovery, creative manifest authoring, and channel/format distinction | Adds the canonical vocabulary layer to an existing format-selection competency | +| `s2_ex1_sc_format_options_cardinality` | Read `format_options[]` and explain single-option, multi-option, and multi-size fan-out declarations | Multi-format creative adaptation and sync across publisher requirements | Narrows how product declarations are represented; prior evidence covers adapting assets to publisher format constraints | +| `s2_ex1_sc_option_vs_capability_id` | Distinguish media-buy `format_option_id` from creative-agent `capability_id` | Creative-agent capability discovery and media-buy product reading | Prevents namespace confusion introduced by 3.1; prior evidence covers both surfaces separately | +| `s2_ex1_sc_source_taxonomy` | Choose the correct asset-source model across buyer-uploaded, agent-synthesized, seller pre-rendered, seller human-designed, and publisher-host-recorded workflows | Creative generation, transformation, preview, and sync workflows | Adds explicit taxonomy to workflow distinctions already assessed in S2 | +| `s2_ex1_sc_validation_order` | Explain canonical-first, product-second validation and creative-agent capability narrowing | Schema compliance, preview validation, and sync error recovery | Adds validation sequencing for 3.1 product narrowing; prior evidence covers validation and recovery generally | + +### Eligibility + +The S2 canonical-format delta applies to learners who earned the S2 Creative specialist credential before `criteria_effective_at` and who have an auditable S2 completion record. + +Learners are assigned full S2 recertification instead of the delta when: + +- their prior S2 record is missing or incomplete; +- they do not complete the delta within the published window; +- their prior completion predates the current evidence-retention model and cannot be mapped to the criteria above; +- program leadership determines that a future protocol change invalidates more than the canonical-format layer. + +### Window + +The delta-only window is 90 days after `delta_window_opens_at`. During that window, affected credential holders keep their S2 credential but are marked as requiring a protocol update. After the window closes, unresolved holders retain their historical S2 completion record, but their learner-facing S2 status is no longer current until they complete the current S2 module. Learner-facing messages must include the computed absolute deadline date. + +## CPD and accreditation disclosure + +Recommended disclosure for continuing professional development records: + +> AdCP 3.1 introduced canonical format declarations for media-buy products. AgenticAdvertising.org reviewed the S2 Creative specialist credential and determined that existing S2 holders require a targeted protocol-change update covering the new canonical-format criteria. The update is a delta assessment because the new criteria extend prior demonstrated creative workflow competencies rather than replacing the full S2 competency set. Learners who do not complete the delta assessment during the published window must complete the current S2 module. + +This rationale must be retained with the curriculum change record and learner records for audit purposes. + +## Learner notification copy + +In-product notification: + +> AdCP 3.1 adds canonical format declarations to creative workflows. Your S2 Creative specialist credential remains active, but you need a short protocol update covering the new canonical-format criteria. Complete the S2 canonical formats delta by `<computed deadline date>` to keep your credential current without retaking the full S2 module. +> +> If you believe you were targeted in error, email certification@agenticadvertising.org. We acknowledge assessment and targeting review requests within 2 business days and resolve them through the [complaints process](/dist/docs/3.2.0-beta.4/learning/policies/complaints). + +Email notification: + +> Subject: S2 Creative protocol update required for AdCP 3.1 +> +> AdCP 3.1 adds canonical format declarations to media-buy products. Because you earned S2 Creative before this change, you need to complete a targeted delta assessment covering the new canonical-format criteria. This is not a full recertification: it focuses only on reading `format_options[]`, selecting `format_kind`, distinguishing `format_option_id` from creative-agent `capability_id`, choosing the correct asset-source model, and explaining canonical-first validation. +> +> Complete the delta by `<computed deadline date>` to keep your credential current. After that window, the current S2 module is required for renewal. If you believe you were targeted in error, email certification@agenticadvertising.org; we acknowledge assessment and targeting review requests within 2 business days and resolve them through the complaints process. + +## Implementation gates + +Engineering must not enable learner targeting or send learner notifications until all of the following are true: + +- this rationale is published; +- the new S2 criteria are present in `certification_modules.exercise_definitions`; +- the eligibility query can identify pre-effective-date S2 holders; +- delta completion writes an auditable learner record showing the new criteria were verified; +- support and complaints escalation paths are ready for learners who believe they were targeted incorrectly. diff --git a/dist/docs/3.2.0-beta.4/learning/policies/refund.mdx b/dist/docs/3.2.0-beta.4/learning/policies/refund.mdx new file mode 100644 index 0000000000..dd3699e727 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/policies/refund.mdx @@ -0,0 +1,33 @@ +--- +title: Refund and cancellation +sidebarTitle: Refund +description: "AdCP certification refund and cancellation policy: terms for membership fees, module access, and credential issuance." +"og:title": "AdCP — Refund and cancellation" +--- + +# Refund and cancellation + +**Adopted:** March 2026 +**Responsible party:** AgenticAdvertising.org program leadership + +## Purpose + +This policy describes refund and cancellation terms for the AdCP certification program. + +## Certification program fees + +The Basics tier (modules A1-A3) is free and open to everyone. No payment is required. + +The Practitioner and Specialist tiers require an AgenticAdvertising.org membership. Membership fees and refund terms are governed by the membership agreement, not this policy. + +## Certification-specific refunds + +There are no separate fees for certification modules, exams, or credential issuance beyond the membership requirement. Because there is no certification-specific charge, there is no certification-specific refund. + +## Credential revocation + +Credentials are not revoked except in cases of verified fraud (e.g., identity misrepresentation). Credential expiry and renewal follow the terms described in the [instructional design framework](/dist/docs/3.2.0-beta.4/learning/instructional-design#credential-issuance). + +## Questions + +Contact certification@agenticadvertising.org for questions about program fees or membership terms. diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/brand.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/brand.mdx new file mode 100644 index 0000000000..559b42bc75 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/brand.mdx @@ -0,0 +1,200 @@ +--- +title: "S7: Brand identity and verification" +sidebarTitle: "S7: Brand identity" +description: "AdCP specialist module S7: Brand Protocol mastery. brand.json identity resolution, distributed publishing and mutual-assertion reciprocity, bilateral adagents.json confirmation, verify_brand_claim signed-response verification, trademark disambiguation, and the experimental rights lifecycle." +"og:title": "AdCP — S7: Brand identity and verification" +--- + +# S7: Brand identity and verification + +<Info> +**Members only** — Requires Practitioner credential. ~60 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of the Brand Protocol's identity and verification layer. You'll work with sandbox agents to resolve a brand's `brand.json`, walk the bilateral trust chain across `brand.json` and `adagents.json`, call `verify_brand_claim` and interpret its signed response for trust, and disambiguate a trademark across jurisdictions. Addie evaluates both your hands-on work and your ability to reason about the protocol's trust model. + +Passing earns the **AdCP specialist — Brand** credential. + +<Note> +**This is a brand credential, not a cryptography one.** It certifies brand-domain *judgment* — resolving identity, reading organizational hierarchy, knowing who may act for a brand, applying the trust model, and deciding what a verification outcome *means*. It is **not hyper-technical**: where signed responses appear, the gate is "what does a valid / expired / forged signature tell you, and what do you do about it" — not implementing the cryptography. The signature mechanics (key resolution, canonicalization, signature checking) are a Security-specialist skill in **[S6: Security](/dist/docs/3.2.0-beta.4/learning/specialist/security)**, cross-referenced where relevant. +</Note> + +<Note> +**This domain is two-speed, and so is this module.** The identity and verification surface — `brand.json` resolution, distributed self-publishing, `verify_brand_claim` signed responses, and `adagents.json` confirmation — is mature and is what this credential **gates**. The **rights lifecycle** (`get_rights` / `acquire_rights` / `update_rights`) belongs to the `brand.rights_lifecycle` feature cluster, which is marked **experimental** in [Experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status). You'll learn to walk it, but mastery of it is **taught, not assessed** — no gated criterion depends on it. +</Note> + +## Specialisms this track prepares you to validate + +The following `specialisms` fall under the `brand` domain. Each has its own compliance storyboard — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `brand-rights` | stable | Brand identity resolution (`get_brand_identity`) and rights licensing (talent, music, stock media) | + +The `brand-rights` specialism storyboard is stable, but it exercises the `brand.rights_lifecycle` feature cluster (`get_rights`, `acquire_rights`, `update_rights`), which is marked **experimental** — partial rights, sublicensing, revocation, and dispute resolution are expected to evolve. This module gates the identity and verification half of the domain; it teaches the rights lifecycle as experimental. + +## Organizational hierarchy: it's not just the attributes + +Brand identity encodes **who an organization is and who may act for it**, along two distinct axes — and this module gates both, not just the attributes (colors, tone, logos): + +- **Axis 1 — brand-to-brand (the house hierarchy).** Which brands belong to a house: `house_of_brands` vs `branded_house` architecture, `keller_type` (`master` / `endorsed` / `independent`), and the `brand_refs[]` ↔ `house_domain` reciprocity. +- **Axis 2 — brand-to-operator (who acts *for* the brand).** A house declares `authorized_operators[]` in its `brand.json` — the agencies, platforms, and in-house teams permitted to represent its brands, each scoped by `domain`, `brands[]` (or the `*` wildcard), `countries`, and `scopes[]` (`media_buying`, `creative_generation`, `rights_clearance`, `governance`, `measurement`, `agent_operations`). + +Keep three relationship types distinct — they are easy to conflate: + +| Relationship | Where it's declared | Direction | Question it answers | +|---|---|---|---| +| House membership | `brand_refs[]` ↔ `house_domain` | brand ↔ brand | Which brands belong to this house? | +| Operator authorization | `authorized_operators[]` in `brand.json` | brand → operator (**buy-side**) | Who may buy / act *for* this brand? | +| Agent delegation | `authorized_agents[]` in `adagents.json` | publisher → agent (**sell-side**) | Who may *sell* this publisher's inventory? | + +At runtime the operator axis surfaces in the **Accounts Protocol**: every action carries an `account` whose natural key is `{brand, operator}` (the `operator` is the domain of the entity operating the account; it equals the brand's own domain when the brand operates directly). The seller's `require_operator_auth` capability selects the reference shape — `true` ⇒ seller-assigned `account_id` namespaces with independent operator auth; `false` ⇒ buyer-declared `{brand, operator}` pairs via `sync_accounts`. `get_brand_identity`'s **authorized** tier is exactly an operator (linked-account) view of the identity. + +## What you can — and can't — know + +The intellectual core of this credential is the **trust framework**: the epistemics of brand identity. Cryptography here proves *who said something*, not *whether it's true*. Trust resolves at two layers that separate cleanly: + +- **Identity attributes** (logos, colors, tone, tagline) — trusted from a single TLS-served `brand.json`. A brand that controls its own domain is authoritative for its own attributes, full stop — even if a parent relationship is unreciprocated. ("Claimed-but-unverified ⇒ ignore the leaf entirely" is **wrong**: the leaf's identity is still real.) +- **Relationships** (who owns a brand, who may speak for it) — trusted only when **both** sides reciprocate. + +Then climb the ladder of *what each signal actually proves*: + +| Signal | What it proves | What it does **not** prove | +|---|---|---| +| TLS + domain control | This party controls this domain | That it's the real-world entity you expect | +| `signed_response` (JWS) | This party **authored** this answer under its published key, within `iat`/`exp` | That the answer is **true** (and it's not a non-repudiation receipt) | +| Mutual assertion (both sides `owned`) | The two parties **agree** (consistency) | Real-world **standing** — two attacker-controlled domains can both sign matching `owned` | +| Trusted rejection (`not_ours` / `disputed`) | Authoritative on a single signed response only after the brand-authorization cross-check returns verifier-local `trust: "trusted"` | An untrusted rejection cannot extend or revoke relationship trust | + +**What the protocol cannot establish for you** — and where you must go instead: + +- **Real-world legal standing** → consumer-side domain-control + TLS against the legal entity you expect; out-of-band identity for high-trust decisions. (This is where *verified-identity attestation* lives — a **separate, experimental** feature, out of scope for this credential.) +- **A trademark's real registration** → cross-check the public **registry** record (the agent only asserts a `matched_registration`). +- **A property claim** → cross-check **DNS/TLS**. +- **`licensed_in`** → unverified until the named licensor reciprocates **`licensed_out`**. +- **Withheld internal state** (queue position, ticket state, team routing) → never exposed; don't infer it. +- **Freshness past `exp`** → an expired envelope is audit evidence, not a fresh authorization signal. + +Two traps to avoid: `managed_by` is a **directory** field, never a trust/authorization signal; and a standalone leaf's silence **trumps** any third-party house claiming it. + +## How brand identity drives creative generation + +Brand identity isn't decoration — it's the **input** to on-brand generation, which is *why* the authorized tier exists. A creative agent fetches `brand.json` (or calls `get_brand_identity` authorized), then pulls the wordmark, applies the exact palette and type scale, adopts the tone of voice, and obeys the restrictions — generating a food-forward composition with the headline *below* the image because `visual_guidelines` forbids text over food imagery. No guessing, no corrections. Separate two roles: + +- **Inputs** the generator consumes: `logos`, `colors`, `fonts`, `tone.voice`, `voice_synthesis` (provider / voice_id / settings). +- **Constraints** that bound what it may produce: `tone.dos` / `tone.donts`, `visual_guidelines.restrictions` (e.g. "Never place text over the athlete"), `content_restrictions`. + +Input quality drives output quality — a richer `brand.json` yields better generation with fewer corrections. These are exactly the fields `get_brand_identity` gates behind authorization, because a brand protects its generation inputs. + +A **second, experimental** path applies when generating with licensed-talent likeness or voice (`brand.rights_lifecycle`): `acquire_rights` issues **scoped `generation_credentials`** that specific providers (Midjourney for likeness, ElevenLabs for voice) verify *at generation time* — the rights agent sets the permission, the provider enforces it — alongside a `rights_constraint` (uses / countries / impression cap), required disclosure text, and a **`creative_approval`** loop that submits the generated asset back to the brand agent for review. Generation stops when the impression cap is hit. + +<Note> +**Scope boundary.** This module covers the brand *side* of the handoff — identity as input/constraint, and the rights/approval interface. Producing the creative itself (`build_creative` manifest/code modes, format selection, preview, sync) belongs to **[S2: Creative](/dist/docs/3.2.0-beta.4/learning/specialist/creative)** and **[S5: Sponsored Intelligence / Generative Advertising](/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence)** — cross-referenced, not re-taught here. The rights-gated half is taught, not gated (it rides the experimental rights lifecycle). +</Note> + +## Stable vs experimental in this module + +| Surface | Maturity | In this credential | +|---|---|---| +| `brand.json` identity resolution + public/authorized field tiers | stable | **Gated** | +| Distributed publishing + mutual-assertion reciprocity (`brand_refs[]` ↔ `house_domain`) | stable | **Gated** | +| Operator authorization (`authorized_operators[]`: domain / brands / countries / scopes) + account `{brand, operator}` model | stable | **Gated** | +| Bilateral `adagents.json` confirmation (delegated authority, signing-key `kid`) | stable | **Gated** | +| `verify_brand_claim` / `verify_brand_claims` — interpreting a signed response for trust | stable (3.1) | **Gated** (the signature *mechanics* are S6 Security) | +| Direction-asymmetric trust + trademark disambiguation | stable | **Gated** | +| Trust framework / knowability (authorship≠truth, consistency≠standing, the two layers, required cross-checks) | stable | **Gated** | +| Brand identity as creative-generation input/constraint (the authorized-tier fields) | stable | **Gated** | +| Rights-gated generation (`generation_credentials`, disclosure, impression cap, `creative_approval` loop) | experimental | Taught, not gated | +| Creative production (`build_creative`, formats, manifests) | — | Out of scope → S2 / S5 | +| Rights lifecycle (`get_rights` / `acquire_rights` / `update_rights`, `brand.rights_lifecycle`) | experimental | Taught, not gated | + +## What you'll demonstrate + +- Resolve a brand's identity from both its static `brand.json` and the `get_brand_identity` agent task; read `available_fields` to detect what an unauthorized caller is missing, then re-request `authorized=true` to obtain the gated `colors` / `fonts` / `tone` / `voice` / `rights` sections +- Establish that a brand-hierarchy relationship is real by checking **both** directions — the parent house's `brand_refs[]` and the sub-brand's `house_domain` back-pointer — and explain why a single-sided assertion does not extend trust +- Resolve a house's `authorized_operators[]` and determine whether a given operator (agency, platform, in-house team) may act for a specific brand — checking `domain`, `brands[]` (incl. the `*` wildcard), `countries`, and `scopes[]` — and distinguish this buy-side operator axis from house membership and from sell-side agent delegation; reason about how `require_operator_auth` selects the `{brand, operator}` vs `account_id` reference shape +- Bilaterally confirm a delegated sales agent: the publisher's `adagents.json` authorizes it *and* the agent declares itself in its own `brand.json` (neither alone suffices); understand why a publisher that pins the agent's signing keys becomes the trust authority for the agent's signed responses (so a compromised agent can't swap in its own key), and reject an agent the publisher does not list *(the signature-checking mechanics are S6 Security)* +- **Interpret** a signed `verify_brand_claim` response for trust — a valid signature proves the brand *authored* the answer (not that it's true, not non-repudiation), an expired one is audit-only, a response that fails verification or whose signed content doesn't match must be rejected, and an unsigned/unverified answer or the `verification_status` field alone is never trust-extending *(how the signature is verified is an S6 Security skill — here you reason about what each outcome means)* +- Apply the **direction-asymmetric trust rule** only after the brand-authorization cross-check returns verifier-local `trust: "trusted"`: treat a trusted single `owned` / `pending_review` / `licensed_in` assertion as informative but not trust-extending until the other side reciprocates, while treating trusted `not_ours` / `disputed` as authoritative on a single signed response; an untrusted result cannot extend or revoke trust +- Disambiguate a trademark claim across registries and Nice classes: resolve a mark that is `owned` in one registry but `disputed` or `licensed_in` in another, correct a `VALIDATION_ERROR` caused by an ambiguous match, and avoid clearing a creative against the wrong registration +- Map a brand's resolved identity to **creative generation**: which fields (`logos`, `colors`, `fonts`, `tone.voice`, `voice_synthesis`) are *inputs* the generator consumes vs which (`tone.donts`, `visual_guidelines.restrictions`, `content_restrictions`) are hard *constraints*; explain why these are the authorization-gated fields, and locate the brand/production boundary (where `build_creative` and the experimental rights-gated `generation_credentials` + `creative_approval` loop take over) +- Reason about the **trust framework's knowability boundary**: separate the identity layer (TLS-verifiable) from the relationship layer (mutual-assertion-gated); explain why a signature proves *authorship not truth* and mutual assertion proves *consistency not standing*; and for any fact about a brand, name what the protocol can establish, what it cannot, and the external cross-check (registry, DNS/TLS, licensor reciprocation, consumer-side standing) that closes the gap +- Walk the experimental rights lifecycle (`get_rights` → `acquire_rights` → `update_rights`) and reason about rights-spend governance — while correctly flagging the surface as not-yet-stable + +## Prerequisite reading + +<CardGroup cols={2}> + <Card title="Brand Protocol overview" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/brand-protocol"> + The brand domain: identity, distributed publishing, hierarchy, verification, and rights. + </Card> + <Card title="brand.json" icon="file-code" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json"> + The self-published identity document — house architecture, `brand_refs[]`, agents, and the mutual-assertion trust model. + </Card> + <Card title="verify_brand_claim" icon="circle-check" href="/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim"> + The four claim types, the signed-response envelope, and the direction-asymmetric trust rule. + </Card> + <Card title="Mutual-assertion trust model" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#mutual-assertion-trust-model"> + The two trust layers, the reciprocation table, and why consistency is not standing — the knowability framework. + </Card> + <Card title="Seller verification" icon="shield-check" href="/dist/docs/3.2.0-beta.4/verification/overview"> + The bilateral `adagents.json` + `brand.json` trust chain — Northwind / StreamHaus / Sportshaus Holdings. + </Card> + <Card title="Accounts Protocol" icon="building" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + The operator axis at runtime: `authorized_operators`, the `{brand, operator}` account model, `require_operator_auth`, and billing. + </Card> + <Card title="Brand identity → creative" icon="palette" href="/dist/docs/3.2.0-beta.4/brand-protocol/key-concepts#creative-generation"> + How creative agents pull `brand.json` assets, tone, and restrictions to generate on-brand — and the rights-gated `generation_credentials` path. + </Card> + <Card title="Building a brand agent" icon="server" href="/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent"> + Implementing `get_brand_identity`, `verify_brand_claim`, and the response-signing key. + </Card> + <Card title="Experimental status" icon="flask" href="/dist/docs/3.2.0-beta.4/reference/experimental-status"> + Why `brand.rights_lifecycle` is experimental and what that means for adopters. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent's brand tenant. Use the shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/brand/mcp" +``` + +The discovery and walkthrough documents are served at the host root: + +- `https://test-agent.adcontextprotocol.org/.well-known/brand.json` — the agent's own identity document +- `https://test-agent.adcontextprotocol.org/.well-known/adagents.json` — selling authorization +- `https://test-agent.adcontextprotocol.org/.well-known/jwks.json` — signing keys (including the `response-signing` key) +- `…/fixtures/walkthrough/northwind/.well-known/brand.json` — the delegated agency's identity +- `…/fixtures/walkthrough/streamhaus/.well-known/brand.json` and `…/fixtures/walkthrough/streamhaus/.well-known/adagents.json` — the sub-brand publisher's identity and selling authorization (the only role serving an `adagents.json` fixture) +- `…/fixtures/walkthrough/sportshaus-holdings/.well-known/brand.json` — the parent house's identity, with `brand_refs[]` **and** `authorized_operators[]` (a portfolio-wide agency plus a brand-scoped, US-only in-house operator) + + These are the multi-tier trust-chain fixtures from the [seller-verification walkthrough](/dist/docs/3.2.0-beta.4/verification/overview). + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +1. **Resolve brand identity** — Call `get_brand_identity` for a sandbox brand without authorization and read `available_fields` to see which sections are gated. Call again with `authorized=true` and confirm the `colors`, `fonts`, `tone`, and `rights` sections appear. Explain why a brand gates these fields behind a linked account. +2. **Identity → creative generation** — On a talent brand (e.g. `daan_janssen`), call `get_brand_identity` with `authorized=true` and read `colors`, `fonts`, `tone` (`dos` / `donts`), `voice_synthesis`, and `visual_guidelines.restrictions`. Classify each field as a generation **input** the creative agent consumes or a hard **constraint** that bounds output, and write the on-brand brief a generator would follow. Explain why these are exactly the authorization-gated fields, and point to where `build_creative` (S2/S5) and the experimental rights-gated `generation_credentials` + `creative_approval` loop take over. +3. **Distributed publishing reciprocity** — Fetch the Sportshaus Holdings `brand.json` and read its `brand_refs[]`. Fetch the StreamHaus `brand.json` and read its `house_domain`. Confirm the relationship is asserted in **both** directions. Explain what a malicious house could claim if only one direction were checked. +4. **Operator authorization** — In the Sportshaus Holdings `brand.json`, read `authorized_operators[]`. Confirm `meridian-agency.example` may buy for `streamhaus` (it has `brands: ["*"]`), and that `courtside-inhouse.example` may **not** (it is scoped to `brands: ["courtsidehq"]`, `countries: ["US"]`). Explain how this buy-side operator axis differs from house membership (`brand_refs[]`) and from sell-side agent delegation (`adagents.json`), and how `require_operator_auth` decides whether you pass a `{brand, operator}` natural key or a seller-assigned `account_id`. +5. **Bilateral adagents.json confirmation** — Fetch StreamHaus's `adagents.json` and find the entry authorizing Northwind Media; confirm `delegation_type: "delegated"`. Fetch Northwind's `brand.json` and confirm it declares the same sales agent — the publisher authorizes it *and* the agent declares itself, neither alone is enough. Explain why a publisher that pins the agent's signing keys becomes the trust authority for that agent's signed responses (so a compromised agent can't swap in its own key), and why an agent the publisher doesn't list fails. *(The signature-checking mechanics are S6 Security.)* +6. **verify_brand_claim — interpret the signed answer** — Call `verify_brand_claim` with `claim_type: "subsidiary"` for `streamhaus.example` and **interpret** the answer: it's signed by the brand, so a valid signature proves the brand *authored* it — not that it's true; an expired signature is audit-only; a response that fails verification or whose signed content doesn't match must be rejected; never trust the `verification_status` field alone. *(Performing the cryptographic verification is an S6 Security skill — here, reason about what each outcome means for trust.)* Then verify the leaf-side mirror with `claim_type: "parent"` and confirm mutual assertion completes at the agent layer. +7. **Direction-asymmetric trust** — Call `verify_brand_claim` for an unaffiliated property and observe `not_ours`. Confirm the brand-authorization cross-check returns verifier-local `trust: "trusted"`, then explain why this trusted rejection is authoritative on a single signed response while a trusted `owned` or `licensed_in` answer is not — and what reciprocation step `licensed_in` requires. Explain why the same rejection with `trust: "untrusted"` cannot revoke a relationship. +8. **Trademark disambiguation** — Call `verify_brand_claim` with `claim_type: "trademark"` for the same mark under two different registries and observe different statuses (`owned` vs `licensed_in`). Call it once with no registry and observe a `VALIDATION_ERROR` for the ambiguous match. Explain how `registry`, `countries`, and `nice_classes` resolve the ambiguity and why this matters for creative clearance. +9. **Trust boundary — what you can't know** — The agent signs `owned` for the `courtsidehq` subsidiary claim, and Sportshaus Holdings lists `courtsidehq` in `brand_refs[]` — yet no `courtsidehq` document reciprocates. Explain why the signed `owned` proves *authorship, not truth*, and why this house-only edge is **unverified** at the relationship layer even though `courtsidehq`'s identity (if it published one) would still be real. Then state what you would still need to trust that `sportshaus-holdings.example` is the *real* organization you think it is — and why neither the signature nor mutual assertion can give you that. +10. **Rights lifecycle (experimental)** — Use `get_rights` to discover a talent offering and reason about the `acquire_rights` → `update_rights` lifecycle, the scoped `generation_credentials` and `creative_approval` loop, and rights-spend governance. Identify this surface as experimental (`brand.rights_lifecycle`) and explain what that means for production adoption. *Not assessed as a credential gate.* + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Identity resolution & generation inputs | 20% | Can you resolve the public/authorized field split *and* map the fields to their role as creative-generation inputs and constraints? | +| Trust-chain verification | 25% | Can you walk all three axes — `brand_refs[]`/`house_domain` reciprocity, `authorized_operators[]`, and `adagents.json` delegation? | +| Claim verification | 25% | Can you *interpret* a signed response for trust (authorship≠truth, expired=audit-only, reject on mismatch, never trust the status field alone) and disambiguate trademarks? The signature mechanics are S6 Security, not gated here. | +| Trust-model reasoning | 30% | Can you separate the two trust layers, explain authorship≠truth and consistency≠standing, and name what the protocol cannot establish + the cross-check that closes each gap? | + +Passing threshold: 70%. diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/creative.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/creative.mdx new file mode 100644 index 0000000000..2ae7370088 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/creative.mdx @@ -0,0 +1,218 @@ +--- +title: "S2: Creative mastery" +sidebarTitle: "S2: Creative" +description: "AdCP specialist module S2: Creative mastery. Format taxonomy across 20 channels, creative manifest spec, AI generation, compliance checks, and asset sync workflows." +"og:title": "AdCP — S2: Creative mastery" +--- + +# S2: Creative mastery + +<Info> +**Members only** — Requires Practitioner credential. ~45 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of the creative protocol. You'll work with sandbox agents to discover format requirements across channels, produce and adapt creative assets, sync them to publishers, and verify compliance. Addie evaluates both your hands-on work and your conceptual understanding. + +Passing earns the **AdCP specialist — Creative** credential. + +## Specialisms this track prepares you to validate + +The following `specialisms` fall under the `creative` domain. Each has its own compliance storyboard — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `creative-ad-server` | stable | Creative ad server with tag-based delivery | +| `creative-generative` | stable | Generative creative agent producing assets on demand | +| `creative-template` | stable | Creative template and transformation agent | + +## What you'll demonstrate + +- Identify the three creative agent interaction models and explain when each applies +- Work with stateless agents (template/transformers): discover formats, preview with inline assets, build serving tags +- Work with stateful ad servers: browse a creative library, generate tags per media buy, track delivery +- Work with stateful sales agents: push creatives, preview in the publisher's environment +- Adapt a single creative concept across multiple channels and formats +- Author against AdCP canonical formats: read `format_options[]`, choose the right `format_kind`, map `asset_source`, and explain how a product narrows the canonical contract +- Use `preview_creative` in all three request modes — single, batch (5–10× faster for many creatives), and variant (retrieve historical renders from `get_creative_delivery`) — and choose `output_format: "html"` when bypassing the iframe speeds rendering +- Understand creative agent pricing: the `pricing_options[]` array on discovery responses, how `pricing_option_id` flows through `build_creative` and `report_usage`, and why CPM ad servers show zero `vendor_cost` at build time while transformation agents do not +- Reason about tracker-slot presence — a format supports third-party measurement only if its `assets` array declares a tracker slot (e.g., `impression_tracker`). Broadcast formats intentionally omit tracker slots; measurement comes from panel and STB data via `billing_measurement` +- Attach `industry_identifiers[]` to broadcast manifests with the correct `creative-identifier-type` (`ad_id`, `isci`, `clearcast_clock`, or `idcrea`), and give each cut (`:15` vs `:30`) its own traffic identifier +- Reason about format edge cases, accessibility, and provenance + +## Prerequisite reading + +### Core creative tasks + +<CardGroup cols={2}> + <Card title="Canonical format capabilities" icon="list" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + Discover what a creative agent can build, validate, and preview. + </Card> + <Card title="build_creative" icon="hammer" href="/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative"> + Creative generation and transformation from brand assets. + </Card> + <Card title="preview_creative" icon="eye" href="/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative"> + Preview creatives before deployment. + </Card> + <Card title="sync_creatives" icon="rotate" href="/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives"> + Synchronize creative assets with publisher platforms. + </Card> +</CardGroup> + +### Supporting concepts + +<CardGroup cols={2}> + <Card title="Creative protocol overview" icon="palette" href="/dist/docs/3.2.0-beta.4/creative/index"> + The creative protocol: assets, formats, manifests, and creative agents. + </Card> + <Card title="Creative specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/creative/specification"> + Formal specification for the creative protocol. + </Card> + <Card title="Formats reference" icon="image" href="/dist/docs/3.2.0-beta.4/creative/formats"> + Format definitions, technical specs, and the renders structure. + </Card> + <Card title="Canonical formats" icon="shapes" href="/dist/docs/3.2.0-beta.4/creative/canonical-formats"> + AdCP-defined format archetypes, product-level `format_options[]`, and asset-source taxonomy. + </Card> + <Card title="Asset types" icon="photo-film" href="/dist/docs/3.2.0-beta.4/creative/asset-types"> + Images, video, audio, HTML5, and native asset specifications. + </Card> + <Card title="Creative manifests" icon="file-lines" href="/dist/docs/3.2.0-beta.4/creative/creative-manifests"> + Manifest structure: how creative packages describe their contents. + </Card> + <Card title="Channel guides" icon="tv" href="/dist/docs/3.2.0-beta.4/creative/channels/video"> + Channel-specific specs for video, display, audio, DOOH, and carousels. + </Card> + <Card title="Broadcast TV" icon="clapperboard" href="/dist/docs/3.2.0-beta.4/creative/channels/broadcast"> + Broadcast formats, `industry_identifiers[]` (`ad_id`, `isci`, `clearcast_clock`, `idcrea`), creative identifier integration, and why broadcast formats omit tracker slots. + </Card> + <Card title="Generative creative" icon="wand-magic-sparkles" href="/dist/docs/3.2.0-beta.4/creative/generative-creative"> + AI-generated creative workflows and best practices. + </Card> + <Card title="Accessibility" icon="universal-access" href="/dist/docs/3.2.0-beta.4/creative/accessibility"> + Accessibility standards for advertising creatives. + </Card> + <Card title="Provenance" icon="certificate" href="/dist/docs/3.2.0-beta.4/creative/provenance"> + AI creative provenance and disclosure requirements. + </Card> + <Card title="Implementing creative agents" icon="robot" href="/dist/docs/3.2.0-beta.4/creative/implementing-creative-agents"> + Architecture guide for building creative agents. + </Card> +</CardGroup> + +### Creative governance + +<CardGroup cols={2}> + <Card title="Creative governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/creative/index"> + Feature-based creative evaluation: security scanning, regulatory compliance, and content categorization. + </Card> + <Card title="get_creative_features" icon="list-check" href="/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features"> + The evaluation task that scores creatives against governance features. + </Card> + <Card title="Content standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + Buyer-defined content rules that constrain what creatives can contain. + </Card> + <Card title="Provenance verification" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification"> + How governance agents verify AI creative provenance metadata. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Use the shared token — no signup required. The creative module spans three agent surfaces; start with the ad server (the most common path) and switch URLs when an exercise calls for a different agent type. + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/creative/mcp" +``` + +| Agent surface | URL | Used in | +|---|---|---| +| Creative ad server | `https://test-agent.adcontextprotocol.org/creative/mcp` | Exercises 2, 4 | +| Stateless transformation / template agent | `https://test-agent.adcontextprotocol.org/creative-builder/mcp` | Exercises 1, 5 | +| Sales agent (push-and-preview) | `https://test-agent.adcontextprotocol.org/sales/mcp` | Exercises 3, 6 | + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Canonical-format glossary + +| Term | Definition | +|---|---| +| **Canonical format** | An AdCP-defined creative archetype such as `image`, `video_hosted`, or `native_in_feed`. Buyers validate the creative manifest against the canonical first. | +| **`format_kind`** | The discriminator that names which canonical applies to a product format option. It controls creative shape, not delivery channel or targeting. | +| **`format_options[]`** | Product-level declarations that narrow canonicals with sizes, slots, production source, and platform constraints. A product can offer one option or several alternatives. | +| **`format_option_id`** | Stable identifier for a product or publisher-catalog option. Select it when the product publishes one; do not substitute creative-agent capability IDs in media-buy products or creative manifests. | +| **`v1_format_ref[]`** | Legacy creative-format references attached to a canonical option. One option can point to one existing format or fan out to several size-specific formats. | +| **`capability_id`** | Creative-agent build capability selector on `creative.supported_formats`. It chooses a `build_creative` path and is separate from product-level `format_option_id`. | +| **`asset_source`** | Declares who renders the asset bytes for `image`, `video_hosted`, and `audio_hosted`: `buyer_uploaded`, `publisher_host_recorded`, `seller_pre_rendered_from_brief`, `seller_human_designed`, or `agent_synthesized`. | +| **Manifest asset map** | The slot-by-slot mapping from the selected format option's requirements to the creative manifest assets, including which inputs the buyer provides and which assets are seller-, publisher-, or agent-produced. | + +## Lab exercises + +### Interaction models + +1. **Stateless transformation** — Connect to a template agent, discover its formats, preview a template with sample brand assets (inline), and build a serving tag. No `sync_creatives` — everything is passed in the call. +2. **Ad server workflow** — Connect to a pre-loaded ad server, browse the creative library with `list_creatives`, generate tags for multiple media buys using `build_creative`, and check delivery metrics. +3. **Push-and-preview** — Connect to a sales agent, discover its accepted formats, push catalog assets with `sync_creatives`, and preview how they render in the publisher's environment. + +### Creative pricing + +4. **Pricing lifecycle** — Using the same sandbox ad server from exercise 2: + - Establish an account with the ad server + - `list_creatives` with `account` and `include_pricing: true` — observe `pricing_options` on each creative reflecting your rate card + - Switch to a second sandbox account, `list_creatives` again — observe that `pricing_options` reflects a different rate (different CPM, model, or currency) + - `build_creative` with `account` — examine `pricing_option_id`, `vendor_cost`, and `consumption` in the response + - `build_creative` without `account` — observe the rejection error + - Call `report_usage` with `creative_id` + `pricing_option_id`, verify the values match what `build_creative` returned + - Explain: why is `vendor_cost` zero on a CPM-priced creative at build time? + +5. **Transformation agent pricing** — Using the sandbox transformation agent from exercise 1, with pricing enabled: + - Establish an account with the transformation agent + - `list_transformers` with `account` and `include_pricing: true` — observe `pricing_options` on each format (per-unit pricing) + - `build_creative` with `account` — examine `pricing_option_id`, `vendor_cost`, and `consumption` (expect non-zero `vendor_cost` at build time, unlike the CPM ad server) + - Compare: ad server discovers pricing on `list_creatives`, transformation agent discovers pricing on `list_transformers`. Ad server has zero build cost (CPM accrues at serve time), transformation agent has non-zero build cost (per-unit pricing) + +<Note> +**Vendor pricing is consistent across protocols** + +All vendor services use the same pattern: `pricing_options[]` on discovery responses, `pricing_option_id` in `report_usage`. Signals, content standards, creative agents, and property list agents all follow this. + +Vendors often offer multiple pricing options per creative — volume/commitment tiers (lower CPM at higher spend), context-specific rates (premium vs. standard placements), or different pricing models for different product lines (CPM for rich media, per-unit for social variants). The buyer selects the appropriate `pricing_option_id` and passes it in `report_usage`. +</Note> + +### Canonical formats + +6. **Canonical-formats authoring** — Using the validated reference fixtures in `static/examples/products/canonical/`: the multi-format display fixture (`nytimes_homepage_mrec.json`) and the generative video fixture (`veo_generative_video_15s.json`): + - Read each product's `format_options[]` and identify every available `format_kind` + - Select `format_option_id` when the product publishes one, and explain why a single-option product may not expose a separate selector + - Explain why a creative-agent `capability_id` is not a substitute for a media-buy product's `format_option_id` + - Write the manifest asset map implied by the selected option's slots, including when the buyer ships rendered assets and when the buyer ships a brief, video brief, or structured object + - Explain single-option vs multi-option products: when one product accepts several canonical alternatives, and when one option fans out to several sizes through `v1_format_ref[]` + - Explain why the seller validates against the canonical shape first and the product's narrowing second, while the creative agent's own capability can only narrow what it promises to produce + +### Cross-platform skills + +7. **Format discovery** — Query sandbox agents for supported formats, compare requirements across publishers +8. **Cross-platform adaptation** — Adapt one concept across display, video, and native formats using `build_creative` with `target_capability_ids` +9. **Compliance** — Configure provenance metadata and disclosure requirements for AI-generated creatives +10. **Preview modes** — Run `preview_creative` as `request_type: "single"`, then `"batch"` (submit 5 creatives in one call and measure the speedup), then `"variant"` against a prior `get_creative_delivery` result. Compare `output_format: "url"` vs `"html"` for rendering latency. +11. **Tracker-slot audit** — For each sandbox format, inspect the `assets` array and determine whether it supports third-party measurement. Explain why assigning a DoubleVerify pixel to a broadcast spot won't work, and which `billing_measurement` vendor would instead. +12. **Broadcast identifiers** — Build a broadcast manifest with distinct `industry_identifiers[]` for `:15` and `:30` cuts of the same spot. Verify the `creative-identifier-type` values and explain why each cut needs its own traffic identifier. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Interaction models | 20% | Correctly identifies and works with all three creative agent types | +| Cross-platform adaptation | 15% | Adapts creatives across display, video, native, preview, measurement, and broadcast workflows | +| Canonical formats | 10% | Reads `format_options[]`, selects `format_kind` and `format_option_id`, explains single-option, multi-option, and `v1_format_ref[]` fan-out cardinality, maps `asset_source` values to buyer-provided, agent-synthesized, seller-rendered, seller-designed, and publisher-hosted workflows, and explains canonical-first/product-second validation order | +| Compliance | 25% | Configures disclosures, provenance, and regulatory requirements | +| Pricing and accounts | 15% | Understands rate cards, reads pricing from `list_creatives` and `list_transformers`, interprets build costs, closes the `report_usage` loop | +| Analytical skill | 15% | Interprets creative feature evaluation and delivery results | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start S2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start the creative specialist module." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/governance.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/governance.mdx new file mode 100644 index 0000000000..84852cd5d0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/governance.mdx @@ -0,0 +1,194 @@ +--- +title: "S4: Governance" +sidebarTitle: "S4: Governance" +description: "AdCP specialist module S4: Governance protocol mastery. Content standards, property lists, campaign governance lifecycle, policy registry, and compliance automation with sandbox agents." +"og:title": "AdCP — S4: Governance" +--- + +# S4: Governance + +<Info> +**Members only** — Requires Practitioner credential. ~60 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of the full governance protocol. You'll work with sandbox agents to manage content standards, property lists, and collection lists, execute the campaign governance lifecycle (plans, validation, outcomes, audit), resolve compliance policies from the registry, and reason about how governance domains compose. Addie evaluates both your hands-on work and your conceptual understanding. + +Passing earns the **AdCP specialist — Governance** credential. + +## Specialisms this track prepares you to validate + +The following `specialisms` fall under the `governance` domain. Each has its own compliance storyboard — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `content-standards` | stable | Content standards enforcement (brand safety, policy compliance) | +| `property-lists` | stable | Curated inclusion and exclusion lists for targeting and delivery compliance | +| `collection-lists` | stable | Curated inclusion and exclusion lists of content programs (shows, series, podcasts) | +| `audience-sync` | stable | Syncs buyer-provided audience segments into a platform for activation | +| `governance-delivery-monitor` | stable | Campaign delivery monitoring with drift detection | +| `governance-spend-authority` | stable | Conditional spend approval and human-in-the-loop governance | + +## What you'll demonstrate + +- Create, update, list, and delete content standards +- Create, update, list, and delete property lists +- Create, update, list, and delete collection lists — program-level brand safety across platforms +- Calibrate content against standards and interpret results +- Create and validate campaign plans with budget authority and policy configuration +- Sync governance agents to accounts via `sync_governance` +- Execute the full governance loop: `sync_plans`, `check_governance` (intent + execution), `report_plan_outcome` +- Use the policy registry to resolve and apply compliance policies +- Interpret audit logs and reason about drift metrics +- Distinguish the three layers of brand safety: + - **Property lists** — *where* ads run. Stateful lists of properties (domains, apps, CTV services) with include/exclude semantics. Filter supply at the inventory level. + - **Collection lists** — *what content* ads run in. Shows, series, movies, and sports programs identified by distribution IDs (Gracenote SH/MV/SP). Program-level exclusions independent of which property carries them. + - **Content standards** — *per-impression adjacency*. Buyer-defined rules that evaluate actual content (not metadata) at serve time via calibrate → execute → validate. Use for episode-level or ephemeral content. +- Explain when to use each layer alone and how they compose (most buyers use one or two) +- Explain how governance domains compose — campaign, property, collection, content standards, creative +- Handle `GOVERNANCE_DENIED` end-to-end: read the `governance_context`, identify the failed rule, correct the payload, and retry +- Walk through the 15-step seller verification of a signed `governance_context` (JWS): `alg` allowlist, `typ` match, JWKS resolution via SSRF-validated fetch, `aud`/opaque-action-`sub`/`phase` binding, `jti` replay dedup, revocation-list check. Explain why each step closes a specific attack (spoofed issuer, cross-action token swap, token replay, key compromise) without disclosing `plan_id` to the seller. +- Apply governance across `purchase_type` values: `media_buy`, `rights_license`, `signal_activation`, `creative_services`. All share the same loop; media-buy-specific validations (channel compliance, seller concentration, pacing) apply only when the payload contains the relevant fields +- Explain the `governance_context` correlation model: governance agent issues an opaque token on first check; buyer attaches it to the media buy envelope; seller echoes it on execution checks so the agent reconnects each lifecycle event without re-deriving state +- Configure audience constraints on a campaign plan using policy categories and restricted attributes +- Validate that `check_governance` correctly denies targeting that violates audience constraints + +## Prerequisite reading + +### Core governance tasks + +<CardGroup cols={2}> + <Card title="property_lists" icon="list-check" href="/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists"> + Create and manage property lists for inclusion/exclusion filtering. + </Card> + <Card title="collection_lists" icon="clapperboard" href="/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists"> + Create and manage collection lists for program-level brand safety. + </Card> + <Card title="create_content_standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards"> + Define brand-specific content standards for automated compliance. + </Card> + <Card title="calibrate_content" icon="sliders" href="/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content"> + Test whether content meets defined standards before placement. + </Card> + <Card title="validate_property_delivery" icon="clipboard-check" href="/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery"> + Verify that ads were delivered to authorized properties. + </Card> + <Card title="sync_governance" icon="arrows-rotate" href="/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance"> + Sync governance agent endpoints to accounts for seller-side validation. + </Card> + <Card title="sync_plans" icon="file-circle-plus" href="/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans"> + Create and update campaign plans that define authorized parameters. + </Card> + <Card title="check_governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance"> + Validate intended and executed actions against the campaign plan. + </Card> + <Card title="report_plan_outcome" icon="flag-checkered" href="/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome"> + Report confirmed outcomes and commit budget against the plan. + </Card> + <Card title="get_plan_audit_logs" icon="scroll" href="/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs"> + Review governance decisions, findings, and drift metrics. + </Card> +</CardGroup> + +### Supporting concepts + +<CardGroup cols={2}> + <Card title="Governance overview" icon="building-columns" href="/dist/docs/3.2.0-beta.4/governance/overview"> + The governance protocol: property, content standards, creative, and campaign governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + Multi-party validation, budget authority, and the trust model. + </Card> + <Card title="Campaign governance safety model" icon="lock" href="/dist/docs/3.2.0-beta.4/governance/campaign/safety-model"> + Three-party trust model: orchestrator, governance agent, and seller. + </Card> + <Card title="Campaign governance specification" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/campaign/specification"> + Full technical specification: validation categories, budget tracking, and audience governance. + </Card> + <Card title="Policy registry" icon="book" href="/dist/docs/3.2.0-beta.4/governance/policy-registry"> + Community-maintained compliance policies: regulations (COPPA, GDPR, HFSS) and standards (alcohol, pharma). + </Card> + <Card title="Property governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/property/index"> + Identity, authorization, and data enrichment for publishers. + </Card> + <Card title="Collection governance" icon="clapperboard" href="/dist/docs/3.2.0-beta.4/governance/collection/index"> + Program-level brand safety with collection lists across CTV, podcast, and other media. + </Card> + <Card title="Content standards overview" icon="file-shield" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + How content standards work: calibration, local execution, and validation. + </Card> + <Card title="Content standards implementation" icon="code" href="/dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide"> + Implementation guide for content standards. + </Card> + <Card title="Content artifacts" icon="file-circle-check" href="/dist/docs/3.2.0-beta.4/governance/content-standards/artifacts"> + Artifacts generated during content evaluation. + </Card> + <Card title="Creative governance" icon="eye" href="/dist/docs/3.2.0-beta.4/governance/creative/index"> + Creative quality, compliance, and feature analysis. + </Card> + <Card title="Provenance verification" icon="certificate" href="/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification"> + Verifying AI creative provenance and disclosure. + </Card> + <Card title="get_creative_features" icon="bars-staggered" href="/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features"> + Analyzing creative features for compliance evaluation. + </Card> + <Card title="validate_content_delivery" icon="square-check" href="/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery"> + Post-delivery content validation. + </Card> + <Card title="get_media_buy_artifacts" icon="box-archive" href="/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts"> + Retrieving evaluation artifacts for audit and review. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Use the shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export SALES_AGENT_URL="https://test-agent.adcontextprotocol.org/sales/mcp" +export GOVERNANCE_AGENT_URL="https://test-agent.adcontextprotocol.org/governance/mcp" +export ROOT_AGENT_URL="https://test-agent.adcontextprotocol.org/mcp" +``` + +Use the endpoint that owns the task. The training agent deliberately splits the workflow across tenants: + +| Task | Endpoint | +|---|---| +| `sync_governance` | `$SALES_AGENT_URL` | +| `sync_plans`, `check_governance`, `report_plan_outcome`, `get_plan_audit_logs` | `$GOVERNANCE_AGENT_URL` | +| `validate_property_delivery` | `$ROOT_AGENT_URL` (legacy root-only custom tool) | + +Do not send `sync_governance` to the governance tenant: it configures the seller account, so the sales tenant owns it. The root route for `validate_property_delivery` is an explicit sandbox compatibility surface, not a claim that every governance task belongs on `/mcp`. + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +1. **Content standards lifecycle** — Create, update, and manage content standards for a fictional brand +2. **Property list management** — Create inclusion and exclusion lists for supply path control +3. **Collection list management** — Create a do-not-air collection list with distribution identifiers, content rating filters, and genre exclusions. Understand how collection lists compose with property lists and content standards for three-layer brand safety. +4. **Content calibration** — Calibrate sample content against your standards and interpret results +5. **Compliance verification** — Verify that sandbox campaign deliveries meet governance requirements +6. **Campaign governance lifecycle** — Sync governance agents via `sync_governance`, create a campaign plan, validate actions (intent + execution), handle denials and conditions, report outcomes, and review audit logs +7. **GOVERNANCE_DENIED recovery** — Submit a `check_governance` request that fails (audience uses a restricted attribute, or media buy exceeds committed budget). Read the denial reason, correct the payload, and verify the retry passes. Trace `governance_context` through the orchestrator → seller execution check to prove the correlation model. +8. **Purchase type variation** — Run `check_governance` with `purchase_type: "rights_license"` and `purchase_type: "signal_activation"` on the same plan. Observe which validations apply uniformly (budget, geo, flight) and which are media-buy-specific. +9. **Policy resolution and compliance** — Resolve policies from the registry, configure jurisdiction-scoped enforcement, verify that violations are caught +10. **Audience governance** — Configure a plan with `policy_categories` (e.g., `fair_housing`) that carry `restricted_attributes`. Submit `check_governance` requests with audience selectors that use restricted signals and verify the governance agent denies them. Then submit compliant targeting and confirm approval. +11. **Audience drift detection** — Run a series of delivery-phase governance checks with `audience_distribution` indices that gradually shift from baseline parity. Observe how cumulative indices reveal sustained bias patterns that single-period noise obscures, and how governance findings escalate when drift exceeds thresholds. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Protocol mastery | 25% | Full governance protocol mastery across all domains including campaign governance lifecycle | +| Safety expertise | 25% | Understands the three-party trust model, separation of duties, and how governance domains compose | +| Oracle understanding | 20% | Understands AI-driven evaluation models and policy registry integration | +| Compliance skill | 30% | Handles regulatory requirements, policy resolution, jurisdiction scoping, and audit interpretation | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start S4 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start the governance specialist module." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/media-buy.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/media-buy.mdx new file mode 100644 index 0000000000..021a642070 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/media-buy.mdx @@ -0,0 +1,394 @@ +--- +title: "S1: Media buy mastery" +sidebarTitle: "S1: Media buy" +description: "AdCP specialist module S1: Media buy mastery. Full transaction lifecycle, pricing models, proposals, forecasting, and multi-agent orchestration with live sandbox agents." +"og:title": "AdCP — S1: Media buy mastery" +--- + +# S1: Media buy mastery + +<Info> + **Members only** — Requires Practitioner credential. ~45 minutes with Addie. + Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of the media buy transaction lifecycle. You'll work with live sandbox agents to execute complex flows: proposals, forecasting, refinement, packages, and multi-agent orchestration. Addie evaluates both your hands-on work and your conceptual understanding. + +Passing earns the **AdCP specialist — Media buy** credential. + +## Specialisms this track prepares you to validate + +Agents in the `media_buy` domain declare specific flows they support via the `specialisms` field on `get_adcp_capabilities`. Each specialism has a compliance storyboard at `/compliance/{version}/specialisms/{id}/` that a runner executes to verify the claim. This module prepares you to reason about and validate agents against these claims: + +| Specialism | Status | What it covers | +| ---------------------- | ---------- | ---------------------------------------------------------------------------------------------- | +| `sales-guaranteed` | stable | Guaranteed media buys with human IO approval | +| `sales-non-guaranteed` | stable | Non-guaranteed auction-based media buys | +| `sales-proposal-mode` | deprecated | **Deprecated in 3.1.** Replace with `sales-guaranteed` + `media_buy.supports_proposals: true`. | +| `sales-catalog-driven` | stable | Catalog-driven commerce with conversion tracking | +| `sales-broadcast-tv` | stable | Broadcast linear TV with guaranteed inventory and FCC cancellation rules | +| `sales-social` | stable | Social media advertising platform with self-service flows | + +See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy and the [`specialism` enum](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/specialism.json) for the authoritative list. + +## What you'll demonstrate + +- Execute the full media buy lifecycle including proposals and forecasting +- Explain why every mutating media-buy request is cryptographically signed (RFC 9421): the signature is what lets the seller authenticate the buyer and detect tampering. No amount of lifecycle logic matters if you can't trust who sent the request. +- Walk the buyer-identity resolution chain: signature → JWKS → agent entry → brand.json. Explain why `iss` claims and client-supplied headers are never treated as identity, and what each link in the chain defends against. +- Apply `idempotency_key` correctly across the lifecycle: fresh UUID v4 per logical buy, same key + same payload on network retry (returns `replayed: true`), new key when the agent re-plans with a different payload, and the handling of `IDEMPOTENCY_CONFLICT` and `IDEMPOTENCY_EXPIRED`. Explain why this is what makes agent retries safe for real money. +- Trace the state machine: `create_media_buy` returns `pending_creatives` or `pending_start`; `sync_creatives` clears `pending_creatives`; the seller MUST transition `pending_start` → `active` at flight start and webhook the orchestrator. Seller-initiated `rejected` is only valid from the pending states. +- Reason about which actions are valid in which states (`cancel`, `sync_creatives` from pending states; `pause`/`resume`/`update_media_buy` from `active`), and handle `NOT_CANCELLABLE` and concurrency conflicts via `revision` +- Select a `pricing_option_id` from a product's `pricing_options[]` array — CPM, vCPM, CPP, CPA, flat rate, time — and explain why different pricing models carry different `parameters` +- Negotiate `measurement_terms` and `performance_standards` on guaranteed buys: propose overrides on `create_media_buy`, interpret seller acceptance (echoed back), adjustments, or `TERMS_REJECTED`. Recover by aligning to the seller's supported vendors or accepting product defaults. +- Know that `update_media_buy` requires `account` (not just `media_buy_id`) so billing routes to the right relationship; omitting it is a protocol error +- Tie broadcast buys to agency billing by attaching `agency_estimate_number` at the buy or package level (package-level overrides buy-level when flights or stations differ) +- Interpret broadcast delivery reports: `get_media_buy_delivery` returns measurement window data (`live`, `c3`, `c7`) that progresses over days after broadcast — the C7 window's DVR accumulation doesn't close until seven days post-air, and vendor processing adds further delay before final data is available; incomplete data during this period is by design, not underdelivery +- Use `get_media_buys` to check status, `valid_actions`, and creative approvals before acting +- Interpret seller indicators as current relationship-scoped state: explain why creative fatigue belongs to one package–creative assignment, why the same creative may be fatigued on one seller but not another, and why provider methodology belongs in `ext` +- Handle pricing negotiation, budget allocation, and multi-agent orchestration +- Use refinement and package requests for complex buying scenarios +- Monitor and optimize campaign delivery using protocol tools +- Explain the measurement-agent loop: make the orchestrator a buyer-controlled gateway for the fixed `get_media_buy_delivery` and `provide_performance_feedback` tasks, authenticate provider output, and fan normalized assertions out to sellers without granting providers seller access +- Reason about failure modes, conflict resolution, and edge cases + +## Prerequisite reading + +### Core transaction tasks + +<CardGroup cols={2}> + <Card + title="get_products" + icon="magnifying-glass" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products" + > + Product discovery: natural language briefs, structured filters, response + schemas. + </Card> + <Card + title="create_media_buy" + icon="receipt" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy" + > + Campaign creation: manual mode, proposal mode, approval lifecycle. + </Card> + <Card + title="update_media_buy" + icon="pen-to-square" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy" + > + Campaign modification: budgets, targeting, scheduling, creative swaps. + </Card> + <Card + title="get_media_buys" + icon="list-check" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys" + > + Operational status: lifecycle state, creative approvals, valid actions, + delivery snapshots. + </Card> + <Card + title="get_media_buy_delivery" + icon="chart-line" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery" + > + Delivery reporting: impressions, spend, completion rates, performance. + </Card> +</CardGroup> + +### Supporting concepts + +<CardGroup cols={2}> + <Card + title="Media buy specification" + icon="scroll" + href="/dist/docs/3.2.0-beta.4/media-buy/specification" + > + The formal specification for the media buy protocol. + </Card> + <Card + title="Pricing models" + icon="tag" + href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models" + > + `pricing_options[]` and `pricing_option_id`: CPM, vCPM, CPP, CPA, flat rate, + time. + </Card> + <Card + title="Accountability terms" + icon="handshake" + href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability" + > + Negotiate `performance_standards`, `measurement_terms`, and + `cancellation_policy`. Recovery from `TERMS_REJECTED`. + </Card> + <Card + title="Proposal negotiation guide" + icon="handshake" + href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation" + > + Typed constraints, ask-only fallback, immutable successors, holds, and + acceptance. + </Card> + <Card + title="Media buys overview" + icon="layer-group" + href="/dist/docs/3.2.0-beta.4/media-buy/media-buys/index" + > + Campaign structure, the `pending_creatives` → `pending_start` → `active` + state machine, and the approval lifecycle. + </Card> + <Card + title="Indicators" + icon="lightbulb" + href="/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators" + > + Seller interpretations such as package-scoped creative fatigue, returned through existing resource reads. + </Card> + <Card + title="Trusted Match Protocol" + icon="microchip" + href="/dist/docs/3.2.0-beta.4/trusted-match" + > + How TMP handles impression-time decisions such as cross-publisher frequency + capping. + </Card> + <Card + title="AdCP and OpenRTB" + icon="arrows-left-right" + href="/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb" + > + How campaign workflows in AdCP connect to impression-time execution + patterns. + </Card> + <Card + title="Orchestrator design" + icon="diagram-project" + href="/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design" + > + Architecture patterns for multi-agent orchestration. + </Card> + <Card + title="Conversion tracking" + icon="bullseye" + href="/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index" + > + Event sources, log_event, and attribution setup. + </Card> + <Card + title="Performance feedback" + icon="comment-dots" + href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback" + > + Seller optimization feedback based on campaign performance. + </Card> + <Card + title="Context and Identity Match" + icon="arrows-split-up-and-left" + href="/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity" + > + The two structurally separated operations that power impression-time + execution. + </Card> + <Card + title="Router architecture" + icon="diagram-project" + href="/dist/docs/3.2.0-beta.4/trusted-match/router-architecture" + > + Deployment, fan-out, and provider configuration for the TMP Router. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Use the shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/sales/mcp" +``` + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +During the module, Addie will guide you through hands-on exercises: + +1. **Product discovery and evaluation** — Query multiple sandbox agents, compare products, evaluate pricing +2. **Pricing option selection** — From the same product's `pricing_options[]` array, select a CPM option and a CPP option. Explain what each option's `parameters` mean and why the minimum spend differs. +3. **Proposal and forecasting** — Request proposals, analyze delivery forecasts (spend curves and availability) +4. **Terms negotiation** — On a guaranteed product, propose `measurement_terms` with a different vendor than the seller's default, and `performance_standards` with a tighter viewability threshold. Observe seller acceptance, adjustment, or `TERMS_REJECTED`. Recover by aligning to the seller's supported vendors. +5. **Campaign commitment and optimization** — Commit a direct offer with `buy_products`, assign creatives through `sync_creatives`, monitor through `get_media_buys`, and apply an in-envelope change with `control_media_buy`. Submit compact performance feedback with a named baseline, interpreting `accepted`, `applied`, and `not_applied` without overstating causality. Explain how the 3.x `create_media_buy` and `update_media_buy` facades map to the canonical operations, and verify that the update facade requires `account`. +6. **Proposal negotiation and lifecycle walkthrough** — Following the [proposal negotiation implementation guide](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation), act as Sam at Pinnacle Agency against StreamHaus. Use `request_proposals`, inspect `proposal_refinement.supported_dimensions`, and construct a refinement the seller can actually evaluate. Try a USD budget ceiling, a product include/omit decision, a targeting change, and multiple alternatives only when advertised; interpret `partial` and `unable` as structured counteroffers rather than generic failures. On an ask-only seller, observe the pre-mutation `UNSUPPORTED_FEATURE`, remove or translate the typed field, and retry. Finalize the chosen immutable proposal, call `accept_proposal`, and trace the resulting buy through `pending_creatives` → `sync_creatives` → `pending_start` → `active`. +7. **Lifecycle management and recovery** — Use `revision` for concurrency, follow `available_actions` to `control_media_buy` for operational changes, and route commercial changes through `refine_proposals(accepted_proposal_id)` plus `accept_proposal`. Handle `REQUOTE_REQUIRED` without mutating the accepted snapshot. +8. **Broadcast billing and delivery** — Create a broadcast buy with a buy-level `agency_estimate_number` and one package that overrides it with a station-specific estimate number. Verify both appear on delivery reconciliation. Call `get_media_buy_delivery` and interpret the measurement window fields: explain why `c3` data may be incomplete immediately after broadcast and when the `c7` window closes. +9. **Multi-agent orchestration and execution** — Manage campaigns across multiple sellers. Trace a cross-publisher suppression scenario: a viewer sees an ad on publisher A, then visits publisher B within the 2-hour recency window — what does Identity Match return and why? Configure frequency parameters (5/week, 2-hour minimum recency) and predict delivery impact. Explain why Context Match and Identity Match are structurally separated. Then design, conceptually and outside the public sales-agent sandbox, an orchestrator-hosted measurement gateway that exposes `get_media_buy_delivery` and `provide_performance_feedback`, grants only those orchestrator tasks, and maps one cross-seller result into seller-local submissions. +10. **Warnings, indicators, and invalidations** — Analyze a success warning and the later resource snapshot; distinguish buy/package/assignment indicator placement, exact type coverage, assignment approval, and webhook invalidation handling. + +For the indicator exercise, Addie supplies this compact creative-library fixture: + +```json +{ + "creative_id": "acme_summer_video", + "assignments": { + "assignment_count": 3, + "returned_assignment_count": 3, + "assignments_truncated": false, + "assigned_packages": [ + { + "media_buy_id": "mb_a", + "package_id": "pkg_social", + "assigned_date": "2026-08-01T00:00:00Z", + "approval_status": "approved", + "indicator_types_evaluated": [ + "creative_fatigue", + "creative_quality_opportunity" + ], + "indicators_as_of": "2026-08-04T12:00:00Z", + "indicators_evaluated_scope": [ + { "publisher_domain": "publisher-a.example" } + ], + "indicators": [ + { + "type": "creative_fatigue", + "scope": [ + { + "publisher_domain": "publisher-a.example", + "placement_id": "feed" + } + ] + } + ] + }, + { + "media_buy_id": "mb_b", + "package_id": "pkg_social", + "assigned_date": "2026-08-01T00:00:00Z", + "approval_status": "approved", + "indicator_types_evaluated": ["creative_fatigue"], + "indicators_as_of": "2026-08-04T12:00:00Z", + "indicators": [] + }, + { + "media_buy_id": "mb_c", + "package_id": "pkg_social", + "assigned_date": "2026-08-01T00:00:00Z", + "approval_status": "pending_review" + } + ] + } +} +``` + +The learner must identify the first relationship as evaluated for two creative types only on publisher A, with fatigue asserted only on its feed placement. The second is clear only for fatigue, not for every indicator type. The third is unknown but still has stable relationship identity and approval state. Clearing requires a direct, covered, strictly newer snapshot. + +Addie then supplies this successful `control_media_buy` receipt: + +```json +{ + "status": "completed", + "media_buy_id": "mb_a", + "revision": 2, + "warnings": [ + { + "code": "inventory_shortfall_forecast", + "message": "The applied pacing control leaves forecast delivery below the requested goal.", + "affected_resource": { + "resource_type": "package", + "media_buy_id": "mb_a", + "package_id": "pkg_social" + } + } + ] +} +``` + +The learner must explain that the control succeeded and the warning is only its immediate receipt. A subsequent unfiltered `get_media_buys` read supplies the durable conclusion. The same warning may be mirrored by the `update_media_buy` compatibility facade: + +```json +{ + "status": "completed", + "media_buys": [ + { + "media_buy_id": "mb_a", + "status": "active", + "currency": "USD", + "total_budget": 10000, + "confirmed_at": "2026-08-01T00:00:00Z", + "revision": 2, + "packages": [ + { + "package_id": "pkg_social", + "indicator_types_evaluated": ["inventory_shortfall_forecast"], + "indicators_as_of": "2026-08-04T12:00:00Z", + "indicators": [{ "type": "inventory_shortfall_forecast" }] + } + ] + } + ], + "pagination": { "has_more": false } +} +``` + +The learner must reject treating the warning as either an error or durable state. + +Finally, after activating the subscriber and establishing a complete `get_media_buys` baseline (known IDs or every status, fully paginated, without `indicator_types`), the learner receives these invalidations in either order: + +```json +{ + "idempotency_key": "whk_01K2INDICATOR4EXAMPLE8Q7M5", + "notification_id": "indchg_1", + "notification_type": "indicators.changed", + "fired_at": "2026-08-04T12:01:00Z", + "subscriber_id": "optimization-worker", + "account_id": "acc_1", + "relationship_kind": "creative_assignment", + "media_buy_id": "mb_a", + "package_id": "pkg_social", + "creative_id": "acme_summer_video", + "change_kind": "cleared", + "changed_indicator_types": ["creative_fatigue"], + "observed_at": "2026-08-04T12:00:00Z" +} +``` + +```json +{ + "idempotency_key": "whk_01K2ASSIGNMENT4EXAMPLE9R6", + "notification_id": "assignchg_1", + "notification_type": "creative.assignment_changed", + "fired_at": "2026-08-04T12:01:00Z", + "subscriber_id": "optimization-worker", + "account_id": "acc_1", + "media_buy_id": "mb_a", + "package_id": "pkg_social", + "creative_id": "acme_summer_video", + "change_kind": "approval_changed", + "observed_at": "2026-08-04T12:00:00Z" +} +``` + +The learner describes the required signature-verification step, dedupes each fire, coalesces them into one unfiltered reread, and reconciles only from the returned snapshot. Cryptographic execution is out of scope for this module; implementers follow the [webhook callback verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks). A timestamp-only reevaluation must not fire. Assignment removal retires prior keys even when the two invalidations arrive in either order. + +For a generative assignment, the learner must explain that this indicator describes the stable brief-or-creative × package aggregate. Fatigue for individual live renders belongs in `get_creative_delivery`. A material in-place brief revision invalidates the prior evaluation and fires `indicators.changed`; the snapshot is unknown until reevaluated. After replacing the creative, a successful direct unfiltered read confirming the old assignment is absent retires its old indicator keys; filtered disappearance does not. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +| ------------------- | ------ | -------------------------------------------------- | +| Protocol mastery | 30% | Comprehensive understanding of media buy lifecycle | +| Targeting expertise | 25% | Masters advanced targeting capabilities | +| Analytical skill | 25% | Analyzes delivery data effectively | +| Problem solving | 20% | Handles complex scenarios and edge cases | + +Passing threshold: 70%. + +## Start this module + +<Card + title="Start S1 with Addie" + icon="play" + href="https://agenticadvertising.org/chat" +> + "I'd like to start the media buy specialist module." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/security.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/security.mdx new file mode 100644 index 0000000000..ae27e75139 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/security.mdx @@ -0,0 +1,99 @@ +--- +title: "S6: Security" +sidebarTitle: "S6: Security" +description: "AdCP specialist module S6: Security mastery. Threat model, five-layer defense model, idempotency semantics, governance token verification, SSRF discipline, and operational incident response." +"og:title": "AdCP — S6: Security" +--- + +# S6: Security + +<Info> +**Members only** — Requires Practitioner credential. ~60 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of AdCP's security model — the five-layer defense: identity verification, tenant isolation, idempotency semantics, signed governance verification, and SSRF discipline. You'll exercise the controls the sandbox supports hands-on (idempotency semantics, SSRF discipline, and obtaining a signed governance token) and reason about the rest through threat scenarios and incident response. Addie evaluates both your hands-on execution and your security reasoning. + +Passing earns the **AdCP specialist — Security** credential. + +<Note> +This module covers AdCP-specific controls — the threat model, layered defenses, and operational response patterns specific to agentic advertising systems. It is not a replacement for a general security program. Certified specialists can reason about how AdCP's controls compose; for OWASP Top 10 or general security engineering, see your organization's security training. +</Note> + +## Specialisms this track prepares you to validate + +The following `specialisms` fall under the security domain. Each has its own compliance storyboard — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `security` | stable | Authentication baseline — unauth rejection, static-credential enforcement, OAuth discovery + RFC 9728 audience binding | +| `signed-requests` | stable | RFC 9421 transport-layer request-signing verification | + +## What you'll demonstrate + +- Explain the agentic advertising threat model: credential theft, replay attacks, cross-tenant data leakage, SSRF on outbound fetches, spoofed agent identity, unauthorized governance token use, and audit log tampering +- Walk through AdCP's five-layer defense model — identity, isolation, idempotency, signed governance, auditability — and name the specific attack each layer closes +- Mint an idempotency key and produce the three observable outcomes against a sandbox — successful first call, idempotent replay (`replayed: true`, unchanged resource), and conflict on payload change — and reason about the fourth: TTL expiry. The replay window is 24h, while mutated sandbox resources are retained for at least 25h after their last persisted mutation so they remain available throughout that window. Read-only calls do not extend resource retention. Expiry is therefore reasoned about rather than observed during the lab. Explain what a missing key removes from the seller's safety guarantees. +- Obtain and decode a signed governance token, then use the sandbox verifier to watch the checklist accept a valid token and reject a tampered one (signature), a misaddressed one (`aud` / confused-deputy), and one signed under a revoked key — explaining the attack each failing step closes and why revocation is checked before expiry +- Specify the 6-point SSRF check on an outbound fetch (HTTPS-only enforcement, reserved-IP deny list including cloud metadata endpoints, IP-pin validation, redirect suppression, size and timeout caps, and suppressed error detail) and demonstrate the agent refusing a metadata-IP webhook target +- Design an operational runbook covering credential compromise, webhook secret rotation, governance key revocation, and cross-party incident communication +- Given an incident description, identify which defense layer failed and what specific control to harden + +<Note> +S4 (Governance) covers the 15-step JWS seller verification from the **seller's** perspective — how a seller validates a governance token issued by a buyer's governance agent. S6 covers it from the **security operator's** perspective — verifying your own token issuance implementation is correct and reasoning about what each step closes. Overlap is intentional; the framing is different. +</Note> + +## Prerequisite reading + +<CardGroup cols={2}> + <Card title="Security model" icon="shield" href="/dist/docs/3.2.0-beta.4/building/concepts/security-model"> + AdCP's five-layer defense model: identity, isolation, idempotency, signed governance, and auditability. + </Card> + <Card title="Security implementation" icon="lock" href="/dist/docs/3.2.0-beta.4/building/by-layer/L1/security"> + Implementation reference: idempotency enforcement, webhook HMAC verification, SSRF discipline, signed governance, principal isolation, and insert-rate ceiling. + </Card> + <Card title="Campaign governance specification" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/campaign/specification"> + Governance token structure, the JWS verification model, and the correlation model for multi-party lifecycle tracking. + </Card> + <Card title="Operating an agent" icon="server" href="/dist/docs/3.2.0-beta.4/building/operating/operating-an-agent"> + Security as an operating concern: credential management, rotation cadences, and incident response. + </Card> + <Card title="Accounts and security" icon="key" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security"> + Principal isolation, account-scoped access, and multi-tenant separation. + </Card> + <Card title="Authentication" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication"> + static-credential enforcement, OAuth discovery, RFC 9728 audience binding, and the authentication baseline specialism. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Use the shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/mcp" +``` + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +1. **Threat model walkthrough** — Map each threat (credential theft, replay, cross-tenant leakage, SSRF, spoofed identity, unauthorized governance, audit tampering) to the specific AdCP control that closes it. Explain why no single layer is sufficient alone. +2. **Idempotency lifecycle** — Using one idempotency key on a mutating call (e.g. `create_property_list`): (a) first call — observe success; (b) identical replay — observe `replayed: true` with an unchanged resource id, confirming no new side effect; (c) same key, different payload — observe the `IDEMPOTENCY_CONFLICT` error. Then reason about the fourth outcome — expiry after the 24h replay window lapses. The sandbox retains mutated resources for at least 25h after their last persisted mutation, without extending that retention on read-only calls, so the original resource remains available throughout the replay window. Explain what a missing idempotency key means for the seller's at-most-once safety guarantee. +3. **Governance token verification** — Obtain a signed governance token from the sandbox governance agent (`sync_plans`, then an intent-phase `check_governance`) and decode its header (`alg`, `typ`, `kid`) and claims (`aud`, `sub`, `phase`, `jti`, `exp`). Then run the sandbox verifier (`comply_test_controller` scenario `verify_governance_token`) and watch the JWS checklist accept and reject tokens: a valid token passes every step; a tampered claim fails at the signature step (`governance_token_invalid`); a token bound to a different seller fails the `aud` byte-match (`governance_token_not_applicable` — confused deputy, via `mode: wrong_aud_demo`); and a token signed under a revoked key fails the revocation step (`governance_token_revoked`, via `mode: revoked_demo`). For each, explain the attack the failing step closes — and note that revocation is checked *before* expiry, so a revoked token is rejected even if it has also lapsed. (`jti` seen-before dedup — distinct from `aud` — is the step that stops replay of the same token.) +4. **SSRF defense and endpoint activation** — Submit `https://169.254.169.254/latest/meta-data/` in an account `notification_config` and observe the synchronous `VALIDATION_ERROR` on `notification_configs[].url`. Then register a public receiver you control with `active: false`, configure it to verify the RFC 9421 `webhook.challenge` and echo the single-use nonce, and reactivate the same subscriber with `active: true`. Inspect the signed body bindings (`account_id`, `subscriber_id`, `delivery_auth`, and `event_types`) plus the covered `@target-uri` and signature expiry. Finally pause the subscriber, re-point the exercise hostname to a reserved address, and attempt reactivation: the agent re-runs the full public-target check immediately before enabling delivery and refuses the re-bound target. Specify the 6-point SSRF check and explain what each point closes — the reserved-IP/metadata deny list, IP-pin-at-connect, redirect suppression, bounded responses/timeouts, and suppressed error detail. +5. **Principal isolation** — Scope a read to a different account than the one that created a resource and interpret the result correctly: distinguish an account-scoped *not-found* from an authorization *denial*. Explain the separation model — account-scoped access — and what would break (cross-tenant read/write on a leaked token) if account-scoped tokens were not enforced. +6. **Incident runbook design** — Given a credential compromise scenario (API key leaked in a public repo), design the response: which keys to rotate and in what order, how to notify counterparties, what audit events to review, and how to verify the compromise window. +7. **Defense layer diagnosis** — Given three incident descriptions (replay attack succeeded, cross-tenant data returned, governance token accepted after key revocation), identify which layer failed in each case and what specific control to harden. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Threat model fluency | 20% | Can you name an attack and the specific layer that closes it? | +| Hands-on idempotency | 20% | Can you produce the observable idempotency outcomes (success, replay, conflict) on demand and reason about expiry and a missing key? | +| Governance verification | 25% | Can you walk the 15-step checklist and explain what each step prevents? | +| SSRF discipline | 15% | Can you specify the 6-point check and demonstrate the agent refusing a metadata-IP webhook target? | +| Operational design | 20% | Can you design a runbook for credential compromise, including rotation order and cross-party communication? | + +Passing threshold: 70%. diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/signals.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/signals.mdx new file mode 100644 index 0000000000..42ae7c64cf --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/signals.mdx @@ -0,0 +1,157 @@ +--- +title: "S3: Signals and audiences" +sidebarTitle: "S3: Signals" +description: "AdCP specialist module S3: Signals and audiences. Signal discovery, activation, privacy controls, and optimization loops with sandbox data providers across six industries." +"og:title": "AdCP — S3: Signals and audiences" +--- + +# S3: Signals and audiences + +<Info> +**Members only** — Requires Practitioner credential. ~45 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +This specialist module tests your mastery of the signals protocol. You'll work with sandbox signal providers — automotive data, geo/mobility, retail purchase data, identity/demographics, publisher contextual signals, and CDP audiences — to discover signals, activate them, manage privacy, and design optimization loops. Addie adapts the experience to your role in the ecosystem. + +Passing earns the **AdCP specialist — Signals** credential. + +## Specialisms this track prepares you to validate + +The following `specialisms` fall under the `signals` domain. Each has its own compliance storyboard — see the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `signal-owned` | stable | Owned signal agent exposing first-party segments | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data | + +<Note> +**Scope of AdCP signals** + +Before investing time in training, it helps to know what the protocol covers today and where boundaries exist. + +- **In scope**: Identity-derived attributes (income tiers, life stages), behavioral signals (purchase intent, visit frequency), contextual signals (content category, sentiment), geographic audiences (trade areas, store visitors) +- **Not yet in scope**: Identity resolution and matching (linking devices to people), real-time geofencing triggers (push when someone enters a zone), measurement and attribution pipelines + +If your company works in the "not yet" areas, you can still publish the **audience segments** your data produces — the protocol covers the targeting output even when it doesn't cover the underlying infrastructure. +</Note> + +## What you'll demonstrate + +- Discover and evaluate signals from multiple provider types (data providers, retailers, publishers, CDPs) +- Activate appropriate signals for different campaign objectives +- Understand signal value types (binary, categorical, numeric) and how they affect targeting +- Manage audience activation including privacy considerations and deactivation +- Configure event tracking with `sync_event_sources` and `log_event` +- Read `pricing_options[]` from `get_signals` responses, pass the selected `pricing_option_id` through `activate_signal` and `report_usage` +- Design optimization loops using signals and delivery data +- Reason about the signals ecosystem — who provides data, who consumes it, and how authorization works + +<Note> +**Vendor pricing is consistent across protocols** — All vendor services use `pricing_options[]` on discovery responses and `pricing_option_id` in `report_usage`. Vendors may offer multiple options — volume tiers, context-specific rates, or different models per product line. Signals, creative, content standards, and property list agents all follow the same pattern. See [S2: Creative mastery](/dist/docs/3.2.0-beta.4/learning/specialist/creative) for the creative pricing model. +</Note> + +## Prerequisite reading + +### Core signals tasks + +<CardGroup cols={2}> + <Card title="get_signals" icon="signal" href="/dist/docs/3.2.0-beta.4/signals/tasks/get_signals"> + Signal discovery: find targetable audiences, contextual categories, and measurement data. + </Card> + <Card title="activate_signal" icon="toggle-on" href="/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal"> + Activate signals for campaign targeting or measurement. + </Card> +</CardGroup> + +### Supporting concepts + +<CardGroup cols={3}> + <Card title="Signals overview" icon="chart-mixed" href="/dist/docs/3.2.0-beta.4/signals/overview"> + The signals protocol: audience segments, contextual signals, measurement, and optimization. + </Card> + <Card title="Signals specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/signals/specification"> + Formal specification for the signals protocol. + </Card> + <Card title="Data providers" icon="database" href="/dist/docs/3.2.0-beta.4/signals/data-providers"> + How data providers publish signal definitions via adagents.json. + </Card> + <Card title="Signals ecosystem" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/signals/ecosystem"> + How different company types — retailers, publishers, CDPs, identity companies — participate in signals. + </Card> + <Card title="Conversion tracking" icon="bullseye" href="/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index"> + Event sources, `log_event`, and attribution setup. + </Card> + <Card title="Optimization and reporting" icon="chart-bar" href="/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting"> + How signals feed into campaign optimization decisions. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Use the shared token — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/signals/mcp" +``` + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +The sandbox training agent includes signal providers representing different ecosystem roles. You'll work with all of them: + +| Provider | Type | Signals | +|----------|------|---------| +| Trident Auto Data | Data provider | EV buyers, vehicle ownership, purchase propensity, service due, service history | +| Meridian Geo | Geo/mobility | Competitor visitors, visit frequency, trade area, commute pattern, dwell time, day-part visitation | +| ShopGrid Shopper Insights | Retailer | Category buyer, loyalty tier, basket value, new to brand, purchase frequency, brand affinity | +| Keystone Identity | Identity | Household income, life stage, cross-device reach, credit activity, household composition | +| Pinnacle News Signals | Publisher | Content category, engaged reader, subscriber tenure, sentiment, page type | +| Prism CDP | CDP | High LTV, cart abandoner, engagement score, churn risk, cross-device | + +### Exercise 1: Signal discovery + +Query the sandbox signals agent for signals matching different campaign objectives. Compare signals across provider types — what does a data provider's automotive signal look like versus a retailer's purchase signal? + +### Exercise 2: Signal activation + +Activate signals for a sandbox campaign. Observe how activation keys work and how deployment status changes. + +### Exercise 3: Audience management + +Activate and deactivate signals. Consider privacy: when does a signal need to be deactivated? How does consent affect signal availability? + +### Exercise 4: Ecosystem scenarios + +Addie will present a scenario from a specific perspective — you might be building published signal definitions for a retail media network, choosing signals for an agency's client campaign, or designing a CDP integration. Apply your protocol knowledge to the scenario. + +### Exercise 5: Build published signal definitions (provider perspective) + +The previous exercises focus on the buyer side — discovering and activating signals. This exercise shifts to the provider side. Construct an `adagents.json` signals entry for a fictional data provider of your choice (geo, retail, identity, etc.). Your definitions should include: + +- At least one signal of each value type (`binary`, `categorical`, `numeric`) +- Descriptive IDs, tags, and metadata following the [data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) +- An `authorized_agents` entry authorizing a signals agent to resell your signals +- `restricted_attributes` declarations on signals derived from sensitive personal data (e.g., `health_data`, `racial_ethnic_origin`) +- `policy_categories` declarations on signals that carry regulatory implications (e.g., `children_directed`, `fair_housing`) + +Verify your definitions by checking that the signals appear correctly in `get_signals` results when queried by tag or description, and that governance attributes are preserved in the signal metadata. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Protocol mastery | 25% | Complete signals lifecycle (discovery → activation → targeting → deactivation) | +| Privacy compliance | 20% | Handles consent, deactivation, and data governance correctly | +| Measurement skill | 20% | Configures conversion tracking and attribution | +| Ecosystem understanding | 20% | Explains how different provider types fit into signals | +| Ecosystem scenarios | 15% | Constructs valid published signal definitions, understands both buyer and provider perspectives, reasons about activation destinations (agent vs platform) | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start S3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start the signals specialist module." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence.mdx b/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence.mdx new file mode 100644 index 0000000000..39c97b024b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence.mdx @@ -0,0 +1,127 @@ +--- +title: "S5: Sponsored Intelligence" +sidebarTitle: "S5: Sponsored Intelligence" +description: "AdCP specialist module S5: Sponsored Intelligence. Monetizing AI chat — generative creative, the reversed data flow, and SI Chat Protocol for conversational brand experiences." +"og:title": "AdCP — S5: Sponsored Intelligence" +--- + +# S5: Sponsored Intelligence + +<Info> +**Members only** — Requires Practitioner credential. ~45 minutes with Addie. Combines hands-on lab and adaptive exam. +</Info> + +<Note> +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — session lifecycle, UI components, identity/consent object shape, and capability negotiation may change between 3.x releases with at least 6 weeks' notice. Assessments in this module cover current protocol surfaces; credentials will be flagged for targeted recertification when experimental SI surfaces change — the same policy that applies to every experimental surface. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +This specialist module covers how advertising works in AI: generative creative from brand assets and catalogs, the reversed data flow where buyers push data into platforms instead of bid requests flowing out, and SI Chat Protocol where brands engage users in multi-turn conversations. Addie evaluates both your hands-on work and your understanding of when and why Sponsored Intelligence fits. + +Passing earns the **AdCP specialist — Sponsored Intelligence** credential. + +## Sponsored Intelligence as a full protocol + +In 3.0, Sponsored Intelligence was promoted from a specialism to a full protocol. An agent that supports SI declares `sponsored_intelligence` in `supported_protocols` on `get_adcp_capabilities` — not as a specialism. The compliance runner executes the SI domain baseline storyboard at `/compliance/{version}/domains/sponsored-intelligence/` plus every universal storyboard. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). + +## What you'll demonstrate + +- Generate creative from brand assets, catalog data, and natural language briefs +- Execute Sponsored Intelligence campaigns using the reversed data flow +- Manage SI Chat Protocol sessions for conversational brand experiences +- Explain account models for walled gardens vs agent-trusted networks +- Reason about when Sponsored Intelligence fits vs traditional approaches + +## Prerequisite reading + +### Generative creative + +<CardGroup cols={2}> + <Card title="Generative creative" icon="wand-magic-sparkles" href="/dist/docs/3.2.0-beta.4/creative/generative-creative"> + AI-powered creative generation via `build_creative` — manifests, code output, and brand identity integration. + </Card> + <Card title="Creative formats" icon="palette" href="/dist/docs/3.2.0-beta.4/creative/canonical-formats"> + Format discovery — what ad formats a creative agent supports. + </Card> +</CardGroup> + +### Sponsored Intelligence + +<CardGroup cols={2}> + <Card title="Sponsored Intelligence" icon="microchip" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview"> + The reversed data flow, product spectrum, end-to-end workflow, and network aggregation pattern. + </Card> + <Card title="Catalogs" icon="database" href="/dist/docs/3.2.0-beta.4/creative/catalogs"> + Product and offering catalogs — the raw material for generative creative on AI platforms. + </Card> + <Card title="Seller integration" icon="store" href="/dist/docs/3.2.0-beta.4/building/operating/seller-integration"> + How to expose inventory to AI buyer agents, including governance enforcement. + </Card> + <Card title="Media channel taxonomy" icon="list" href="/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy"> + The `sponsored_intelligence` channel definition. + </Card> +</CardGroup> + +### Governance integration + +<CardGroup cols={2}> + <Card title="SI governance integration" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/overview#sponsored-intelligence-planned"> + How governance validates content standards, policy compliance, and brand safety in Sponsored Intelligence sessions. + </Card> + <Card title="Content standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + Buyer-defined content rules that constrain what SI agents can say. + </Card> +</CardGroup> + +### SI Chat Protocol + +<CardGroup cols={2}> + <Card title="SI Chat Protocol" icon="message-bot" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol"> + Conversational brand experiences — session lifecycle, identity, and commerce handoff. + </Card> + <Card title="SI specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification"> + The formal specification for the Sponsored Intelligence protocol. + </Card> + <Card title="SI Chat Protocol hosts" icon="server" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts"> + How AI platforms integrate SI Chat Protocol for brand experience handoffs. + </Card> + <Card title="SI Chat Protocol agents" icon="robot" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents"> + Architecture guide for building SI brand agents. + </Card> +</CardGroup> + +## Connecting to the test agent + +Lab exercises run against the public test agent. Sponsored Intelligence labs span creative generation, governance, and SI Chat Protocol surfaces — use the multi-specialism endpoint that exposes every tool on a single URL: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/mcp" +``` + +See the [Quickstart](/dist/docs/3.2.0-beta.4/quickstart) for a walkthrough of your first call. + +## Lab exercises + +During the module, Addie will guide you through hands-on exercises: + +1. **Generative creative** — Discover formats, generate creative from brand assets and a brief, evaluate output quality +2. **Sponsored Intelligence campaign** — Push catalogs to a platform, discover products, create a media buy with optimization goals +3. **SI Chat Protocol session** — Initiate a session, exchange messages with offering integration, observe commerce handoff +4. **Strategic evaluation** — Compare Sponsored Intelligence vs traditional approaches for different scenarios + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Generative creative | 25% | Builds creative from brand assets, catalogs, and briefs | +| SI mastery | 30% | Understands the reversed data flow and executes Sponsored Intelligence campaigns | +| SI Chat Protocol competence | 25% | Manages SI Chat Protocol sessions and understands conversational brand experiences | +| Strategic thinking | 20% | Reasons about when and how to use Sponsored Intelligence | + +Passing threshold: 70%. + +## Start this module + +<Card title="Start S5 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start the Sponsored Intelligence specialist module." +</Card> diff --git a/dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products.mdx b/dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products.mdx new file mode 100644 index 0000000000..354b7623ec --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products.mdx @@ -0,0 +1,160 @@ +--- +title: "Buyer briefs and get_products request shape" +sidebarTitle: "Buyer briefs" +description: "How buyer agents decompose campaign intent into get_products briefs, product filters, targeting overlays, future targeting support, and refinements." +"og:title": "AdCP - Buyer briefs and get_products request shape" +--- + +# Buyer briefs and get_products request shape + +This supplement prepares buyer-side implementers to turn a human campaign request into a precise `get_products` call. + +The goal is not to make the brief verbose. The goal is to put intent in the brief and hard constraints in typed fields so the seller can curate inventory without guessing which parts are negotiable. + +<Note> +This module teaches the AdCP 3.2 targeting-aware discovery contract. Use it +against sellers and SDKs that declare 3.2 support. The public training-agent lab +will enable these calls after the 3.2 beta SDK release; implementation is +tracked in [issue #6199](https://github.com/adcontextprotocol/adcp/issues/6199). +</Note> + +## Mental model + +| Input | Use it for | Avoid putting here | +|---|---|---| +| `brief` | Buyer intent, semantic audience language, context, tone, business goal, and requirements without a typed representation | Constraints that already have structured fields | +| `filters` | Hard offer filters—metadata, dates, budget, availability, commercial fit, and reporting capabilities—that exclude non-matching products | Delivery targeting or soft preferences | +| `targeting_overlay` | Exact delivery constraints known now; availability, pricing, and forecasts must account for them | Product characteristics or values the buyer has not chosen yet | +| `required_overlay_support` | Targeting dimensions whose values will be selected independently on packages later | Current targeting values or a request for one product per value | +| `brand` | The buyer brand identity the seller uses for eligibility, safety, and fit | A second copy of the campaign brief | +| `catalog` | Commerce or product-set context when the campaign is catalog-driven | General brand positioning | +| `refine` | Specific changes to a prior discovery response | New unrelated discovery goals | + +## What goes in the brief + +Use the brief for context that a seller or curator needs to make judgment calls: + +- campaign objective: awareness, consideration, qualified traffic, store visits, conversion, renewal +- audience description in human terms +- product, offer, seasonal context, or creative direction +- must-understand sensitivities such as family suitability or competitive adjacency +- success language that is not a metric filter, such as "favor trusted editorial environments" + +Example: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442008", + "buying_mode": "brief", + "brief": "Launch Nova Running's spring trail shoe line with outdoor enthusiasts. Favor trusted adventure and fitness contexts, avoid discount-led positioning, and prioritize packages that can support a brand-lift readout.", + "brand": { + "domain": "novarunning.example" + } +} +``` + +## What goes in filters + +Use filters when a product that fails the condition should not come back. +That exclusion rule is identical in `brief`, `wholesale`, and `refine`; the +mode changes how the seller curates and versions the result, not whether a +valid filter applies. + +Good filter candidates: + +- required channels or formats +- required measurement or reporting capabilities +- pricing currency constraints +- budget ranges +- fixed-price requirements +- product categories for wholesale/catalog use + +Example: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442009", + "buying_mode": "brief", + "brief": "Launch Nova Running's spring trail shoe line with outdoor enthusiasts. Favor trusted adventure and fitness contexts.", + "brand": { + "domain": "novarunning.example" + }, + "filters": { + "channels": ["ctv", "display"], + "pricing_currencies": ["USD"], + "required_metrics": ["impressions", "clicks"] + } +} +``` + +If the buyer says "ideally CTV, but display is okay," keep that preference in the brief. If they say "CTV only," use `filters.channels`. + +## What goes in targeting + +Use `targeting_overlay` for exact delivery constraints the buyer knows now: + +```json +{ + "targeting_overlay": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 25, "max": 44, "include_unknown": false } + } + } +} +``` + +Use `required_overlay_support` when the dimension is mandatory but its values +will be chosen later: + +```json +{ + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] }, + "placement_selection": true + } +} +``` + +This does not ask for products broken out by DMA or placement. It asks for +products on which packages can select those values later. + +Hard prose targeting remains binding. If an exact constraint appears only in prose, the +seller must infer its wire meaning. Prefer the structured field. When that +structured interpretation materially affects eligibility, pricing, or +forecasting, the seller must return response-level +`targeting_resolution.brief_targeting`; inspect it before purchase. Also inspect sparse +`targeting_resolution.modifications`; selecting that configured `product_id` +accepts the disclosed differences. + +## Brief vs. refine + +Use `buying_mode: "refine"` when the buyer is reacting to a previous discovery response. A refine request should point at what changed: remove a product, adjust budget, request more premium placements, narrow geography, or ask for alternatives. + +Do not send a totally new campaign in `refine`; start a new `brief` request instead. + +## Implementation checklist + +- Read `get_adcp_capabilities.adcp.supported_versions`, pin a compatible 3.2 release in `adcp_version`, and validate the echoed served release before using targeting-aware discovery. +- If release precision is absent, major-only, or 3.1-or-earlier, omit the 3.2 fields and fall back to retained legacy targeting filters or explicit brief prose; unknown fields may otherwise be silently ignored. +- Normalize the human request into intent, hard constraints, and follow-up changes before calling the seller. +- Preserve the buyer's business language in `brief`; do not collapse it into only keywords. +- Put product characteristics in `filters` and exact delivery constraints in `targeting_overlay`. +- Use `required_overlay_support` only for dimensions whose values will be supplied later. +- Inspect every returned `targeting_resolution`; silence confirms an unchanged structured overlay, not prose interpretation. +- Keep `brief` out of `wholesale` mode. +- Persist the request tuple with the response so later `refine` calls and `wholesale_feed_version` comparisons are scoped correctly. + +## Practice prompt + +A buyer says: + +> We need a six-week US launch for Acme Meals' new family dinner kits. We want CTV or online video, only USD pricing, something suitable for parents with kids, ages 25–44, and we need completion-rate reporting. We will choose DMAs after planning. + +Expected decomposition: + +- Brief: family dinner kit launch, parent audience, suitable contexts, six-week launch. +- Filters: video-capable channel/format constraints, USD pricing, completion-rate reporting. +- Targeting overlay: US and ages 25–44. +- Required overlay support: Nielsen DMA selection later. +- Brand: Acme Meals domain or BrandRef. diff --git a/dist/docs/3.2.0-beta.4/learning/supplements/creative-agent-workflows.mdx b/dist/docs/3.2.0-beta.4/learning/supplements/creative-agent-workflows.mdx new file mode 100644 index 0000000000..ec3bc6997b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/supplements/creative-agent-workflows.mdx @@ -0,0 +1,92 @@ +--- +title: "Creative agent workflows" +sidebarTitle: "Creative workflows" +description: "How creative agents implement build_creative, preview_creative, sync_creatives, and human approval workflows." +"og:title": "AdCP - Creative agent workflows" +--- + +# Creative agent workflows + +This supplement prepares creative-agent implementers to model the full creative lifecycle: build, preview, approve, sync, and recover. + +Creative agents differ in how much state they own. A template transformer may return assets directly. A generative agent may need async production. An ad server may return a preview first and withhold a live tag until approval. + +## Core lifecycle + +1. Discover capabilities and supported formats. +2. Build or transform the creative with `build_creative`. +3. Preview the creative with `preview_creative`. +4. Collect human approval when the agent or publisher requires it. +5. Sync approved creatives with `sync_creatives`. +6. Report usage or delivery where the workflow requires it. + +## build_creative + +Use `build_creative` to produce a creative manifest or start production. + +The request should carry: + +- the target format or canonical `format_kind` +- assets or creative brief inputs +- brand context +- any product-specific narrowing from `format_options[]` +- pricing option selection when the creative agent charges for production + +The response should be explicit about whether the creative is ready, still working, failed, or waiting for input. + +## preview_creative + +Use `preview_creative` for reviewable renderings. A preview is not necessarily the live tag. + +Common patterns: + +- Static asset preview: image, video, audio, or HTML preview. +- Batch preview: many variations from the same manifest. +- Historical preview: render a prior variant from delivery records. +- Vendor preview: expiring preview link while the live tag remains withheld. + +If a vendor withholds a live tag until approval, model that as preview plus approval state. Do not invent a separate "get tag" task. + +## sync_creatives + +Use `sync_creatives` to push approved creative assets or tags into the seller or publisher environment. + +Implementation rules: + +- Accept async `working` states when upstream trafficking is not immediate. +- Return stable creative IDs and platform IDs when available. +- Preserve idempotency across retries. +- Report validation failures with field-level detail. +- Keep buyer-owned creative identity separate from seller platform IDs. + +## Human approval + +Human approval is part of the workflow when the creative has policy, brand, legal, publisher, or vendor review requirements. + +Model approval as state, not silence: + +- `pending_review`: someone must approve before sync or live tag release. +- `approved`: sync may proceed or live tag may be released. +- `rejected`: the buyer or creative agent must revise before resubmitting with `sync_creatives`. + +## Recovery patterns + +| Failure | Recovery | +|---|---| +| Format mismatch | Re-read product `format_options[]`, choose the correct `format_kind`, rebuild | +| Missing required asset | Ask for only the missing asset; do not restart discovery | +| Preview expired | Re-run `preview_creative` or request a fresh preview link | +| Human approval stalled | Surface the pending approval state and owner | +| Sync returns async working | Poll task status or subscribe to notifications | +| Seller rejects creative | Preserve rejection reason, revise manifest, retry with a new logical revision | + +## Practice prompt + +A vendor creative agent returns a preview URL but no live display tag. The buyer asks the orchestrator to traffic the campaign immediately. + +Expected answer: + +- The orchestrator treats the creative as previewed but not approved/live. +- The buyer or reviewer approves the preview. +- The creative agent releases or syncs the live tag through the approved workflow. +- The seller receives the synced creative only after the approval state permits execution. diff --git a/dist/docs/3.2.0-beta.4/learning/supplements/governance-protocol-by-role.mdx b/dist/docs/3.2.0-beta.4/learning/supplements/governance-protocol-by-role.mdx new file mode 100644 index 0000000000..e7011d2888 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/supplements/governance-protocol-by-role.mdx @@ -0,0 +1,85 @@ +--- +title: "Governance protocol by role" +sidebarTitle: "Governance by role" +description: "Buyer and seller responsibilities in the campaign governance loop, including sync_plans, check_governance, signed governance context, and report_plan_outcome." +"og:title": "AdCP - Governance protocol by role" +--- + +# Governance protocol by role + +Governance in AdCP is a shared control loop. The buyer-side governance agent decides whether a planned or executed action is allowed. The buyer agent obtains and carries the governance context. The seller verifies that context before executing work and reports outcomes back into the audit trail. + +## Roles + +| Role | Responsibility | +|---|---| +| Buyer agent | Builds the plan, calls governance, and attaches governance context to seller requests | +| Governance agent | Evaluates intent and execution against plan, policy, budget, and authority | +| Seller agent | Verifies signed governance context before execution and reports confirmed outcomes | +| Human reviewer | Handles exceptions, overrides, and ambiguous policy decisions when required | + +## Buyer-side flow + +1. Create or update the campaign plan with `sync_plans`. +2. Call `check_governance` for the intent phase before asking a seller to execute. +3. Attach the returned governance context to the seller request. +4. When execution details come back, call `check_governance` again for the execution phase if the workflow requires it. +5. Poll or subscribe to outcomes and preserve the governance audit trail. + +The buyer owns the planning truth. If the buyer changes budget, audience, seller, flight dates, product selection, or objective, it must update the plan or request a new governance decision. + +## Seller-side flow + +1. Receive a request with governance context. +2. Verify the signed governance context before execution. +3. Bind the token to the expected plan, caller, seller, phase, and operation. +4. Reject missing, expired, revoked, replayed, or mismatched signed context with `PERMISSION_DENIED`. +5. Report confirmed delivery or spend through `report_plan_outcome` when the seller is responsible for outcome reporting. + +The seller does not reinterpret buyer policy from scratch. It verifies that the buyer's governance agent authorized this exact execution and reports what actually happened. + +Use `GOVERNANCE_DENIED` only when the buyer-side governance agent returned an actual denial for the planned or executed action. + +## check_governance payload discipline + +The most common implementation bug is sending a partial check that omits the fields needed for the phase. + +Intent checks normally need: + +- `plan_id` +- `caller` +- proposed seller or operator identity +- budget and pacing intent +- targeting and policy-relevant constraints +- products or package references when already selected + +Execution checks normally need: + +- `plan_id` +- `caller` +- seller identity +- concrete package, creative, targeting, dates, and budget being executed +- delivery or execution metrics when checking a delivery phase +- prior governance context or correlation identifier when the task requires continuity + +## What to test + +- A valid plan passes intent check. +- A seller swap fails unless the plan authorizes that seller. +- A budget increase fails until `sync_plans` updates the plan. +- A replayed governance token fails. +- An expired or revoked token fails. +- A delivery report outside the authorized plan fails or produces an audit finding. + +## Practice prompt + +Design a governance test for this case: + +> Pinnacle Media wants to buy a family-safe CTV package for Nova Snacks. The buyer plan caps spend at USD 75,000 and allows only two approved sellers. A seller returns a higher-budget package with a different seller identity. + +Expected answer: + +- Buyer updates or rejects the plan before execution. +- Governance intent check should deny the unapproved seller or over-budget package. +- Seller must not execute on a context bound to the original seller or budget. +- Audit logs should show the denial reason and the attempted execution facts. diff --git a/dist/docs/3.2.0-beta.4/learning/test-personas.md b/dist/docs/3.2.0-beta.4/learning/test-personas.md new file mode 100644 index 0000000000..1eae48b122 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/test-personas.md @@ -0,0 +1,521 @@ +--- +title: Learner test personas +description: "AdCP documentation test personas for evaluating how content serves different user types — from legacy builders to enterprise buyers." +"og:title": "AdCP — Learner test personas" +--- + +# Learner test personas + +Seven personas for testing how well the AdCP documentation, website, and Addie serve different user types. Personas 1-3 are build-side (engineering implementation). Personas 4-6 are buy-side (strategy and adoption at different scales). Persona 7 tests the certification build project experience for non-coders. Each represents a realistic session and set of questions. + +> **Relationship to character bible**: The character bible (see `specs/character-bible.md`) defines the illustrated characters used in walkthrough panels (Alex, Sam, Jordan, Maya, etc.). Test personas here are a separate concept — they simulate real user journeys to evaluate content quality. Where a test persona maps to a walkthrough character's role, we note the connection. + +--- + +## Persona 1: Marcus Chen — Legacy AdCP builder + +### Role +Senior engineer at an agency tech team. Built a buyer agent integration against AdCP 2.5 about nine months ago. It runs in production, placing media buys for a handful of brands. + +### Background +Marcus's integration handles product discovery, creative sync, and media buy creation over MCP. He wrote it against the 2.5 schemas and hasn't touched it since launch. He saw the v3 RC announcement in Slack and knows he needs to migrate, but hasn't read the changelog yet. He's used to the protocol and doesn't need anyone to explain what MCP is or how tasks work. + +### What he already knows +- The core task flow: `get_products` -> `sync_creatives` -> `create_media_buy` -> `get_media_buy_delivery` +- How `adagents.json` works for publisher discovery +- The v2 channel enum (`display`, `video`, `audio`, `native`, `social`, `ctv`, `podcast`, `dooh`, `retail`) +- Creative IDs as string arrays on packages +- `promoted_offerings` as a creative asset type +- `fixed_rate` and `price_guidance.floor` in pricing options +- `geo_postal_codes` and `geo_metros` as flat string arrays +- `optimization_goal` as a single object on a package +- How `adcp-extension.json` works for capability discovery + +### What he doesn't know +- That `native` was removed as a channel (he has packages with `channels: ["native"]`) +- That `video` split into `olv`, `linear_tv`, and `cinema` +- That `creative_ids` became `creative_assignments` with weighting +- The new accounts model (`sync_accounts`, `list_accounts`, billing models) +- That `promoted_offerings` was replaced by first-class catalogs (`sync_catalogs`) +- That `brand_manifest` was replaced by `brand` ref (`{ domain, brand_id }`) +- That `adcp-extension.json` was replaced by `get_adcp_capabilities` +- That geo targeting now requires system specification +- That `optimization_goal` became `optimization_goals` (array, discriminated union) +- The existence of Brand Protocol, Governance, Sponsored Intelligence, or the Registry API + +### Misconceptions and blind spots +- Assumes `native` is still a valid channel. Will be confused when validation fails. +- Assumes capability discovery still uses `adcp-extension.json`. Will look for agent card extension docs that no longer exist. +- Thinks `account_id` is just a string he passes. Doesn't know about `AccountReference` objects or the account-id namespace vs. buyer-declared account model. +- Expects `promoted_offering` to still be a string field on media buys. +- Assumes pricing fields haven't changed names. +- Will probably search for "migration" or "upgrade" rather than "what's new." + +### Primary goal +Understand every breaking change that affects his existing integration, get a checklist of what to update, and estimate the migration effort (hours, not weeks). + +### Key questions he'd ask +1. "What broke between AdCP 2.5 and 3.0?" +2. "Is there a migration guide for v2 to v3?" +3. "What replaces the native channel?" +4. "How do I update my creative_ids to the new format?" +5. "What happened to adcp-extension.json?" +6. "Do I need to implement the accounts protocol or can I skip it?" +7. "Can I run my v2 integration alongside v3 during migration?" + +### Pages he'd likely visit +1. `/docs/reference/whats-new-in-v3` — First stop, looking for a summary of changes +2. `/docs/reference/migration/channels` — His `native` and `video` packages are broken +3. `/docs/reference/migration/pricing` — Fixing `fixed_rate` and `price_guidance.floor` +4. `/docs/reference/migration/creatives` — `creative_ids` to `creative_assignments` +5. `/docs/reference/migration/catalogs` — Replacing `promoted_offerings` +6. `/docs/reference/migration/geo-targeting` — System specification on geo fields +7. `/docs/reference/migration/optimization-goals` — Single goal to array +8. `/docs/reference/migration/brand-identity` — `brand_manifest` to `brand` ref +9. `/docs/accounts/overview` — Understanding the new accounts model +10. `/docs/protocol/get_adcp_capabilities` — Replacing `adcp-extension.json` + +### Success criteria +- He can produce a line-item list of every code change his integration needs +- He understands which changes are renames (easy) vs. structural (harder) +- He knows which new protocol domains (accounts, governance, brand protocol) are required vs. optional for his use case +- He has enough schema detail to start writing code without guessing +- Total time from landing to "I know what I need to do": under 45 minutes + +--- + +## Persona 2: Ravi Mehta — AI ad network builder + +### Role +Engineering lead at an AI ad network startup (think Kontext or Koah). His company aggregates ad inventory across multiple AI platforms — AI assistants, AI search engines, generative AI experiences — and sells it to agencies and brands through a unified interface. + +### Background +Ravi's company has partnerships with a dozen AI platforms that serve ads in their conversational and search experiences. The company's value prop is aggregation: agencies don't want to integrate with each AI platform individually, and AI platforms don't want to build their own sales teams. His ad network sits in the middle — accepting advertiser data (catalogs, budgets, brand guidelines) from agencies and distributing it to the right AI platforms. + +He's been building custom integrations with each AI platform and each agency. It doesn't scale. He heard about AdCP from a partner platform that's considering implementing it. He's evaluating whether AdCP could be the standard interface on both sides of his business: buyer agents pushing data in via AdCP on the demand side, and his network pushing that data out to AI platforms on the supply side. + +He knows ad tech deeply (ran ad ops at a mid-size SSP before this) and has built MCP servers before (his company already has an MCP-based prototype). He's technically fluent and reads protocol specs directly. + +### What he already knows +- How ad networks aggregate supply and demand +- The difference between first-party platforms (walled gardens) and networks (multi-platform) +- MCP basics — he's built an MCP server, understands tool exposure, knows how clients connect +- Traditional programmatic: OpenRTB, prebid, SSP/DSP mechanics +- His company's pain: custom integrations per platform and per agency don't scale +- That AI platforms generate creative from brand data — his network needs to pipe that data through +- Account management across multiple advertisers and platforms +- OAuth, API key management, multi-tenant architecture + +### What he doesn't know +- That AdCP has a specific `sponsored_intelligence` channel for his use case +- How `sync_catalogs` standardizes the catalog pipe he's been building custom for each platform +- How the accounts model works for a network (buyer-declared accounts, agent-trusted model) vs. a first-party platform (account-id namespace, walled garden) +- How `adagents.json` works — he needs it for buyer agents to discover his network, and he needs to understand it from the AI platforms he connects to +- How governance policies flow through a network — do brands push content standards to his network, and does his network push them to each AI platform? +- How `optimization_goals` and `sync_event_sources` work across the network boundary — his network aggregates delivery data from multiple platforms +- Whether AdCP handles the network topology: buyer agent → ad network → AI platform, or if it assumes direct buyer-to-seller +- How Sponsored Intelligence works when the AI platform hosts the session but the brand was introduced through his network + +### Misconceptions and blind spots +- **Assumes AdCP is buyer-to-seller only.** His business is a network in the middle. He's worried the protocol doesn't account for intermediaries — that he'd have to pretend to be either a buyer or a seller. +- **Thinks accounts are simple.** His network manages accounts on behalf of agencies who manage accounts on behalf of brands. He's used to this complexity but doesn't know how AdCP's account model handles multi-level delegation. +- **Assumes he needs to build the catalog pipe himself.** He's been building custom catalog sync integrations with each AI platform. Doesn't realize `sync_catalogs` is a standard that could work on both sides of his business. +- **Conflates his network's products with the underlying platform's products.** He sells "sponsored responses across AI assistants" as a single product, but each underlying AI platform has its own product IDs, pricing, and formats. He needs to understand how to model aggregated products in AdCP. +- **Thinks governance is pass-through.** Assumes he just forwards brand safety rules from buyer to platform. Doesn't know about governance policies as structured objects that his network could enforce at the routing layer before forwarding to platforms. + +### Primary goal +Determine whether AdCP works for a network topology (buyer → network → platform). If yes, understand how to model his business: how does his network appear to buyers (as a seller agent), how does it interact with AI platforms (as a buyer or operator), and how do catalogs, accounts, and governance flow through the network layer. + +### Key questions he'd ask +1. "Does AdCP support a network in the middle, or is it strictly buyer-to-seller?" +2. "How do I model my ad network's products when they aggregate across multiple AI platforms?" +3. "How do accounts work for a network? Agencies have accounts with me, I have accounts with each AI platform." +4. "Can I use `sync_catalogs` on both sides — accept catalogs from agencies and forward them to AI platforms?" +5. "How do governance policies and content standards flow through a network?" +6. "How does delivery reporting work when I'm aggregating across multiple platforms?" +7. "What does my `adagents.json` look like? I represent multiple publisher properties that aren't mine." +8. "How does SI work when I'm the intermediary — the brand was introduced through my network but the session runs on the AI platform?" +9. "What's the account model — `require_operator_auth: false` since I'm agent-trusted?" +10. "Are there other networks using AdCP or am I the first?" + +### Pages he'd likely visit +1. `/docs/sponsored-intelligence/overview` — Core page, looking for network-specific guidance +2. `/docs/building/implementation/seller-integration` — How to appear as a seller to buyer agents +3. `/docs/accounts/overview` — Network account model (agent-trusted, buyer-declared accounts) +4. `/docs/building/integration/accounts-and-agents` — Multi-level account delegation +5. `/docs/creative/catalogs` — Catalog sync mechanics for pass-through +6. `/docs/governance/overview` — How governance flows through intermediaries +7. `/docs/media-buy/product-discovery/media-products` — Modeling aggregated products +8. `/docs/media-buy/advanced-topics/accounts-and-security` — `adagents.json` for networks +9. `/docs/protocol/get_adcp_capabilities` — What capabilities a network declares +10. `/docs/sponsored-intelligence/overview` — SI through a network intermediary +11. `/docs/building/integration/mcp-guide` — MCP server patterns (he's familiar but wants AdCP-specific guidance) +12. `/docs/reference/media-channel-taxonomy` — `sponsored_intelligence` channel definition + +### Success criteria +- He understands how his network appears to buyers (seller agent with buyer-declared accounts) and how it interacts with AI platforms (operator with account-id namespaces on each platform) +- He can model his aggregated products — products that span multiple underlying AI platforms with different pricing +- He knows how catalogs flow through: buyer → his network → AI platform, using `sync_catalogs` on both legs +- He understands the governance flow — content standards from brands can be enforced at his network layer and forwarded to platforms +- He can explain the account chain: brand → agency → his network → AI platform, and how AdCP models each relationship +- He has enough to architect the AdCP integration on both sides of his business +- Total time from landing to "I can write an architecture doc": under 90 minutes + +--- + +## Persona 3: Tomoko Hayashi — AI platform ad infrastructure lead + +### Role +Senior product manager on the ads team at a major AI assistant platform. Think ChatGPT-scale: hundreds of millions of users, strong commercial intent signals, and leadership has decided to build an ad-supported tier. She's responsible for the demand-side architecture — how advertiser data and budgets flow into the platform. + +### Background +Tomoko's team has already built the serving infrastructure — the platform can render sponsored responses, inject contextual recommendations, and handle brand experience sessions. The LLM is good at generating relevant, on-brand content when it has the right inputs. The hard problem now is plumbing: how do hundreds of advertisers get their product catalogs, conversion events, brand guidelines, and content standards into the platform at scale? And how do agencies and their AI agents discover the platform's ad products and execute buys programmatically? + +She's evaluated two approaches: (1) build a proprietary API and let each buyer integrate one-by-one, or (2) adopt an open standard so any compliant buyer agent can plug in. She's looking at AdCP for option 2. She's also been pitched by traditional SSPs (prebid, GAM) and is skeptical — the bid request model sends thin signals out to a remote decision-maker that doesn't have the conversation context. Her platform has the context. She wants the data to come to her. + +### What she already knows +- Her platform's LLM capabilities — what it can generate when given the right brand data and context +- How ad serving works internally on her platform (sponsored response ranking, context matching, session management) +- The scale problem: onboarding advertisers one-by-one through a proprietary API doesn't scale +- That traditional programmatic (bid requests out, ads back) is a poor fit because the remote bidder doesn't have conversation context +- Basic ad tech: CPM, CPC, cost-per-engagement, fill rate, frequency capping +- That her platform needs advertiser product data to generate good ads — they've been scraping it manually for early tests +- OAuth, API design, webhook patterns — she's technical enough to evaluate protocol specs + +### What she doesn't know +- That AdCP has a specific `sponsored_intelligence` channel designed for her platform's use case +- How `sync_catalogs` works as the standard pipe for getting advertiser product data in at scale +- How `sync_event_sources` lets advertisers push conversion signals in so the platform can optimize on real outcomes +- How governance policies let brands push content standards in — suitability rules the platform enforces at generation time +- How `brand.json` provides brand identity (voice, visual guidelines, positioning) that improves generated creative quality +- That `optimization_goals` on media buys tell the platform what success looks like for each campaign +- What MCP is and how it differs from building a REST API (she's been assuming she'd build REST) +- How `adagents.json` works for buyer agents to discover her platform +- How accounts work — whether she should require OAuth per advertiser or let buyer agents declare brands +- That Sponsored Intelligence is a separate protocol for multi-turn brand experiences, not just "fancy sponsored responses" + +### Misconceptions and blind spots +- **Thinks the choice is proprietary API vs. SSP.** Doesn't yet see that AdCP is a third option: an open standard designed for her exact use case — receiving data in, not sending bid requests out. +- **Assumes she needs to build a REST API.** Doesn't know MCP exists as a transport that AI agents already speak natively. Her platform's buyer agents are LLMs — they already know how to call MCP tools. +- **Underestimates the catalog problem.** Her team has been manually onboarding product feeds from early advertisers. She knows this doesn't scale but doesn't realize `sync_catalogs` solves it as a standard. +- **Thinks of brand safety as a blocklist.** Doesn't know about governance policies that let brands push suitability rules into the platform — rules the LLM enforces during creative generation, not as post-hoc filtering. +- **Conflates sponsored responses with SI.** Thinks brand experience handoffs are just richer sponsored responses. Doesn't understand that SI is a separate session lifecycle where the brand's own agent takes over the conversation. +- **Assumes conversion tracking requires her own pixel/SDK.** Doesn't know `sync_event_sources` lets advertisers push their existing conversion data in so the platform can optimize without building its own measurement stack. +- **Hasn't thought about the "why not just do programmatic?" question from the other side.** She needs to articulate to her leadership why AdCP is better for her platform than integrating with an SSP — the answer is that programmatic sends thin signals out while AdCP brings rich data in, and her LLM can use that data to make better ad decisions than any remote bidder could. + +### Primary goal +Decide whether to adopt AdCP as the standard interface for her platform's demand-side plumbing. If yes, understand what she needs to build (MCP server, account model, catalog ingestion, product schema) and how it compares to the alternative (proprietary REST API or SSP integration). Write a technical design doc her engineering team can act on. + +### Key questions she'd ask +1. "How does AdCP get advertiser product data into my platform? Is there a standard for catalog sync?" +2. "Can advertisers push conversion events in so we can optimize on real outcomes instead of proxy metrics?" +3. "How do brand safety and content standards work? Can brands push suitability rules that my LLM enforces during creative generation?" +4. "Why would I adopt an open standard instead of building my own API? What do I get?" +5. "What's MCP and why would I build an MCP server instead of a REST API?" +6. "How do buyer agents discover my platform and its ad products?" +7. "What's the account model? Do I need OAuth per advertiser or is there a simpler path?" +8. "What's the difference between sponsored responses and Sponsored Intelligence?" +9. "Why is this better than integrating with a traditional SSP? How do I explain this to my leadership?" +10. "Who else is doing this? Are there reference implementations?" + +### Pages she'd likely visit +1. `/docs/intro` — Starting point, looking for AI-specific framing +2. `/docs/sponsored-intelligence/overview` — The core page for her use case — expects to find the reversed data flow argument, catalog sync, governance, and product modeling +3. `/docs/creative/catalogs` — Deep dive on catalog sync — this is her biggest operational pain point +4. `/docs/building/implementation/seller-integration` — What she'd need to build as a seller agent +5. `/docs/governance/overview` — How content standards work as an "oracle" the platform queries/receives +6. `/docs/media-buy/media-buys/optimization-reporting` — How optimization goals and conversion events work +7. `/docs/accounts/overview` — Understanding account models (walled garden vs. agent-trusted) +8. `/docs/building/integration/mcp-guide` — Why MCP instead of REST, what an MCP server looks like +9. `/docs/sponsored-intelligence/overview` — Understanding the SI session lifecycle vs. sponsored responses +10. `/docs/media-buy/product-discovery/media-products` — How to model her inventory as products +11. `/docs/protocol/get_adcp_capabilities` — What capabilities she'd declare +12. `/docs/building/understanding/adcp-vs-openrtb` — Ammunition for the "why not SSP?" conversation with leadership + +### Success criteria +- She can articulate to her leadership why AdCP is better for her platform than SSP integration — the reversed data flow argument: "We have the conversation context. AdCP brings us the brand data, conversion signals, and suitability rules so our LLM can make great ad decisions locally. SSPs would make us send thin bid requests to a remote system that doesn't have our context." +- She understands the data pipes: `sync_catalogs` for product data, `sync_event_sources` for conversion signals, governance policies for content standards, `brand.json` for brand identity, `optimization_goals` for success definitions +- She can describe the account model she'd implement and why (walled garden with OAuth, since she's a first-party platform) +- She knows the difference between implementing sponsored responses (product-level, catalog-driven) and SI (session-level, brand agent handoff) +- She can spec the MCP server her team would build: which tasks to implement, which capabilities to declare, how catalog ingestion maps to her existing infrastructure +- She has a clear comparison: AdCP (open standard, data flows in, any buyer agent can plug in) vs. proprietary API (custom per buyer, same data flow but no ecosystem) vs. SSP (wrong direction — sends signals out) +- Total time from landing to "I can write a technical design doc": under 90 minutes + +--- + +## Persona 4: Daniela Reyes — Agency trading desk exec + +### Role +VP of Programmatic at a mid-size independent agency. Her team manages $200M+ in annual digital spend across 30+ brands. She reports to the CEO and sits on the agency's AI transformation committee. + +### Background +Daniela came up through trading desks — she ran programmatic operations at a holding company before joining this independent shop. She knows DSPs, SSPs, OpenRTB, and prebid inside and out. Her team is 15 traders and 3 engineers who maintain custom bidding algorithms and reporting dashboards. + +She's been hearing about "AI media" from clients and at industry conferences. Two of her largest clients (a CPG brand and a financial services company) have asked her team to "figure out how to buy ads on ChatGPT and Perplexity." She tried to set up direct deals with those platforms but each requires a different API, different creative specs, different reporting formats. She's looking for a standard way to buy across AI surfaces the same way her team buys across traditional programmatic. + +She's not an engineer — she doesn't write code. But she evaluates technology, makes buy/build decisions, and briefs her engineering team on what to implement. She reads docs at the conceptual level, skims schemas for shape, and focuses on workflow, economics, and competitive advantage. + +### What she already knows +- Programmatic advertising deeply: DSPs, SSPs, ad exchanges, OpenRTB bid/response flow +- Campaign management: flights, budgets, pacing, optimization, frequency capping +- Creative trafficking: tag management, VAST/VPAID, DCO +- Measurement: viewability, brand safety vendors (IAS, DV), attribution, MMM +- Agency economics: margins, managed service vs. self-serve, platform fees +- That AI platforms are a new media channel and clients are asking for it +- That the current approach (direct deals per platform) doesn't scale + +### What she doesn't know +- That AdCP exists as a standard for AI media buying +- What "reversed data flow" means and why it matters for her agency +- That her team could use a single buyer agent to buy across multiple AI platforms +- How catalogs replace creative tags — instead of trafficking assets, you push product data +- That AI platforms generate the creative from her brand's data +- How accounts work across platforms — does she need separate logins everywhere? +- What governance looks like in AI media — are IAS and DV relevant, or is it different? +- That optimization goals replace the DSP optimization algorithms she's used to +- What MCP is and why it matters (she thinks in terms of APIs and dashboards) +- That Sponsored Intelligence exists as a deeper brand engagement format +- How pricing works — is it auction-based like RTB, or fixed, or something else? + +### Misconceptions and blind spots +- **Maps everything to programmatic.** She'll try to understand AdCP through the lens of DSPs and SSPs. "So the buyer agent is like a DSP?" "Is adagents.json like ads.txt?" Some of these analogies help, some mislead. +- **Expects a UI.** She's used to DSP dashboards. The idea that her buyer agent does everything programmatically, without a campaign management UI, is unfamiliar. She'll want to know where the dashboard is. +- **Thinks creative is her job.** In traditional programmatic, the agency builds creative and traffics it. In AI media, the platform generates creative from brand data. This is a big mental shift. +- **Assumes brand safety means the same vendors.** She'll look for IAS/DV integration. The idea that governance is built into the protocol (content standards enforced at generation time) rather than bolted on as third-party verification is new. +- **Underestimates the catalog workflow.** She thinks of product feeds as a retail media thing. Doesn't realize that ALL AI media buying starts with pushing catalogs and brand data into platforms. +- **Thinks of AI media as "just another channel."** She'll want to add it to her existing programmatic stack as a new line item. The paradigm shift — data flows in, not bid requests out — requires rethinking the workflow, not just adding a channel. + +### Primary goal +Understand whether AdCP is the right standard for her agency to adopt for AI media buying. Build a business case for her CEO and a technical brief for her engineering team. Figure out the competitive advantage: if she adopts this before other agencies, does she win? + +### Key questions she'd ask +1. "How is buying ads on AI platforms different from buying on a DSP?" +2. "Is there a standard way to buy across ChatGPT, Perplexity, and other AI platforms?" +3. "What does a campaign workflow look like? Where does my team fit?" +4. "Do I still need to build creative, or does the platform handle that?" +5. "How does brand safety work? Can I use IAS/DV?" +6. "What's the pricing model? Is it auction-based?" +7. "How do I report on this? Can I get it into my existing dashboards?" +8. "What do I need my engineering team to build?" +9. "How do accounts and billing work across multiple platforms?" +10. "Is anyone else doing this? What's the competitive landscape?" + +### Pages she'd likely visit +1. `/` — Homepage, looking for "what is this and why should I care" +2. `/docs/intro` — Orientation, hoping for a clear value prop +3. `/docs/building/understanding/adcp-vs-openrtb` — Directly answers her "how is this different" question +4. `/docs/sponsored-intelligence/overview` — The core guide for her use case (she's the buyer) +5. `/docs/sponsored-intelligence/workflow` — Wants to see what the workflow looks like, even if she won't code it +6. `/docs/building/implementation/seller-integration` — Might read this to understand the other side +7. `/docs/governance/overview` — How brand safety works in this world +8. `/docs/creative/catalogs` — Understanding the catalog workflow +9. `/docs/accounts/overview` — How multi-platform billing works +10. `/docs/reference/media-channel-taxonomy` — Looking for `sponsored_intelligence` in the channel list + +### Success criteria +- She can explain to her CEO why AI media is different from adding a new DSP, and why adopting a standard matters +- She can brief her engineering team on what to build: "We need a buyer agent that speaks AdCP. Here's the workflow: push catalogs, discover products, create media buys, pull delivery reports." +- She understands the creative paradigm shift: agencies provide brand data and catalogs, platforms generate creative +- She knows the governance model: content standards are protocol-level, generation-time enforcement, not third-party bolt-ons +- She can estimate the engineering investment and timeline for her 3-person eng team +- She sees the competitive advantage: first agency to have a working buyer agent can serve client demand for AI media faster than agencies doing direct deals +- Total time from landing to "I can present this to my CEO": under 60 minutes + +--- + +## Persona 5: James Okafor — Brand media transformation leader + +### Role +Global head of media at a Fortune 500 consumer electronics brand. Reports to the CMO. Manages a $500M annual media budget across three agency partners and a growing in-house team. He chairs the brand's "Media of the Future" initiative. + +### Background +James has been in brand-side media for 15 years, moving from media planner to running the entire function. He's navigated every major shift: programmatic, social, retail media, CTV. He knows the agency relationship well — he briefs agencies on strategy and KPIs, they execute campaigns and report back. His in-house team handles retail media (Amazon, Walmart) directly and is experimenting with bringing more programmatic in-house. + +His CMO has flagged AI media as the next priority. Consumers are increasingly using AI assistants to research and buy products. His brand's products are showing up in AI-generated responses — sometimes accurately, sometimes not. He wants to move from "hope the AI mentions us correctly" to "actively reach consumers in AI experiences with accurate brand messaging." + +He's not technical. He thinks in terms of media strategy, brand equity, consumer journeys, and ROAS. He evaluates technology through the lens of business outcomes, agency relationships, and organizational readiness. + +### What he already knows +- Media strategy and planning at scale: reach, frequency, GRPs, cross-channel allocation +- Agency management: briefing, negotiation, performance evaluation, fee structures +- Retail media: he's been through the learning curve of Amazon Ads, Walmart Connect, Instacart Ads +- Brand safety as a business risk: he's had brand safety incidents and knows the cost +- That consumers are using AI assistants to research purchases in his category +- That his competitors are starting to experiment with AI advertising +- The in-house vs. agency dynamic: some capabilities are better owned, others are better outsourced + +### What he doesn't know +- What AdCP is or that a standard exists for AI advertising +- How AI advertising actually works — he's seen demos but doesn't understand the mechanics +- That the creative is generated by the AI platform from his brand's data (catalogs, brand guidelines) +- That he can push his brand's content standards into AI platforms to control how his brand appears +- That "catalog quality drives ad quality" — his product data is the creative input +- How governance works differently in AI media (generation-time enforcement vs. post-hoc verification) +- That Sponsored Intelligence lets his brand have multi-turn conversations with consumers +- How pricing works on AI platforms — it's not the same as programmatic auctions +- What his agencies need from him to execute AI media campaigns (catalogs, brand.json, content standards) +- That the organizational model for AI media looks more like retail media (data + content) than traditional programmatic (creative + targeting) + +### Misconceptions and blind spots +- **Thinks AI advertising is banner ads in AI apps.** Imagines display ads next to ChatGPT's responses. Doesn't realize the AI generates the ad from his brand data — the "ad" is a sponsored response that looks and feels native to the AI experience. +- **Assumes his agencies already know how to do this.** They don't. AI media is new enough that his agencies are figuring it out too. He needs to understand enough to evaluate their proposals and push them in the right direction. +- **Thinks brand safety means the same thing.** In traditional media, brand safety = avoiding bad content adjacency. In AI media, brand safety = controlling how the AI talks about your brand. Different problem, different solution. +- **Underestimates the data requirement.** His team manages product feeds for retail media and a DAM for creative assets. He doesn't realize that AI media requires even richer brand data — product catalogs, brand voice guidelines, content standards — and that the quality of this data directly determines ad quality. +- **Assumes it's an agency problem.** He'll want to brief his agency and have them figure it out. But AI media requires brand-side inputs (catalogs, brand identity, content standards) that the agency can't generate. He needs to own the data pipeline. +- **Thinks Sponsored Intelligence is fancy retargeting.** Needs to understand that SI is a new engagement model — the consumer has a conversation with his brand inside an AI assistant. + +### Primary goal +Understand what AI advertising is, whether his brand should invest, and what organizational changes are needed. Build the business case for the CMO. Brief his agencies on what to do differently. Identify what his in-house team needs to own vs. delegate. + +### Key questions he'd ask +1. "What is AI advertising and how is it different from what we do today?" +2. "How do consumers experience ads in AI assistants?" +3. "Can I control how the AI talks about my brand?" +4. "What data does my team need to provide?" +5. "How does brand safety work when the AI generates the creative?" +6. "What should I ask my agencies to do?" +7. "How do I measure this? Can I get ROAS?" +8. "What does pricing look like compared to programmatic?" +9. "Is there a way to test this without a big investment?" +10. "What are my competitors doing?" + +### Pages he'd likely visit +1. `/` — Homepage, looking for the big picture +2. `/docs/intro` — "Explain this to me like I'm a CMO" +3. `/docs/sponsored-intelligence/overview` — Core guide, but may bounce if it's too technical +4. `/docs/building/understanding/adcp-vs-openrtb` — Wants the comparison to what he knows +5. `/docs/creative/catalogs` — Understanding what data his team needs to provide +6. `/docs/governance/overview` — Brand safety and content standards (high priority for him) +7. `/docs/governance/content-standards/overview` — Deep dive on brand control +8. `/docs/sponsored-intelligence/overview` — Understanding the conversational engagement model +9. `/docs/creative/brand-json` — What brand identity data he needs to create +10. `/docs/learning/basics/intro` — Might try the certification to learn structured content + +### Success criteria +- He can explain to his CMO what AI advertising is and why it's different from programmatic — not just "ads in AI apps" but "AI generates ads from our brand data" +- He understands the organizational implications: his team needs to own brand data quality (catalogs, brand identity, content standards) the same way they own retail media product feeds +- He can brief his agencies: "We need you to build or adopt a buyer agent that speaks AdCP. Here's what we'll provide: product catalogs, brand.json, content standards. Here's what we expect: AI media campaigns across the major AI platforms with delivery reporting." +- He knows the governance story: "We push our content standards into AI platforms. They enforce them at generation time. No more hoping the AI says the right thing about our brand." +- He sees Sponsored Intelligence as a new consumer engagement channel, not just ads +- He can articulate the competitive risk: "If we don't invest in AI media data quality now, our competitors will have better-performing ads in AI experiences because their brand data is richer" +- He has a phased plan: (1) audit brand data readiness, (2) pilot with one agency on one AI platform, (3) scale through AdCP standard +- Total time from landing to "I can present this to the CMO": under 45 minutes + +--- + +## Persona 6: Priya Sharma — SMB e-commerce founder + +### Role +Founder and sole operator of a direct-to-consumer skincare brand. Runs on Shopify. Does $2M annual revenue. Handles marketing herself with occasional freelance help. Has a product catalog of 40 SKUs. + +### Background +Priya built her brand on Instagram and Google Shopping. She manages her own Meta Ads, Google Ads, and recently started on Amazon. Each platform has its own ad manager, its own creative requirements, its own pixel/conversion setup. It's manageable at three platforms, but she's hearing from her customers that they found her products through ChatGPT and Perplexity recommendations — and she has no presence there. No ads, no brand profile, no control over how her products are described. + +She looked into advertising on ChatGPT and found it requires a direct sales relationship. Perplexity has a different program. Every AI platform is different. She doesn't have an agency, she doesn't have engineers, and she doesn't have time to set up and manage five more platforms individually. + +She's technically capable — she can configure Shopify apps, set up Meta pixels, use Zapier — but she doesn't write code. She thinks in terms of "connect my store to this platform" and "set a budget and let it run." + +### What she already knows +- How to run ads on Meta, Google, and Amazon — campaign setup, budgets, targeting, creative +- That Shopify has app integrations that connect her store to ad platforms +- Product feed management — she maintains her Google Merchant Center feed +- Basic measurement: ROAS, CPA, attribution windows +- That her products are appearing in AI assistant responses, sometimes with wrong prices or discontinued items +- That she can't currently control or improve how AI platforms represent her brand + +### What she doesn't know +- That AdCP exists or what "agentic advertising" means +- That there's a standard way to connect to multiple AI platforms at once +- That her existing Shopify product feed is basically a catalog she could push to AI platforms +- That AI platforms generate ads from her product data — not from creative she uploads +- That brand.json could establish her brand identity across all AI platforms +- That content standards could prevent AI platforms from making claims about her products she hasn't approved +- That she'd likely work through a partner (ad network, Shopify app) rather than implementing AdCP directly +- What MCP or A2A are — she thinks in terms of apps and integrations, not protocols + +### Misconceptions and blind spots +- **Thinks advertising on AI platforms means a dashboard.** She expects something like Meta Ads Manager — upload creative, set targeting, set budget, launch. The idea that AI platforms generate the ad from her data is unfamiliar. +- **Assumes she needs to do it platform by platform.** Just like she has separate accounts on Meta, Google, and Amazon, she assumes she'd need separate accounts on ChatGPT, Perplexity, Claude, Gemini, etc. +- **Doesn't realize her product feed is already most of what she needs.** Her Google Merchant Center feed has titles, descriptions, prices, images, availability. That's a product catalog. She just needs to push it to AI platforms through a standard pipe. +- **Thinks she can't afford this.** Associates "AI advertising" with enterprise budgets. Doesn't know that AI ad networks could let her start with $500/month across multiple platforms. +- **Underestimates the brand control problem.** Her products are already being discussed in AI conversations — sometimes incorrectly. She hasn't connected this to the opportunity: if she pushes accurate product data AND brand guidelines, the AI has the right information instead of guessing. + +### Primary goal +Figure out if she can advertise on AI platforms without hiring an agency or an engineer. Understand what she'd need to provide (her product data, her brand info) and who would help her do it (a Shopify app, an ad network, a partner). Start small and see if it works. + +### Key questions she'd ask +1. "Can I advertise on ChatGPT and Perplexity? How?" +2. "Do I need an agency or can I do this myself?" +3. "Can I just connect my Shopify store?" +4. "How much does it cost to get started?" +5. "Do I need to make new creative or does the AI do that?" +6. "How do I make sure the AI gets my products right — prices, descriptions, availability?" +7. "Can I control what the AI says about my brand?" +8. "How do I know if it's working? Can I see ROAS?" +9. "Is there a Shopify app for this?" +10. "What's the difference between this and just doing Google Ads?" + +### Pages she'd likely visit +1. `/` — Homepage, looking for plain-language explanation +2. `/docs/intro` — Might bounce if too technical +3. `/docs/sponsored-intelligence/overview` — If the buyer section catches her, she'll read it +4. `/docs/creative/catalogs` — Wants to know if her Shopify feed works +5. `/docs/brand-protocol/brand-json` — Wants to control her brand representation +6. `/docs/governance/overview` — Wants to prevent AI from making wrong claims about her products +7. `/docs/learning/overview` — Might try the basics to understand the landscape + +### Success criteria +- She understands that her existing product feed is the main ingredient she needs +- She knows she'd work through a partner (ad network, Shopify app) that handles the protocol plumbing +- She sees the value: one integration (through a partner) reaches all AI platforms vs. setting up each one individually +- She understands the brand control story: push accurate data and guidelines so AI platforms represent her brand correctly +- She's not scared off by protocol jargon — the content meets her where she is +- She has a clear next step: find an AdCP-connected partner that works with Shopify +- Total time from landing to "I know what to do next": under 20 minutes + +--- + +## Persona 7: Lisa Tran — Non-coder doing a build project + +### Role +VP of Digital at a mid-market retail brand. Manages the brand's digital media strategy and vendor relationships. Comfortable with AI coding assistants (uses Cursor daily for internal tooling prototypes) but has never written TypeScript or JavaScript by hand. + +### Background +Lisa completed the C-track certification modules (C1-C3) and is starting the C4 build project. She's used Cursor to build small internal tools — Slack bots, spreadsheet automations, simple dashboards — by describing what she wants and iterating on the output. She's never read a stack trace, doesn't know what `npm` is, and thinks of "running code" as "it works when I press play in Cursor." + +She passed C1-C3 because the material is conceptual — buying workflows, product discovery, campaign strategy. C4 asks her to build a working buyer agent. She understands what the agent should do (discover products, create media buys, sync creatives) but the gap between "I can describe it" and "it runs" is where she'll struggle. + +### What she already knows +- AdCP buying concepts from C1-C3: product discovery, media buys, creative sync, targeting, optimization goals +- How to describe what she wants to an AI coding assistant in plain language +- The iterate-with-AI workflow: describe → generate → test → describe again +- Her brand's media buying needs — she has real context for the scenario +- That `@cptestagent` is the sandbox seller she'll test against + +### What she doesn't know +- What a "running MCP server" means or how to verify one is running +- How to read error messages — she'll see `TypeError: Cannot read properties of undefined` and not know what to do +- That `npm install` or `pip install` might be needed before the code runs +- How to "paste JSON responses back" — she may not know what JSON looks like vs. other terminal output +- That her AI coding assistant needs the adcp client library specified in the prompt +- How to connect her local agent to Addie for the validation phase + +### Where she'll get stuck +- **First build attempt fails.** Her AI coding assistant produces code that doesn't run. She sees an error in the terminal but doesn't know which part is the error vs. normal output. +- **Doesn't know how to iterate.** She knows how to iterate in Cursor for simple tools, but a multi-file TypeScript project with dependencies is different from a single-file Slack bot. +- **Confuses specification problems with code problems.** If the agent doesn't handle error cases, is that because her specification was incomplete or because the AI coding assistant made a mistake? She can't tell. +- **Validation phase is confusing.** "Run this MCP tool call against your local agent" — she doesn't know what that means mechanically. + +### What she needs from Sage +- **Phase 1 (Specify)**: She'll do well here. She can describe a buying workflow in AdCP terms. Sage should confirm her specification is complete enough for the coding assistant. +- **Phase 2 (Build)**: When the build fails, she needs Sage to teach the debug loop — not debug for her. "Copy that error message, paste it back to Cursor, and say 'this error appeared when I tried to run it.'" If it fails again, "Tell Cursor what you're trying to build and that it should fix the error." She needs to learn that 2-3 cycles is normal, not a sign she's failing. +- **Phase 3 (Validate)**: She needs clear, mechanical instructions. Not "run get_products against your agent" but guidance on exactly how to invoke the tool and what output to copy back. +- **Phase 4 (Explain)**: She'll do well here — she understands the concepts. +- **Phase 5 (Extend)**: Same pattern as Phase 2 — specify the change, iterate with the coding assistant, bring back results. + +### Success criteria +- She completes the build project without anyone writing code for her +- She learns the debug loop: error → paste to assistant → iterate +- She's not blocked for more than 5 minutes on any mechanical step +- The experience feels like coaching, not like failing at engineering +- She'd recommend the certification to a peer who also doesn't code diff --git a/dist/docs/3.2.0-beta.4/learning/tracks/buyer.mdx b/dist/docs/3.2.0-beta.4/learning/tracks/buyer.mdx new file mode 100644 index 0000000000..79008da40a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/tracks/buyer.mdx @@ -0,0 +1,322 @@ +--- +title: "Buyer / brand track" +sidebarTitle: Buyer track +description: "AdCP buyer track (C1-C4): multi-agent buying orchestration, brand identity protocols, creative workflows, sponsored intelligence, and a buyer agent build project." +"og:title": "AdCP — Buyer / brand track" +--- + +# Buyer / brand track (C1–C4) + +<Info> +**Members only** — Requires Basics credential (A1–A3). Four modules, ~105 minutes total. +</Info> + +This track teaches you the demand side of AdCP. You'll learn how buyer agents orchestrate across multiple sellers, how brand identity and compliance protocols work, and how creative workflows and Sponsored Intelligence fit together. The track culminates in a build project where you create a working buyer agent. + +Completing this track (plus A1–A3) earns the **AdCP practitioner** credential. + +--- + +## C1: Multi-agent buying and media planning + +**~20 min** | Prerequisite: A3 + +How buyer agents orchestrate across multiple sales agents simultaneously: discovery, portfolio allocation, proposals, and measuring reach across publishers. + +### Reading list + +<CardGroup cols={2}> + <Card title="Media buy overview" icon="shopping-cart" href="/dist/docs/3.2.0-beta.4/media-buy/index"> + The media buy protocol: how agents discover, negotiate, and execute advertising campaigns. + </Card> + <Card title="get_products task" icon="magnifying-glass" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products"> + Product discovery from multiple sellers — the first step in any buying workflow. + </Card> + <Card title="create_media_buy task" icon="receipt" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy"> + Campaign creation: manual mode, proposal mode, validation, and approval lifecycle. + </Card> + <Card title="Orchestrator design" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design"> + Architecture patterns for agents that coordinate across multiple sellers. + </Card> + <Card title="Pricing models" icon="tag" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models"> + `pricing_options[]` on products, buyer selects by `pricing_option_id`: CPM, vCPM, CPP, CPA, flat rate, time. + </Card> + <Card title="Accountability terms" icon="handshake" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability"> + `performance_standards`, `measurement_terms`, and `cancellation_policy` — negotiable on guaranteed buys. + </Card> + <Card title="Targeting" icon="crosshairs" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting"> + Targeting options, audience overlays, and geo-targeting. + </Card> + <Card title="Buyer briefs" icon="filter" href="/dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products"> + Decide what belongs in briefs, filters, current targeting, and future targeting support. + </Card> + <Card title="Version negotiation" icon="code-branch" href="/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation"> + Declare `adcp_major_version` on requests; sellers respond with `VERSION_UNSUPPORTED` when incompatible. + </Card> + <Card title="Error handling" icon="triangle-exclamation" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling"> + Error taxonomy: transient, correctable, terminal. Includes `GOVERNANCE_DENIED`, `TERMS_REJECTED`, `VERSION_UNSUPPORTED`. + </Card> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.2.0-beta.4/trusted-match"> + How your campaigns execute at impression time: context match, identity match, and cross-publisher frequency capping. + </Card> + <Card title="TMP Buyer Guide" icon="code" href="/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide"> + Endpoint integration: responding to Context Match and Identity Match requests, structuring offers, provider registration. + </Card> + <Card title="get_media_buys task" icon="list-check" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys"> + Operational monitoring: lifecycle state, creative approvals, valid actions, delivery snapshots. + </Card> +</CardGroup> + +### Key concepts + +- **Multi-agent buying** — query multiple sellers in parallel, compare, allocate, execute +- **Orchestration pattern** — discover, evaluate, allocate, execute, monitor +- **Order lifecycle** — `pending_creatives` → `pending_start` → `active`; check `valid_actions` from `get_media_buys` before acting. S1 covers the full state machine and recovery +- **Version negotiation** — declare `adcp_major_version` on every request; handle `VERSION_UNSUPPORTED` by selecting a compatible seller or downgrading the payload +- **Pricing selection** — products return `pricing_options[]`; buyer selects one via `pricing_option_id` in `create_media_buy` +- **Structured-first discovery** — use `filters` to decide which offers may be returned, `targeting_overlay` to constrain delivery, and `required_overlay_support` for dimensions selected on packages later +- **Resolution acceptance** — no resolution means an exact structured overlay; review `modifications` and brief-derived targeting before selecting an opaque configured `product_id` +- **Negotiated accountability** — for guaranteed buys, propose `measurement_terms` / `performance_standards`; seller accepts, adjusts, or returns `TERMS_REJECTED`. S1 covers the recovery patterns +- **Account required on updates** — `update_media_buy` takes `account` + `media_buy_id`; omitting `account` is a protocol error +- **Audience targeting** — `sync_audiences` for custom segments +- **Impression-time execution** — campaigns activate through TMP at serve time; frequency caps, audience eligibility, and brand suitability are enforced via Identity Match without exposing user data to buyers alongside content context. TMP is an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) in AdCP 3.0 (feature id `trusted_match.core`); the privacy architecture and identity-match details may change between 3.x releases with at least 6 weeks' notice. +- **Account setup** — `sync_accounts` to establish billing before buying + +<Card title="Start C1 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module C1." +</Card> + +--- + +## C2: Brand identity, compliance, and safety + +**~20 min** | Prerequisite: C1 + +The Brand Protocol (`brand.json`), content standards, and how brand agents enforce guidelines across automated buying. + +### Reading list + +<CardGroup cols={2}> + <Card title="Brand protocol" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/brand-protocol/index"> + Brand identity claims, brand.json discovery, brand hierarchy, and brand agents. + </Card> + <Card title="brand.json specification" icon="file-code" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json"> + The brand.json format: identity, logos, colors, guidelines, and agent declarations. + </Card> + <Card title="Seller verification" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/verification/overview"> + How buyer agents verify seller identity and publisher authorization before transacting. + </Card> + <Card title="For advertisers" icon="bullhorn" href="/dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers"> + How advertisers license talent rights through the brand protocol — pricing, scopes, and what you get. + </Card> + <Card title="get_rights task" icon="key" href="/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights"> + Search for licensable talent rights — pricing, availability, and exclusion filtering. + </Card> + <Card title="acquire_rights task" icon="handshake" href="/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights"> + License talent rights: generation credentials, rights constraints, revocation, and approval workflows. + </Card> + <Card title="update_rights task" icon="rotate" href="/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights"> + Extend, adjust, or pause an existing rights grant. + </Card> + <Card title="For rights holders" icon="shield" href="/dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders"> + How rights holders monetize talent through the brand protocol. + </Card> + <Card title="Content standards" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/governance/content-standards/index"> + How content standards define what's appropriate, how calibration works, and local execution. + </Card> + <Card title="calibrate_content task" icon="sliders" href="/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content"> + Testing whether content meets brand standards before placement. + </Card> + <Card title="Policy compliance" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance"> + How compliance is enforced during media buy execution. + </Card> + <Card title="Creative governance" icon="eye" href="/dist/docs/3.2.0-beta.4/governance/creative/index"> + Creative quality and compliance governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + Tie campaigns to media plans: budget authority, multi-party validation, and always-on compliance. + </Card> + <Card title="Policy registry" icon="book" href="/dist/docs/3.2.0-beta.4/governance/policy-registry"> + Community-maintained compliance policies (COPPA, GDPR, HFSS) that brands reference by ID. + </Card> + <Card title="Your measurement & verification stack" icon="ruler-combined" href="/dist/docs/3.2.0-beta.4/reference/known-limitations"> + AdCP's content standards are generation-time brand safety — they do **not** replace your verification vendors. AdCP carries the delivery and usage data your existing IAS, DV, Nielsen, Comscore, and attribution tools consume; you keep those contracts and accreditations. See also the [FAQ](/dist/docs/3.2.0-beta.4/faq). + </Card> +</CardGroup> + +### Key concepts + +- **Brand identity protocol** — `brand.json` at `/.well-known/brand.json` declares identity; buyers use their own brand.json for advertiser identity and sellers' brand.json files for seller identity and signing-key discovery +- **Content standards** — automated compliance checking via MCP-based brand agents +- **The Oracle model** — using AI to evaluate brand safety at scale +- **Supply chain preferences** — suitability, safety, and sustainability requirements +- **Campaign governance** — campaign plans define authorized parameters; `check_governance` validates every transaction before execution, returns a `governance_context` token you attach to the buy envelope, and uses `purchase_type` to scope which rules apply (`media_buy`, `rights_license`, `signal_activation`, `creative_services`) +- **Governance denial recovery** — `GOVERNANCE_DENIED` is a correctable buyer-side decision, not a transport error: fix targeting, creative, or plan reference and retry. S4 goes deeper on the correlation model +- **Policy registry** — shared compliance policies (regulations and standards) referenced by ID, not written per-brand +- **Governance adoption** — governance agents support incremental adoption (audit → advisory → enforce) as an internal configuration, not a protocol field +- **Policy categories** — regulatory regimes (`children_directed`, `fair_housing`, `fair_lending`) that plans declare and governance agents enforce +- **Restricted attributes** — personal data categories (`health_data`, `racial_ethnic_origin`) that must not be used for targeting under applicable policies + +<Card title="Start C2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module C2." +</Card> + +--- + +## C3: Creative workflows + +**~20 min** | Prerequisite: C2 + +How creative assets flow through AdCP: `build_creative`, `preview_creative`, `sync_creatives`. Cross-platform adaptation and the Sponsored Intelligence Protocol. + +### Reading list + +<CardGroup cols={2}> + <Card title="Creative overview" icon="palette" href="/dist/docs/3.2.0-beta.4/creative/index"> + The creative protocol: assets, formats, manifests, creative agents. + </Card> + <Card title="build_creative task" icon="hammer" href="/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative"> + Creative generation and transformation. + </Card> + <Card title="preview_creative task" icon="eye" href="/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative"> + Previewing creatives before deployment. + </Card> + <Card title="sync_creatives task" icon="rotate" href="/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives"> + Synchronizing creative assets with publisher platforms. + </Card> + <Card title="Generative creative" icon="wand-magic-sparkles" href="/dist/docs/3.2.0-beta.4/creative/generative-creative"> + AI-generated creative workflows and best practices. + </Card> + <Card title="Creative agent pricing" icon="money-bill" href="/dist/docs/3.2.0-beta.4/creative/implementing-creative-agents#pricing-walkthrough"> + How creative agents charge: pricing discovery, build costs, and billing reconciliation. + </Card> + <Card title="Canonical formats" icon="shapes" href="/dist/docs/3.2.0-beta.4/creative/canonical-formats"> + Product-level `format_options[]`, `format_kind`, and canonical-first validation for 3.1 creative requirements. + </Card> + <Card title="Sponsored Intelligence" icon="message-bot" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview"> + Conversational brand experiences in AI assistants. + </Card> + <Card title="SI specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification"> + The Sponsored Intelligence protocol: sessions, messages, and offerings. + </Card> +</CardGroup> + +### Key concepts + +- **Creative lifecycle** — `build_creative`, `preview_creative`, `sync_creatives` — callable on any agent implementing the Creative Protocol, including sales agents +- **Preview modes** — `preview_creative` supports single, batch, and variant requests — choose the mode that fits the workflow (S2 covers the tradeoffs) +- **Cross-platform adaptation** — agents adapt assets across display, video, audio, native, and broadcast formats. In 3.1, sellers may publish canonical `format_options[]`; choose `format_kind` by creative shape, then validate the canonical first and the product's narrowing second. S2 covers the hands-on details +- **Seller-side generation** — sales agents can generate creatives at serve time from a brief provided in the media buy +- **Creative pricing** — creative agents can charge for their services. When they do, `list_creatives` returns `pricing_options` from your account's rate card, and `build_creative` returns the cost incurred. See the [creative pricing specification](/dist/docs/3.2.0-beta.4/creative/specification#pricing) for details. +- **Sponsored Intelligence** — brands participate in conversational AI with transparency and user control. SI is an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) in AdCP 3.0 (feature id `sponsored_intelligence.core`); session lifecycle and UI components may change between 3.x releases with at least 6 weeks' notice. + +### Canonical-format buyer glossary + +| Term | Buyer-track meaning | +|------|---------------------| +| `format_kind` | The canonical creative shape a seller accepts, such as `image`, `video_hosted`, or `native_in_feed`. Pick it by the creative you can ship, not by the media channel alone. | +| `format_options[]` | Product-level creative requirements returned by `get_products`. Each option narrows a canonical with seller-specific sizes, slots, selectors, or production constraints. | +| `asset_source` | Who produces the rendered bytes for a canonical asset. Buyers use it to decide whether they upload finished assets or provide a brief/input for seller, publisher, or agent production. | + +S2 goes deeper on [authoring manifests](/dist/docs/3.2.0-beta.4/learning/specialist/creative), `format_option_id` vs creative-agent `capability_id`, and the canonical-first/product-second validation flow. + +### Practice exercise + +1. **Canonical-format selection from `get_products`** — Given a product response that includes multiple `format_options[]`: + - List every available `format_kind` and the buyer-visible product constraints that matter for creative routing + - Select the option that matches the campaign creative shape, using `format_option_id` when the product publishes one + - State the validation order at a high level: canonical shape first, product narrowing second + - Review canonical-format `FORMAT_*` entries in `errors[]` before routing: most are non-fatal advisories, while broken placement references require failing closed for that placement + +| Advisory code | Buyer action | +|---------------|--------------| +| `FORMAT_PROJECTION_FAILED` | The legacy format still exists, but the SDK could not project it to `format_options[]`. Prefer an explicit canonical option when available; otherwise flag the seller or registry gap. | +| `FORMAT_DECLARATION_DIVERGENT` | The seller's v1 and v2 declarations disagree. Prefer `format_options[]` for 3.1 routing, and flag the seller declaration mismatch. | +| `FORMAT_DECLARATION_V1_AMBIGUOUS` | The v2 declaration cannot safely map back to one v1 named format. Do not invent a v1 fallback; use the canonical path or ask the seller to add `v1_format_ref[]`. | +| `FORMAT_OPTION_UNRESOLVED` | A placement references a missing publisher-catalog option. Fail closed for that placement reference and ask the publisher to fix the catalog. | +| `FORMAT_DECLARATION_V1_LOSSY_MULTI_SIZE` | Some v1 size coverage was dropped from a multi-size v2 declaration. Continue only with the surfaced covered sizes, or choose a fully declared option. | + +<Card title="Start C3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module C3." +</Card> + +--- + +## C4: Build project — your first buyer agent + +**~45 min** | Prerequisite: C3 + +Create a working buyer agent that discovers products and executes media buys. Use any AI coding assistant (Claude Code, Cursor, Copilot) with the [`@adcp/sdk`](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) SDK, and point it at the [Build a caller](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller) guide — the buyer/caller-side reference for installing the client, discovering capabilities, and handling responses. The skill tested is orchestrating a buying workflow correctly. + +<Tip> +New to running tool calls and reading JSON in a terminal? Do [A2b: Testing your first agent](/dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent) first — it walks through initializing an MCP session, reading response fields, and telling errors apart from normal output, which this build project assumes you can do. +</Tip> + +### What you'll build + +<Note> +The targeting-aware discovery portion is a 3.2 assessment objective. The public +training seller will enable it after the 3.2 beta SDK release; follow +[issue #6199](https://github.com/adcontextprotocol/adcp/issues/6199). Until +then, validate this portion with schema fixtures rather than assuming the live +training runtime enforces unknown fields. +</Note> + +- Account setup with `sync_accounts` +- Product discovery from at least 2 sellers +- Decomposition of a messy human request into `brief`, `filters`, + `targeting_overlay`, and `required_overlay_support` +- Acceptance/rejection of a disclosed targeting modification and verification + of effective package readback +- Media buy creation with targeting and budget — including a fresh UUID v4 `idempotency_key` per logical buy, and correct retry behavior that resends the identical payload with the same key on network failure (the mechanics of what the seller does with the key — replay, conflict, expired — are taught in [S1: Media buy](/dist/docs/3.2.0-beta.4/learning/specialist/media-buy)) +- Creative sync with at least 1 format +- Campaign monitoring via delivery reporting + +### How you'll validate + +Your buyer agent is a *caller* — it consumes seller tools rather than exposing them. Validate it by pointing your agent at the public test **seller** (`https://test-agent.adcontextprotocol.org/sales/mcp`) and confirming it drives the full workflow end to end: discovers products, creates a media buy, syncs a creative, and reads delivery. + +To see the seller responses your agent must handle, you can inspect the test seller directly. This shows you the shape your buyer agent receives — it does **not** test your agent: + +```bash +# Inspects the test SELLER's get_products response — the shape your buyer agent must parse. +npx @adcp/sdk@latest test-mcp get_products '{"idempotency_key":"550e8400-e29b-41d4-a716-446655442065","buying_mode":"brief","brief":"your campaign brief"}' +``` + +See [Build a caller](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller) for client setup and [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for the storyboard workflow. + +### Validating across sellers + +Buyer agents don't claim specialisms — specialisms describe what sellers offer. But your buyer agent should handle every specialism it expects to transact against. The storyboards a seller passes (declared via `supported_protocols` and `specialisms` in their `get_adcp_capabilities`) tell you what behaviors to expect. + +Review the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) and note which specialisms your target sellers claim — that's your test matrix. + +### Assessment rubric + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Specification quality | 20% | Can you decompose buyer intent into brief, offer filters, current targeting, and later-selectable support? | +| Schema compliance | 25% | Agent requests and responses validate against schemas | +| Error handling | 15% | Handles seller errors and async responses | +| Design rationale | 20% | Can you explain targeting resolution, configured-product acceptance, orchestration, and buying strategy? | +| Extension ability | 20% | Can you extend the agent with new buying capabilities? | + +Passing threshold: 70%. + +Any AI coding assistant is welcome. The build must demonstrate cross-role interaction. + +<Card title="Start C4 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module C4." +</Card> + +--- + +## What's next + +After completing C1–C4, you've earned the **AdCP practitioner** credential. From here you can pursue specialist modules: + +- [S1: Media buy](/dist/docs/3.2.0-beta.4/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.2.0-beta.4/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.2.0-beta.4/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.2.0-beta.4/learning/tracks/platform.mdx b/dist/docs/3.2.0-beta.4/learning/tracks/platform.mdx new file mode 100644 index 0000000000..8105cd2086 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/tracks/platform.mdx @@ -0,0 +1,232 @@ +--- +title: "Platform / intermediary track" +sidebarTitle: Platform track +description: "AdCP platform track (D1-D4): MCP server architecture, supply path verification, agent trust, RTB-to-AdCP migration patterns, and an infrastructure build project." +"og:title": "AdCP — Platform / intermediary track" +--- + +# Platform / intermediary track (D1–D4) + +<Info> +**Members only** — Requires Basics credential (A1–A3). Four modules, ~105 minutes total. +</Info> + +This track is for people building AdCP infrastructure: ad tech platforms, exchanges, data companies, and anyone connecting the ecosystem. You'll learn MCP server architecture, supply chain verification, RTB migration, and build working infrastructure in the build project. + +Completing this track (plus A1–A3) earns the **AdCP practitioner** credential. + +--- + +## D1: MCP server architecture + +**~20 min** | Prerequisite: A3 + +Technical deep dive on building an AdCP-compliant MCP server. Transport options (SSE, Streamable HTTP), tool definition patterns, OAuth/authorization flows, and account management. + +### Reading list + +<CardGroup cols={2}> + <Card title="Building with AdCP" icon="wrench" href="/dist/docs/3.2.0-beta.4/building/index"> + Overview of what it takes to build an AdCP integration. + </Card> + <Card title="MCP integration guide" icon="plug" href="/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide"> + The definitive guide: tool calls, response format, available tools, context management. + </Card> + <Card title="Authentication" icon="lock" href="/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication"> + OAuth 2.0 for agent authentication, token management, and operator credentials. + </Card> + <Card title="Accounts and agents" icon="people-arrows" href="/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents"> + How brands, operators, agents, and accounts relate to each other. + </Card> + <Card title="Context sessions" icon="timeline" href="/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions"> + Managing context across multi-turn agent interactions. + </Card> + <Card title="Schemas and SDKs" icon="box" href="/dist/docs/3.2.0-beta.4/building/schemas-and-sdks"> + JSON Schemas, TypeScript types, and client SDKs for building faster. + </Card> +</CardGroup> + +### Key concepts + +- **MCP server architecture** — exposing AdCP tasks as tools, handling auth, request routing +- **Transport options** — Streamable HTTP for most cases, SSE for real-time updates +- **Capability advertising** — `get_adcp_capabilities` so other agents know what you support +- **Account handling** — managing incoming `sync_accounts` from buyers + +<Card title="Start D1 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module D1." +</Card> + +--- + +## D2: Supply path, trust, and property governance + +**~20 min** | Prerequisite: D1 + +Cryptographic signatures for supply chain verification. How platforms validate agent identity, detect fraud, and ensure trust. The relationship between AdCP and ads.cert. + +### Reading list + +<CardGroup cols={2}> + <Card title="Property governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/property/index"> + Identity, authorization, and data enrichment for participants in AdCP. + </Card> + <Card title="AdAgents.json" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/property/adagents"> + Publisher authorization for which agents may sell or enrich inventory. + </Card> + <Card title="Seller setup" icon="store" href="/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup"> + How brand.json and adagents.json work together for seller identity and supply path verification. + </Card> + <Card title="Seller verification" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/verification/overview"> + Buyer-side walkthrough of signatures, seller brand.json, publisher adagents.json, and mutual assertion. + </Card> + <Card title="Authorized properties" icon="key" href="/dist/docs/3.2.0-beta.4/governance/property/authorized-properties"> + How publishers declare authorized sellers, and how buyers verify them. + </Card> + <Card title="Security" icon="shield" href="/dist/docs/3.2.0-beta.4/building/by-layer/L1/security"> + Security implementation patterns for AdCP servers. + </Card> + <Card title="Accounts and security" icon="user-shield" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security"> + Account-level security, agent and account hierarchies, and access control. + </Card> + <Card title="Property specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/governance/property/specification"> + The formal specification for property governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + Multi-party validation: how platforms implement the governance flow for autonomous transactions. + </Card> + <Card title="Campaign governance specification" icon="file-code" href="/dist/docs/3.2.0-beta.4/governance/campaign/specification"> + The full technical specification: sync_plans, check_governance, report_plan_outcome, audit logs. + </Card> + <Card title="Policy registry" icon="book" href="/dist/docs/3.2.0-beta.4/governance/policy-registry"> + Community-maintained compliance policies that governance agents resolve and enforce. + </Card> +</CardGroup> + +### Key concepts + +- **Agent identity verification** — seller `brand.json` declares the operator, sales endpoints, and signing-key discovery; publisher `adagents.json` declares which agents are authorized for which properties +- **Supply path transparency** — buyer agents verify both sides of the relationship: the operator claims the sales path in `brand.json`, and the publisher confirms it in `adagents.json` +- **ads.cert relationship** — extending cryptographic verification from RTB to agent-to-agent interactions +- **Campaign governance architecture** — implement three-party validation: sync governance agents via `sync_governance`, call `check_governance` before executing, handle all statuses +- **Policy registry integration** — resolve policies by ID, integrate natural language policy text and exemplars into governance agent evaluation + +<Card title="Start D2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module D2." +</Card> + +--- + +## D3: RTB coexistence and migration + +**~20 min** | Prerequisite: D2 + +How AdCP coexists with existing programmatic infrastructure. Migration strategies for DSPs, SSPs, and exchanges. Running parallel systems during transition. + +### Reading list + +<CardGroup cols={2}> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.2.0-beta.4/trusted-match"> + The real-time execution layer: context match, identity match, and cross-publisher activation. + </Card> + <Card title="AdCP and OpenRTB" icon="arrows-left-right" href="/dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb"> + The clearest view of how AdCP campaign workflows connect to impression-time execution. + </Card> + <Card title="Async operations" icon="hourglass-half" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations"> + Handling long-running operations — essential for bridging real-time and agentic systems. + </Card> + <Card title="Webhooks" icon="bell" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks"> + Event-driven updates for delivery, status changes, and campaign modifications. + </Card> + <Card title="Error handling" icon="triangle-exclamation" href="/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling"> + Error patterns, retry strategies, and graceful degradation. + </Card> + <Card title="Sandbox" icon="flask" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox"> + Testing your implementation against sandbox agents before going live. + </Card> + <Card title="Implementor FAQ" icon="circle-question" href="/dist/docs/3.2.0-beta.4/reference/implementor-faq"> + Common questions and answers from teams building AdCP integrations. + </Card> + <Card title="Router architecture" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/trusted-match/router-architecture"> + Deployment, fan-out, and provider configuration for the TMP Router. + </Card> + <Card title="AI mediation" icon="microchip-ai" href="/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation"> + How demand reaches AI assistants through the Trusted Match Protocol. + </Card> +</CardGroup> + +### Key concepts + +- **Coexistence strategy** — run AdCP alongside OpenRTB, gradually migrating workflows +- **TMP as the bridge** — TMP connects planning-time media buys to serve-time decisions through two structurally separated operations (Context Match and Identity Match). The TMP Router fans out to configured providers in parallel and the publisher joins responses locally. This is how cross-publisher frequency capping, suppression, and suitability work at impression time. TMP is an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) in AdCP 3.0 (feature id `trusted_match.core`); router, exposure-token, and identity-match details may change between 3.x releases with at least 6 weeks' notice. +- **Router deployment and fan-out patterns** — how the TMP Router is deployed, provider configuration, and parallel fan-out to multiple match providers +- **Platform-specific migration** — DSPs wrap bidding logic, SSPs expose inventory, exchanges translate +- **Performance benchmarking** — compare agentic vs traditional on campaign performance, efficiency, cost + +<Card title="Start D3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module D3." +</Card> + +--- + +## D4: Build project — AdCP infrastructure + +**~45 min** | Prerequisite: D3 + +Build working AdCP infrastructure using any AI coding assistant (Claude Code, Cursor, Copilot) with the [`@adcp/sdk`](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) SDK. Point your coding assistant at a [skill file](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) — choose `build-seller-agent` or `build-signals-agent` depending on what you want to build. This is the most ambitious build project. + +### What you'll build + +- MCP server with AdCP tool definitions +- `get_adcp_capabilities` implementation +- At least 3 AdCP tasks exposed as tools +- OAuth/authentication flow +- Proper error handling with AdCP error codes + +### How you'll validate + +Run the matching storyboard against your running agent: + +```bash +npx @adcp/sdk@latest storyboard run my-agent media_buy_seller +``` + +The storyboard validates protocol compliance across the complete workflow. See [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for setup, debugging, and the full CLI reference. + +### Specialisms you can claim + +Platform agents often span multiple domains. Declare each protocol you implement in `supported_protocols` and each specialism you claim in `specialisms`. Some common combinations: + +- Full-stack sales platform: `supported_protocols: ["media_buy", "creative", "signals"]`, `specialisms: ["sales-guaranteed", "sales-non-guaranteed", "creative-ad-server"]` +- Signal platform: `supported_protocols: ["signals"]`, `specialisms: ["signal-marketplace"]` or `["signal-owned"]` +- Governance platform: `supported_protocols: ["governance"]`, `specialisms: ["content-standards", "property-lists", "collection-lists"]` + +See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for every specialism and the storyboards that verify each claim. + +### Assessment rubric + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Specification quality | 20% | Can you specify infrastructure in AdCP terms? | +| Schema compliance | 20% | Protocol compliance across all endpoints | +| Error handling | 15% | Proper error handling with recovery types and async | +| Design rationale | 25% | Can you reason about production architecture? | +| Extension ability | 20% | Can you extend the endpoint with new tasks? | + +Passing threshold: 70%. + +<Card title="Start D4 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module D4." +</Card> + +--- + +## What's next + +After completing D1–D4, you've earned the **AdCP practitioner** credential. From here you can pursue specialist modules: + +- [S1: Media buy](/dist/docs/3.2.0-beta.4/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.2.0-beta.4/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.2.0-beta.4/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.2.0-beta.4/learning/tracks/publisher.mdx b/dist/docs/3.2.0-beta.4/learning/tracks/publisher.mdx new file mode 100644 index 0000000000..ef68bdda4a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/learning/tracks/publisher.mdx @@ -0,0 +1,272 @@ +--- +title: "Publisher / seller track" +sidebarTitle: Publisher track +description: "AdCP publisher track (B1-B4): build and operate a sales agent. Product catalog design, creative specs, delivery reporting, and a sales agent build project." +"og:title": "AdCP — Publisher / seller track" +--- + +# Publisher / seller track (B1–B4) + +<Info> +**Members only** — Requires Basics credential (A1–A3). Four modules, ~105 minutes total. +</Info> + +This track teaches you to build and operate the supply side of AdCP. You'll learn how sales agents represent publisher inventory, how buyer agents discover and evaluate your products, and how to expose delivery data and signals for measurement. The track culminates in a build project where you create a working sales agent. + +Completing this track (plus A1–A3) earns the **AdCP practitioner** credential. + +## Is this track for you? + +AdCP gives publishers a single endpoint that AI buyer agents can use to discover your inventory, negotiate and create media buys, and pull delivery data — without a sales call, a custom API integration, or giving up your direct deal terms. One implementation; always-on access for buyers that operate autonomously. + +| Your role | Where to start | Modules that matter most | +|-----------|---------------|--------------------------| +| Ad operations / yield manager | B1, then B3 | B1 (catalog design), B3 (delivery reporting, signals) | +| Sales / revenue | B1, then B2 | B1 (what buyers see), B2 (creative specs) | +| Engineer / developer | B1 through B4 | Full track — ends with building and validating a real sales agent | +| Executive / strategist | A1–A3 only | Track A covers protocol and ecosystem context; skip B unless you'll implement | + +Engineers and ad tech builders should do B1–B4. Anyone else can pick the modules above and skip the rest. + +### What you'll build toward + +- B4 is a build project: you create a working sales agent that handles real buyer queries — product discovery, media buy creation, creative specs, and delivery reporting +- The agent is validated against AdCP storyboards, not just reviewed manually +- Completing B1–B4 (plus A1–A3) earns the **AdCP practitioner** credential + +--- + +## B1: Designing your product catalog + +**~20 min** | Prerequisite: A3 + +How a hosted sales agent works: product discovery, catalog integration, capability advertising. Walkthrough of designing your product catalog — including collections and installments for content-centric inventory like podcasts, CTV series, and live events — and configuring what buyers can discover about you. + +### Reading list + +<CardGroup cols={2}> + <Card title="Product discovery" icon="magnifying-glass" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/index"> + How buyer agents discover publisher inventory through `get_products`. + </Card> + <Card title="get_products task" icon="code" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products"> + Task reference: request schema, response schema, and examples. + </Card> + <Card title="Media products" icon="cube" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products"> + How to structure products: formats, pricing, targeting, and availability. + </Card> + <Card title="Collections and installments" icon="tv" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments"> + Model content-centric inventory: podcasts, CTV series, live events, and episodic content. + </Card> + <Card title="sync_catalogs task" icon="rotate" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs"> + Catalog synchronization: 13 catalog types, feed field mappings. + </Card> + <Card title="Capability discovery" icon="magnifying-glass" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + How agents advertise their capabilities so other agents can discover what they offer. + </Card> + <Card title="Seller setup" icon="store" href="/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup"> + How to publish seller identity, property relationships, signing keys, and publisher authorization files. + </Card> + <Card title="Version negotiation" icon="code-branch" href="/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation"> + Advertise your supported `adcp.major_versions`; reject mismatched requests with `VERSION_UNSUPPORTED`. + </Card> + <Card title="Authorized properties" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/property/authorized-properties"> + How publishers declare and authorize their properties for agentic transactions. + </Card> + <Card title="Media buy lifecycle" icon="timeline" href="/dist/docs/3.2.0-beta.4/media-buy/specification#media-buy-state-transitions"> + The state machine sellers must honor: `pending_creatives` → `pending_start` → `active` → `paused`/`completed`. + </Card> +</CardGroup> + +### Key concepts + +- **Sales agent role** — your always-on, AI-powered sales team that responds to buyer queries +- **Product catalog design** — products, formats, pricing models, targeting options, availability, and shows/episodes for content-centric inventory +- **Catalog integration** — `sync_catalogs` for product data, 13 catalog types, feed field mappings +- **Capability advertising** — `get_adcp_capabilities` so buyers know what you support +- **Seller identity setup** — publish `brand.json` for the organization operating the sales agent and `adagents.json` for publisher authorization; buyers use both to verify who operates the sales path and whether the publisher authorizes it +- **Object-presence capability principle** — capabilities are declared by the presence of an object, not by booleans. If you support a feature, include the object; if you don't, omit it. Buyers check for the object, not for `"feature": true`. +- **Version advertising** — declare `adcp.major_versions` so multi-version buyers can migrate on their own schedule; validate incoming `adcp_major_version` and return `VERSION_UNSUPPORTED` when out of range +- **Lifecycle commitments** — `create_media_buy` MAY return `pending_creatives` or `pending_start`; MUST transition `pending_start` → `active` when the flight date arrives, and notify orchestrators via webhook. Rejection is only valid from the pending states +- **Reporting declaration** — every product MUST include `reporting_capabilities` (metrics, dimensions, cadence, measurement windows). Presence of this object declares `get_media_buy_delivery` support + +<Card title="Start B1 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module B1." +</Card> + +--- + +## B2: Creative specifications and format support + +**~20 min** | Prerequisite: B1 + +Deep dive on canonical `Product.format_options[]` and publisher `adagents.json.formats[]`, including how buyers discover what your inventory accepts. Guide to structuring creative specs, handling incoming creatives, and brand compliance. + +### Reading list + +<CardGroup cols={2}> + <Card title="Brief expectations" icon="file-lines" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations"> + What buyer briefs look like and how to structure products so agents can match them. + </Card> + <Card title="Example briefs" icon="clipboard-list" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs"> + Real examples of product discovery queries from buyer agents. + </Card> + <Card title="Canonical formats" icon="palette" href="/dist/docs/3.2.0-beta.4/creative/canonical-formats"> + How publisher, product, and creative-agent declarations work. + </Card> + <Card title="Creative formats" icon="image" href="/dist/docs/3.2.0-beta.4/creative/formats"> + Format definitions, technical specs, and the renders structure. + </Card> + <Card title="Implementing standard formats" icon="ruler-combined" href="/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats"> + Standard format IDs and how to implement them consistently. + </Card> + <Card title="Product refinement" icon="filter" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement"> + How buyer agents refine searches and negotiate product parameters. + </Card> +</CardGroup> + +### Key concepts + +- **Format declarations** — Product `format_options[]` tells buyers what each sellable product accepts +- **Format vs manifest** — the format is what you accept, the manifest is what gets delivered +- **Handling incoming creatives** — `sync_creatives` and `build_creative` validation and approval +- **Brand compliance** — understanding incoming brand.json, disclosure positions + +<Card title="Start B2 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module B2." +</Card> + +--- + +## B3: Measurement, signals, and optimization + +**~20 min** | Prerequisite: B2 + +How to expose delivery data, measurement signals, and optimization levers through your sales agent. Integration with measurement platforms, audience handling, and account management. + +### Reading list + +<CardGroup cols={2}> + <Card title="get_media_buy_delivery task" icon="chart-line" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery"> + Delivery metrics: impressions, spend, completion rates, and performance data. + </Card> + <Card title="Optimization and reporting" icon="chart-mixed" href="/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting"> + How buyer agents use delivery data for campaign optimization. + </Card> + <Card title="Signals overview" icon="signal" href="/dist/docs/3.2.0-beta.4/signals/overview"> + The signals protocol: audience segments, contextual signals, measurement data. + </Card> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.2.0-beta.4/trusted-match"> + How publishers support impression-time execution for buyer use cases like cross-publisher frequency capping. + </Card> + <Card title="TMP Router architecture" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/trusted-match/router-architecture"> + Deployment, fan-out, and provider configuration for publishers. + </Card> + <Card title="get_signals task" icon="code" href="/dist/docs/3.2.0-beta.4/signals/tasks/get_signals"> + Signal discovery: what measurement data is available and how to expose it. + </Card> + <Card title="activate_signal task" icon="toggle-on" href="/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal"> + Enabling specific measurement on a campaign. + </Card> + <Card title="Accounts overview" icon="building" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + The commercial layer: advertisers, operators, authentication, and billing. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.2.0-beta.4/governance/campaign"> + Seller-side governance checks: validate buyer purchases before executing them. + </Card> + <Card title="check_governance task" icon="clipboard-check" href="/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance"> + The governance validation task: intent checks, execution checks, statuses, and planned delivery. + </Card> +</CardGroup> + +### Key concepts + +- **Delivery reporting** — accurate, timely delivery data via `get_media_buy_delivery` +- **Signals framework** — `get_signals` and `activate_signal` replace fragmented measurement vendor integrations +- **Audience handling** — `sync_audiences` for accepting buyer audience data +- **Execution integration** — publishers participate in TMP by sending Context Match requests (page content + available packages) and Identity Match requests (user token + package IDs) to the TMP Router, then joining the results locally. This enables cross-publisher frequency capping and impression-time activation without exposing user identity and page context to the buyer simultaneously. TMP is an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) in AdCP 3.0 (feature id `trusted_match.core`); execution and privacy details may change between 3.x releases with at least 6 weeks' notice. +- **Account management** — `sync_accounts`, `list_accounts` for managing buyer relationships +- **Seller-side governance** — when a buyer account has `governance_agents` (synced via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance)), call `check_governance` with `governance_context` + `purchase_type` + `planned_delivery` before confirming media buys +- **Planned delivery** — describe what you will actually deliver; the governance agent validates it against the buyer's plan + +### Exercises + +Given sample Context Match and Identity Match responses, determine which packages the publisher activates and what targeting key-values to set. + +**Broadcast delivery reporting:** Given a broadcast product with `measurement_windows: [{window_id: "c3"}, {window_id: "c7"}]`, a buyer calls `get_media_buy_delivery` two days after the flight date. Describe what data is available in each window, why the `c7` window is still incomplete, and how the seller should represent delivery to avoid the buyer misreading partial data as underdelivery. + +<Card title="Start B3 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module B3." +</Card> + +--- + +## B4: Build project — your first sales agent + +**~45 min** | Prerequisite: B3 + +Create a working sales agent that responds to real buyer queries. Point your AI coding assistant (Claude Code, Cursor, Copilot) at the [`build-seller-agent`](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent) skill file — it generates an agent validated against AdCP storyboards, with optional [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) scaffolding for deterministic lifecycle testing in sandbox mode. The skill tested is specifying correct AdCP behavior. + +### What you'll build + +- Product catalog with at least 3 products and `sync_catalogs` support, each product declaring `reporting_capabilities` +- `get_adcp_capabilities` that declares `adcp.major_versions` and validates `adcp_major_version` on incoming requests — including a truthful `capabilities.idempotency.replay_ttl_seconds` declaration +- Creative format support for at least 2 formats +- Handles `get_products`, `create_media_buy`, `sync_creatives`, `get_media_buy_delivery` +- Account setup via `sync_accounts` +- Well-known discovery files: `brand.json` for the sales-agent operator's identity, endpoint declarations, and signing-key discovery; `adagents.json` for publisher properties and agent authorization +- Proper error responses for invalid requests — including `VERSION_UNSUPPORTED`, `GOVERNANCE_DENIED`, `TERMS_REJECTED`, `IDEMPOTENCY_CONFLICT`, and `IDEMPOTENCY_EXPIRED` where applicable +- Idempotency enforcement on every mutating request: reject missing or malformed `idempotency_key` with `INVALID_REQUEST` before touching business logic; cache only on success; scope per authenticated agent +- Lifecycle transitions: seller moves media buys through `pending_creatives` → `pending_start` → `active` and notifies via webhook on each transition + +### How you'll validate + +Run the `media_buy_seller` storyboard against your running agent: + +```bash +npx @adcp/sdk@latest storyboard run my-agent media_buy_seller +``` + +The storyboard exercises the complete buyer workflow — discovery, account sync, media buy, creatives, delivery — and validates every response. See [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) for setup and debugging. + +### Specialisms you can claim + +Declare `media_buy` in `supported_protocols` and choose the specialism that matches your inventory model. Each specialism has a compliance storyboard at `/compliance/{version}/specialisms/{id}/` that verifies your claim: + +- `sales-guaranteed` — guaranteed with human IO approval +- `sales-non-guaranteed` — auction-based +- `sales-proposal-mode` — **deprecated in 3.1**; use `sales-guaranteed` + `media_buy.supports_proposals: true` instead +- `sales-catalog-driven` — catalog-driven commerce with conversion tracking +- `sales-broadcast-tv` — broadcast linear TV +- `sales-social` — social platform with self-service flows + +See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the full list. + +### Assessment rubric + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Specification quality | 20% | Can you specify an agent in AdCP terms? | +| Schema compliance | 25% | Agent responses validate against AdCP schemas | +| Error handling | 15% | Handles invalid requests with proper AdCP errors | +| Design rationale | 20% | Can you explain and reason about design decisions? | +| Extension ability | 20% | Can you extend the agent with new capabilities? | + +Passing threshold: 70%. + +Any AI coding assistant is welcome (Claude, Cursor, Copilot, etc.). The skill tested is: "Can you specify correct AdCP behavior?" + +<Card title="Start B4 with Addie" icon="play" href="https://agenticadvertising.org/chat"> + "I'd like to start certification module B4." +</Card> + +--- + +## What's next + +After completing B1–B4, you've earned the **AdCP practitioner** credential. From here you can pursue specialist modules: + +- [S1: Media buy](/dist/docs/3.2.0-beta.4/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.2.0-beta.4/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.2.0-beta.4/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.2.0-beta.4/measurement/taxonomy.mdx b/dist/docs/3.2.0-beta.4/measurement/taxonomy.mdx new file mode 100644 index 0000000000..1f93e52c4b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/measurement/taxonomy.mdx @@ -0,0 +1,227 @@ +--- +title: Measurement Taxonomy +sidebarTitle: Measurement Taxonomy +description: "Three-layer model for AdCP measurement — metrics (delivery), verification (quality), attribution (outcomes) — and how each layer differs in source of truth, protocol home, and rate of change." +"og:title": "AdCP — Measurement Taxonomy" +--- + +# Measurement Taxonomy + +Measurement is three things, not one. Treating them as one bucket is the source of most confusion in measurement RFCs (SSAI, identity loss, AI-content provenance, clean rooms) and most schema bloat in delivery responses. AdCP separates them deliberately. + +The three layers — **metrics**, **verification**, and **attribution** — answer different questions, are attested by different parties, live in different places in the protocol, and evolve at different speeds. + +## The three layers + +| Layer | Question | Source of truth | Protocol home | Rate of change | +| ---------------- | ------------------------ | --------------- | ------------------------------------------------------------------------------------------ | --------------------------- | +| **Metrics** | Did it happen? | Seller | Delivery reporting | Slow (decade-scale) | +| **Verification** | Did it count properly? | Third party | Performance standards + capabilities + manifest trackers + vendor-attested delivery values | Medium (environment-driven) | +| **Attribution** | Did it cause an outcome? | Buyer | Handoff hooks (event sources, log-level signals) | Fast (model-driven) | + +### 1. Metrics — "did it happen?" + +Delivery facts: impressions, completes, quartiles, clicks, spend, reach, frequency. Reach and frequency carry an explicit `reach_window` declaration (`cumulative` / `period` / `rolling`) so buyers know whether values can be summed across rows. + +For the full capability → commitment → optimization → delivery picture across both standard and vendor metric flows, see [Metric lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#metric-lifecycle). The same `(vendor, metric_id)` key flows through every surface for vendor-attested metrics — discovery, optimization capability, reporting capability, package commitment, optimization goal, performance standard, and delivery value. + +The seller is the source of truth — the seller served the ad and counts the event. Industry counting conventions (MRC, IAB) define what qualifies as an impression, what completes a video view, how to deduplicate. AdCP standardizes how sellers expose these counts; it does not redefine what they count. + +One nuance: some metrics in `available-metric.json` (ROAS, CPA, conversions, conversion_value, units_sold) are seller-reported but **attribution-derived** — the seller runs an attribution model over buyer-supplied event sources and reports the result. They live in delivery reporting because that's where every DSP and retail-media platform exposes them today, but the underlying event of truth is buyer-attested. Read these as _"attribution surfaced through delivery,"_ not as pure delivery facts. The seller's number reflects the seller's attribution model over the buyer's events; reconciliation against buyer-side ground truth still belongs at the attribution boundary. + +In AdCP, metrics flow through delivery reporting: + +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) — current delivery state +- [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) — buyer-side observed performance +- [Optimization & Reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) — how reporting connects to optimization goals + +Metrics evolve slowly. Definitions are governed by industry bodies; new metrics (viewable impressions, attention seconds) appear on decade timescales. Schema pressure here is low. + +### 2. Verification — "did it count properly?" + +Quality attestation: viewability, invalid traffic (IVT), brand safety, geo accuracy, context fitness, ad-content provenance. + +The whole point of verification is that it is _not_ the seller's word. Buyers contract with third-party measurement vendors (Moat, IAS, DoubleVerify) precisely so an independent party can confirm the impression met quality thresholds. Verification requires execution paths that survive the delivery environment — historically OMID and VPAID running client-side; in SSAI, [SIVA](https://iabtechlab.com/standards/siva/) as the server-side workaround. + +In AdCP, verification has structured surface across the buy lifecycle, anchored on the vendor's `brand.json` measurement-agent record: + +- **Discovery.** Buyers filter products by `required_performance_standards` ("70% MRC viewability by DoubleVerify"), `required_metrics`, and `required_vendor_metrics` on [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products). Sellers declare support via `reporting_capabilities.available_metrics`, `vendor_metrics`, and the `committed_metrics_supported` capability flag. +- **Commitment.** [`performance-standard.json`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) binds `metric` + `threshold` + `standard` (e.g., MRC vs GroupM viewability) + `vendor` into the buy contract. The vendor is a `BrandRef` resolving to the vendor's `brand.json` `agents[type='measurement']` record. When a performance standard is committed, _creatives MUST include `tracker_script` or `tracker_pixel` assets from that vendor_ — the protocol enforces the path. `committed_metrics` snapshots the reporting contract on the package at `create_media_buy` (a unified discriminated array carrying both standard metrics from the closed `available-metric.json` enum and vendor-defined metrics anchored on `BrandRef`, with each entry timestamped via `committed_at`) and is append-only for the buy's lifetime. +- **Execution.** The [creative manifest](/dist/docs/3.2.0-beta.4/creative/creative-manifests) carries trackers and macros (`vast_tracker`, `daast_tracker`, universal macros) that fire at delivery so the third-party vendor records the event. Whether they fire client-side or server-side is the seller's implementation detail; the buyer's contract is on the metric, not the path. +- **Reporting.** Standard verification metrics that have graduated into the closed `available-metric.json` enum (e.g., `viewability`) flow through their dedicated delivery scalars in [`delivery-metrics.json`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery). Non-graduated vendor-defined metrics flow through `vendor_metric_values` with `measurable_impressions` as the coverage denominator. Vendor attribution is anchored at the contract level via `committed_metrics` and `performance_standards.vendor`, not on the delivery row itself. `missing_metrics` surfaces accountability gaps when the seller didn't deliver on a committed metric — when `committed_metrics` is present, reconciliation is exact and timestamp-aware; when absent, `missing_metrics` falls back to the product's live `available_metrics` with no commitment-timestamp filter and under-reports gaps. Buyers SHOULD treat absence of `committed_metrics` as _"no audit-grade contract,"_ not _"clean delivery."_ + +The vendor's full _dashboard_ lives at the vendor (Moat, IAS, DV, HUMAN, etc.), but the attested numbers flow back through AdCP delivery reports. Measurement agents are first-class identities — discoverable via `brand.json` `agents[type='measurement']` (the BrandRef anchor), with the metric catalog (`metric_id`, `standard_reference`, `accreditations[]`, `unit`, `methodology_url`, `methodology_version`) served by the agent's [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response under the `measurement` block. `brand.json` is the discovery point; the agent serves the catalog. + +#### Graduated verification metrics + +Verification metrics evolve at different rates of standardization, and the protocol gives them different levels of structural support based on where they sit in that gradient: + +- **Tier 1 — graduated.** Industry-published, MRC-or-equivalent accredited; multiple competing standards may exist. Gets a dedicated entry in the closed `available-metric.json` enum, a dedicated structured block in `delivery-metrics.json`, and (when standards are mutually incompatible) a `qualifier` slot on `committed_metrics` for disambiguation. **Viewability** is the canonical Tier 1 metric today — MRC and GroupM define materially different thresholds and require schema-enforced disambiguation via `qualifier.viewability_standard`. +- **Tier 2 — vendor-extended.** Vendor-defined metrics with no industry-published standard. Sellers declare reporting support via `reporting_capabilities.vendor_metrics` and optimization support via `vendor_metric_optimization.supported_metrics`; values flow via `vendor_metric_values`; goals bind to the vendor via `optimization_goals` with `kind: "vendor_metric"`; identity is anchored on the vendor's `BrandRef` and the catalog lives on the vendor's measurement-agent capabilities. **Attention scores, panel-based brand lift, panel demographics, emissions per impression** sit here today. +- **Tier 3 — asserted.** Free-form claims on products without structured vendor identity or standards-bearer attestation. Predates the BrandRef pattern and is being incrementally restructured upward. + +A metric graduates from Tier 2 to Tier 1 when an industry standards body publishes a measurement specification — anchored on standards-body publication, not vendor-count thresholds or informal convergence. The patterns that support Tier 1 (`qualifier` slot, dedicated delivery scalar, performance-standard binding) are reusable templates: viewability is the first instance, not a viewability-specific bespoke shape. + +#### Closed-loop topologies: seller-as-measurement-agent + +The graduated-metrics framing assumes the default measurement topology is _seller serves, third-party verifies_ — DV/IAS attesting viewability while the publisher's ad server counts impressions. That's still the dominant pattern for traditional CTV, video, and display. But two channel classes have a different default: + +- **Retail-media closed loop**: Walmart Connect, Kroger Precision, Amazon DSP, Criteo Retail Media. The retailer serves the ad on its own surface, observes the click on its own surface, and observes the conversion (loyalty card, login, point-of-sale) on its own surface. The seller is also the measurement vendor; the trust model rests on the retailer's first-party data assets rather than third-party independence. +- **AI-native channels**: ChatGPT and other agentic-conversation surfaces inject ads directly into the conversation stream (server-side). Click navigation happens in an in-app webview the seller controls. Conversion attribution flows back through a seller-provided SDK (`oaiq.min.js` for OpenAI) deployed on the merchant's property. The seller is again also the measurement vendor. + +These are not degraded cases of third-party verification — they're a structurally different topology that the protocol supports cleanly via the existing primitives: + +- **Vendor identity is implicit when seller is vendor**: BrandRef anchors on the seller in `delivery_measurement.vendors`; vendor-scope `committed_metrics` entries point at the seller's measurement-agent capability; `performance_standards.vendor` (when present) names the seller. No additional schema needed. +- **Outcome metrics flow through the same vocabulary**: `conversion_value` + `qualifier.attribution_methodology: "deterministic_purchase"` + `qualifier.attribution_window: { interval: 30, unit: "days" }` cleanly expresses ChatGPT's attribution-token-based conversion attribution and Walmart Connect's `attributedSalesIn14Days`. No retail-media-specific schema, no AI-native-specific schema. +- **The `(metric_id, qualifier)` row shape handles both**: contract / diff / delivery / feedback all reconcile the same way regardless of whether the vendor is third-party or seller-as-vendor. + +What's missing today: a structured way for the seller to declare a **merchant-side SDK** the buyer deploys on their property to feed events back to the seller (the OAIQ pattern). Tracked as a separate RFC ([#3889](https://github.com/adcontextprotocol/adcp/issues/3889)) — the existing primitives express _what's measured_; the SDK distribution / integration / supply-chain story is the gap. + +Verification evolves at medium pace. Environment shifts — CTV, SSAI, walled gardens, cookieless, AI-generated content, AI-native channels — drive new signal-loss problems and new protocols to recover them. Expect schema pressure on verification capabilities every one to three years. + +### 3. Attribution — "did it cause an outcome?" + +Buyer-side joins between delivery and outcomes: conversions, lift, multi-touch attribution, media mix modeling, incrementality. + +The seller doesn't know the conversion event. The buyer (or the buyer's measurement partner) holds outcome data and joins it to delivery. AdCP's role is making the join possible — exposing log-level signals, identity hooks, and handoff patterns to clean rooms — not running the model. + +In AdCP, attribution shows up at the _boundary_: + +- [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) — buyer pushes conversion event sources into seller platforms so the platform can optimize toward real outcomes +- [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) — buyer-attested event delivery +- [Conversion Tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/) — patterns that connect delivery to outcomes +- [Trusted Match](/dist/docs/3.2.0-beta.4/trusted-match/) — identity resolution that makes the join possible without leaking PII + +The model itself (clean rooms, MMM, causal inference, agentic outcome attribution) lives entirely outside the protocol. + +Attribution evolves fastest. Clean-room patterns, MMM revival, causal AI, commerce-media attribution, and agentic outcome models all shift the attribution layer on quarter-to-year timescales. If attribution lived inside delivery schemas, it would force a schema break every cycle. + +## Why the separation matters + +Most measurement debates in the working group resolve faster once the layer is named: + +- **SSAI** ([#3759](https://github.com/adcontextprotocol/adcp/issues/3759)) is a _verification_ problem. It does not change which metrics get reported; it changes which verification paths are valid and how rich the surviving signal is. The fix lives in capabilities + creative manifest trackers, not in delivery reporting. +- **Identity loss** (cookieless, IDFA deprecation, walled-garden signal collapse) shows up in _attribution_, not metrics. The seller still serves and counts impressions; the buyer's join to outcomes degrades. Fixes belong at the attribution boundary (clean rooms, [Trusted Match](/dist/docs/3.2.0-beta.4/trusted-match/)), not in delivery payloads. +- **AI-content provenance** is a _verification_ concern (was this ad what the brand approved?), not an attribution concern. It belongs alongside other verification capabilities — see [Provenance Verification](/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification) — not bolted onto outcome reporting. +- **Outcome-based optimization goals** (CPA, ROAS, custom events) are an _attribution_ concern surfaced as an optimization input. They belong at the event-source boundary, where the buyer hands over what the platform should optimize toward. + +When a proposal puts an attribution concept (lift, ROAS, MMM input) into delivery reporting, or a verification concept (OMID, SIVA) into attribution hooks, push back. The layer mismatch almost always means the proposal will accumulate edge cases until it breaks. + +## Working rule of thumb + +When evaluating where a measurement field belongs, ask **who is the source of truth?** + +- The **seller** counts it → metric → delivery reporting +- A **third party** attests to it → verification → capabilities + creative manifest +- The **buyer** owns the outcome → attribution → event-source / log-level handoff + +This single question resolves most placement debates. If two layers seem to claim the same field, the field is probably two fields wearing one name — split it. + +## The atomic unit: `(metric_id, qualifier)` + +The protocol's measurement primitives reduce to one tuple, indexed and reconciled the same way: + +- **`committed_metrics` rows**: `{ scope, metric_id, qualifier, committed_at }` — what the seller agreed to populate ([#3576](https://github.com/adcontextprotocol/adcp/pull/3576), shipped) +- **`missing_metrics` rows**: `{ scope, metric_id, qualifier }` — what didn't show up ([#3576](https://github.com/adcontextprotocol/adcp/pull/3576), shipped) +- **`metric_aggregates` rows**: `{ metric_id, qualifier, value, …components }` — what was actually delivered, partitioned by qualifier ([#3848](https://github.com/adcontextprotocol/adcp/issues/3848), proposed) + +Reconciliation collapses to a join on `(metric_id, qualifier)`. For each `committed_metrics` row, find the matching `metric_aggregates` row; absent matches surface as `missing_metrics`. No bespoke per-metric reconciliation logic, no traversal asymmetry between contract and delivery. + +The `qualifier` vocabulary differs by surface: contract is closed (`additionalProperties: false`, today carrying only `viewability_standard`); delivery is a deliberate **superset** (e.g., `tracker_firing` exists as a transparency disclosure that buyers don't commit to but sellers can expose post-delivery). The asymmetry is named, not accidental — the buyer commits to what they share vocabulary on, the seller exposes path-level transparency on what was delivered. + +When a future qualifier (`completion_threshold`, attention methodology if it standardizes) needs structural support, it plugs into the existing slot. No parallel `*_by_*` fields, no new aggregation surface, no schema break. + +## Boundaries with Signals and Governance + +Measurement is not the only third-party-attestation surface in AdCP. [Signals](/dist/docs/3.2.0-beta.4/signals/overview) and [Governance](/dist/docs/3.2.0-beta.4/governance/overview) also involve third parties, also produce attested artifacts, and also evolve faster than the core media-buy primitives. The boundaries are real but the protocols overlap in vendor and in lifecycle — Signals' own key-concepts page notes that signals are used "for targeting or measurement," and that ambiguity is the boundary in question. + +The clearest separation is by lifecycle moment and the question being asked: + +| Lifecycle moment | Question | Protocol home | +| ---------------- | ---------------------------- | ---------------------------------------- | +| Pre-decision | What should we do? | Signals | +| Plan-time | Are we allowed to do this? | Governance (policy registry, plan check) | +| Delivery | Did it happen? Did it count? | Measurement (metrics, verification) | +| Post-delivery | What outcome did it cause? | Measurement (attribution) | +| Continuous | Is the audit trail intact? | Governance (audit trail) | + +The same vendor often plays in multiple lanes. DoubleVerify, for example, sells pre-bid brand-safety _signals_, post-delivery _verification_ attestations, and content-classification feeds consumed by _governance_ policy enforcement. The vendor is one entity; the protocol surfaces are three because the timing, sources of truth, and consumption patterns differ. + +### Where the lines are crisp + +- **Signals are predictive; measurement is descriptive.** A pre-bid viewability score is a signal — an estimate of how likely an impression is to be viewable. A post-delivery viewability rate is measurement. Same methodology family, different question. +- **Governance is normative; measurement is factual.** Governance asks "did this comply with the rules we set?" Measurement asks "what objectively happened?" An attribution model can disagree with a buyer's outcome goal without violating any policy; a brand-safety violation can occur even when delivery measured cleanly. +- **Signals are inputs, measurement is outputs, governance is constraints.** The buying decision consumes signals, is bounded by governance, and produces facts that measurement records. + +### Where the lines blur + +- A pre-bid brand-safety classifier is sold as a _signal_; the same vendor's post-delivery report is _verification_. Same input data, different protocol home — driven by _when_ the data is consumed. +- A _governance_ policy can require a _measurement_ attestation as evidence ("this campaign must verify with an MRC-accredited vendor"). Measurement becomes a precondition for governance approval. +- _Signals_ feed _attribution_ models — audience segments and identity signals are inputs to the lift or MMM model that produces outcome estimates. + +These overlaps are not bugs. They reflect how the measurement-and-data industry actually works: vendors operate across the lifecycle, and an event in one layer often becomes input to another. The protocol's job is to keep the _interfaces_ clean — same vendor, multiple roles, multiple endpoints — not to collapse the lifecycle into a single surface. + +## Worked example: third-party viewability commitment + +A buyer needs DoubleVerify viewability at the MRC threshold on a CTV campaign. SSAI is in scope; the buyer doesn't know or care which products use it. + +**1. Discovery.** Buyer calls `get_products` with: + +```json +{ + "required_performance_standards": [ + { + "metric": "viewability", + "threshold": 0.7, + "standard": "mrc", + "vendor": { "domain": "doubleverify.com" } + } + ] +} +``` + +Products that cannot support DV's measurement on this inventory — for whatever plumbing reason, including SSAI environments where DV's path is degraded — are silently filtered out (filter-not-fail). Sellers do not declare "I am SSAI"; they declare _"I can deliver this performance standard with this vendor on this product."_ The plumbing is the seller's problem. + +**2. Commitment.** Buyer calls `create_media_buy`. The `performance_standards` enter the buy contract; per `performance-standard.json`, _creatives MUST include `tracker_script` or `tracker_pixel` assets from `doubleverify.com`_. The seller returns `committed_metrics` (a unified array carrying both standard and vendor entries, each with `committed_at`) snapshotting the contract — append-only for the lifetime of the buy. The viewability commitment carries `qualifier.viewability_standard: "mrc"` so MRC and GroupM never reconcile against each other. + +**3. Execution.** The creative manifest carries DV's tracker assets. They fire — client-side, server-side, OMID, SIVA, whatever path the seller chose to honor the commitment. The buyer doesn't see the path. + +**4. Reporting.** Per-buy `totals` populate the standard `viewability` block (the graduated Tier 1 surface — `measurable_impressions`, `viewable_impressions`, `viewable_rate`, `standard`). Cross-buy `aggregated_totals` partition by qualifier via `metric_aggregates` ([#3848](https://github.com/adcontextprotocol/adcp/issues/3848), proposed) — same atomic unit as the contract, joined on `(metric_id, qualifier)`. If the seller fails to deliver any committed metric, it appears in `missing_metrics` — an accountability breach, surfaced in-protocol. + +**What this example shows.** The buyer never asks _"is this SSAI?"_ The question they actually have — _"can my chosen verification vendor produce trustworthy viewability on this inventory?"_ — is answered structurally by whether the product passes the filter. The seller's plumbing is a private implementation detail bound by a contract they signed at create-time. SSAI, CSAI, in-app, web, DOOH all flow through the same surface; none gets a special schema. + +This is verification working the way the layer is supposed to work: the buyer specifies the _outcome they need_ (vendor + standard + threshold), the seller commits or excludes themselves, and accountability is structural, not narrative. + +## Measurement agents as performance-feedback producers + +Measurement agents are first-class identities without requiring a universal measurement-data transport. Vendors are discoverable as `brand.json` `agents[type='measurement']`, publish metric catalogs through `get_adcp_capabilities.measurement.metrics[]`, and identify whether they produce optimizer-ready assertions with `measurement.produces_performance_feedback`. + +The buyer orchestrator is the hub. In the first experimental tier it exposes buyer-approved delivery to the provider through `get_media_buy_delivery`; the provider returns a compact [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) assertion to that gateway. + +Buyer orchestrators declare the experimental `measurement_gateway` capability when they expose this boundary. Its `delivery_task` and `feedback_task` fields are fixed to those two tasks; webhook and offline interchange are deferred until their registration, credential, payload, and receipt contracts are defined. Providers receive narrowly scoped `authorization.allowed_tasks`, never seller credentials. The orchestrator authenticates and normalizes the provider result, maps cross-seller identifiers, and submits appropriate feedback to each seller under the buyer's identity. + +This resolves the immediate protocol-home question with a narrow principle: **first-class measurement-agent identity and output through an orchestrator-controlled gateway, not direct seller integration or mandatory AdCP ingestion**. A future interchange path should be added only with a complete contract for a concrete workflow that cannot fit the gateway's task-based delivery read, provider-hosted evidence, and feedback submission. + +`report_usage` is not that interchange. It records consumption and billing of vendor services. Reusing it for arbitrary measurement inputs would combine billing records, delivery facts, and analytical outputs in one task. + +## Open questions + +The taxonomy still has two boundaries to watch. + +### Where do pre-bid measurement signals live? + +A pre-bid viewability score (predicted likelihood that an impression will be viewable) is sold by the same vendors that produce post-delivery viewability measurement. Today, predictions are _signals_ (consumed pre-decision); measurements are _verification_ (consumed post-delivery). Same vendor, same methodology family, two protocol homes. This works because the _consumption pattern_ differs — but it's worth watching whether the duplication cost outweighs the layering benefit, especially as predictive measurement and post-delivery measurement converge in real-time bidding contexts. + +### Where does conversation-context targeting fit? + +AI-native channels (ChatGPT and similar agentic-conversation surfaces) target ads using the conversation topic as the signal — no cookies, no fingerprinting, no audience graph. The same account gets different advertisers across different chat subjects; the prompt itself carries the targeting signal in real time. + +This is structurally a _signals_-layer pattern (predictive, pre-decision) but at a finer grain than traditional contextual signals (which targeted page URL or page content). It's closer to walled-garden engagement-signal targeting (Facebook News Feed) than to traditional contextual ads — except that the inventory is conversational text, not feed posts. + +AdCP's signals taxonomy doesn't model conversation-context targeting directly today. Whether it warrants a new signal type or fits within the existing `Contextual signals` category is an open question — the inventory shape (conversational vs page-based) and signal lifecycle (per-prompt vs per-pageview) differ, but the consumption pattern (pre-decision targeting input) is the same. + +## What this protocol does not do + +AdCP does not run measurement models. It does not adjudicate between competing verification vendors. It does not define MRC counting conventions. It does not transport or normalize complete attribution outputs; it carries a compact provider-produced performance index when a seller needs an optimizer-ready projection. + +What AdCP does is make the right _connection points_ exist — so the seller's metrics are queryable, the verifier's path is declarable and executable, and the buyer's outcome data has a place to attach. The measurement industry that grew up over thirty years sits on top of those connection points; the protocol does not replace it. diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability.mdx new file mode 100644 index 0000000000..d4961b3bb2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability.mdx @@ -0,0 +1,233 @@ +--- +title: Accountability +sidebarTitle: Accountability +description: "How buyers and sellers negotiate, enforce, and resolve performance standards, measurement terms, and cancellation policies in AdCP guaranteed buys." +"og:title": "AdCP — Accountability" +--- + +## Overview + +Guaranteed media buys in AdCP have three accountability surfaces: + +- **Performance standards** — rate thresholds for viewability, IVT, completion, brand safety, and attention (IAB T&Cs Section XI) +- **Measurement terms** — who counts the billing metric and what remedies (makegoods) apply when thresholds are breached (IAB T&Cs Sections V, VII, IX) +- **Cancellation policy** — notice period and cancellation fee for early termination (IAB T&Cs Section XII) + +These are structured, machine-readable fields — not free text. Buyer and seller agents negotiate them programmatically through the standard product discovery and buy creation workflow. + +## Lifecycle + +### 1. Discovery: Buyer States Requirements + +At `get_products`, the buyer filters for products that meet their performance requirements: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442010", + "buying_mode": "brief", + "brief": "Premium video for CPG brand, Q3 flight", + "filters": { + "delivery_type": "guaranteed", + "required_performance_standards": [ + { + "metric": "viewability", + "threshold": 0.70, + "standard": "mrc", + "vendor": { "domain": "doubleverify.com" } + }, + { + "metric": "ivt", + "threshold": 0.05, + "vendor": { "domain": "doubleverify.com" } + } + ] + } +} +``` + +Products that cannot meet these thresholds or do not support the specified vendors are excluded from results. The buyer is saying: "I need DoubleVerify for viewability at 70% MRC and IVT under 5%." + +### 2. Product Response: Seller Declares Defaults + +Returned products include the seller's default `performance_standards`, `measurement_terms`, and `cancellation_policy`: + +```json +{ + "product_id": "premium_video_q3", + "delivery_type": "guaranteed", + "performance_standards": [ + { "metric": "viewability", "threshold": 0.70, "standard": "mrc", "vendor": { "domain": "doubleverify.com" } }, + { "metric": "ivt", "threshold": 0.05, "vendor": { "domain": "doubleverify.com" } }, + { "metric": "completion_rate", "threshold": 0.75, "vendor": { "domain": "doubleverify.com" } } + ], + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "admanager.google.com" }, + "max_variance_percent": 10 + }, + "makegood_policy": { + "available_remedies": ["additional_delivery", "credit", "invoice_adjustment"] + } + }, + "cancellation_policy": { + "notice_period": { "interval": 30, "unit": "days" }, + "cancellation_fee": { "type": "percent_remaining", "rate": 0.5 } + } +} +``` + +The buyer can see all terms before committing budget. + +### 3. Refinement: Negotiate Before Committing + +Using `buying_mode: "refine"`, the buyer can propose changes to performance standards or measurement terms. This uses the same `required_performance_standards` filter — the seller responds with updated products reflecting what they can offer. Refinement is iterative and non-binding. + +### 4. Buy Creation: Buyer Proposes, Seller Accepts + +At `create_media_buy`, the buyer can propose different terms on the package request: + +```json +{ + "product_id": "premium_video_q3", + "budget": 50000, + "pricing_option_id": "cpm_usd_fixed", + "performance_standards": [ + { "metric": "viewability", "threshold": 0.75, "standard": "mrc", "vendor": { "domain": "doubleverify.com" } }, + { "metric": "ivt", "threshold": 0.03, "vendor": { "domain": "doubleverify.com" } } + ], + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "campaignmanager.google.com" }, + "max_variance_percent": 5 + } + } +} +``` + +The seller has three responses: +- **Accept** — echo the buyer's terms on the confirmed package +- **Reject** — return `TERMS_REJECTED` with details about which term failed and acceptable range +- **Adjust** — return modified terms on the confirmed package (the buyer agent inspects the response to see what changed) + +When the buyer omits `performance_standards` or `measurement_terms`, the product's defaults apply. + +#### Measurement terms for phased-maturation channels + +Some channels produce billing-grade data in phases rather than delivering final numbers on day one — broadcast TV, DOOH, digital with IVT filtering, podcast downloads, and others. For these, the buyer proposes a `measurement_window` alongside the vendor, specifying which maturation stage the guarantee is reconciled against: + +```json +{ + "product_id": "primetime_30s_q4", + "budget": 250000, + "pricing_option_id": "unit_rate_30s", + "agency_estimate_number": "EST-2026-04821", + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "videoamp.com" }, + "measurement_window": "c7", + "max_variance_percent": 10 + } + } +} +``` + +The `measurement_window` references a `window_id` from the product's `reporting_capabilities.measurement_windows`. This tells both sides: "VideoAmp's C7 numbers are what we reconcile against." For a DOOH product it would be `"final"` (post-IVT/fraud-check); for digital it might be `"post_sivt"`. The same mechanism declares both which data is authoritative for billing and when it becomes available — reconciliation and invoicing clocks follow that declared availability. The `agency_estimate_number` is the financial reference that links the order to the agency's media plan — it travels with the order through the transaction lifecycle. + +### 5. Confirmed Package: The Contract + +The confirmed package reflects the agreed terms — the binding contract: + +```json +{ + "package_id": "pkg_001", + "product_id": "premium_video_q3", + "performance_standards": [ + { "metric": "viewability", "threshold": 0.75, "standard": "mrc", "vendor": { "domain": "doubleverify.com" } }, + { "metric": "ivt", "threshold": 0.03, "vendor": { "domain": "doubleverify.com" } } + ], + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "campaignmanager.google.com" }, + "max_variance_percent": 5 + }, + "makegood_policy": { + "available_remedies": ["additional_delivery", "credit", "invoice_adjustment"] + } + } +} +``` + +### 6. Creative Enforcement + +When agreed `performance_standards` specify a vendor, creatives assigned to that package MUST include `tracker_script` or `tracker_pixel` URL assets from that vendor. Sales agents SHOULD reject creative assignments that lack required verification tags with `CREATIVE_REJECTED`. + +For example, if the agreed terms include DoubleVerify for viewability, every creative on the package must carry DV tags so viewability can be measured. + +**Formats without tracker support**: Not all formats accept third-party tracking assets. Broadcast TV spots, for instance, have no tracker slot — there is no pixel to fire on a television. Buyer agents should check the format's `assets` array for tracker slots before proposing performance standards that require creative-level verification. When a format does not support trackers, measurement comes from the vendor declared in `billing_measurement` (panel data, set-top box telemetry) rather than creative-embedded pixels. See [Format definitions](/dist/docs/3.2.0-beta.4/creative/formats#third-party-tracker-support) for details. + +### 7. Breach and Resolution + +When a performance standard or billing measurement variance is breached, the seller proposes a remedy from the agreed `makegood_policy`: + +- **`additional_delivery`** — extend or add impressions (like-for-like, same or later campaign) +- **`credit`** — credit toward future buys on the same account +- **`invoice_adjustment`** — reduce the invoice for the current buy + +The buyer accepts or disputes. + +## Cancellation Policy + +Cancellation policy is not a negotiation surface. The seller declares it on the product; the buyer accepts it by creating a media buy. A guaranteed buy canceled without sufficient notice incurs the declared cancellation fee. + +**Cancellation fee types:** +- `percent_remaining` — percentage of remaining committed spend (e.g., 50%) +- `full_commitment` — buyer owes the full committed budget +- `fixed_fee` — flat monetary amount +- `none` — no cancellation fee + +## Insertion Orders + +The insertion order is a signing wrapper around a committed proposal. It does not introduce new deal terms. All negotiated terms live on products and packages. The IO's `terms` object provides summary fields (advertiser, publisher, budget, dates, payment terms) so buyer agents can verify the IO matches the proposal before a human signs via DocuSign or similar. + +## Vendor Identity and Measurement Agents + +All measurement and verification vendors are identified by domain using the standard [brand reference](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — the same system used for brands, operators, and accounts. Examples: + +- `{ "domain": "doubleverify.com" }` — DoubleVerify +- `{ "domain": "integralads.com" }` — IAS +- `{ "domain": "oracle.com", "brand_id": "moat" }` — MOAT +- `{ "domain": "campaignmanager.google.com" }` — Google Campaign Manager +- `{ "domain": "admanager.google.com" }` — Google Ad Manager +- `{ "domain": "videoamp.com" }` — VideoAmp (broadcast/CTV measurement) +- `{ "domain": "comscore.com" }` — Comscore (cross-platform measurement) + +The vendor's `brand.json` at their domain is the discovery point for their agent capabilities. Vendors declare agents in the `agents` array with `type: "measurement"`: + +```json +{ + "house": { + "domain": "doubleverify.com", + "name": "DoubleVerify", + "agents": [ + { + "type": "measurement", + "url": "https://api.doubleverify.com/adcp/measurement", + "id": "dv_measurement" + } + ] + } +} +``` + +This follows the same pattern used for all agent types in brand.json — brand, rights, governance, creative, buying, and signals agents are all discovered the same way. + +The buyer or seller queries the measurement agent for current rates against agreed performance standards, rather than waiting for post-campaign reporting. The measurement vendor participates as an agent, not a black box. + +### Relationship to Content Standards + +[Content standards agents](/dist/docs/3.2.0-beta.4/governance/content-standards) validate WHAT was delivered (brand safety, content categorization). Performance standards measure HOW WELL it was delivered (viewability rates, IVT rates, completion rates). The vendor may be the same company — DoubleVerify provides both brand safety scoring and viewability measurement — but the concerns are distinct: + +- **Content standards**: `validate_content_delivery` — "was this ad placed next to safe content?" +- **Performance standards**: measurement agent — "what percentage of impressions were viewable?" + +Both use agent-to-agent workflows. Content standards are already fully specified. Measurement agent interfaces are a follow-up to this specification. diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security.mdx new file mode 100644 index 0000000000..b382217469 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security.mdx @@ -0,0 +1,63 @@ +--- +title: Accounts & Security +description: "AdCP accounts and security — authentication, rate cards, billing entities, and data isolation for multi-tenant media buying between buyer and seller agents." +"og:title": "AdCP — Accounts & Security" +--- + + +An **Account** represents a billing relationship between a buyer and a seller in AdCP. Sales agents use accounts to determine pricing (rate cards), billing entities, and to enforce data isolation between different buyers. + +## Authentication + +All requests must be authenticated using a bearer token in the standard `Authorization` header: + +``` +Authorization: Bearer <your_token> +``` + +The server validates this token and identifies the **agent** making the request. The agent may have access to one or more accounts. + +See [Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication) for details on obtaining credentials and authentication methods. + +### Agents and Accounts + +AdCP distinguishes between: + +- **Agent**: The authenticated entity making API calls (e.g., `"pinnacle_trading_desk"`) +- **Account**: The billing relationship for a media buy (e.g., `"acme_c/o_pinnacle"`) + +An agent may operate on multiple accounts. For example, an agency trading desk might manage accounts for multiple advertisers and their own house account. See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) for details. + +For an end-to-end buyer-declared account example, including seller-mediated human setup and activation, see [Provision a seller-mediated account](/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough). + +## Data Isolation + +Authentication provides the foundation for strict data isolation. Sales agents **MUST** enforce the following rules: + +1. When an object like a `MediaBuy` is created, it **MUST** be permanently associated with the account used for that request. +2. For any subsequent request to read or modify that object, the server **MUST** verify that the agent has access to that account. +3. If the agent does not have access, the server **MUST** return a permission denied error. + +This model ensures that one account's data cannot be accessed by agents who lack authorization. Passing an `account_id` for an account you don't have access to will result in an error. + +## Security Requirements + +For the full normative implementation reference — two-step authorization, row-level security, IDOR defense, and the wider security posture (webhooks, idempotency, signed governance context) — see [Security — Agent and Account Isolation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#agent-and-account-isolation). + +### Required Security Measures + +Sales agent implementations **MUST**: + +- Validate bearer tokens on every authenticated request +- Enforce account-based data isolation +- Use TLS for all communications +- Log authentication failures for security monitoring + +### Recommended Security Measures + +Sales agent implementations **SHOULD**: + +- Implement rate limiting per agent and account +- Support token expiration and refresh +- Provide audit logging for compliance +- Support IP allowlisting for high-security accounts diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine.mdx new file mode 100644 index 0000000000..4ce8d1b52f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine.mdx @@ -0,0 +1,425 @@ +--- +title: Agentic eXecution Engine (AXE) +description: "Agentic eXecution Engine (AXE) — AdCP's real-time execution layer for brand suitability enforcement, frequency capping, and dynamic audience targeting at impression time." +"og:title": "AdCP — Agentic eXecution Engine (AXE)" +testable: true +--- + +<Warning> +AXE is deprecated. The [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match) replaces AXE with structural privacy separation, multi-surface support (web, mobile, CTV, AI assistants, retail media), and a standardized offer model. New integrations should use TMP. Existing AXE integrations will continue to work — the `axei`/`axex`/`axem` segment model maps to TMP's offers and signals. +</Warning> + +The Agentic eXecution Engine (AXE) is AdCP's original real-time execution layer that enables dynamic audience targeting, brand suitability enforcement, and frequency management at impression time. + +AXE is how AdCP reaches impression-time execution. It enables cross-publisher frequency capping the same way OpenRTB enables programmatic decisioning: by giving the buyer or orchestrator a real-time look at each impression before the ad server decides whether to serve. + +## Two-Phase Workflow + +AXE operates in two distinct phases: **offline campaign setup** and **real-time ad serving**. + +### Phase 1: Offline Setup + +Before ads serve, campaigns are configured and segment data is synchronized: + +```mermaid +flowchart TB + subgraph offline["Offline Setup Phase"] + direction TB + + buyer["**Buyer Agent**<br/>• Campaigns<br/>• Budgets<br/>• Targeting"] + signal["**Signal Agent**<br/>• Audiences<br/>• Contextual<br/>• Suitability"] + orch["**Orchestrator**<br/>• Map to AXE segments<br/>• Sync to RTD"] + sales["**Sales Agent**<br/>Create line items<br/>with AXE targeting"] + + buyer --> orch + signal --> orch + orch --> sales + end +``` + +**What happens:** +1. **Buyer Agent** creates campaigns with targeting and budgets via AdCP +2. **Signal Agents** attach contextual data (audiences, brand suitability rules, weather triggers) +3. **Orchestrator** maps campaigns to AXE segments and syncs data to the real-time module +4. **Sales Agent** creates ad server line items targeting AXE segment key-values + +### Phase 2: Real-Time Serving + +When an ad request arrives, AXE evaluates it in real-time and returns segment decisions: + +```mermaid +flowchart TB + subgraph realtime["Real-Time Serving Phase"] + direction TB + + page["**Page**<br/>User visits"] + adserver1["**Ad Server**<br/>GAM / Kevel"] + prebid["**Prebid**<br/>OpenRTB request"] + axe["**AXE**<br/>Segment lookup"] + + page --> adserver1 --> prebid --> axe + + axeresponse["**AXE Response**<br/>axei: Include segment<br/>axex: Exclude (suitability)<br/>axem: Creative macro data"] + + axe --> axeresponse + + adserver2["**Ad Server**<br/>Match segments to line items<br/>→ Serve ad"] + + axeresponse --> adserver2 + end +``` + +**What happens:** +1. User visits page, triggering ad request +2. Ad server initiates request to Prebid (or similar) +3. Prebid sends OpenRTB bid request to AXE +4. AXE evaluates user/context and returns segment values +5. Ad server matches segments to line items and serves appropriate ad + +## AXE Segment Types + +AXE returns three types of segment values to the ad server: + +| Segment | Key | Purpose | Example | +|---------|-----|---------|---------| +| **Include** | `axei` | Audience targeting - user belongs to this segment | `"seg_auto_intenders"` | +| **Exclude** | `axex` | Brand suitability/suppression - block this impression | `"unsafe_content"` | +| **Macro** | `axem` | Creative personalization data | `"eyJjb250ZXh0IjoiLi4uIn0="` | + +### How Segments Flow to Creatives + +```json +{ + "packages": [{ + "product_id": "premium_video", + "targeting_overlay": { + "axe_include_segment": "seg_auto_intenders_q1", + "axe_exclude_segment": "seg_existing_customers" + } + }] +} +``` + +At impression time: +- `axei` is checked against `axe_include_segment` → must match to serve +- `axex` is checked against `axe_exclude_segment` → must NOT match to serve +- `axem` is passed to creative via the `{AXEM}` macro + +## Data Flow Example + +Here's a concrete example of AXE in action for a customer acquisition campaign: + +### Setup (Offline) + +**1. Buyer uploads suppression list:** +``` +Advertiser CRM + → Hash emails (SHA256) + → Upload to orchestrator + → Receive segment ID: "seg_existing_customers_acme" +``` + +**2. Create media buy with AXE targeting:** +```json +{ + "packages": [{ + "product_id": "premium_video_millennials", + "budget": { "amount": 50000 }, + "targeting_overlay": { + "axe_exclude_segment": "seg_existing_customers_acme" + } + }] +} +``` + +**3. Sales Agent creates line item:** +``` +Line item: "Acme Q1 Acquisition" +Targeting: axex != "seg_existing_customers_acme" +``` + +### Serving (Real-Time) + +**4. User visits publisher site:** +``` +GET /ad-request +User-Agent: Mozilla/5.0... +Cookie: uid=abc123 +``` + +**5. AXE lookup:** +``` +Input: uid=abc123 +Check: Is abc123 in seg_existing_customers_acme? +Result: YES (hashed email matches) +``` + +**6. AXE response:** +```json +{ + "axei": null, + "axex": "seg_existing_customers_acme", + "axem": null +} +``` + +**7. Ad server decision:** +``` +Line item requires: axex != "seg_existing_customers_acme" +Current axex: "seg_existing_customers_acme" +Decision: DO NOT SERVE (user is existing customer) +``` + +**Result:** Acquisition budget is not wasted on existing customers. + +## Core Capabilities + +### 1. Dynamic Audience Targeting + +Bring your own DMP/CDP segments to publisher inventory: + +- Upload audience data (hashed emails, device IDs, etc.) +- Receive segment IDs from your orchestrator +- Reference segment IDs in `axe_include_segment` +- AXE matches users at impression time + +**Use cases:** Lookalike targeting, CRM activation, behavioral segments + +### 2. Brand Suitability + +Real-time content evaluation at impression time: + +- **Content classification** - News, entertainment, sports, etc. +- **Sentiment analysis** - Positive/negative content detection +- **Keyword blocking** - Brand-specific term avoidance +- **Adjacency rules** - What other ads are on the page + +Brand suitability rules flow from Signal Agents through the orchestrator to AXE. + +### 3. Cross-Publisher Frequency Management + +Unlike publisher-side caps, AXE tracks exposure across: + +- Multiple publishers +- Multiple campaigns +- Multiple devices (with identity resolution) + +AXE enforces frequency caps and returns segment decisions to the ad server. The ad server doesn't know *why* a segment matched or didn't match—it just knows whether to serve. + +### How Cross-Publisher Frequency Capping Works + +<Note> +Cross-publisher frequency capping is now handled by the [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match), which uses structurally separated Context Match and Identity Match operations. The AXE segment model maps to TMP's offers and eligibility responses. +</Note> + +In the AXE model, every eligible impression is checked in real time against shared exposure state: + +```mermaid +flowchart LR + pubA["**Publisher A**<br/>Impression opportunity"] + pubB["**Publisher B**<br/>Impression opportunity"] + pubC["**Publisher C**<br/>Impression opportunity"] + req["**OpenRTB-style request**<br/>user, placement, context"] + axe["**AXE**<br/>Evaluate cap eligibility"] + state["**Exposure store**<br/>cross-publisher history"] + decision["**Decision**<br/>serve or suppress"] + + pubA --> req + pubB --> req + pubC --> req + req --> axe + state --> axe + axe --> decision +``` + +In TMP, this same pattern is achieved with structural privacy: the Identity Match path handles frequency caps (the buyer checks exposure history without knowing what page the user is on), and the Context Match path handles content relevance (the buyer evaluates packages without knowing who the user is). The publisher joins both responses locally. + +### 4. First-Party Data Activation + +Activate your customer data without sharing PII: + +1. Hash customer identifiers (emails, phone numbers) +2. Upload to orchestrator (data stays with orchestrator) +3. Reference via segment ID in campaigns +4. AXE matches at impression time +5. Publisher never sees raw customer data + +## Privacy by Design: Opaque Segment IDs + +A key AXE design principle is that **segment IDs are intentionally opaque**. The ad server only sees that segment `ABCD` passed or failed—it doesn't know what type of targeting the segment represents. + +This could mean: +- User exceeded frequency cap +- Page failed brand suitability check +- User is in a first-party suppression list +- User matches an audience segment + +This opacity protects buyer data. Publishers and ad servers cannot reverse-engineer: +- Which users are in buyer CRM lists +- Frequency cap thresholds +- Brand suitability rules +- Audience segment definitions + +All the ad server knows is: "AXE says serve" or "AXE says don't serve." + +## Integration Points + +### For Buyers + +| Step | Action | Result | +|------|--------|--------| +| 1 | Upload audience to orchestrator | Receive segment ID | +| 2 | Include segment ID in `create_media_buy` | Campaign created with AXE targeting | +| 3 | Monitor delivery reports | Track segment match rates | + +### For Publishers + +Publishers don't implement AXE directly — the orchestrator handles integration (see [How AXE Reaches the Page](#how-axe-reaches-the-page)). Publisher responsibilities: + +1. **Enable the orchestrator's integration** - Add RTD module (Prebid) or enable platform integration +2. **Accept key-value targeting** - Pass `axei`, `axex` values to ad server +3. **Configure line items** - Target on AXE segment key-values +4. **Declare support** - Indicate AXE compatibility in `adagents.json` + +### For Orchestrators + +Orchestrators operate the AXE layer: + +1. **Segment ingestion** - Accept audience data from buyers +2. **Real-time lookups** - Sub-10ms segment membership checks +3. **Signal integration** - Apply brand suitability and contextual signals +4. **Frequency state** - Maintain cross-campaign exposure tracking +5. **Ad platform integration** - Expose segments via Prebid RTD module, platform container, or server-side endpoint + +## How AXE Reaches the Page + +AXE is a protocol-level concept. **Orchestrators implement AXE** and integrate it into ad serving environments. The integration path depends on the ad platform: + +| Integration Path | How It Works | Example | +|------------------|-------------|---------| +| **Prebid RTD module** | Orchestrator distributes a Prebid module that calls the AXE endpoint during auction | `exampleRtdProvider` | +| **Proprietary ad platform** | AXE runs as a container or secure enclave within the platform's infrastructure | Platform-native integration | +| **Server-side** | AXE endpoint called server-to-server by the ad platform before decisioning | Custom ad server integration | + +The common thread: whatever the integration path, AXE evaluates segments and returns `axei`/`axex`/`axem` decisions that the ad platform uses for targeting. For cross-publisher frequency capping, those impression-time calls are what let the buyer apply shared exposure rules across sellers instead of relying on one publisher's local ad server counter. + +### The Chain: Orchestrator → AXE Endpoint → Segment Targeting + +``` +Ad platform calls orchestrator's AXE endpoint + → AXE evaluates segments and returns axei/axex/axem values + → Values used for targeting decisions (key-values, container logic, etc.) + → Matching campaigns serve +``` + +The `axe_integrations` URL in a seller's [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response tells buyers which orchestrator's AXE endpoint the seller connects to: + +```json +{ + "media_buy": { + "execution": { + "axe_integrations": ["https://axe.example.com"] + } + } +} +``` + +### Prebid Integration (Web) + +For web publishers using Prebid, AXE integrates via the orchestrator's RTD module. The module name in Prebid matches the orchestrator, not "AXE": + +```javascript test=false +// Prebid build includes: rtdModule, exampleRtdProvider, ...other modules + +pbjs.setConfig({ + realTimeData: { + auctionDelay: 100, + dataProviders: [{ + name: 'example', // Orchestrator's module name + waitForIt: true, + params: { + // Orchestrator-specific configuration + } + }] + } +}); +``` + +The orchestrator's RTD module: +1. Intercepts the auction before bids are requested +2. Sends an OpenRTB-style request to the AXE endpoint +3. Receives segment decisions (axei/axex/axem) +4. Sets targeting key-values on the ad server request + +Publishers don't need to know AXE internals — the orchestrator's module handles everything. + +### Proprietary Platform Integration + +AXE can also run within proprietary ad platforms as a container or secure enclave. In this model: +- The orchestrator deploys AXE logic into the platform's infrastructure +- Segment evaluation happens within the platform's decisioning pipeline +- No external network call is needed at impression time — reducing latency +- The platform calls AXE as part of its native ad selection process + +This is particularly relevant for platforms that don't use Prebid or where latency requirements are stricter than what an external RTD call allows. + +### Identifying AXE Support + +The definitive check is the seller's `get_adcp_capabilities` response. For Prebid-based integrations, you can also inspect the page directly: + +| What to look for | Where | Meaning | +|-------------------|-------|---------| +| `axe_integrations` in capabilities | `get_adcp_capabilities` response | Seller supports AXE | +| `axei`/`axex`/`axem` key-values | Ad server request (network tab) | AXE segments flowing to ad server | +| Orchestrator RTD module (e.g., `exampleRtdProvider`) in Prebid build | Page source or `pbjs.installedModules` | AXE via Prebid | +| Orchestrator entry in `realTimeData.dataProviders` | `pbjs.getConfig('realTimeData')` | AXE is active | + +Different orchestrators may implement AXE through different integration paths — the segment protocol (axei/axex/axem) is the same regardless of how AXE is deployed. + +## Universal Macro: {AXEM} + +Creatives can receive AXE context data for dynamic rendering: + +```html +<img src="https://cdn.brand.com/creative.png" + data-context="{AXEM}" /> +``` + +The `{AXEM}` macro contains base64-encoded contextual metadata: +- Weather conditions +- Content category +- User segment attributes (anonymized) +- Custom orchestrator data + +See [Universal Macros](/dist/docs/3.2.0-beta.4/creative/universal-macros) for details. + +## When to Use AXE + +| Scenario | Use AXE? | Alternative | +|----------|----------|-------------| +| Target users in my CRM | ✅ Yes | — | +| Suppress existing customers | ✅ Yes | — | +| Cross-publisher frequency cap | ✅ Yes | — | +| Real-time brand suitability | ✅ Yes | — | +| Target "millennials in California" | ❌ No | Express in brief | +| Geographic restrictions | ❌ No | Use `geo_countries` | +| Publisher's audience segments | ❌ No | Express in brief | +| Single-publisher frequency cap | ❌ No | Publisher ad server handles this | + +## Performance + +AXE is designed for ad serving latency requirements: + +| Operation | Target Latency | +|-----------|----------------| +| Segment membership lookup | < 10ms | +| Brand suitability evaluation | < 20ms | +| Frequency check | < 5ms | +| Combined AXE decision | < 50ms | + +## Related Documentation + +- **[Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting)** - Brief-based targeting and geographic overlays +- **[Signals Protocol](/dist/docs/3.2.0-beta.4/signals/overview)** - Signal discovery and activation +- **[Universal Macros](/dist/docs/3.2.0-beta.4/creative/universal-macros)** - Creative-level AXE integration +- **[Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design)** - Building orchestration platforms diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority.mdx new file mode 100644 index 0000000000..58d6b9f1be --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority.mdx @@ -0,0 +1,182 @@ +--- +title: Billing Authority +sidebarTitle: Billing Authority +description: "How AdCP names the authoritative counter of a media buy's billing metric, marks numbers as final, and reconciles between buyer and seller views when those views disagree." +"og:title": "AdCP — Billing Authority" +--- + +## Overview + +For a media buy to invoice deterministically, two questions must have machine-readable answers: + +1. **Whose number is authoritative?** Different deals name different parties — the seller's ad server, a buyer's third-party ad server, or a named measurement vendor like Nielsen or IAS. +2. **Has that number stopped moving?** Telemetry settles over hours, days, or weeks (broadcast C3 → C7 DVR accumulation, digital post-IVT scrubbing, podcast 30-day downloads, conversion dedup). Final numbers are billable; provisional numbers are not. + +AdCP answers both with structured terms already on the wire: `measurement_terms.billing_measurement` (negotiated at `create_media_buy`) names authority; `is_final` / `final` flags with `finalized_at` timestamps (on `get_media_buy_delivery` and `report_usage`) mark closure. + +This page ties those pieces together. + +## Naming authority + +`measurement_terms.billing_measurement` carries: + +| Field | Meaning | +|---|---| +| `vendor` (required, [BrandRef](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json)) | The party whose count of the billing metric governs invoicing. Same field shape covers seller's ad server, buyer's 3PAS, or a third-party vendor — the BrandRef domain disambiguates. | +| `max_variance_percent` | Tolerance above which the seller's and authoritative party's counts trigger resolution under `makegood_policy`. IAB default is 10%; broadcast/CTV often 5%. | +| `measurement_window` | Which maturation stage of the data is the reconciliation point (`c7`, `post_sivt`, `downloads_30d`, etc.) — references a `window_id` from the product's `reporting_capabilities.measurement_windows`. | +| `finalization_deadline_hours` | Maximum hours by which the authoritative party MUST publish a final record. When `measurement_window` is set, hours are counted from the window's close (not from `reporting_period.end`); when absent, from `reporting_period.end`. The deadline applies symmetrically to whichever party is named in `vendor`. On miss, the counterparty MAY fall back to its own attestation; the breach is handled under `makegood_policy`. | + +Absence is informative: when `billing_measurement` is absent the default is seller-attested, with no contractual finalization deadline. + +## Marking numbers as final + +Final means **settled for the named measurement window** — not "final forever." A broadcast row marked `is_final: true` for `measurement_window: "c3"` is final for C3; a later `c7` row supersedes it with its own provisional → final lifecycle. Disputes (when AdCP 3.2 adds them) join on `(media_buy_id, reporting_period, measurement_window)`. + +### On `get_media_buy_delivery` + +Each row in `media_buy_deliveries[]` carries: + +- `is_final: boolean` — row-level finality, equivalent to all packages in the row being final for the same window. +- `finalized_at: string (date-time)` — present iff `is_final: true`. Anchors any deadline declared in `billing_measurement.finalization_deadline_hours`. +- Per-package: `by_package[*].is_final`, `by_package[*].finalized_at`, `by_package[*].measurement_window`, `by_package[*].supersedes_window`. + +### On `report_usage` + +Each usage record carries: + +- `final: boolean` — **absent means unknown.** Set `true` only when the reporter has actually settled the numbers (e.g., post-SIVT month-end close). Set `false` for preliminary records (daily pacing pushes, intra-period progress). When `measurement_terms.billing_measurement` names this reporter as authoritative, the receiver MUST NOT invoice on `final: false` or absent — request a final record first. For 3.0-style usage with no `billing_measurement` and for non-media-buy variants (signals, governance, creative, brand — domains with no provisional state concept), receivers MAY treat absent as final, preserving existing behavior. +- `finalized_at: string (date-time)` — present iff `final: true`. +- `measurement_window: string` — SHOULD be set when the buy's `billing_measurement.measurement_window` is set, so the receiver reconciles against the correct stage. + +When the same `(account, media_buy_id, reporting_period)` is later reported with `final: true`, that record supersedes any prior records for the period. + +### Distinguishing webhook finality from row finality + +`get_media_buy_delivery` webhooks carry a top-level `notification_type` enum that includes `"final"` — this signals **"this is the last scheduled notification for the campaign,"** not that contained rows are final for invoicing. The two axes are independent: a webhook with `notification_type: "final"` may still contain rows where `is_final: false` (e.g., a campaign-end notification before C7 settles). Always check the per-row `is_final` for billing decisions. + +## How a seller produces an invoice + +### Seller-attested (default) + +``` +billing_measurement absent, or vendor names seller's own ad server +``` + +Seller invoices off `get_media_buy_delivery` rows where `is_final: true` for the contracted `measurement_window`. No `report_usage` from the buyer is required. + +### Buyer-attested (3PAS) + +``` +billing_measurement.vendor.domain = "campaignmanager.google.com" (buyer's CM360) +billing_measurement.max_variance_percent = 10 +billing_measurement.measurement_window = "post_sivt" +billing_measurement.finalization_deadline_hours = 240 // 10 days after post_sivt close +``` + +Sequence: + +1. Buyer's CM360 settles post-SIVT for the period. +2. The buyer's operator — in practice a holdco platform (e.g., Choreograph, Annalect, Acxiom) or an in-house agency engineering team that wraps the CM360 export — calls `report_usage` with the media-buy record: `media_buy_id`, `impressions`, `vendor_cost`, `currency`, `final: true`, `finalized_at`, `measurement_window: "post_sivt"`. Daily pacing pushes (if used) set `final: false`; only the settled file sets `final: true`. +3. Seller compares against its own post-SIVT row from `get_media_buy_delivery` (`is_final: true`, same `measurement_window`). If `|seller - buyer| / max ≤ max_variance_percent`, the seller invoices on the buyer's numbers. +4. If variance exceeds threshold, the seller proposes a remedy from `makegood_policy.available_remedies`. +5. If the buyer doesn't publish a final record within `finalization_deadline_hours`, the seller MAY invoice off its own seller-attested numbers and treat the late finalization as a breach under `makegood_policy`. + +> **Today's reality:** monthly 3PAS reconciliation is mostly handled out-of-band via CSV/PDF emailed to the seller's AR team. This flow is the wire-format upgrade — the first adopters are likely holdco operators with the engineering to wrap CM360 / Flashtalking / Innovid exports in `report_usage`, working with sympathetic direct publishers rather than RTB SSPs. + +### Vendor-attested (named third party) + +``` +billing_measurement.vendor.domain = "nielsen.com" +billing_measurement.max_variance_percent = 5 +billing_measurement.measurement_window = "c7" +billing_measurement.finalization_deadline_hours = 528 // 22 days after c7 close +``` + +Two operational patterns, depending on who holds the vendor relationship: + +- **Seller holds the vendor relationship (the common CTV pattern).** The seller pulls C7 numbers from Nielsen (NPower, etc.) on its own schedule and publishes them on `get_media_buy_delivery` as a row with `measurement_window: "c7"`, `is_final: true`, and `finalized_at` set when the C7 window closes plus its internal processing. No `report_usage` push from the buyer is needed; reconciliation happens against the seller's row. +- **Buyer holds the vendor relationship.** The buyer (or its operator) fetches the vendor's authoritative numbers — e.g., an agency's iSpot subscription, an in-house IAS dashboard export — and pushes them via `report_usage` against the buy's account with `final: true`, `finalized_at`, and `measurement_window: "c7"`. The vendor itself does not call AdCP. + +The `vendor.domain` BrandRef identifies who the contract names, not who calls the API. The vendor's own integration (NPower feed, IAS API, DV pinnacle) is out of AdCP scope. + +> **Today's reality:** SSPs running RTB will keep being seller-attested for the foreseeable future — their billing systems were never designed for buyer-attested invoice basis and `max_variance_percent` plus `makegood_policy` is not enough commercial cover for them to retrofit it. The first real adopters here are CTV direct sellers (e.g., Disney, NBCU, Paramount) whose Nielsen-backed guarantees already invoice on a measurement vendor's count — for them this PR just describes existing practice in structured terms. + +## Resolving disagreements today + +When numbers disagree beyond `max_variance_percent`, AdCP 3.0–3.1 expects out-of-band resolution between counterparties, backed by: + +- The buy's `makegood_policy.available_remedies` — the menu of remedies (additional delivery, credit, invoice adjustment) the seller has pre-committed to. +- Final records on both sides with `finalized_at` timestamps — a full audit trail of who said what was final, when. +- The original `committed_metrics` and `measurement_terms` captured at `create_media_buy` — what the parties signed up for. + +A structured dispute task — opening a dispute on the wire, transitioning it through `under_review` / `seller_proposed_adjustment` / `buyer_accepted` / `unresolved_arbitration`, and recording resolution in the audit log — is targeted for AdCP 3.2. The data shape needed to dispute (final records, attestation, measurement window, makegood menu) is already on the wire in 3.1. + +## Worked example: buyer-attested 3PAS reconciliation + +```json title="create_media_buy excerpt — measurement terms" +{ + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "campaignmanager.google.com" }, + "max_variance_percent": 10, + "measurement_window": "post_sivt", + "finalization_deadline_hours": 240 + }, + "makegood_policy": { + "available_remedies": ["additional_delivery", "credit", "invoice_adjustment"] + } + } +} +``` + +```json title="get_media_buy_delivery — seller's final post-SIVT row" +{ + "media_buy_deliveries": [ + { + "media_buy_id": "mb_q1_2026", + "is_final": true, + "finalized_at": "2026-04-08T18:00:00Z", + "by_package": [ + { + "package_id": "pkg_001", + "is_final": true, + "finalized_at": "2026-04-08T18:00:00Z", + "measurement_window": "post_sivt", + "impressions": 5120000, + "spend": 51200 + } + ] + } + ] +} +``` + +```json title="report_usage — buyer's final 3PAS push" +{ + "idempotency_key": "f9b3...e2a1", + "reporting_period": { "start": "2026-03-01T00:00:00Z", "end": "2026-03-31T23:59:59Z" }, + "usage": [ + { + "account": { "account_id": "acct_acme_seller" }, + "media_buy_id": "mb_q1_2026", + "currency": "USD", + "impressions": 5040000, + "vendor_cost": 50400, + "final": true, + "finalized_at": "2026-04-09T14:32:00Z", + "measurement_window": "post_sivt" + } + ] +} +``` + +Variance: `|5120000 - 5040000| / 5120000 = 1.56%` — well under the 10% threshold. Seller invoices on the buyer's 5.04M impressions × the agreed rate. Both sides retain audit-traceable final records. + +## Related + +- [`measurement-terms`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/measurement-terms.json) — schema +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) — seller-side finality flags +- [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) — buyer-side / third-party finality flags +- [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) — performance standards, makegood remedies, cancellation +- [Reporting capabilities and measurement windows](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/index.mdx new file mode 100644 index 0000000000..a55f96a1da --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/index.mdx @@ -0,0 +1,121 @@ +--- +title: Advanced Topics +sidebarTitle: Overview +description: "AdCP advanced topics — targeting, pricing models, accounts and security, sandbox testing, and the Trusted Match Protocol (TMP) for real-time execution." +"og:title": "AdCP — Advanced Topics" +--- + + +This section covers advanced AdCP features and implementation details for experienced users who need deep technical understanding of the protocol's sophisticated capabilities. + +Advanced topics include: + +- **Targeting Systems** - Sophisticated audience and placement targeting +- **Dimensional Modeling** - Unified system for categorization and reporting +- **Security & Access Control** - Multi-tenant security and permissions +- **Implementation Details** - Architecture decisions and design rationale +- **Development Tools** - Testing and development acceleration + +## Core Advanced Concepts + +### Targeting +AdCP uses a brief-first targeting philosophy with technical overlays for specific needs: + +- **[Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting)** - Brief-based targeting with geographic overlays and real-time signals +- **[Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match)** - Real-time execution layer for package activation across web, mobile, CTV, AI assistants, and retail media. Replaces AXE. +- **[Agentic eXecution Engine (AXE)](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine)** - Deprecated. See TMP. + +This approach enables natural language targeting specifications while supporting technical requirements for compliance and testing. + +### Security & Access Control +Enterprise-grade security features for multi-tenant environments: + +- **[Accounts & Security](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security)** - Multi-tenant security model and access control +- **[Policy Compliance](/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance)** - Automated compliance checking and enforcement + +### Implementation Architecture +Deep technical details for implementers: + +- **[Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design)** - Technical architecture for AdCP orchestrators + +## Development & Testing + +### Development Tools +Accelerate development with AdCP's sandbox capabilities: + +- **[Sandbox Mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox)** - Run operations without real platform calls or spend +- **Simulated responses** for testing the full media buying lifecycle risk-free + +### Performance Optimization +Understanding and optimizing AdCP implementations: +- **Response time expectations** for different operation types +- **Caching strategies** for improved performance +- **Scalability considerations** for high-volume implementations + +## Integration Patterns + +### Multi-Platform Orchestration +Patterns for managing campaigns across multiple advertising platforms: +- **State synchronization** across platforms +- **Unified reporting** from diverse data sources +- **Cross-platform optimization** strategies + +### AI Agent Integration +Best practices for AI agent implementations: +- **Natural language processing** for brief interpretation +- **Learning from performance** data for optimization +- **Error handling** and recovery strategies + +## Advanced Targeting + +### Layered Targeting Approach +AdCP's targeting system supports multiple layers of refinement: + +1. **Product-level targeting** - Built into product definitions +2. **Package-level overlays** - Additional targeting refinements +3. **Real-time signals** - Dynamic targeting adjustments +4. **Frequency management** - Cross-campaign frequency control + +### Targeting Consistency +AdCP's targeting approach ensures consistency across the campaign lifecycle: +- **Briefs** communicate targeting intent during discovery +- **Products** include targeting capabilities in their definitions +- **Overlays** add geographic restrictions when needed +- **Signals** enable real-time targeting decisions + +This ensures alignment between targeting intent and campaign delivery. + +## Enterprise Features + +### Multi-Tenant Architecture +Support for agency and enterprise environments: +- **Account isolation** for data security +- **Shared resources** where appropriate +- **Permission hierarchies** for complex organizations + +### Compliance & Governance +Built-in features for regulatory compliance: +- **Audit trails** for all operations +- **Approval workflows** for sensitive operations +- **Data governance** controls and monitoring + +## Technical Deep Dives + +### Protocol Design Philosophy +Understanding the core principles behind AdCP: +- **MCP-based architecture** for AI-first interaction +- **Asynchronous by design** for real-world timing +- **Human-in-the-loop** when needed +- **Platform abstraction** for universal compatibility + +### Performance Characteristics +Detailed understanding of system performance: +- **Response time categories** and expectations +- **Scalability limits** and considerations +- **Resource optimization** strategies + +## Next Steps + +For practical application of these advanced concepts: +- **Review [Sandbox Mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox)** for development best practices +- **Explore [Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design)** for architecture guidance \ No newline at end of file diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models.mdx new file mode 100644 index 0000000000..eeffc8da33 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models.mdx @@ -0,0 +1,942 @@ +--- +title: Pricing Models +description: "AdCP pricing models — CPM, CPCV, CPP, CPC, CPA, revenue share, time-based, and DOOH pricing. Publisher-declared, buyer-selected model with rate card support." +"og:title": "AdCP — Pricing Models" +--- + + +AdCP supports multiple pricing models to accommodate different advertising channels and business objectives. Publishers declare which pricing models they support, and buyers select from available options. + +## Publisher-Declared, Buyer-Selected Model + +### How It Works + +1. **Publishers declare pricing options** in their products via `pricing_options` array (each with unique `pricing_option_id`) +2. **Buyers discover available options** through `get_products` +3. **Buyers select a specific option** when creating a media buy via `pricing_option_id` +4. **Delivery is measured** according to the declared `delivery_measurement` provider + +### Key Benefits + +- **Flexibility**: Publishers can offer multiple pricing models for the same inventory +- **Currency Support**: Publishers specify supported currencies; buyers must match +- **Market Standards**: Each channel (TV, video, display, performance) can use its natural pricing unit +- **Clear Expectations**: Both parties agree on pricing before campaign launch + +## Measurement & Source of Truth + +### Measurement Provider as Source of Truth + +**The product declares the measurement provider, and the buyer accepts that provider as the source of truth for the buy.** + +Publishers specify their measurement provider in the product: + +```json +{ + "product_id": "premium_video", + "delivery_measurement": { + "provider": "Google Ad Manager with IAS viewability verification", + "notes": "MRC-accredited viewability measurement. 50% in-view for 1 second (display) or 2 seconds (video)." + } +} +``` + +**Common Measurement Providers:** +- **Ad Servers**: Google Ad Manager, Freewheel, SpringServe +- **Attention Metrics**: Adelaide, Lumen, TVision +- **Third-Party Verification**: IAS, DoubleVerify, Scope3 +- **TV/Audio Measurement**: Nielsen, Comscore, iSpot.tv, Triton Digital +- **DOOH**: Geopath, Vistar, Place Exchange + +By accepting the product, buyers agree to use the declared measurement provider as the authoritative source for delivery metrics. + +### Measurement Terms and Performance Standards + +Beyond declaring a provider, sellers can publish structured terms on products — and buyers can negotiate them at buy creation. These are two separate concerns: + +- **`measurement_terms`** — Who counts the billing metric and what happens when thresholds are breached (makegoods) +- **`performance_standards`** — What rate thresholds apply (viewability, IVT, completion, brand safety, attention) + +```json +{ + "product_id": "premium_guaranteed_video", + "delivery_measurement": { + "provider": "Google Ad Manager with DoubleVerify verification", + "notes": "MRC-accredited viewability. DV IVT filtering enabled." + }, + "measurement_terms": { + "billing_measurement": { + "vendor": { "domain": "admanager.google.com" }, + "max_variance_percent": 10 + }, + "makegood_policy": { + "available_remedies": ["additional_delivery", "credit", "invoice_adjustment"] + } + }, + "performance_standards": [ + { + "metric": "viewability", + "threshold": 0.70, + "standard": "mrc", + "vendor": { "domain": "doubleverify.com" } + }, + { + "metric": "ivt", + "threshold": 0.05, + "vendor": { "domain": "doubleverify.com" } + }, + { + "metric": "completion_rate", + "threshold": 0.80, + "vendor": { "domain": "doubleverify.com" } + } + ] +} +``` + +**Measurement terms fields:** + +- **`billing_measurement`** — Which vendor's count of the billing metric (determined by `pricing_model`) governs invoicing. `max_variance_percent` defines the threshold at which the non-billing party's count divergence triggers resolution. +- **`makegood_policy`** — Closed menu of remedies available when any performance standard or billing variance is breached. Three remedy types: `additional_delivery` (extend/add impressions, like-for-like), `credit` (toward future buys), `invoice_adjustment` (reduce current invoice). Seller proposes from this menu; buyer accepts or disputes. + +**Performance standards fields:** + +Each entry in the `performance_standards` array specifies: + +- **`metric`** — What is measured: `viewability`, `ivt`, `completion_rate`, `brand_safety`, `attention_score` +- **`threshold`** — Rate as a decimal (0-1). Whether this is a floor or ceiling depends on the metric: viewability, completion_rate, brand_safety, attention_score are floors (must exceed); ivt is a ceiling (must not exceed). +- **`standard`** — Required for viewability (`"mrc"` or `"groupm"`). Omit for other metrics. +- **`vendor`** — Who measures it, identified by domain. When agreed on a confirmed package, creatives MUST include tracker assets from specified vendors. + +**Negotiation flow:** + +1. Seller publishes `measurement_terms` and `performance_standards` on the product (defaults) +2. Buyer proposes overrides on the package request at `create_media_buy` +3. Seller accepts (echoes on confirmed package), rejects (`TERMS_REJECTED`), or adjusts (returns modified terms) +4. If a threshold is breached, seller proposes a remedy from the agreed `makegood_policy`; buyer accepts or disputes + +When the buyer omits these fields, the product's defaults apply. + +### Cancellation Policy + +Guaranteed products can declare a `cancellation_policy` with the minimum notice period required before cancellation takes effect: + +```json +{ + "product_id": "premium_guaranteed_video", + "delivery_type": "guaranteed", + "cancellation_policy": { + "notice_period": { "interval": 30, "unit": "days" }, + "cancellation_fee": { "type": "percent_remaining", "rate": 0.5 } + } +} +``` + +**Cancellation fee types:** + +- **`percent_remaining`** — Percentage of remaining committed spend (requires `rate`, e.g., `0.5` for 50%) +- **`full_commitment`** — Buyer owes the full committed budget regardless of delivery +- **`fixed_fee`** — Flat monetary amount (requires `amount` in the buy's currency) +- **`none`** — No cancellation fee (cancellation with notice is free) + +Unlike `measurement_terms`, cancellation policy is not a negotiation surface — the seller declares it and the buyer accepts it by creating a media buy against the product. A guaranteed buy canceled without sufficient notice incurs the declared cancellation fee. + +### Best Practices + +**For Publishers:** +- Clearly identify your measurement provider (ad server and any third-party verification) +- Explain your measurement methodology in plain language +- For DOOH, specify your audience measurement source (e.g., Geopath, venue sensors) + +**For Buyers:** +- Review the measurement provider before committing budget +- Ensure the provider meets your campaign requirements +- Negotiate audit rights in contracts if needed + +## Supported Pricing Models + +### CPM (Cost Per Mille) +**Cost per 1,000 impressions** - Traditional display advertising pricing. + +**Use Cases**: Display, native, banner advertising + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_guaranteed", + "pricing_model": "cpm", + "fixed_price": 12.50, + "currency": "USD", + "min_spend_per_package": 5000 +} +``` + +**Billing**: Charged per 1,000 ad impressions served + +--- + +### vCPM (Viewable Cost Per Mille) +**Cost per 1,000 viewable impressions** - Payment only for impressions meeting MRC viewability standard. + +**Use Cases**: Display, native, video advertising with viewability guarantee + +**Viewability Standard**: MRC (Media Rating Council) standard requires: +- **Display ads**: 50% of pixels in-view for at least 1 continuous second +- **Video ads**: 50% of pixels in-view for at least 2 continuous seconds + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/vcpm-option.json", + "pricing_option_id": "vcpm_usd_guaranteed", + "pricing_model": "vcpm", + "fixed_price": 18.50, + "currency": "USD", + "min_spend_per_package": 5000 +} +``` + +**Billing**: Charged per 1,000 viewable impressions (impressions meeting MRC viewability threshold). Viewability is measured by the declared measurement provider. + +**Measurement**: When available, publishers declare their viewability measurement provider in the optional `delivery_measurement` field. Common providers include IAS (Integral Ad Science), DoubleVerify, MOAT, and Google Active View. + +--- + +### CPCV (Cost Per Completed View) +**Cost per 100% video/audio completion** - Payment only for fully completed views. + +**Use Cases**: Video campaigns, audio ads, pre-roll video + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpcv-option.json", + "pricing_option_id": "cpcv_usd_guaranteed", + "pricing_model": "cpcv", + "fixed_price": 0.15, + "currency": "USD" +} +``` + +**Billing**: Charged only when viewer completes 100% of the video/audio ad. Completion is measured by the declared measurement provider. + +--- + +### CPV (Cost Per View) +**Cost per view at threshold** - Payment when viewer reaches publisher-defined threshold. + +**Use Cases**: Video campaigns with shorter completion requirements + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpv-option.json", + "pricing_option_id": "cpv_usd_50pct", + "pricing_model": "cpv", + "fixed_price": 0.08, + "currency": "USD", + "parameters": { + "view_threshold": 0.5 + } +} +``` + +**Billing**: Charged when viewer reaches threshold (e.g., 50% completion, 30 seconds) + +**Parameters**: +- `view_threshold`: Decimal from 0.0 to 1.0 (e.g., 0.5 = 50% completion) + +--- + +### CPP (Cost Per Point) +**Cost per Gross Rating Point** - Traditional TV/radio buying metric. + +**Use Cases**: Connected TV, linear TV, radio, audio streaming + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpp-option.json", + "pricing_option_id": "cpp_usd_a18-49", + "pricing_model": "cpp", + "fixed_price": 250.00, + "currency": "USD", + "parameters": { + "demographic": "A18-49", + "min_points": 50 + }, + "min_spend_per_package": 12500 +} +``` + +**Billing**: Charged per rating point delivered to target demographic + +**Parameters**: +- `demographic`: Target demographic (e.g., "A18-49", "W25-54", "M35+") +- `min_points`: Minimum GRP commitment required + +**Metrics Reported**: +- `grps`: Total Gross Rating Points delivered +- `reach`: Unique individuals reached +- `frequency`: Average frequency per individual + +**Measurement Requirements**: + +CPP pricing requires **certified demographic measurement**. Publishers should declare their measurement provider: + +```json +{ + "pricing_model": "cpp", + "fixed_price": 250.00, + "delivery_measurement": { + "provider": "Nielsen DAR", + "notes": "Panel-based demographic measurement for A18-49. GRP reports available weekly." + } +} +``` + +**Common Measurement Providers for CPP**: +- **Nielsen DAR/TV**: Industry-standard TV measurement +- **Comscore**: Campaign Ratings for CTV +- **iSpot.tv**: Advanced TV analytics +- **Triton Digital**: Audio/streaming measurement + +Buyers should verify the measurement provider meets their campaign requirements before accepting CPP deals. + +--- + +### CPC (Cost Per Click) +**Cost per click** - Performance-based pricing for engagement. + +**Use Cases**: Direct response campaigns, search ads, social advertising + +**Example**: +```json +{ + "pricing_model": "cpc", + "currency": "USD", + "floor_price": 0.50, + "price_guidance": { + "p50": 1.20, + "p75": 2.00 + } +} +``` + +**Billing**: Charged only when user clicks the ad + +--- + +### CPA (Cost Per Acquisition) +**Cost per conversion event** - Advertiser pays when a defined conversion occurs. + +**Use Cases**: Retail media (pay per order), lead generation, app install campaigns, commerce media + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpa-option.json", + "pricing_option_id": "cpa_usd_purchase", + "pricing_model": "cpa", + "event_type": "purchase", + "fixed_price": 5.00, + "currency": "USD" +} +``` + +**Billing**: Charged a fixed price when the specified `event_type` fires. The pricing option declares what event triggers billing — this is independent of `optimization_goals`, which controls delivery optimization. + +**Parameters**: +- `event_type` (required): The conversion event that triggers billing. Uses the standard event type enum (e.g., `purchase`, `lead`, `app_install`, `add_to_cart`, `subscribe` for paid subscriptions, `follow` for free durable opt-ins). +- `event_source_id` (optional): When present, only events from this specific source count toward billing. Must match an event source configured via `sync_event_sources`. When omitted, any event of the specified `event_type` counts. + +**Example** (different rates by event source): +```json +{ + "pricing_options": [ + { + "pricing_option_id": "cpa_online_purchase", + "pricing_model": "cpa", + "event_type": "purchase", + "event_source_id": "website_pixel", + "fixed_price": 5.00, + "currency": "USD" + }, + { + "pricing_option_id": "cpa_instore_purchase", + "pricing_model": "cpa", + "event_type": "purchase", + "event_source_id": "instore_attribution", + "fixed_price": 3.00, + "currency": "USD" + } + ] +} +``` + +**Pricing vs. optimization**: The CPA pricing option's `event_type` (what triggers billing) is independent of the package's `optimization_goals` (what the platform optimizes delivery toward). For example, a package can use CPA pricing on `lead` events while setting an event goal with `event_sources` containing purchase events and `target: { kind: "per_ad_spend", value: 4.0 }` — billing fires on leads, but delivery is optimized for downstream purchase return. + +**Refunds and adjustments**: Refund handling and conversion adjustment policies are commercial terms between buyer and seller. The protocol does not govern clawbacks or billing credits for refunded conversions. + +**Note**: CPA replaces the need for separate "CPO" (Cost Per Order) or "CPL" (Cost Per Lead) pricing models. A seller can offer multiple CPA options with different event types, event sources, and prices on the same product. + +--- + +### Revenue Share +**Percentage of settled attributed value** - Advertiser pays a fixed commission rate on the portion of attributed conversion value eligible under the parties' agreement. + +**Use Cases**: Affiliate networks, content commerce, performance partnerships, and other outcome-priced media + +{/* Add $schema once revenue-share-option.json ships through the /schemas/v3/ alias. */} +```json +{ + "pricing_option_id": "affiliate_purchase_4pct", + "pricing_model": "revenue_share", + "event_type": "purchase", + "event_source_id": "affiliate_attribution", + "commission_rate": 0.04, + "currency": "USD", + "commission_basis_description": "Net merchandise value after discounts, excluding tax and shipping; returns removed before commission lock." +} +``` + +`commission_rate` is a decimal proportion: `0.04` means 4%. Revenue share uses contingent pricing, not fixed-unit or auction pricing, so the option does not carry `fixed_price`, `floor_price`, `price_guidance`, or `max_bid`, and the package request does not carry `bid_price`. + +**Billing formula**: + +```text +spend = round_currency(commissionable_value * commission_rate) +``` + +`commissionable_value` is the settled value eligible for commission. It is distinct from `conversion_value`, which remains the total attributed value for analytics. The difference may reflect excluded tax or shipping, discounts, ineligible items, returns, or cancellations. `commission_basis_description` tells operators how the authoritative party calculates the eligible amount. + +**Settlement flow**: + +1. The buyer registers the declared `event_source_id` through `sync_event_sources`. +2. The package's `measurement_terms.billing_measurement` names the authoritative party and commission-lock `measurement_window`. +3. Provisional delivery may report conversion and commissionable values while the return window is open. +4. `adjusted` or `window_update` reports replace earlier values as returns and cancellations settle. +5. A final row reports `commissionable_value`, calculated `spend`, `is_final: true`, and `finalized_at`. + +For revenue share, package `budget` is the maximum commission payable—not attributed sales. Sellers must not invoice above that budget without an accepted budget update. + +When billing is buyer- or vendor-attested, `report_usage` carries `media_buy_id`, `pricing_option_id`, `commissionable_value`, and `vendor_cost`; the seller verifies the formula against the selected pricing option. + +Revenue share is channel-independent. Affiliate is the immediate use case, but sellers may offer this pricing model on other channels where the same commercial contract applies. + +--- + +### Flat Rate +**Fixed cost** - Single payment regardless of delivery volume. + +**Use Cases**: Sponsorships, takeovers, exclusive placements, branded content, DOOH fixed slots + +**Example** (sponsorship): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/flat-rate-option.json", + "pricing_option_id": "flat_rate_usd_sponsorship", + "pricing_model": "flat_rate", + "fixed_price": 50000.00, + "currency": "USD" +} +``` + +**Example** (DOOH slot with parameters): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/flat-rate-option.json", + "pricing_option_id": "flat_rate_usd_dooh_morning", + "pricing_model": "flat_rate", + "fixed_price": 5000.00, + "currency": "USD", + "parameters": { + "type": "dooh", + "daypart": "morning_commute", + "duration_hours": 4, + "sov_percentage": 25, + "loop_duration_seconds": 15, + "estimated_impressions": 120000 + } +} +``` + +**Billing**: Fixed cost for the entire campaign period regardless of delivery volume. + +**DOOH parameters** (`parameters.type: "dooh"`): +- `sov_percentage`: Guaranteed share of voice as a percentage (0-100) +- `loop_duration_seconds`: Duration of ad loop rotation in seconds +- `min_plays_per_hour`: Minimum guaranteed plays per hour +- `venue_package`: Named collection of screens +- `duration_hours`: Duration of the slot in hours (e.g., 24 for a full-day takeover) +- `daypart`: Named daypart (e.g., `morning_commute`, `evening_rush`) +- `estimated_impressions`: Audience impression estimate (informational, not a delivery guarantee) + +Sponsorship flat_rate options omit `parameters` — the fixed price covers the placement without DOOH-specific constraints. + +--- + +### Time (Cost Per Time Unit) +**Cost per time unit** - Rate scales with campaign duration, enabling self-serve sponsorships. + +**Use Cases**: Homepage takeovers, section sponsorships, premium placements where price depends on booking duration + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/time-option.json", + "pricing_option_id": "time_usd_daily", + "pricing_model": "time", + "fixed_price": 50000.00, + "currency": "USD", + "parameters": { + "time_unit": "day", + "min_duration": 1, + "max_duration": 30 + } +} +``` + +**Billing**: Cost = `fixed_price` x number of `time_unit`s in the campaign flight. For example, a 3-day campaign at \$50,000/day = \$150,000 total. + +**Parameters**: +- `time_unit` (required): `"hour"`, `"day"`, `"week"`, or `"month"` +- `min_duration` (optional): Minimum booking duration in time units +- `max_duration` (optional): Maximum booking duration in time units + +**Time Unit Calculation**: + +| Time Unit | Calculation | +|-----------|-------------| +| `hour` | rate x hours in flight | +| `day` | rate x calendar days in flight | +| `week` | rate x weeks (seller-defined rounding) | +| `month` | rate x months (seller-defined pro-rating) | + +**Comparison with Flat Rate**: + +| Aspect | Flat Rate | Time | +|--------|-----------|------| +| Semantics | Fixed total cost | Rate x duration | +| `fixed_price` means | Total campaign cost | Cost per time unit | +| Buyer flexibility | Must negotiate duration | Self-serve any duration | +| Use case | Fixed sponsorships | Scalable sponsorships | + +--- + +## Digital Out-of-Home (DOOH) Pricing + +DOOH advertising uses existing pricing models—typically **CPM** or **flat_rate**—with optional parameters to describe the inventory allocation. + +### Basic Concepts + +- **CPM for DOOH**: Priced per thousand impressions, where impressions are calculated based on venue traffic (e.g., Geopath data) +- **Flat rate for DOOH**: Fixed cost for specific duration or allocation (hourly, daily, or exclusive takeover) + +### Simple Example: Billboard Takeover + +```json +{ + "product_id": "billboard_takeover", + "name": "Premium Billboard - 24 Hour Takeover", + "pricing_options": [{ + "pricing_model": "flat_rate", + "fixed_price": 50000.00, + "currency": "USD" + }], + "delivery_measurement": { + "provider": "Geopath", + "notes": "Venue traffic data updated monthly. Estimated 2.5M impressions over 24 hours." + } +} +``` + +### DOOH parameters (optional) + +For flat_rate DOOH inventory, publishers may include a `parameters` object with `"type": "dooh"`. See the [flat_rate pricing model](#flat-rate) section above for a complete example and full field list. + +**Note**: DOOH measurement and buying practices vary by market. Publishers should clearly explain their measurement methodology and inventory allocation in the product description and `delivery_measurement` field. + +--- + +## Price Breakdown + +When buyer and seller have negotiated discounts and commissions, the `price_breakdown` object discloses how `fixed_price` was derived from the rate card. This is optional — sellers who don't need breakdowns omit it entirely, with zero overhead to existing implementations. + +`price_breakdown` is a planning-layer construct. It exists on pricing options and confirmed packages within AdCP — it does not propagate into impression-level OpenRTB bid requests or responses. + +### Structure + +```json +{ + "pricing_option_id": "cpm_eur_premium", + "pricing_model": "cpm", + "fixed_price": 11.90, + "currency": "EUR", + "price_breakdown": { + "list_price": 14.00, + "adjustments": [ + { "kind": "discount", "name": "volume", "rate": 0.15, "description": "12x frequency discount" }, + { "kind": "commission", "name": "agency", "rate": 0.15, "description": "Agency commission" }, + { "kind": "settlement", "name": "cash_discount", "rate": 0.02, "description": "2% discount for payment within 10 days" } + ] + } +} +``` + +- `list_price` — the rate card or base price before any adjustments +- `adjustments` — ordered list of adjustments, each categorized by `kind` +- `fixed_price` (on the parent pricing option) — must equal the result of applying all `fee` and `discount` adjustments sequentially to `list_price` + +Implementations should ignore unrecognized fields in `price_breakdown` and its adjustments to support forward compatibility. + +### Adjustment Kinds + +Adjustments fall into four kinds based on their economic effect: + +| Kind | Effect on buyer price | Effect on publisher revenue | When applied | +|------|----------------------|----------------------------|--------------| +| `fee` | Increases it | Increases it | Before quoting — walks `list_price` up toward `fixed_price` | +| `discount` | Reduces it | Reduces it | Before quoting — walks `list_price` down toward `fixed_price` | +| `commission` | None — budget includes it | Reduces it (revenue split) | Revenue allocation between intermediary and publisher | +| `settlement` | None — post-invoice | Reduces actual payment | At invoicing or payment time | + +**Fees** increase what the buyer pays. Ad serving fees, data/targeting surcharges, and brand safety verification costs are additive to the base price. Without fee adjustments, these would be opaque within `list_price`. + +**Discounts** reduce what the buyer pays. Volume discounts, negotiated rates, and early booking discounts all lower both the buyer's cost and the publisher's revenue. + +**Commissions** are revenue splits. The buyer's price and budget don't change — commission determines how the payment is divided between the intermediary (e.g., agency) and the publisher. Budgets are always managed inclusive of commissions. Multiple commission adjustments compound sequentially, like discounts — e.g., a 15% agency commission followed by a 5% trading desk fee means the publisher receives `budget × 0.85 × 0.95`. + +**Settlement adjustments** are applied at invoicing or payment time (e.g., a cash discount for early payment). They don't affect the committed price or budget. Retroactive rebates and performance incentives are out of scope for `price_breakdown` and would be handled through reconciliation workflows. + +### Beneficiary + +Each adjustment may include an optional `beneficiary` field identifying who receives the adjustment's value. This is most useful for commission adjustments in multi-intermediary chains: + +```json +{ "kind": "commission", "name": "agency", "rate": 0.15, "beneficiary": "mediaagency.example.com" }, +{ "kind": "commission", "name": "trading_desk", "rate": 0.05, "beneficiary": "tradingdesk.example.com" } +``` + +The value can be a sellers.json domain, an AdCP account ID, or a human-readable party name. + +### Invariant + +The invariant is: `list_price` with all `fee` and `discount` adjustments applied sequentially equals `fixed_price`. Commission and settlement adjustments don't participate — they're disclosed for transparency. If no fee or discount adjustments are present, `fixed_price` must equal `list_price`. + +This invariant applies only when `fixed_price` is present on the parent object. For auction-based packages, `price_breakdown` is informational — see [On Confirmed Packages](#on-confirmed-packages). + +Fee and discount adjustments compound in array order using these formulas: + +``` +For rate-based fees: running = running × (1 + rate) +For amount-based fees: running = running + amount +For rate-based discounts: running = running × (1 − rate) +For amount-based discounts: running = running − amount +``` + +All monetary values are rounded to the precision of the currency (e.g., 2 decimal places for EUR/USD) at each step. The invariant holds after rounding. + +Example with mixed adjustments: + +``` +list_price: 12.00 + fee, amount: 2.00 → 12.00 + 2.00 = 14.00 + discount, rate: 0.15 → 14.00 × 0.85 = 11.90 +fixed_price: 11.90 ✓ +``` + +For the structure example above: 14.00 × (1 − 0.15) = 11.90 ✓ (no fee adjustments in that example) + +### Rate vs. Amount + +Each adjustment must include exactly one of `rate` or `amount`: + +- `rate` — decimal proportion, strictly between 0 and 1 exclusive (0 < rate < 1), e.g., 0.15 for 15% +- `amount` — positive number (> 0) in the pricing option's currency + +```json +{ "kind": "discount", "name": "volume", "rate": 0.15 } +{ "kind": "discount", "name": "negotiated", "amount": 2.00, "description": "Flat rate reduction" } +``` + +### Budgets and Commission + +Budgets are always denominated at the `fixed_price` level, inclusive of commissions. If a buyer commits €10,000 at an €11.90 CPM, that €10,000 is the buyer's cost. The agency takes their commission from that amount; the publisher receives the remainder. + +This means a buyer agent comparing rates across sellers can use `fixed_price` directly — it's the actual cost per unit, regardless of the underlying commission structure. + +### On Confirmed Packages + +The `price_breakdown` field also appears on the package response (confirmed line item). It is seller-populated — buyer agents should treat it as read-only. + +**Fixed-price packages** echo the pricing option's breakdown: + +```json +{ + "package_id": "pkg_12345", + "product_id": "premium_display", + "pricing_option_id": "cpm_eur_premium", + "fixed_price": 11.90, + "budget": 10000, + "price_breakdown": { + "list_price": 14.00, + "adjustments": [ + { "kind": "discount", "name": "volume", "rate": 0.15, "description": "12x frequency discount" }, + { "kind": "commission", "name": "agency", "rate": 0.15, "description": "Agency commission" }, + { "kind": "settlement", "name": "cash_discount", "rate": 0.02, "description": "2% for payment within 10 days" } + ] + } +} +``` + +**Auction-based packages** use `price_breakdown` to disclose commission and settlement terms against the clearing price. For auction packages, `list_price` is set to the clearing price since there is no rate card derivation to disclose. The discount invariant does not apply — the breakdown is informational only: + +```json +{ + "package_id": "pkg_67890", + "product_id": "premium_display", + "pricing_option_id": "cpm_eur_auction", + "bidding": { "bid_amount": 12.50 }, + "budget": 10000, + "price_breakdown": { + "list_price": 12.50, + "adjustments": [ + { "kind": "commission", "name": "agency", "rate": 0.15, "description": "Agency commission" }, + { "kind": "settlement", "name": "cash_discount", "rate": 0.02, "description": "2% for payment within 10 days" } + ] + } +} +``` + +--- + +## Eligible Adjustments + +Publishers can declare which adjustment kinds apply to a pricing option using `eligible_adjustments`. This tells buyer agents upfront whether discounts, commissions, or settlement terms are available — before any negotiation begins. + +```json +{ + "pricing_option_id": "cpm_eur_standard", + "pricing_model": "cpm", + "fixed_price": 14.00, + "currency": "EUR", + "eligible_adjustments": ["fee", "discount", "commission", "settlement"] +} +``` + +When `eligible_adjustments` is present, the buyer knows which kinds of adjustments to expect or request. When absent, no adjustments are pre-declared — the buyer should check `price_breakdown` if present for any adjustments that were already applied. + +This field pairs with `price_breakdown`: `eligible_adjustments` signals what is *possible*, while `price_breakdown` shows what was *applied*. + +--- + +## Multi-Currency Support + +Publishers can offer the same product in multiple currencies: + +```json +{ + "product_id": "premium_video", + "pricing_options": [ + { + "pricing_option_id": "cpm_usd_guaranteed", + "pricing_model": "cpm", + "fixed_price": 45.00, + "currency": "USD" + }, + { + "pricing_option_id": "cpm_eur_guaranteed", + "pricing_model": "cpm", + "fixed_price": 40.00, + "currency": "EUR" + }, + { + "pricing_option_id": "cpm_gbp_guaranteed", + "pricing_model": "cpm", + "fixed_price": 35.00, + "currency": "GBP" + } + ] +} +``` + +**Buyer Responsibility**: Buyers must select a currency that the publisher supports. + +## Fixed vs. Auction Pricing + +### Fixed Pricing (`fixed_price` present) +- Publisher sets a fixed price +- Price is guaranteed and predictable +- Common for guaranteed inventory +- Include `fixed_price` field + +### Auction Pricing (`fixed_price` absent) +- Final price determined through auction +- Publisher provides `floor_price` (hard minimum) and optional `price_guidance` (percentile hints) +- Common for non-guaranteed inventory +- Buyer expresses execution intent explicitly with `bidding.bid_amount` or `bidding.max_bid` + +The pricing option is the seller's commercial offer; `bidding` is the buyer's execution instruction. The pricing option supplies the auction unit and must use the media-buy currency. Every package budget, minimum-spend target, and canonical bidding amount uses that single denomination; split packages requiring another currency into a separate media buy. In 3.2, pricing-option `max_bid` and package `bid_price` remain only as deprecated migration fields. A seller-offered boolean no longer determines whether buyer input is a manual bid, auction ceiling, or average outcome-cost control. + +**Auction Example**: +```json +{ + "pricing_option_id": "cpcv_usd_auction", + "pricing_model": "cpcv", + "currency": "USD", + "floor_price": 0.08, + "price_guidance": { + "p25": 0.10, + "p50": 0.12, + "p75": 0.15, + "p90": 0.18 + } +} +``` + +## Buyer Selection Process + +Each package specifies its own pricing option, which determines pricing model and auction unit. Its declared currency must match the single media-buy currency: + +```json +{ + "start_time": "2025-01-01T00:00:00Z", + "end_time": "2025-01-31T23:59:59Z", + "brand": { + "domain": "acmecorp.com" + }, + "brief": "Q1 Brand Campaign", + "packages": [{ + "product_id": "premium_ctv", + "format_option_refs": [{ "scope": "product", "format_option_id": "video_30s" }], + "pricing_option_id": "cpcv_usd_auction", + "budget": 50000, + "pacing": "even", + "bidding": { "max_bid": 0.16 } + }] +} +``` + +**How it works:** +1. Package selects `pricing_option_id` from product (e.g., "cpcv_usd_auction") +2. Pricing option determines pricing model, auction unit, and fixed vs auction; its currency must match the media buy +3. Package `budget` and all canonical `bidding` amounts use the media-buy currency +4. Auction-based pricing uses explicit `bidding.bid_amount` for a manual auction bid or `bidding.max_bid` for a hard per-auction ceiling, expressed per the pricing option's unit +5. Sellers reject currency-mismatched packages rather than converting amounts; buyers split them into separate media buys + +## Reporting Metrics by Pricing Model + +Different pricing models report different primary metrics: + +| Pricing Model | Primary Metric | Secondary Metrics | +|---------------|----------------|-------------------| +| CPM | impressions | clicks, ctr, spend | +| vCPM | viewable_impressions | impressions, viewability_rate, spend | +| CPCV | completed_views | impressions, completion_rate, spend | +| CPV | views | impressions, quartile_data, spend | +| CPP | grps | reach, frequency, spend | +| CPC | clicks | impressions, ctr, spend | +| CPA | conversions | conversion_value, cost_per_acquisition, roas, spend | +| Flat Rate | N/A | impressions, reach, frequency | +| Time | N/A | impressions, reach, frequency | + +## Example: Multi-Model CTV Product + +A publisher offering Connected TV inventory with multiple pricing options: + +```json +{ + "product_id": "ctv_premium_sports", + "name": "Premium Sports CTV", + "description": "High-engagement sports content on CTV devices", + "format_options": [ + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } }, + { "format_option_id": "video_30s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 30000 } } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "cpm_usd_guaranteed", + "pricing_model": "cpm", + "fixed_price": 55.00, + "currency": "USD", + "min_spend_per_package": 15000 + }, + { + "pricing_option_id": "cpcv_usd_guaranteed", + "pricing_model": "cpcv", + "fixed_price": 0.22, + "currency": "USD", + "min_spend_per_package": 15000 + }, + { + "pricing_option_id": "cpp_usd_m18-49", + "pricing_model": "cpp", + "fixed_price": 300.00, + "currency": "USD", + "parameters": { + "demographic": "M18-49", + "min_points": 50 + }, + "min_spend_per_package": 15000 + } + ] +} +``` + +A buyer could choose CPP pricing if they're planning TV buys, CPCV if optimizing for engagement, or CPM for reach-based campaigns. + +## Negotiated and Premium Pricing + +Premium sellers — particularly in OOH, CTV sponsorships, and direct deals — often finalize pricing through negotiation rather than publishing fixed rates. AdCP supports this workflow through the existing brief-to-proposal path without requiring a separate quote or price-on-request mechanism. + +### Sellers are not required to publish wholesale prices + +Product discovery (`get_products`) does not require sellers to disclose wholesale or clearing prices. Sellers may publish products with limited or no public pricing detail — for example, a CTV sponsorship product with audience and format information but no `pricing_options`. The product is discoverable, but the buyer must submit a brief to receive a proposal with actual pricing. + +### Selective brief response + +Sellers control which briefs they respond to and what pricing they offer. When a seller receives a brief for inventory they choose not to transact on, the protocol-native options are: + +- **Omit the product from the proposal entirely** — the buyer sees no proposal for that inventory, signaling unavailability for this request +- **Return `PROPOSAL_NOT_COMMITTED`** — an explicit signal that the seller reviewed the brief but is not offering a committable proposal at this time + +Neither requires the seller to disclose why they declined. This is the protocol-native equivalent of "price not available without negotiation." + +### The existing flow covers negotiated deals + +The standard path for negotiated-price inventory is: + +1. **Seller publishes products** with descriptive metadata (audience, formats, properties) but without wholesale pricing +2. **Buyer submits a brief** via `get_products` describing their campaign goals and budget parameters +3. **Seller returns a proposal** with negotiated pricing tailored to the specific brief — or declines to propose +4. **Buyer refines or accepts** the proposal, then passes the `proposal_id` into `create_media_buy` + +This mirrors how premium direct deals work today: the seller sees the brief, decides whether to engage, and offers terms specific to the opportunity. + +## Best Practices + +### For Publishers + +1. **Offer relevant pricing models** - Match pricing to your inventory type and buyer expectations +2. **Set appropriate minimums** - Use `min_spend_per_package` to ensure campaign viability +3. **Provide price guidance** - For auction pricing, give realistic floor and percentile data +4. **Consider multi-currency** - Support currencies of your target markets +5. **Document parameters** - Clearly explain thresholds, demographics, and action types + +### For Buyers + +1. **Select appropriate model** - Choose pricing that aligns with campaign objectives +2. **Match currency** - Ensure you select a currency the publisher supports +3. **Set realistic budgets** - Account for minimum spend requirements +4. **Align goals with pricing** - Set delivery goals that match your pricing model +5. **Monitor relevant metrics** - Focus on the metrics that matter for your pricing model + +## Related Documentation + +- [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) - Product model reference +- [Creating Media Buys](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) - How to select pricing when buying +- [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) - Understanding metrics by pricing model +- [Glossary](/dist/docs/3.2.0-beta.4/reference/glossary) - Pricing and metric definitions diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox.mdx new file mode 100644 index 0000000000..e2ca8f45c8 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox.mdx @@ -0,0 +1,249 @@ +--- +title: Sandbox mode +description: "AdCP sandbox mode — test product discovery, campaign creation, creatives, and delivery with simulated data. No real spend or production side effects." +"og:title": "AdCP — Sandbox mode" +--- + +## Overview + +Sandbox mode lets buyers test the full media buying lifecycle — discovery, campaign creation, creatives, and delivery — without real platform calls or spending real money. Responses contain simulated but realistic data. + +Sandbox is **account-level**, not per-request. Once a request references a sandbox account, the entire request is treated as sandbox. This eliminates the risk of accidentally mixing real and test traffic in a multi-step flow. + +## Capabilities discovery + +Sellers declare sandbox support in `get_adcp_capabilities`: + +```json +{ + "account": { + "sandbox": true + } +} +``` + +Check this before using sandbox mode. If `account.sandbox` is not declared or is `false`, the seller does not support sandbox. + +## Two paths to sandbox + +How you enter sandbox mode depends on the seller's account model (`require_operator_auth`). The two paths are completely different — make sure you follow the right one. + +### Buyer-declared accounts (`require_operator_auth: false`) + +The seller trusts the agent and does not require per-operator authentication. Sandbox is part of the **natural key** — the same brand/operator pair can have both a production and a sandbox account, distinguished by `sandbox: true`. + +**Setup:** Declare a sandbox account via `sync_accounts` with `sandbox: true` on the account entry: + +```json +// sync_accounts — declare a sandbox account +{ + "accounts": [{ + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "billing": "operator", + "sandbox": true + }] +} +``` + +**Usage:** Reference the sandbox account by natural key with `sandbox: true` on every request: + +```json +// get_products — implicit sandbox +{ + "account": { + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "sandbox": true + }, + "brief": "Premium CTV inventory for Q2 campaign" +} +``` + +### Account-id namespaces (`require_operator_auth: true`) + +The seller requires each operator to authenticate directly. Sandbox accounts are **pre-existing test accounts on the seller's platform** — think Stripe test mode, Google Ads sandbox accounts, or Snap test advertiser accounts. You do not create them; you discover them. + +**Setup:** Discover sandbox accounts via `list_accounts` with the `sandbox: true` filter: + +```json +// list_accounts — find sandbox accounts +{ + "sandbox": true +} +``` + +The seller returns pre-existing test accounts: + +```json +{ + "accounts": [{ + "account_id": "acct_sandbox_acme_001", + "name": "Acme Test Account", + "status": "active", + "sandbox": true + }] +} +``` + +**Usage:** Reference the sandbox account by `account_id` on every request: + +```json +// get_products — explicit sandbox +{ + "account": { "account_id": "acct_sandbox_acme_001" }, + "brief": "Premium CTV inventory for Q2 campaign" +} +``` + +### Quick reference + +| | Buyer-declared (`require_operator_auth: false`) | Account-id namespace (`require_operator_auth: true`) | +|---|---|---| +| **Sandbox accounts** | Declared by buyer via `sync_accounts` | Pre-existing on seller's platform | +| **Discovery** | N/A — buyer creates them | `list_accounts` with `sandbox: true` | +| **Account reference** | Natural key with `sandbox: true` | `account_id` | +| **Real-world analogy** | Self-service test mode | Stripe test mode, Google Ads sandbox | + +## Response confirmation + +Success responses include `sandbox: true` to confirm the request was processed in sandbox mode: + +```json +{ + "products": [...], + "sandbox": true +} +``` + +## Full lifecycle example (buyer-declared account) + +This example shows the buyer-declared account path. For account-id namespaces, resolve the sandbox account through `list_accounts` (or out-of-band onboarding for seller-defined IDs), then replace the natural key account reference with `{ "account_id": "acct_sandbox_acme_001" }` in each step. + +### 1. Discover products + +```json +// get_products +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442066", + "buying_mode": "brief", + "account": { + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "sandbox": true + }, + "brief": "CTV inventory for brand awareness" +} +``` + +### 2. Create a media buy + +```json +// create_media_buy +{ + "account": { + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "sandbox": true + }, + "proposal_id": "prop_abc", + "total_budget": { "amount": 50000, "currency": "USD" }, + "brand": { "domain": "acme-corp.com" }, + "start_time": { "start_type": "asap" }, + "end_time": "2026-04-01T00:00:00Z" +} +``` + +The seller returns a simulated media buy with realistic IDs, packages, and creative deadlines — nothing is booked on any real platform. + +### 3. Upload creatives + +```json +// sync_creatives +{ + "account": { + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "sandbox": true + }, + "creatives": [{ + "creative_id": "hero_video_30s", + "name": "Brand Hero Video 30s", + "format_kind": "video_hosted", + "assets": { + "video": { + "url": "https://cdn.example.com/hero.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + } + } + }], + "assignments": { + "hero_video_30s": ["pkg_001"] + } +} +``` + +### 4. Check delivery + +```json +// get_media_buy_delivery +{ + "account": { + "brand": { "domain": "acme-corp.com" }, + "operator": "acme-corp.com", + "sandbox": true + }, + "media_buy_ids": ["mb_sandbox_123"] +} +``` + +The seller returns simulated delivery metrics — impressions, spend, pacing — as if the campaign were running. + +## Sandbox vs dry run + +Some sync tasks (`sync_creatives`, `sync_catalogs`) support a `dry_run` parameter. These serve different purposes: + +| | Sandbox account | `dry_run` | +|---|---|---| +| **Meaning** | Nothing is real | Preview changes without applying | +| **Scope** | All tasks on the account | Sync tasks only | +| **Side effects** | None (simulated) | None (preview only) | +| **Use case** | Test the full lifecycle | Check what a sync would change before committing | + +You can combine them — `dry_run: true` on a sandbox account previews the sync without even updating sandbox state. + +<Warning> +The `X-Dry-Run`, `X-Test-Session-ID`, and `X-Mock-Time` HTTP headers are **deprecated**. Sandbox mode replaces them as a protocol-level parameter. + +- **Sellers MUST NOT** alter behavior based on these headers. Sandbox mode is determined solely by the account reference. Sellers SHOULD ignore the headers entirely and MAY log a deprecation warning to help buyers identify stale integrations. +- **Buyers MUST NOT** rely on these headers to prevent production side effects. Only `sandbox: true` on the account reference guarantees sandbox semantics. +</Warning> + +## Seller implementation + +When a request references a sandbox account (either via `sandbox: true` in the natural key or via a sandbox `account_id`), agents MUST NOT persist production state or cause real-world side effects: + +- **MUST NOT** make real ad platform API calls (no real orders, line items, etc.) +- **MUST NOT** charge real money or create real billing records +- **MUST** validate inputs the same way as production (reject invalid budgets, bad dates, etc.) +- **MUST** return realistic response shapes with simulated data +- **SHOULD** include `sandbox: true` in success responses + +Sandbox errors are real validation errors. If a buyer sends an invalid budget using a sandbox account, return a real error — don't simulate fake errors. + +For **account-id namespace sellers**: ensure your platform has pre-existing sandbox/test accounts that `list_accounts` can return when filtered with `sandbox: true`, or supply sandbox IDs out-of-band. + +For **buyer-declared account sellers**: accept `sandbox: true` as part of the natural key in `sync_accounts` and account references. Treat `(brand, operator, sandbox: true)` as a distinct account from `(brand, operator)`. + +## Protocol compliance + +Sellers that declare `account.sandbox: true` in capabilities MUST: + +- Accept sandbox accounts appropriate to their account model +- Apply sandbox semantics to all requests referencing a sandbox account +- NOT persist production state or cause real-world side effects when processing sandbox requests +- Apply normal input validation (sandbox does not bypass validation) + +Sellers SHOULD include `sandbox: true` in success responses when processing a sandbox account request. diff --git a/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting.mdx b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting.mdx new file mode 100644 index 0000000000..8b702a5ba2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting.mdx @@ -0,0 +1,1324 @@ +--- +title: Targeting +description: "AdCP targeting — natural-language briefs, exact geographic and demographic overlays, seller-offered signals, and real-time decisioning." +"og:title": "AdCP — Targeting" +testable: true +--- + + +AdCP uses briefs for semantic intent and typed overlays for exact, auditable constraints. Publishers return products that describe which overlay semantics they can execute. + +## Core principle: semantic intent in briefs, exact constraints in overlays + +Use campaign briefs for audience meaning, strategy, and seller-led discovery. Instead of configuring every platform-specific targeting parameter, buyers describe those preferences in plain language: + +```json +{ + "brief": "We want to reach millennial parents in major US metro areas who are interested in sustainable products. Focus on mobile and desktop during evening hours when families are planning purchases." +} +``` + +Publishers then return products that include the targeting capabilities to reach this audience, with targeting costs built into the media pricing. + +Use a typed `targeting_overlay` whenever a requirement has a structured representation and must survive booking and readback. This avoids transmitting the same fact as extra prose and avoids asking the seller to spend tokens inferring a value that code can read deterministically. In particular, numeric demographic predicates such as ages 25–40 and exact country constraints belong in the overlay; prose such as “millennial parents interested in sustainable products” remains in the brief. + +An explicit hard requirement does not become optional merely because the buyer put it in prose. Sellers MUST apply unambiguous hard targeting stated only in the brief. When a seller's structured interpretation of hard prose materially affects product eligibility, pricing, or forecasting, it MUST return that interpretation once at the discovery response's `targeting_resolution.brief_targeting`; otherwise confirmation remains a best practice. This lets the buyer verify what will actually be applied without repeating the same interpretation on every product. Unchanged values already supplied in `targeting_overlay` are not repeated. + +```json +{ + "targeting_resolution": { + "brief_targeting": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 18, "max": 44, "include_unknown": false } + } + } + } +} +``` + +If both prose and a structured field address the same constraint, buyers SHOULD keep them consistent. Sellers MUST reject contradictory hard requirements with `INVALID_REQUEST`; they do not silently choose one interpretation or turn the conflict into an empty result. + +When the buyer wants package-level control over specific selectable signals that the seller offers, use `targeting_overlay.signal_targeting_groups` on the package. Buy-time eligibility comes from the selected product's signal targeting contract: `signal_targeting_allowed`, inline `Product.signal_targeting_options` when present, the seller's [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) feed for wholesale products that omit inline options, and `signal_targeting_rules`. Signals are named targetable dimensions, referenced with `signal_ref`: `scope: "product"` for product-local signal options, `scope: "data_provider"` with `data_provider_domain` for signals defined in a data provider's published adagents.json `signals[]`, or `scope: "signal_source"` with `signal_source_url` for source-native signals that are not published in adagents.json `signals[]`. `signal_ref.scope` is the buy-time resolution path, not provenance, and authoritative enrichment lives on the seller, data provider, or source signal definition. Do not overload `audience_include` or `audience_exclude` for this purpose; those fields are only for first-party audiences registered through [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences). + +Products can also expose `included_signals` for signals already bundled into or planned into the product. Those signals are descriptive product metadata, not package-level targeting controls, and buyers do not echo them in `signal_targeting_groups`. + +## Browser-family targeting + +Use `targeting_overlay.browser` and `targeting_overlay.browser_exclude` for portable browser-family constraints. The fields intentionally stop at families: browser versions, user-agent strings, backend segment IDs, and arbitrary ad-server key/value expressions are not part of the contract. + +```json +{ + "targeting_overlay": { + "browser": ["chrome", "safari", "samsung_internet"], + "browser_exclude": ["safari"] + } +} +``` + +Values within `browser` use OR semantics, and `browser_exclude` wins on overlap, so this example delivers on Chrome or Samsung Internet but not Safari. When `browser` is present, omitted families are not eligible. The canonical families are `chrome`, `safari`, `firefox`, `edge`, `opera`, `samsung_internet`, `android_webview`, `other`, and `unknown`. + +`other` means the seller recognizes the browser family but it is not one of the explicitly named families. For example, a FreeWheel connector can map recognized values such as Amazon Silk, Android Browser, or Internet Explorer to `other`. `unknown` means the seller cannot classify the browser into a recognized family. Include either value explicitly when that traffic should be eligible; omitting it from an inclusion list excludes it. Samsung Internet remains distinct from Chrome even though both are Chromium-based. `android_webview` means the impression itself is reliably classified as rendering in Android WebView; a native-app placement or an in-app browser opened after a click is not automatically Android WebView. + +Browser family describes the impression delivery and rendering environment, not the post-click landing-page browser. Sellers must not infer it solely from operating system, device, “Web” or “Mobile Web” inventory, or placement. Sellers advertising browser support map these portable values to their platform controls internally. A social or app-only product with only device, OS, or placement controls omits `overlay_support.browser` and `overlay_support.browser_exclude` rather than approximating browser support. + +Browser and device constraints intersect. For example, `browser: ["safari"]` with `device_platform: ["android"]` may have no executable inventory. During discovery, the seller excludes an incompatible product or returns a configured product with a sparse, buyer-visible `targeting_resolution.modifications` alternative. At create or update, it rejects an exact combination it cannot enforce rather than silently broadening delivery. + +Inclusion and exclusion are independent product capabilities. Use concrete values in `targeting_overlay` when pricing and forecasts must reflect them now, and use `required_overlay_support.browser` or `required_overlay_support.browser_exclude` when package values will be supplied later. Requirement `true` asks for any positive support; `{ "families": ["chrome", "firefox"] }` requires both named families. A product advertises unrestricted support as `true`, or partial support as `{ "families": [...] }`. Products such as CTV, audio, DOOH, or app inventory can omit browser support entirely. + +## Portable demographic targeting + +Use `targeting_overlay.demographics` when the buyer needs a demographic predicate to survive product discovery, purchase, seller compilation, and readback without being reinterpreted from prose. AdCP 3.2 standardizes age first: + +```json +{ + "targeting_overlay": { + "demographics": { + "age": { + "min": 21, + "max": 35, + "include_unknown": false + } + } + } +} +``` + +`min` and `max` are inclusive integer ages in completed years. Either may be omitted for an open bound, but at least one is required. Before using an open bound, check the product's `supports_unbounded_min` or `supports_unbounded_max` flag; a seller that declares `false` rejects that direction rather than substituting its supported-age limit. `include_unknown` is always required and has no default: people whose age is unavailable are not silently included in a numeric interval. Sellers also reject a range whose `min` is greater than its `max`. + +This field is audience selection, not eligibility policy. Continue to use `age_restriction` for a legal minimum age and verification requirements such as alcohol or gambling controls. + +When both fields are present, they compose as an intersection; neither overrides the other. `demographics` selects the intended audience, then `age_restriction` applies the eligibility and verification floor. Unknown-age delivery cannot satisfy a minimum-age restriction, so the combined shape requires `include_unknown: false`. Sellers also reject an empty intersection, such as demographic ages 18–20 with `age_restriction.min: 21`. Package readback preserves both controls independently rather than folding the legal restriction into the applied demographic predicate. + +### Product-scoped execution + +The seller-wide `get_adcp_capabilities.media_buy.execution.targeting.demographics.supported` flag is only a discovery rollup. Exact support lives on each product because one seller can route products through different ad servers. + +A product that accepts arbitrary bounds declares `continuous_bounds`: + +```json +{ + "demographic_targeting": { + "age": { + "execution_modes": ["continuous_bounds"], + "min_supported_age": 18, + "max_supported_age": 65, + "supports_unbounded_min": true, + "supports_unbounded_max": true, + "unknown_handling": "selectable", + "supported_bases": ["verified", "declared", "inferred"], + "supported_verification_methods": ["world_id", "id_document"] + } + } +} +``` + +A bucket-backed product publishes its actual intervals rather than pretending they are a protocol-wide taxonomy: + +```json +{ + "demographic_targeting": { + "age": { + "execution_modes": ["enumerated_intervals"], + "unknown_handling": "always_excluded", + "intervals": [ + { "interval_id": "age_18_24", "age": { "min": 18, "max": 24, "include_unknown": false } }, + { "interval_id": "age_25_34", "age": { "min": 25, "max": 34, "include_unknown": false } }, + { "interval_id": "age_35_44", "age": { "min": 35, "max": 44, "include_unknown": false } } + ] + } + } +} +``` + +That product cannot execute ages 21–35 exactly: `18–24 ∪ 25–34 ∪ 35–44` broadens the request, while `25–34` narrows it. A direct create or update rejects that request. During `get_products`, however, the seller may return a request-scoped configured product whose sparse `targeting_resolution.modifications` replaces the requested interval with 25–34. Selecting that product accepts the disclosed alternative; the resulting package still stores only an equivalent executable predicate. + +`unknown_handling` is one of: + +- `selectable`: both `include_unknown: true` and `false` are supported. +- `always_excluded`: only `include_unknown: false` is supported. +- `always_included`: only `include_unknown: true` is supported. + +`supported_bases` declares how the product can determine age for an individual impression. Sellers publish only bases whose provenance they can preserve and audit; an opaque platform age bucket does not justify guessing a basis. When omitted, the product makes no basis-aware targeting commitment and rejects buyer requests that specify `accepted_bases`. + +### Acceptable age determination + +Buyers place determination constraints directly on the requested age range: + +```json +{ + "demographics": { + "age": { + "min": 25, + "max": 34, + "include_unknown": false, + "accepted_bases": ["verified", "declared"], + "accepted_verification_methods": ["world_id", "id_document"] + } + } +} +``` + +Execution accepts only user-level bases: + +- `verified`: an applicable age claim was established through an accepted age-assurance method. +- `declared`: the user supplied an age, date of birth, or threshold affirmation. +- `inferred`: the user's age was predicted from behavior, attributes, or a model. + +`population_estimate` is deliberately invalid in targeting. Knowing that 80% of a product audience is 25–34 cannot establish whether the current user is 25–34. + +`accepted_bases` constrains provenance; it does not weaken the age predicate. The underlying claim must establish the entire requested interval. A declaration that a user is over 16 cannot establish ages 25–34, and a threshold-only World ID `age_over_18` claim cannot establish the upper bound of 34. Sellers reject these requests rather than silently broadening them. + +`age_restriction` remains an independent compliance floor and always wins. When `verification_required` is true, the effective basis is `verified`; its `accepted_methods` are intersected with `accepted_verification_methods`. An empty intersection is invalid. A World ID nullifier, `unique_human` claim, or Orb verification level alone never establishes age—the verified proof must contain an applicable `age_over_N` claim and pass the TMP verification, relying-party binding, freshness, and expiry checks. + +### Signal-backed execution + +A product can declare the `signals` execution mode when it resolves canonical age intent through catalogued signals. The signal's authoritative definition must carry `demographic_predicate`; its name is never evidence of its bounds. Age-annotated signals also declare `restricted_attributes: ["age"]` so governance checks remain structural. + +```json +{ + "id": "adults_25_34", + "name": "Adults 25–34", + "value_type": "binary", + "restricted_attributes": ["age"], + "demographic_predicate": { + "age": { "min": 25, "max": 34, "include_unknown": false } + } +} +``` + +Multiple intervals or signals may be unioned only when their canonical predicates cover the request with no gap and no extra age. Implementations compare the represented predicate sets deterministically; an AI agent may propose a mapping, but names, inferred provider IDs, and approximate bucket choices never prove equivalence. For inferred or modeled signals, exactness means equality of the declared demographic predicate—not a claim that the provider knows every person's age perfectly. Methodology, modeling, and coverage metadata continue to describe population-level accuracy. + +### Governance interaction + +Age is a registered restricted-attribute category because some campaign plans prohibit its use in regulated contexts. A direct `targeting_overlay.demographics.age` predicate and a signal carrying `demographic_predicate.age` are both age-based targeting for governance evaluation. They are blocked only when the applicable campaign plan lists `age` in `restricted_attributes`; the registry entry does not create a global prohibition on otherwise lawful demographic targeting. + +### Exact readback + +Whenever demographic targeting was requested or applied, package state includes +`targeting_resolution.demographics`. Demographics is one dimension inside the +generic targeting-resolution envelope; it preserves both predicates and the +execution mechanism: + +```json +{ + "targeting_overlay": { + "demographics": { + "age": { + "min": 21, + "include_unknown": false, + "accepted_bases": ["verified", "declared"], + "accepted_verification_methods": ["world_id"] + } + } + }, + "targeting_resolution": { + "demographics": { + "requested": { + "age": { + "min": 21, + "include_unknown": false, + "accepted_bases": ["verified", "declared"], + "accepted_verification_methods": ["world_id"] + } + }, + "applied": { + "age": { "min": 21, "include_unknown": false } + }, + "equivalent": true, + "execution": { "type": "continuous_bounds" }, + "applied_bases": ["verified"], + "applied_verification_methods": ["world_id"] + } + } +} +``` + +`targeting_overlay.demographics` preserves the booked predicate and buyer determination constraints. The demographic resolution's `applied` field contains the canonical predicate actually applied; `equivalent` is always `true` for stored packages, and buyers should still recompute predicate equality from `requested` and `applied`. `applied_bases` and `applied_verification_methods` record the effective configured eligibility paths after intersecting buyer constraints, product capability, and age compliance. They do not assert which path every individual impression used. A seller rejects any non-equivalent or unsupported compilation. The same core `Package` schema carries this readback in synchronous `CreateMediaBuySuccess` responses and terminal async completion artifacts; `get_media_buys` exposes the corresponding `PackageStatus` field. Updates use the normal full-overlay replacement semantics and refresh the resolution atomically. + +## Why Brief-Based Targeting? + +### Eliminates Targeting Conflicts +- **Declared capability**: The publisher's product defines what can be executed; explicit overlays carry only the buyer controls that need exact wire semantics +- **Defined composition**: Supported overlays intersect with the product instead of competing through hidden precedence rules +- **Pricing consistency**: Targeting costs are transparent and included in media prices + +### Simplifies Implementation +- **Natural language**: Buyers describe needs in familiar terms +- **Publisher expertise**: Publishers know their inventory and audience capabilities best +- **Reduced complexity**: No need to learn platform-specific targeting syntax + +### Enables Accurate Pricing +- **Inclusive pricing**: All targeting costs are built into the product price +- **No surprises**: Buyers know the complete cost upfront +- **Market-driven**: Pricing reflects true market value of targeted inventory + +## Real-Time Decisioning with TMP + +For targeting decisions that must happen at impression time, AdCP uses the **[Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match)**. TMP is the real-time execution layer that evaluates pre-negotiated packages at serve time across any surface. + +TMP gives the buyer a real-time look at each eligible impression through two structurally separated operations — Context Match (content relevance) and Identity Match (user eligibility) — without exposing user identity and page context to the buyer simultaneously. + +**Key capabilities:** +- **Cross-publisher frequency capping**: Manage user exposure across multiple publishers via the Identity Match path +- **Dynamic audience targeting**: Evaluate audience membership at impression time without sharing PII +- **Brand suitability enforcement**: Real-time content evaluation through the Context Match path +- **First-party data activation**: Use your customer data without exposing it to publishers + +**When to use TMP:** +- Cross-publisher frequency caps +- Suppression lists (existing customers, past converters) +- Audience segments that can't be expressed in a brief +- Real-time brand suitability beyond static rules +- Any impression-time decision across web, mobile, CTV, AI assistants, or retail media + +See the [TMP documentation](/dist/docs/3.2.0-beta.4/trusted-match) for the full specification and surface-specific integration guides. + +## How Publishers Include Targeting + +Publishers incorporate targeting capabilities directly into their product definitions: + +### Geographic Targeting +Products specify geographic coverage: +``` +"Chicago metro premium display package" +"US national mobile video inventory" +"California lifestyle sites network" +``` + +### Demographic Targeting +Audience characteristics are built into products: +``` +"Millennial-focused social media placements" +"Premium business professional network" +"Family-oriented content sites" +``` + +### Contextual Targeting +Content alignment is inherent in product descriptions: +``` +"Sports content premium video inventory" +"Financial news site network" +"Entertainment property display package" +``` + +### Device & Platform Targeting +Technical specifications included in product format: +``` +"Mobile-optimized video formats" +"Connected TV premium inventory" +"Desktop display network" +``` + +## Brief Examples for Common Targeting Needs + +### Geographic Targeting +```json +{ + "brief": "Target users in New York, Los Angeles, and Chicago metro areas with premium display advertising for our luxury retail brand." +} +``` + +### Demographic Targeting +```json +{ + "brief": "Reach parents with children under 10 who are interested in educational content, focusing on weekend and evening viewing times." +} +``` + +### Contextual Targeting +```json +{ + "brief": "Place financial services ads adjacent to business and investment content, targeting affluent professionals during business hours." +} +``` + +### Behavioral Targeting +```json +{ + "brief": "Target users who have shown interest in sustainable products and eco-friendly brands, particularly those researching major purchases." +} +``` + +## Product Response Targeting Information + +When publishers return products, they include targeting information buyers need: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-response.json", + "status": "completed", + "cache_scope": "public", + "products": [ + { + "product_id": "premium_millennial_mobile", + "name": "Premium Millennial Mobile Package", + "description": "Mobile display inventory reaching adults 25-40 across lifestyle and entertainment apps in the top 25 US metro areas.", + "publisher_properties": [ + { + "publisher_domain": "pinnacle-media.example", + "selection_type": "by_tag", + "property_tags": ["lifestyle", "entertainment", "mobile_app"] + } + ], + "channels": ["display"], + "delivery_type": "guaranteed", + "format_options": [ + { + "format_option_id": "display_300x250_image", + "format_kind": "image", + "params": { "width": 300, "height": 250 } + } + ], + "pricing_options": [ + { + "pricing_option_id": "premium_mobile_cpm", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 8.50 + } + ], + "forecast": { + "forecast_range_unit": "availability", + "method": "modeled", + "currency": "USD", + "reach_unit": "individuals", + "points": [ + { + "metrics": { + "audience_size": { "mid": 2500000 }, + "impressions": { "mid": 12000000 } + } + } + ] + }, + "included_signals": [ + { + "signal_ref": { + "scope": "product", + "signal_id": "lifestyle_entertainment_interest" + }, + "name": "Lifestyle and entertainment interest", + "value_type": "binary", + "description": "Seller-modeled users with recent lifestyle or entertainment content engagement." + } + ], + "reporting_capabilities": { + "available_reporting_frequencies": ["daily"], + "expected_delay_minutes": 240, + "timezone": "America/New_York", + "supports_webhooks": false, + "available_metrics": ["impressions", "clicks", "spend", "ctr"], + "date_range_support": "date_range" + }, + "brief_relevance": "Matches the requested millennial audience, mobile app environment, lifestyle/entertainment context, and major US metro coverage." + } + ] +} +``` + +## Filters, targeting, and coverage + +`get_products.filters` selects product characteristics such as channel, +delivery type, creative format, currency, and reporting support. It is not a +second targeting language. The legacy targeting-like filter fields remain +schema-valid during migration but are deprecated. + +`get_products.targeting_overlay` contains real delivery constraints. The +seller must account for their effective result in availability, price, and +forecast. Exact acceptance of the structured overlay does not require an echo; +if the seller offers a different executable constraint, it returns only the +changed paths in `targeting_resolution.modifications`. Hard targeting inferred +from prose must be confirmed separately in `targeting_resolution.brief_targeting` +when the structured interpretation materially affects eligibility, pricing, or +forecasting; otherwise confirmation remains a best practice. + +`required_overlay_support` asks whether a product lets the buyer choose a +dimension later. For example, requesting `geo_metros` support asks for products +that can be narrowed by metro on packages; it does not ask the seller to return +one product per metro. Named places follow the same rule: known IDs belong in +`targeting_overlay.geo_places`, while a buyer that will choose them later asks +for `required_overlay_support.geo_places`. The product answers with binding +selectable permission in `overlay_support`; that permission is not a +value-specific availability guarantee. + +Support guarantees selectability subject to disclosed limits, not inventory or +a forecast for every possible value. A forecast returned without concrete metro +values describes the product's discovery/default scope. Rediscover with the +values in `targeting_overlay` for a metro-specific forecast. Fixed prices and +floors remain binding uniformly for supported selections; price guidance is +non-binding. If rates vary by value, the seller returns a configured product +after concrete rediscovery, splits rate tiers into products, or exposes only +non-binding guidance until concrete values are known. It never silently +reinterprets a selected pricing option at a new price. + +Coverage is an implementation detail of the same targeting contract. A +constraint may be satisfied by the product's inherent inventory scope or by a +selectable ad-server control. Buyers care about the effective result, not which +mechanism supplied it. + +Properties, collections, and placements follow the same model as audience and +geographic targeting. Select a targetable placement with +`targeting_overlay.placement_selection`; use +`creative_assignments[].placement_refs` only to route creatives among the +placements already selected by package targeting. + +### No raw ad-server key/value targeting + +External buyers MUST NOT send arbitrary ad-server keys, values, or expressions +through a generic targeting map. A capability declaration would prove only +that a seller recognizes a key; it would not make the key's semantics, +authorization boundary, privacy behavior, or cross-seller meaning mechanically +verifiable. Sellers compile AdCP's structured targeting, signal references, +and configured products into their own ad-server controls internally. + +When a targeting concept is broadly useful, define a typed AdCP field and its +resolution behavior. Use signals for seller-published targetable options and +use property, collection, placement, and format selection for inventory. Do +not use `ext` to expose or accept a generic ad-server targeting control plane. + +## When to Use Targeting Overlays + +Targeting overlays are the normal home for exact, auditable delivery constraints +in discovery, create, and update. Use them whenever the requested value must +survive seller planning and package readback. + +### Geographic Restrictions +Use geo fields **only** for: +- **RCT testing**: Randomized control trials requiring specific geographic splits +- **Regulatory compliance**: Legal requirements for geographic restrictions +- **Product refinement**: When a product spans multiple regions and you need to restrict to a subset + +**Inclusion fields** (restrict delivery to these locations): +- `geo_countries`: ISO 3166-1 alpha-2 country codes (e.g., `["US", "GB"]`) +- `geo_regions`: ISO 3166-2 subdivision codes (e.g., `["US-CA", "GB-SCT"]`) +- `geo_metros`: Structured metro areas with explicit system (e.g., `nielsen_dma`, `uk_itl2`) — not all publishers support metro-level targeting +- `geo_postal_areas`: Structured postal areas with explicit country and system (e.g., `US` / `zip`, `GB` / `outward`, `ZA` / `postal_code`) — not all publishers support postal-level targeting +- `geo_places`: Catalog-backed named places with explicit country, identifier system, place type, and stable IDs — use this for platform place entities such as cities or municipalities, not raw place names + +**Exclusion fields** (exclude these locations from delivery): +- `geo_countries_exclude`: Same format as `geo_countries` +- `geo_regions_exclude`: Same format as `geo_regions` +- `geo_metros_exclude`: Same format as `geo_metros` +- `geo_postal_areas_exclude`: Same format as `geo_postal_areas` +- `geo_places_exclude`: Same format as `geo_places` + +**Note**: Inclusion and exclusion can be combined. Metro and postal targeting require specifying the classification system, enabling international support. Not all geographic granularities are supported by all publishers. Country and region are most widely supported. + +### Age Restrictions (Compliance) +Use for **legal compliance** requirements: +- **Alcohol advertising**: Require verified 21+ in the US +- **Gambling/Gaming**: Require verified 18+ or 21+ depending on jurisdiction +- **Cannabis**: Require verified age per local regulations + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "age_restriction": { + "min": 21, + "verification_required": true, + "accepted_methods": ["facial_age_estimation", "id_document", "world_id"] + } +} +``` + +**Verification methods** (defined in [`age-verification-method.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/age-verification-method.json), based on ISO/IEC 27566-1 age assurance standards): +- `facial_age_estimation` - AI-based age estimation (Yoti, etc.) +- `id_document` - Government ID scan +- `digital_id` - Verified digital identity credentials +- `credit_card` - Payment card age gate +- `world_id` - Applicable verified World ID age-threshold proof or credential. Orb/personhood verification alone is insufficient. + +**Note**: "Inferred" age (guessing from behavior/profile) is **not** accepted for regulatory compliance. Platforms declare their supported verification methods in `get_adcp_capabilities`. + +### Device Platform (Technical Compatibility) +Use for **technical requirements**: +- **App install campaigns**: iOS-only app requires `device_platform: ["ios"]` +- **CTV campaigns**: Target specific TV operating systems + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "device_platform": ["ios", "android"], + "device_platform_exclude": ["fire_os"] +} +``` + +Use `device_platform_exclude` when the campaign may run across several +platforms except for a known incompatible platform. If the same value appears +in both lists, exclusion wins. Sellers that cannot enforce the exclusion MUST +reject it rather than silently broadening delivery. + +Platform inclusion and exclusion are independently selectable product +capabilities. A buyer that plans to provide exclusions later requests +`required_overlay_support.device_platform_exclude`; a matching product returns +`overlay_support.device_platform_exclude`. Known exclusion values belong in +`targeting_overlay` during discovery so availability, pricing, and forecast use +the effective constraint. + +**Available platforms** (defined in [`device-platform.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/device-platform.json), based on Sec-CH-UA-Platform standard extended for CTV): +- Browser: `ios`, `android`, `windows`, `macos`, `linux`, `chromeos` +- CTV: `tvos`, `tizen`, `webos`, `fire_os`, `roku_os` +- Other: `unknown` + +### Device type (form factor) +Use for **performance optimization** targeting by hardware category rather than OS: +- **Mobile campaigns**: Target all mobile devices regardless of OS +- **CTV campaigns**: Target connected TVs across all platforms +- **Exclude form factors**: Skip CTV for app-install campaigns + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "device_type": ["mobile", "tablet"] +} +``` + +**Exclusion** — use `device_type_exclude` to exclude specific form factors: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "device_type_exclude": ["dooh"] +} +``` + +**Available types** (defined in [`device-type.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/device-type.json)): +- `desktop`, `mobile`, `tablet`, `ctv`, `dooh`, `unknown` + +**Device type vs device platform**: `device_type` targets form factors (mobile, desktop, CTV). `device_platform` targets operating systems (iOS, Android, tvOS). Use `device_type` for performance optimization; use `device_platform` for technical compatibility. + +### Language (Localization) +Use for **localization requirements**: +- Creative is in a specific language +- Campaign targets specific language speakers + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "language": ["fr-CA", "en"] +} +``` + +**Format**: Canonical BCP 47 language ranges (for example, `en`, `fr-CA`, `zh-Hant-TW`). AdCP uses lower-case language and variants, title-case script, and upper-case region. + +**Matching**: Sellers apply RFC 4647 §3.3.1 Basic Filtering in the direction buyer range → user language-preference tag. `fr` matches `fr`, `fr-CA`, and `fr-FR`; `fr-CA` matches `fr-CA` and more-specific descendants, but not `fr` or the sibling `fr-FR`. Multiple requested ranges use OR logic. + +**Discovery**: The structured `media_buy.execution.targeting.language.supported_languages` capability lists exact selectable request values. A capability entry of `fr` does not authorize a request for `fr-CA`; the seller must list `fr-CA` when that narrower range is accepted. Sellers that cannot enforce a requested value reject the request rather than silently widening or dropping it. A legacy `language: true`, or a structured declaration with no list, indicates coarse support without an exhaustive preflight list. + +### Frequency Capping +Two frequency controls can be used independently or together: + +**Cooldown between exposures** — `suppress` prevents back-to-back delivery: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "frequency_cap": { + "suppress": { "interval": 60, "unit": "minutes" } + } +} +``` + +**Impression cap per entity per window** — `max_impressions` + `per` + `window` limits total exposure: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "frequency_cap": { + "max_impressions": 5, + "per": "households", + "window": { "interval": 7, "unit": "days" } + } +} +``` + +Both can be combined. The `per` field uses the same entity types as `reach_unit` on reach optimization goals — use matching values when layering a hard cap on top of a reach campaign. + +### Example Geographic Overlay (RCT Testing) + +For RCT testing, exclusion targeting is often simpler than inclusion. Instead of listing hundreds of DMAs to include, exclude the holdout markets from a national campaign. When inclusion and exclusion are combined, exclusion fields subtract from the included set (e.g., "US minus these 3 DMAs"): + +```json +{ + "packages": [ + { + "product_id": "national_video", + "targeting_overlay": { + "geo_countries": ["US"], + "geo_metros_exclude": [ + { "system": "nielsen_dma", "values": ["501", "803", "602"] } + ] + } + }, + { + "product_id": "national_video", + "targeting_overlay": { + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "803", "602"] } + ] + } + } + ] +} +``` + +Inclusion targeting works the same way for cases where you want to specify exact markets: + +```json +{ + "packages": [ + { + "product_id": "national_video", + "targeting_overlay": { + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "602", "803"] } + ] + } + }, + { + "product_id": "national_video", + "targeting_overlay": { + "geo_metros": [ + { "system": "nielsen_dma", "values": ["504", "505", "506"] } + ] + } + } + ] +} +``` + +## What NOT to Use Targeting Overlays For + +**Express these in briefs instead:** +- **Demographic preferences** (age, gender, income) - "Target millennials" or "high-income households" in brief text +- **Device preferences** - "Mobile users" or "CTV viewers" in brief text (use `device_platform` overlay only for technical compatibility) +- **Content categories** - "Sports content" or "News sites" in brief text +- **General audience preferences** - "Auto intenders" or "Luxury shoppers" in brief text. If the buyer wants specific named signals applied to this package, use `signal_targeting_groups`. +- **Daypart preferences** - "Morning commute hours" or "prime time evening" in brief text + +**Overlays vs Briefs:** +| Use Case | Overlay | Brief | +|----------|---------|-------| +| Age for compliance (alcohol, gambling) | ✅ `age_restriction` | | +| Age for audience targeting | | ✅ "Target millennials" | +| Device for app compatibility | ✅ `device_platform` | | +| Device for audience preference | | ✅ "Mobile users" | +| Language for creative localization | ✅ `language` | | +| Language for audience preference | | ✅ "Spanish-speaking audiences" | +| First-party CRM audience (retargeting, suppression) | ✅ `audience_include` / `audience_exclude` | | +| Audience preference (interest targeting) | | ✅ "Auto intenders" in brief | +| Specific named signal offered by the seller | ✅ `signal_targeting_groups` | | +| Search/retail media keyword targeting | ✅ `keyword_targets` / `negative_keywords` | | +| Broad thematic intent ("people searching for shoes") | | ✅ "Reach in-market shoe shoppers" | +| Proximity to specific coordinates (within 2hr drive of a city) | ✅ `geo_proximity` | | +| Nearby audience ("people near coffee shops") | | ✅ "Reach people near coffee shops" | + +**Why briefs work better for preferences:** +- Natural language captures intent more clearly +- Publishers know their inventory and can target effectively +- Avoids channel-specific complexity (DOOH has no browsers) +- Simpler API with fewer edge cases + +## Available Targeting Overlay Parameters + +Geographic targeting supports both inclusion (restrict to) and exclusion (exclude from) for all geo dimensions. Inclusion and exclusion fields can be combined — for example, include a country but exclude specific metros within it. + +### Exclusion Semantics + +**Exclusion without inclusion.** When an exclusion field is present without a corresponding inclusion field, the exclusion applies to the product's full geographic coverage. For example, if a product covers the entire US and the buyer specifies only `geo_metros_exclude`, the excluded metros are removed from the product's national footprint. + +**Cross-level resolution.** Geographic levels form a hierarchy: country > region > metro > postal. Sellers SHOULD resolve hierarchical conflicts such that exclusion at a higher level takes precedence over inclusion at a more specific level. For example, `geo_countries_exclude: ["US"]` combined with `geo_regions: ["US-CA"]` SHOULD result in no US delivery — the country-level exclusion takes precedence. + +**Same-value overlap.** Sellers SHOULD reject requests where the same value appears in both the inclusion and exclusion field at the same level (e.g., `geo_countries: ["US"]` with `geo_countries_exclude: ["US"]`) and return a descriptive error. ISO subdivision and named-place overlaps are stricter: the same identity in `geo_regions` / `geo_regions_exclude` or `geo_places` / `geo_places_exclude` MUST be rejected. + +**Capabilities.** Inclusion and exclusion support are independent. Sellers declare subdivision inclusion through `geo_regions` and exclusion through `geo_regions_exclude`; support for one MUST NOT be inferred from the other. A legacy boolean in seller-wide capabilities is a coarse, informative rollup. Seller-wide structured values are individual routing claims within the response scope, not a promise that multiple values are jointly composable or available through the same execution route or account. Only Product `overlay_support` supplies the binding set of executable targeting permissions for that Product, and its legacy `true` form retains the targeting-overlay contract's binding unrestricted-support meaning. A seller that cannot honor every protocol-valid value MUST return structured country/value Product support instead. If a seller does not support a requested direction, it MUST return a validation error rather than silently ignore the field. + +### geo_countries +- **Description**: Restrict delivery to specific countries +- **Format**: ISO 3166-1 alpha-2 country codes +- **Examples**: `["US", "CA"]`, `["GB", "FR", "DE"]` +- **Use cases**: Regulatory compliance, country-specific campaigns + +### geo_countries_exclude +- **Description**: Exclude specific countries from delivery +- **Format**: ISO 3166-1 alpha-2 country codes +- **Examples**: `["RU", "CN"]` +- **Use cases**: Regulatory compliance, sanctions + +Country inclusion and exclusion support are declared independently on each +Product. A buyer uses `required_overlay_support.geo_countries: true` or +`required_overlay_support.geo_countries_exclude: true` to require future +package-level selection. The matching Product can return either legacy `true` +or structured support such as +`{ "max_values_per_package": 1 }`. The structured form supports +protocol-valid country codes but caps how many values may appear in that field +on one package; it is not a country allowlist and does not guarantee inventory +for every country. + +Numeric seller limits do not participate in requirement matching. A seller +MUST reject a create or update that exceeds the disclosed limit with +`UNSUPPORTED_FEATURE`, identify the overflowing targeting field, and leave +existing state unchanged. Legacy `true` remains valid and declares positive +support without a protocol-level cardinality cap. + +Numeric limits are ignored only when matching future-support requirements. +Concrete targeting is still bound by them: every returned Product's accepted +effective targeting MUST satisfy its disclosed maximum. A seller MUST exclude +an over-limit candidate unless it returns a distinct configured Product with a +disclosed, compliant targeting modification. + +### geo_regions +- **Description**: Restrict delivery to canonical ISO 3166-2 subdivisions, including states, provinces, regions, departments, and overseas subdivisions +- **Format**: ISO 3166-2 subdivision codes +- **Examples**: `["US-CA", "CA-QC"]`, `["FR-49", "FR-2A", "FR-971", "FR-ARA"]` +- **Use cases**: State-level compliance, regional testing + +### geo_regions_exclude +- **Description**: Exclude canonical ISO 3166-2 subdivisions from delivery +- **Format**: ISO 3166-2 subdivision codes +- **Examples**: `["US-CA"]`, `["CA-QC"]` +- **Use cases**: Regulatory compliance (e.g., cannabis restrictions by province), RCT holdout regions, regions where product is unavailable + +ISO subdivision identifiers are the protocol identity. Sellers MUST execute every requested value exactly or reject/propose a disclosed targeting modification; they MUST NOT silently widen a department to an ancestor, drop an unsupported value, or apply only part of a list. A seller MAY translate a canonical subdivision internally to an exact provider-native representation, including a complete postal-area set, while preserving the requested ISO code in package readback. Native-versus-translated execution is diagnostic and does not change conformance. + +Known values belong in `get_products.targeting_overlay.geo_regions` and/or `geo_regions_exclude`, so every returned configured product, price, availability result, minimum, guarantee, and aggregate forecast reflects the effective subdivisions. No separate region resolver is required: configured discovery or refinement is the authoritative value-level preflight. + +When region values will be chosen later, buyers request `required_overlay_support.geo_regions` and `geo_regions_exclude` independently. A structured requirement keys support by country. `all_values: true` requires every protocol-valid ISO subdivision active in the seller's support snapshot when the declaration is issued; it does not automatically include values introduced by a later catalog revision. `catalog_version` and `as_of` identify that snapshot when supplied. `values` requests an exact finite candidate set. Returned Product `overlay_support` is binding selectable permission. Requirement matching uses country/value containment: support with `all_values: true` satisfies any requirement for that country; finite support satisfies only requested value subsets. Future support does not guarantee value-specific inventory or commercial terms, so buyers that need a value-specific forecast or guarantee refine with the exact overlay before commitment. + +At create or update, unsupported dimensions, countries, or values outside Product `overlay_support` produce `UNSUPPORTED_FEATURE`, while malformed or unknown canonical identifiers inside a declared support envelope produce `INVALID_REQUEST` with an exact `error.field`. A supported create-time selection with no executable inventory produces `PRODUCT_UNAVAILABLE`. `REQUOTE_REQUIRED` remains update-only for an executable change outside the accepted price or guarantee envelope; buyers that know commercially distinct region values before commitment rediscover or refine with the exact overlay. Accepted package state echoes the complete effective ISO subdivision overlay. Updates are atomic. + +### geo_metros +- **Description**: Restrict delivery to specific metro areas +- **Format**: Array of objects, each with a `system` and `values` +- **Systems**: `nielsen_dma` (US), `uk_itl1` / `uk_itl2` (UK), `eurostat_nuts2` (EU), `custom` +- **Example**: `[{ "system": "nielsen_dma", "values": ["501", "803"] }]` +- **Use cases**: Local campaigns, metro-level RCT testing +- **Note**: Seller must declare supported systems in `get_adcp_capabilities` + +### geo_metros_exclude +- **Description**: Exclude specific metro areas from delivery +- **Format**: Array of objects, each with a `system` and `values` +- **Example**: `[{ "system": "nielsen_dma", "values": ["602"] }]` +- **Use cases**: RCT holdout markets, competitive exclusion zones, markets where product is unavailable +- **Note**: Seller must declare supported systems in `get_adcp_capabilities` + +### geo_postal_areas +- **Description**: Restrict delivery to specific postal areas +- **Format**: Array of objects, each with a `country`, `system`, and `values` +- **Systems**: country-local values such as `zip`, `zip_plus_four`, `outward`, `full`, `fsa`, `plz`, `code_postal`, `postcode`, `pin`, and `postal_code` +- **Example**: `[{ "country": "US", "system": "zip", "values": ["10001", "10002"] }]` +- **Use cases**: Hyper-local campaigns, postal-level restrictions +- **Note**: Seller must declare supported systems in `get_adcp_capabilities`. During the 3.x migration, deprecated country-fused systems such as `us_zip` remain accepted for compatibility and SDK backfill. + +### geo_postal_areas_exclude +- **Description**: Exclude specific postal areas from delivery +- **Format**: Array of objects, each with a `country`, `system`, and `values` +- **Example**: `[{ "country": "US", "system": "zip", "values": ["90210"] }]` +- **Use cases**: RCT holdout zip codes, restricted delivery areas +- **Note**: Seller must declare supported systems in `get_adcp_capabilities`; the deprecated legacy form remains accepted during the 3.x migration. + +### geo_places + +- **Description**: Restrict delivery to named administrative or local places represented by stable catalog identifiers +- **Format**: Array of objects with required `country`, `system`, `place_type`, and `values`; optional `system_version`, `value_labels`, and `ext` +- **Systems**: Registered namespaces are `geonames`, `google_ads`, and `microsoft_ads`. Other catalogs use an owner-controlled absolute HTTPS URI, such as `https://seller.example/geo/catalogs/places`. MaxMind `geoname_id` values use the `geonames` namespace; MaxMind is a catalog source/version, not a separate identifier namespace. +- **Example**: `[{ "country": "NL", "system": "geonames", "system_version": "2026-05", "place_type": "city", "values": ["2759794"], "value_labels": { "2759794": "Amsterdam, North Holland, Netherlands" } }]` +- **Use cases**: Target a platform's named city, municipality, borough, neighborhood, post town, city region, or county entity without relying on ambiguous names +- **Note**: `values` are the authoritative targeting keys. Every `value_labels` key MUST appear in `values`; labels exist only for diagnostics and audit readability, and sellers MUST NOT resolve or apply targeting from them. Raw names such as `Amsterdam` are unresolved intent, not valid values. + +Within `geo_places`, values and entries have union semantics: delivery may occur in any included place. `geo_places_exclude` subtracts matching places from the current candidate geography, including when no `geo_places` inclusion is present. Inclusion across different geographic dimensions is intersected. Sellers MUST reject the same `(country, system, place_type, value)` in both include and exclude lists, even when the include and exclude entries specify different catalog versions: version is not part of stable place identity. Sellers MAY reject cross-level combinations they cannot resolve safely rather than silently approximating them. + +Before sending a place target, buyers inspect `get_adcp_capabilities.media_buy.execution.targeting.geo_places`. Support is declared as exact country/type pairs, not independent lists. Each system also declares `catalog.current_version`, exact `supported_versions`, and an `adcp_geo_place_resolver_v1` endpoint. Buyers resolve raw names—or refresh an existing ID—using an HTTPS GET with exactly one of `q` or `value` from `get-geo-place-resolution-request.json`. The response echoes the normalized request and follows `get-geo-place-resolution-response.json`, carrying machine-readable country/subdivision/type context plus active, removal-planned, or deprecated identifiers and replacements. Ambiguous results require user or agent disambiguation before trafficking. + +If `system_version` is omitted from a new target, the seller applies its declared `current_version`. Sellers MUST reject unsupported systems, country/type pairs, versions, deprecated identifiers, and unknown identifiers rather than silently dropping or reinterpreting them. If an identifier is stale, the seller returns a validation error and may surface resolver-provided replacements; it MUST NOT silently substitute a replacement. Sellers MUST echo persisted `geo_places` and `geo_places_exclude` in package `targeting_overlay` state with the exact applied `system_version` and values. + +Accepted place targeting is pinned to the echoed `system_version` for the life of the package. Removing that version from `supported_versions` stops new targeting and target-changing updates from using it, but MUST NOT silently mutate, drop, or invalidate an existing package. An unrelated package update preserves the pinned place overlay. If a seller can no longer execute a pinned target, `get_media_buys` MUST still echo it and return a nonfatal `errors[]` entry with `code: "PLACE_TARGET_UNAVAILABLE"`, `recovery: "correctable"`, `field` pointing to the exact `media_buys[N].packages[M].targeting_overlay.geo_places[_exclude][A].values[V]` response path, and `details` containing `media_buy_id`, `package_id`, `system`, `system_version`, `country`, `place_type`, and `value`. The buyer can use resolver `value` lookup against the current catalog to find lifecycle status and proposed replacements, then submit an intentional target update. + +Place forecast and delivery breakdown rows are intentionally not part of this release: `geo_level: "place"` remains invalid on reporting surfaces. Package-state echo provides configuration auditability, but not delivery-by-place verification. Place-level forecast, delivery, pacing, and reconciliation require a follow-up reporting RFC. + +Known place IDs belong in `get_products.targeting_overlay.geo_places`, so every +returned product, price, and aggregate forecast reflects that effective +targeting even though a place-level breakdown is unavailable. If IDs will be +chosen on packages later, the buyer requests `required_overlay_support.geo_places` +(and independently `geo_places_exclude`) with the required system, +country/type pairs, and optional catalog versions. Returned Product +`overlay_support` is binding selectable permission, not a value-specific +inventory, price, or forecast guarantee. At create, the seller applies this +deterministic disposition matrix to the actual place overlay: + +| Condition | Result | +|---|---| +| The dimension, identifier system, country, place type, or combination is outside the selected Product `overlay_support` | `UNSUPPORTED_FEATURE` | +| The tuple is supported, but an ID is invalid, unknown, or deprecated, or an explicit `system_version` is not supported | `INVALID_REQUEST`, with `error.field` identifying the offending field | +| The identifiers are valid and supported, but their effective intersection has no current inventory | `PRODUCT_UNAVAILABLE`; rediscover with the concrete values or choose another product, without silent substitution or repricing | + +An accepted create confirms that the returned terms apply to the complete +effective targeting. `PLACE_TARGET_UNAVAILABLE` is reserved for later +degradation of a previously accepted, persisted place target; it is not a +create-time substitute for any result above. + +### geo_places_exclude + +- **Description**: Exclude catalog-backed named places +- **Format**: Same as `geo_places` +- **Example**: `[{ "country": "US", "system": "geonames", "place_type": "city", "values": ["5392171"], "value_labels": { "5392171": "San Jose, California, United States" } }]` +- **Note**: Seller must declare the system, exact country/type pair, and applied catalog version in `get_adcp_capabilities` and echo the persisted exclusion on package state. + +### axe_include_segment +- **Description**: Segment ID for inclusion targeting (legacy AXE field) +- **Format**: String segment identifier +- **Examples**: `"seg_auto_intenders_q1"`, `"audience_lapsed_buyers_30d"` +- **Use cases**: Dynamic audience targeting, first-party data activation +- **Note**: This field is from the legacy AXE integration. New implementations should use [TMP](/dist/docs/3.2.0-beta.4/trusted-match), where audience targeting is handled through the Identity Match path. + +### axe_exclude_segment +- **Description**: Segment ID for exclusion targeting (legacy AXE field) +- **Format**: String segment identifier +- **Examples**: `"seg_existing_customers"`, `"audience_past_converters"` +- **Use cases**: Customer suppression, frequency management +- **Note**: This field is from the legacy AXE integration. New implementations should use [TMP](/dist/docs/3.2.0-beta.4/trusted-match), where suppression is handled through the Identity Match path. + +### audience_include +- **Description**: Restrict delivery to users who are members of these first-party CRM audiences. Only people on the uploaded list are eligible to see the ad. +- **Format**: Array of `audience_id` strings from [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) +- **Example**: `["lapsed_subscribers", "high_value_prospects"]` +- **Use cases**: Retargeting known users, loyalty campaigns targeting existing members, CRM-based inclusion on closed platforms (LinkedIn, Meta, TikTok, Google Ads) +- **Not for lookalike/expansion**: To find new users *similar to* an audience, describe the intent in your campaign brief ("reach people like our existing customers") — the seller handles expansion strategy +- **Prerequisite**: Audiences must be registered and `ready` via `sync_audiences` before use +- **Note**: Seller must declare support in `get_adcp_capabilities` + +### audience_exclude +- **Description**: Suppress delivery to users who are members of these first-party CRM audiences. Matched users are excluded regardless of other targeting. +- **Format**: Array of `audience_id` strings from [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) +- **Example**: `["existing_customers", "recent_purchasers"]` +- **Use cases**: Customer suppression in acquisition campaigns, excluding recent converters, suppressing opted-out users +- **Prerequisite**: Audiences must be registered and `ready` via `sync_audiences` before use +- **Note**: Seller must declare support in `get_adcp_capabilities` + +### signal_targeting_groups +- **Description**: Basic Boolean grouping for seller-offered data signals. Use this for both simple include-only signal targeting and grouped include/exclude expressions such as `(A OR B) AND NOT (C OR D)`. +- **Discovery**: Wholesale products can set `signal_targeting_allowed: true` and omit inline `signal_targeting_options`; buyers then use `get_signals` as the selectable signal feed. Products return inline `signal_targeting_options` when they need product-specific pricing, activation handles, defaults, grouping hints, or a relevant subset for a brief/refine response. +- **Format**: Object with required top-level `operator: "all"` and a `groups` array. The top-level operator is always present, even though v1 only supports `all`. +- **Child groups**: Each child group has `operator: "any"` or `operator: "none"` and a `signals` array of package signal targeting objects. Each signal carries `signal_ref`, `value_type`, and the value fields, plus optional commercial and activation handles. +- **Legacy flat targeting**: `targeting_overlay.signal_targeting` remains schema-valid during the SignalRef migration window for older clients, but it is deprecated. New package-level signal selection uses `signal_targeting_groups` so sellers can apply include/exclude groups, product rules, and per-signal pricing consistently. +- **Semantics**: `any` means the user must match at least one signal in that group. `none` means the user must match none of the signals in that group. With top-level `all`, every child group must pass. For simple include-only targeting, send one child group with `operator: "any"`. +- **Resolution model**: `signal_targeting_rules.resolution_model` tells buyers how the seller applies selected signals to inventory. `direct_targeting` means selected signals behave like package targeting predicates. `seller_planned` means selected signals are inputs to seller-managed planning against product-specific inventory, timing, availability, reach, or pacing constraints; buyers should not attempt to decompose the selected audience into lower-level inventory or schedule decisions. +- **Selection groups**: When the product declares `signal_targeting_rules.selection_group_rules`, each child group MUST contain signals from exactly one `selection_group` and one targeting mode, and buyers MUST send at most one child group for each `(selection_group, targeting_mode)` pair. Sellers MUST reject duplicate, mixed, or collapsed child groups that combine distinct selection-group rules into the same `any` or `none` group. `selection_group` is a product-defined composability bucket, not a backend identity type: for example, a GAM-backed seller may expose both audience segments and key-values as ordinary `signal_ref` options, using one `selection_group` when they are freely OR-combinable and separate `selection_group`s when they must be trafficked as separate ANDed clauses. +- **Pricing**: Include `pricing_option_id` when the selected product's `signal_targeting_options` entry has `pricing_options`; omit only when the signal is bundled into the product price or has no incremental cost. Product-scoped pricing in `signal_targeting_options` is authoritative for that product. If the product option has no product-specific price, sellers MAY use the default pricing exposed in `get_signals`. +- **Signal reference**: Use `signal_ref: { "scope": "product", "signal_id": "..." }` for a product-local signal option. Use `signal_ref: { "scope": "data_provider", "data_provider_domain": "...", "signal_id": "..." }` for a signal defined in a data provider's published adagents.json `signals[]`. `signal_ref` identifies the signal definition; `signal_agent_segment_id` identifies a resolved segment or execution handle when the product option exposes one. Echo an exposed `signal_agent_segment_id` verbatim on the package entry, and prefer it over reconstructing identity from categorical values because providers can namespace handles to distinguish definitions such as real-time rain versus forecast high-precipitation. If the product option has `activation_status: "requires_activation"`, it MUST include `signal_agent_segment_id`; activate the signal first, then include `activation_key` if the seller requires it. +- **Provider-published signals**: For a provider-published signal, `signal_ref.data_provider_domain` identifies the upstream data provider and `signal_ref.signal_id` identifies the public signal definition. Buyers can verify the seller's right to offer the signal by checking the provider's `adagents.json` `authorized_agents` entry for the seller. +- **Product gating**: Sellers SHOULD reject a signal entry when the product does not advertise that signal inline or through `get_signals`, `signal_targeting_allowed` is false for package-level selection, the signal violates the product's `signal_targeting_rules`, the signal's `allowed_targeting_modes` does not allow the requested child group operator, the signal is not active for the account, or the requested value is outside the signal definition. `allowed_targeting_modes: ["include"]` maps to `any` groups; `["exclude"]` maps to `none` groups. Binary package signal entries use `value: true`; use the parent `none` group for exclusion, not `value: false`. Signal targeting limits are product-scoped, not declared in seller-wide `get_adcp_capabilities`, because products may be backed by different ad servers or platforms. If `selection_mode` is `fixed`, buyers SHOULD omit edits to `signal_targeting_groups`; sellers apply the fixed/default selections and MUST echo them on the resulting package state. +- **Updates**: Because `targeting_overlay` is shared by `create_media_buy` and `update_media_buy`, sellers MAY reject mid-flight signal group changes with `REQUOTE_REQUIRED` when the selected signal, group expression, or `pricing_option_id` changes the priced envelope. +- **Not for first-party audiences**: Use `audience_include` / `audience_exclude` for buyer-uploaded audiences from `sync_audiences`. + +The backend targeting primitive is intentionally hidden behind `signal_ref`. Buyers should not need a separate identity system for "audience segment" versus "key-value"; the selected product's `signal_targeting_rules` describe whether those options can be composed together. If a product exposes both a `gam_audience_segments` group and a `gam_key_values` group with `targeting_mode: "include"`, the buyer composes two `any` child groups under the top-level `all`, not one collapsed mixed group. + +For products where inventory and audience planning are inseparable, such as linear broadcast schedules, sellers use `resolution_model: "seller_planned"`. Mandatory audience selection still lives in `selection_mode: "required"` or a required `selection_group_rules` entry; cross-product audience consistency comes from a shared `scope: "data_provider"` signal definition, even when the seller is also the data provider. + +```json +{ + "packages": [ + { + "product_id": "retail_video_premium", + "pricing_option_id": "media_cpm_usd", + "budget": 25000, + "targeting_overlay": { + "signal_targeting_groups": { + "operator": "all", + "groups": [ + { + "operator": "any", + "signals": [ + { + "signal_ref": { "scope": "product", "signal_id": "high_intent_shoppers" }, + "value_type": "binary", + "value": true + }, + { + "signal_ref": { "scope": "product", "signal_id": "loyalty_members" }, + "value_type": "binary", + "value": true + } + ] + }, + { + "operator": "none", + "signals": [ + { + "signal_ref": { "scope": "product", "signal_id": "recent_purchasers" }, + "value_type": "binary", + "value": true + } + ] + } + ] + } + } + } + ] +} +``` + +### frequency_cap +- **Description**: Limit ad exposure frequency per entity. Two optional controls can be used independently or together. +- **Cooldown control**: `suppress` — minimum duration between consecutive exposures to the same entity. `suppress_minutes` (number) is also accepted for backwards compatibility. +- **Impression cap**: `max_impressions` + `per` + `window` — total impression ceiling per entity per time window. All three fields are required together. +- **Use cases**: User experience management, ad fatigue prevention, complementing reach optimization goals with a hard ceiling +- **Examples**: `{"suppress": {"interval": 60, "unit": "minutes"}}`, `{"max_impressions": 5, "per": "households", "window": {"interval": 7, "unit": "days"}}` + +### age_restriction +- **Description**: Require minimum age for compliance +- **Format**: Object with `min` (required), `verification_required`, and `accepted_methods` +- **Examples**: `{"min": 21, "verification_required": true}`, `{"min": 18, "verification_required": true, "accepted_methods": ["world_id"]}` +- **Use cases**: Alcohol (21+), gambling (18+), cannabis regulations +- **Note**: Platforms declare supported verification methods in `get_adcp_capabilities` + +### device_platform +- **Description**: Restrict to specific operating system platforms +- **Format**: Array of platform identifiers from Sec-CH-UA-Platform standard +- **Examples**: `["ios"]`, `["ios", "android"]`, `["tvos", "fire_os"]` +- **Use cases**: App install campaigns (iOS-only app), CTV-specific campaigns +- **Values**: `ios`, `android`, `windows`, `macos`, `linux`, `chromeos`, `tvos`, `tizen`, `webos`, `fire_os`, `roku_os` + +### device_platform_exclude +- **Description**: Exclude specific operating-system platforms from delivery +- **Format**: Array using the same identifiers as `device_platform` +- **Examples**: `["fire_os"]`, `["tizen", "webos"]` +- **Conflict rule**: Exclusion wins when the same value appears in both platform fields +- **Discovery**: Require future package-level control with `required_overlay_support.device_platform_exclude`; products disclose it through `overlay_support.device_platform_exclude` +- **Failure rule**: A seller that cannot enforce the exclusion rejects the request instead of dropping it + +### device_type +- **Description**: Restrict to specific device form factors +- **Format**: Array of device type identifiers +- **Examples**: `["mobile"]`, `["mobile", "tablet"]`, `["ctv"]` +- **Use cases**: Mobile-only promotions, CTV campaigns targeting all TV platforms, excluding DOOH from certain campaigns +- **Values**: `desktop`, `mobile`, `tablet`, `ctv`, `dooh`, `unknown` +- **Note**: Seller must declare `device_type: true` in `get_adcp_capabilities` targeting + +### device_type_exclude +- **Description**: Exclude specific device form factors from delivery +- **Format**: Array of device type identifiers +- **Examples**: `["dooh"]`, `["ctv", "dooh"]` +- **Use cases**: Exclude CTV for app-install campaigns, exclude DOOH for direct-response campaigns +- **Note**: Supported when seller declares `device_type: true` in `get_adcp_capabilities` + +### browser + +- **Description**: Restrict impression delivery to canonical browser families +- **Format**: Non-empty array of `chrome`, `safari`, `firefox`, `edge`, `opera`, `samsung_internet`, `android_webview`, `other`, or `unknown` +- **Examples**: `["chrome"]`, `["chrome", "firefox"]`, `["safari", "unknown"]` +- **Semantics**: Values use OR; when present, omitted families are ineligible. The field describes the impression rendering environment, not a post-click browser. +- **Discovery**: Require any later-selectable family with `required_overlay_support.browser: true`, or require a subset with `required_overlay_support.browser.families`. Products disclose unrestricted support as `true` or partial support with `overlay_support.browser.families`. + +### browser_exclude + +- **Description**: Exclude canonical browser families from impression delivery +- **Format**: Non-empty array using the same values as `browser` +- **Examples**: `["unknown"]`, `["safari", "android_webview"]` +- **Conflict rule**: Exclusion wins when the same family appears in both browser fields +- **Discovery**: Inclusion and exclusion support are independent; `required_overlay_support.browser_exclude` and `overlay_support.browser_exclude` use the same `true` or `{ "families": [...] }` capability form. +- **Failure rule**: A seller that cannot enforce the exclusion rejects the request instead of dropping it + +### language +- **Description**: Restrict to users with specific language preferences +- **Format**: Array of canonical BCP 47 language ranges +- **Examples**: `["en"]`, `["fr-CA", "en"]`, `["zh-Hant-TW", "ja", "ko"]` +- **Matching**: RFC 4647 Basic Filtering in the direction buyer range → user language-preference tag. A broad `fr` range includes `fr-CA`; a narrow `fr-CA` range does not include `fr` or `fr-FR`. +- **Discovery**: If the seller publishes `execution.targeting.language.supported_languages`, each requested value must be an exact member of that list. Sellers reject unsupported values rather than widening or ignoring them. +- **Use cases**: Localized creative, language-specific campaigns + +### keyword_targets +- **Description**: Target specific keywords for search and retail media platforms. Restricts delivery to queries matching the specified keywords. +- **Format**: Array of objects with `keyword`, `match_type` (`broad`, `phrase`, or `exact`), and optional `bid_price` +- **Identity**: Each keyword is identified by the tuple `(keyword, match_type)`. The same keyword string with different match types are distinct targets. Duplicate pairs in a single request SHOULD be rejected by sellers. +- **Match types**: + - `broad` — matches related and synonym queries + - `phrase` — matches queries containing the keyword phrase in order + - `exact` — matches the keyword query only +- **Per-keyword bid**: The optional `bid_price` overrides the package-level `bid_price` for that keyword. Inherits the `max_bid` interpretation from the pricing option: when `max_bid` is true, this is the keyword's bid ceiling; when false, this is the exact bid. If omitted, the package `bid_price` applies. +- **Use cases**: Search campaigns, retail media sponsored products, keyword-based intent targeting +- **Note**: Seller must declare `execution.targeting.keyword_targets` in `get_adcp_capabilities` with the `supported_match_types` it accepts. Only use match types the seller declares — sellers must reject unsupported match types. Use `keyword_targets_add` and `keyword_targets_remove` in `update_media_buy` to add or update keywords incrementally after launch. Keyword-level delivery data (`by_keyword` in reporting) requires `reporting_capabilities.supports_keyword_breakdown: true` on the product — these are independent capabilities. `by_keyword` is keyword-grain (one row per keyword+match_type pair), not search-term-grain. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "keyword_targets": [ + { "keyword": "running shoes", "match_type": "broad", "bid_price": 0.45 }, + { "keyword": "trail running shoes womens", "match_type": "phrase", "bid_price": 0.85 }, + { "keyword": "acme cloudrunner 5", "match_type": "exact", "bid_price": 1.20 } + ] +} +``` + +### negative_keywords +- **Description**: Exclude specific keywords from delivery. Queries matching these keywords will not trigger the ad. +- **Format**: Array of objects with `keyword` and `match_type` (`broad`, `phrase`, or `exact`) +- **Use cases**: Prevent wasteful spend on irrelevant queries, exclude competitor brand terms +- **Note**: Seller must declare `execution.targeting.negative_keywords` in `get_adcp_capabilities` with the `supported_match_types` it accepts. Use `negative_keywords_add` and `negative_keywords_remove` in `update_media_buy` to add/remove negatives incrementally after launch. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "negative_keywords": [ + { "keyword": "free", "match_type": "broad" }, + { "keyword": "used running shoes", "match_type": "phrase" } + ] +} +``` + +### store_catchments +- **Description**: Target users within store catchment areas from a synced store catalog +- **Format**: Array of objects, each referencing a store-type catalog synced via `sync_catalogs` +- **Required fields**: `catalog_id` +- **Optional fields**: `store_ids` (narrow to specific stores), `catchment_ids` (narrow to specific zones like `"walk"` or `"drive"`) +- **Use cases**: Drive-to-store campaigns, local inventory ads, proximity targeting + +```json +{ + "targeting_overlay": { + "store_catchments": [ + { + "catalog_id": "retail-locations", + "store_ids": ["store_nyc_001", "store_nyc_002"], + "catchment_ids": ["drive"] + } + ] + } +} +``` + +When `store_ids` is omitted, all stores in the catalog are targeted. When `catchment_ids` is omitted, all catchment zones are targeted. The seller must declare support for store catchment targeting in `get_adcp_capabilities`. + +### geo_proximity +- **Description**: Target users within travel time, distance, or a custom boundary around arbitrary geographic points +- **Format**: Array of objects, each with exactly one method: `travel_time` + `transport_mode`, `radius`, or `geometry` +- **Required fields**: `lat` + `lng` (for travel_time and radius methods), or `geometry` (for pre-computed boundaries) +- **Optional fields**: `label` (human-readable name for the entry) +- **Use cases**: Tourism campaigns (within 2hr drive of a city), event targeting (near a venue), airport catchment areas +- **Semantics**: Multiple entries use OR — a user within range of any listed point is eligible. Intersects with other geo targeting fields (e.g., combining with `geo_countries` restricts proximity to those countries) + +Travel time (isochrone) example: + +```json +{ + "targeting_overlay": { + "geo_proximity": [ + { + "lat": 51.2277, + "lng": 6.7735, + "label": "Düsseldorf", + "travel_time": { "value": 2, "unit": "hr" }, + "transport_mode": "driving" + } + ] + } +} +``` + +Radius-based example: + +```json +{ + "targeting_overlay": { + "geo_proximity": [ + { + "lat": 51.4700, + "lng": -0.4543, + "label": "Heathrow Airport", + "radius": { "value": 30, "unit": "km" } + } + ] + } +} +``` + +Pre-computed geometry example (buyer provides the polygon): + +```json +{ + "targeting_overlay": { + "geo_proximity": [ + { + "label": "2hr drive from Düsseldorf", + "geometry": { + "type": "Polygon", + "coordinates": [[[5.87, 50.35], [8.23, 50.35], [8.23, 52.10], [5.87, 52.10], [5.87, 50.35]]] + } + } + ] + } +} +``` + +For travel time entries, the platform resolves the isochrone to a geographic boundary based on actual transportation networks. Transport modes: `driving`, `walking`, `cycling`, `public_transport`. The `geometry` method allows buyers who have already computed isochrones (via TravelTime, Mapbox, etc.) to pass the polygon directly — this also enables sellers without routing engines to participate. + +For campaigns targeting 10+ locations, consider using `store_catchments` with a location catalog instead, which supports ongoing management and per-location reporting. `geo_proximity` does not have an exclusion variant — this is by design, as excluding "everyone near a point" is rarely a meaningful targeting constraint. + +Sellers SHOULD enforce minimum area thresholds consistent with their privacy policies and applicable regulations. The seller must declare `geo_proximity` support in `get_adcp_capabilities`, specifying which methods (`radius`, `travel_time`, `geometry`) and transport modes are supported. Product `overlay_support.geo_proximity` is the binding package-level contract and may also include `max_values_per_package`. Buyers request the needed methods and transport modes in `required_overlay_support.geo_proximity`; the response-only numeric limit does not participate in matching. Because multiple proximity entries use OR, a create or update with more entries than the disclosed limit MUST be rejected with `UNSUPPORTED_FEATURE` before any mutation is applied. + +Validated examples: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "geo_proximity": [ + { + "lat": 51.2277, + "lng": 6.7735, + "label": "Düsseldorf", + "travel_time": { "value": 2, "unit": "hr" }, + "transport_mode": "driving" + } + ] +} +``` + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "geo_proximity": [ + { + "lat": 51.4700, + "lng": -0.4543, + "label": "Heathrow Airport", + "radius": { "value": 30, "unit": "km" } + } + ] +} +``` + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/targeting.json", + "geo_proximity": [ + { + "label": "2hr drive from Düsseldorf", + "geometry": { + "type": "Polygon", + "coordinates": [[[5.87, 50.35], [8.23, 50.35], [8.23, 52.10], [5.87, 52.10], [5.87, 50.35]]] + } + } + ] +} +``` + +## Benefits for Different Stakeholders + +### For Buyers +- **Simpler planning**: Describe audience needs naturally +- **Transparent pricing**: All costs included upfront +- **Reduced complexity**: No targeting configuration required +- **Better outcomes**: Publisher expertise optimizes delivery + +### For Publishers +- **Pricing control**: Bundle targeting into product pricing +- **Expertise utilization**: Apply knowledge of inventory and audiences +- **Simplified integration**: Fewer technical targeting parameters +- **Market positioning**: Differentiate through targeting capabilities + +### For Platforms +- **Reduced conflicts**: Single targeting source eliminates layering issues +- **Cleaner implementation**: Less complex targeting logic required +- **Better performance**: Optimized for publisher inventory characteristics + +## Real-Time Targeting Signals + +Orchestrators can provide **real-time targeting signals** to publishers for dynamic, high-cardinality targeting beyond what can be expressed in static overlays. These signals enable: + +- **Brand safety** - Real-time content filtering and adjacency controls +- **Brand suitability** - Contextual alignment with brand values +- **Audience targeting** - Dynamic audience segments updated in real-time +- **Contextual targeting** - Page-level or moment-level targeting decisions + +Real-time signals are provided through the [AdCP Signals Protocol](/dist/docs/3.2.0-beta.4/signals/overview), which allows orchestrators to supply targeting data at impression time. + +### Key Differences: Signals vs Overlays + +- Signals are **evaluated at impression time**, not campaign setup +- Signals support **higher cardinality** (thousands of values vs. dozens) +- Signals can be **updated continuously** without modifying the media buy +- Signals enable **sophisticated contextual targeting** that briefs cannot express + +### When to Use Real-Time Signals + +✅ **Use Real-Time Signals For:** +- Brand safety filtering (block unsafe content) +- Brand suitability scoring (prefer suitable contexts) +- Dynamic audience targeting (real-time segment membership) +- Contextual targeting (page-level or moment-level decisions) +- High-cardinality targeting (thousands of values) +- Targeting that changes during campaign flight + +## Managing keywords after launch + +Both keyword targets and negative keywords support incremental operations in `update_media_buy`, avoiding the need to replace the full `targeting_overlay`: + +- **`keyword_targets_add`** — upserts by `(keyword, match_type)` identity. Adds new keywords or updates `bid_price` on existing ones. +- **`keyword_targets_remove`** — removes matching `(keyword, match_type)` pairs. +- **`negative_keywords_add`** — appends negatives. Duplicates are no-ops. +- **`negative_keywords_remove`** — removes matching pairs. Missing entries are no-ops. + +```json +{ + "packages": [ + { + "package_id": "pkg_sponsored_search_001", + "keyword_targets_add": [ + { "keyword": "trail running shoes", "match_type": "phrase", "bid_price": 0.95 } + ], + "keyword_targets_remove": [ + { "keyword": "running shoes", "match_type": "broad" } + ], + "negative_keywords_add": [ + { "keyword": "diy", "match_type": "broad" }, + { "keyword": "how to make running shoes", "match_type": "phrase" } + ] + } + ] +} +``` + +Sellers SHOULD return a validation error if `targeting_overlay.keyword_targets` is present in the same request as `keyword_targets_add` or `keyword_targets_remove` (and likewise for negative keywords). The incremental operations and the full overlay replacement are mutually exclusive within a single update. + +To remove all keyword targeting while preserving other overlay fields, send the full `targeting_overlay` without the `keyword_targets` field. + +## Implementation Requirements + +### Publishers MUST: + +1. **Support Geographic Targeting**: Handle geographic inclusion and exclusion parameters (`geo_countries`, `geo_countries_exclude`, `geo_regions`, `geo_regions_exclude`, `geo_metros`, `geo_metros_exclude`, `geo_postal_areas`, `geo_postal_areas_exclude`, `geo_places`, `geo_places_exclude`) to the extent your platform supports them. Declare supported metro, postal, and place systems in `get_adcp_capabilities` +2. **Interpret Briefs**: Use briefs to determine appropriate audience and content targeting +3. **Validate Targeting**: Reject media buys with targeting that cannot be supported +4. **Document Limitations**: Clearly communicate any geographic targeting limitations in product descriptions + +### Buyers SHOULD: + +1. **Use Briefs First**: Express most targeting needs in natural language briefs +2. **Minimize Overlays**: Only use technical targeting for geographic restrictions or RCT testing +3. **Trust Publishers**: Let publishers apply their inventory knowledge to brief interpretation +4. **Validate Early**: Check product capabilities before applying technical targeting + +## Best Practices + +1. **Default to briefs** - Start with natural language descriptions +2. **Write Clear Briefs**: Be specific about audience and context requirements +3. **Trust Publisher Expertise**: Publishers know their inventory capabilities best +4. **Use signals for dynamic targeting** - Real-time signals handle complex, high-cardinality targeting better than overlays +5. **Minimize Technical Overlays**: Use only for geographic restrictions or compliance +6. **Validate Audience Fit**: Ensure product descriptions match campaign goals +7. **Inclusive pricing** - Expect targeting costs to be built into product rates + +## Future Evolution + +- **Enhanced Brief Processing**: More sophisticated natural language understanding +- **Audience Discovery**: Better tools for exploring available audiences +- **Deeper Signal Integration**: More sophisticated real-time targeting capabilities +- **Performance Optimization**: AI-driven audience refinement based on campaign results + +## Related Documentation + +- **[Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match)** - Real-time execution layer for impression-time targeting, frequency capping, and brand suitability +- **[Signals Protocol](/dist/docs/3.2.0-beta.4/signals/overview)** - Real-time targeting signals for brand suitability and contextual targeting +- **[Product Discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/)** - How briefs lead to targeted product recommendations +- **[Example Briefs](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs)** - Real examples of effective targeting briefs +- **[Policy Compliance](/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance)** - Automated compliance checking and enforcement diff --git a/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats.mdx b/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats.mdx new file mode 100644 index 0000000000..179583a43b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats.mdx @@ -0,0 +1,115 @@ +--- +title: Implementing Standard Format Support +description: "How AdCP 3.2 sales agents declare standard creative acceptance with canonical product format options." +"og:title": "AdCP — Implementing Standard Format Support" +--- + +This guide is for sales agents declaring the creative contracts their inventory accepts. In AdCP 3.2, author canonical `Product.format_options[]`. `list_creative_formats`, recursive creative-agent catalogs, and compound named format IDs are deprecated compatibility surfaces. + +## Choose the authority first + +| Question | Authoritative surface | +|---|---| +| What does a publisher surface accept? | Publisher `adagents.json.formats[]` | +| What can this seller deliver for a product? | That product's closed `format_options[]` set | +| Which creative agent can produce or validate it? | `get_adcp_capabilities.creative.supported_formats[]` | + +The seller declares deliverability; it does not nominate a creative producer. Buyers can use the AgenticAdvertising.org registry to find creative agents whose self-declared canonical envelope satisfies the product declaration. + +Zero registry matches is a valid result: it means no protocol-exposed build, validation, or preview service currently advertises that contract. The buyer may still supply an already-conforming finished manifest or use a seller-returned preview, but MUST NOT infer a renderer from the publisher or product format declaration. + +## Standard formats + +For standard display, video, audio, and native shapes, use the canonical `format_kind` and narrow it with explicit parameters and slots. Do not create a new identifier merely because your product has a different price or placement name. + +```json +{ + "product_id": "daily_pulse_homepage_display", + "name": "Daily Pulse homepage display", + "format_options": [ + { + "format_option_id": "homepage_image_300x250", + "format_kind": "image", + "params": { + "width": 300, + "height": 250, + "slots": [ + { "asset_group_id": "image_main", "asset_type": "image", "required": true }, + { "asset_group_id": "landing_page_url", "asset_type": "url", "required": true } + ] + } + } + ] +} +``` + +`format_options[]` is a closed set. A package or creative selector outside it must be rejected. Price, floor, availability, and deal eligibility stay on the product or pricing option, not in format parameters. + +## Publisher-owned formats + +When a product sells a publisher-catalog format, repeat its namespace and canonical declaration inline: + +```json +{ + "format_options": [ + { + "publisher_domain": "shorts.streamhaus.example", + "format_option_id": "vertical_video", + "format_kind": "video_hosted", + "params": { + "width": 1080, + "height": 1920, + "duration_ms_range": [5000, 60000], + "slots": [ + { "asset_group_id": "video_main", "asset_type": "video", "required": true } + ] + } + } + ] +} +``` + +Resolve the publisher's `/.well-known/adagents.json` first. If the publisher has not adopted AdCP, use an explicitly identified AgenticAdvertising.org community mirror. Do not promote one sales agent's product declaration into a publisher fact. + +## Custom formats + +Use `format_kind: "custom"` only when the structural creative contract cannot be expressed by a canonical kind. Supply both `format_shape` and an immutable, digest-pinned `format_schema`. + +```json +{ + "format_option_id": "homepage_takeover", + "format_kind": "custom", + "format_shape": "multi_placement_takeover", + "format_schema": { + "uri": "https://formats.daily-pulse.example/homepage-takeover.schema.json", + "digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" + }, + "canonical_formats_only": true, + "params": {} +} +``` + +## Multi-placement coverage + +Product-level options are the upper bound. Placement-level options may narrow that set but cannot broaden it. For every included delivery placement, the selected package format set must have a non-empty compatible intersection. Reject or refine a package that cannot cover all included placements; never silently drop inventory. + +## Finding a creative producer + +Sales agents do not publish a recursive list of creative agents. A buyer can reverse-query the registry and then verify the selected agent directly: + +```http +GET /api/registry/agents?publisher_domain=shorts.streamhaus.example&format_option_id=vertical_video&creative_operation=build +``` + +The creative agent's `supported_formats[]` entry supplies its local `capability_id`. That string is passed to `build_creative.target_capability_id`; it is never copied onto the product or returned manifest. + +## 3.x compatibility + +A 3.2 seller may project canonical declarations into deprecated `format_ids[]` for an older peer. When both fields are emitted, they must describe the same underlying contracts and canonical fields win. Do not independently author or extend the legacy catalog. + +## Related documentation + +- [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) +- [Media products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) +- [Creative-agent capabilities](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) +- [Deprecated `list_creative_formats`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats) diff --git a/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/index.mdx new file mode 100644 index 0000000000..a6c1d7156e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/index.mdx @@ -0,0 +1,84 @@ +--- +title: Capability Discovery +sidebarTitle: Overview +description: "AdCP capability discovery — understand what creative formats a seller supports and which properties they represent before buying media." +"og:title": "AdCP — Capability Discovery" +--- + + +Before you can effectively buy advertising through AdCP, you need to understand two fundamental capabilities: **what creative formats are supported** and **which properties sales agents are authorized to represent**. This section covers the tools and concepts that form the foundation of AdCP's advertising ecosystem. + +## What You'll Learn + +### [Implementing Standard Format Support](/dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats) 🎨 +Learn how sales agents can support standard creative formats through the reference creative agent. Learn how to: + +- Reference standard IAB formats without replicating them +- Implement custom formats for unique inventory +- Use format ID namespacing to prevent conflicts +- Combine standard and custom format support +- Validate format compatibility with advertising products +- Leverage the Standard Creative Agent for standard formats +- Work with publisher-specific creative agents for custom formats + +### [Understanding Authorization](/dist/docs/3.2.0-beta.4/governance/property/authorized-properties) 🔐 +Learn how AdCP prevents unauthorized resale and ensures sales agents are legitimate. Understand: + +- The problem of unauthorized resale in digital advertising +- How publishers authorize sales agents via `adagents.json` +- How to validate sales agent authorization before purchasing +- Property tags and large-scale authorization management + +<Note> +**Cross-Protocol Foundation**: The `adagents.json` authorization system applies across ALL AdCP protocols (Media Buy, Signals, and future Curation). See the [adagents.json specification](/dist/docs/3.2.0-beta.4/governance/property/adagents) for complete implementation details. +</Note> + + +## Foundation Tasks + +These capability discovery tasks provide the reference data needed for effective AdCP workflows: + +### [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) +The primary capability discovery task. Returns protocol versions, supported features, portfolio information, and governance capabilities in a single call. Use this as your first interaction with any AdCP agent. + +### Canonical format sources +Read seller deliverability from `get_products` `Product.format_options[]`, publisher acceptance from `adagents.json.formats[]`, and creative production capabilities from `get_adcp_capabilities.creative.supported_formats[]`. `list_creative_formats` is deprecated in 3.2. + +## Integration Pattern + +Capability discovery typically happens early in your AdCP workflow: + +1. **Discover Capabilities**: Call [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) to learn what the agent supports +2. **Understand Formats**: Read canonical `format_options[]` on returned products and resolve publisher declarations when referenced +3. **Validate Authorization**: Check the `media_buy.portfolio` from capabilities, then verify via publisher `adagents.json` +4. **Discover Products**: Search for advertising inventory with [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) +5. **Plan Creatives**: Match product declarations to creative-agent `supported_formats[]` capabilities +6. **Execute Campaigns**: Create media buys with confidence in format compatibility and authorization + +## Why This Matters + +### Creative Formats +- **Production Planning**: Know requirements before creating assets +- **Creative Agents**: Leverage AI-powered agents to build and validate creatives +- **Platform Compatibility**: Ensure creatives work across advertising platforms +- **Cost Efficiency**: Avoid recreating assets due to specification mismatches +- **Quality Assurance**: Meet technical standards for optimal performance +- **Preview Capabilities**: Test creative rendering before campaign launch + +### Authorized Properties +- **Fraud Prevention**: Avoid unauthorized sellers and inventory fraud +- **Brand Safety**: Ensure you're buying from legitimate property owners +- **Legal Compliance**: Maintain clear audit trails of authorized transactions +- **Trust Building**: Create confidence in the advertising supply chain + +Together, these capabilities provide the foundation for safe, efficient, and effective advertising through AdCP. + +## Related Documentation + +- **[Task Reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/)** - Complete API documentation +- **[Product Discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/)** - Finding advertising inventory +- **[Creatives](/dist/docs/3.2.0-beta.4/media-buy/creatives/)** - Creative asset management +- **[Creative Protocol](/dist/docs/3.2.0-beta.4/creative/)** - Creative agents and manifests +- **[Creative Channel Guides](/dist/docs/3.2.0-beta.4/creative/channels/video)** - Format examples and patterns +- **[Creative Manifests](/dist/docs/3.2.0-beta.4/creative/creative-manifests)** - Understanding creative specifications +- **[adagents.json Specification](/dist/docs/3.2.0-beta.4/governance/property/adagents)** - Publisher authorization system (applies across all AdCP protocols) diff --git a/dist/docs/3.2.0-beta.4/media-buy/commerce-media.mdx b/dist/docs/3.2.0-beta.4/media-buy/commerce-media.mdx new file mode 100644 index 0000000000..d75e798a7f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/commerce-media.mdx @@ -0,0 +1,696 @@ +--- +title: Commerce Media +description: "Commerce media in AdCP: why retail media networks should stand up agentic storefronts instead of building self-service platforms, and how to model sponsored products, in-store digital, and closed-loop attribution." +"og:title": "AdCP — Commerce Media" +--- + + +Every retail media network that builds a self-service ad platform ends up in the same place: competing for agency attention against the largest grocery, pharmacy, and general merchandise retailers — each asking brands to learn one more interface, manage one more login, reconcile one more set of reports. + +There's an alternative. Stand up an agentic storefront: expose your inventory so buyer agents can discover, transact on, and measure it through the same protocol they use for every other seller. When agents handle discovery, the advantage shifts from UI quality to data quality — and data is where most retailers already have a moat. + +## The storefront, not the platform + +<img src="/images/walkthrough/commerce-media-01-platform-trap.png" alt="Daniel reviews a cluttered platform roadmap on a wall screen — dashboard mockups, audience builders, and reporting UIs pile up while he looks skeptical" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Daniel runs retail media at ShopGrid, a marketplace with 200M monthly shoppers and deterministic purchase data from its loyalty program. When he was tasked with building ShopGrid's ad business, the roadmap looked familiar: self-service campaign tool, proprietary audience builder, custom reporting dashboard, eventually a DSP. + +He got halfway through the build before he realized the problem. The brands ShopGrid wanted to attract — CPG companies, health and beauty brands, consumer electronics — were already managing campaigns across a dozen retail media platforms. Each platform had its own API, its own audience taxonomy, its own reporting format. Asking brands to integrate yet another platform meant competing on UI quality against companies with 100x the engineering budget. + +<img src="/images/walkthrough/commerce-media-02-data-moat.png" alt="Daniel walks a retail floor as data streams flow from his tablet to glowing digital screens on end-caps and checkout lanes — the store as a data asset" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +ShopGrid's moat wasn't going to be its dashboard. The moat was the data: deterministic purchase attribution from millions of loyalty members, real-time inventory across thousands of stores, and in-store digital screens at the point of purchase. The question was how to make that data and inventory accessible to the broadest possible set of buyers. + +<img src="/images/walkthrough/commerce-media-03-storefront-launch.png" alt="Daniel at his desk as five retail media product cards radiate outward from his monitor — sponsored products, display, video, in-store, and premium placements being published" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Daniel stood up an AdCP sales agent instead. ShopGrid's entire retail media catalog — sponsored products, on-site display, in-store screens — is exposed as products that any buyer agent can discover via `get_products`. The loyalty data powers closed-loop attribution reported through standard delivery metrics. The store locations are modeled as catalogs with catchment areas for proximity targeting. + +<img src="/images/walkthrough/commerce-media-04-buyer-discovers.png" alt="Split scene — Sam runs a brief from his agency desk as search beams connect to Daniel's retail media products floating on the right, discovery in action" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +The result: any buyer agent that speaks AdCP can transact on ShopGrid inventory without a custom integration. Sam at Pinnacle Agency discovered ShopGrid's sponsored products while running a cross-retailer campaign for Summit Foods — through the same protocol and brief he used for other retailers. + +What every retail media team actually wants is the control of self-serve, the ease of managed service, and all the data in their own internal tools. A self-service platform gives you control but requires massive engineering investment. Managed service is easy for buyers but doesn't scale. An agentic storefront resolves the tension: the retailer defines the products, pricing, and rules (control); buyer agents handle discovery and execution without a sales rep in the loop (ease); and because the retailer runs the MCP server, every transaction flows through their infrastructure (data stays home). + +This doesn't mean ShopGrid abandoned everything else. Brands that aren't using buyer agents still need basic self-service access. But the agentic storefront is the growth layer — it's how ShopGrid reaches buyers who would never have integrated a mid-size retailer's proprietary platform. + +The table below maps familiar retail media concepts to their AdCP equivalents. + +## Concept mapping + +| Retail media concept | AdCP equivalent | Reference | +|---|---|---| +| Retailer / retail media network | Sales agent (MCP server) | [`adagents.json`](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security) | +| Advertiser account with retailer | `account_id` + `list_accounts` | [Accounts & Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) | +| Brand's product catalog | `brand.product_catalog` | [Brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) | +| GTIN / SKU selection for promotion | Catalog selectors (`ids`, `gtins`, `tags`) on `Catalog` | [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs) | +| Sponsored product listing | Product with catalog-rendered creative | [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats) | +| On-site display / video | Product with canonical `format_options` | [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) | +| Retailer-owned shopper signal | Brief-based; optional named segments discovered in `signal_targeting_options` and selected with package-level `signal_targeting_groups` | [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) | +| ROAS target / max conversions | `optimization_goals` on package | [Optimization & Reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) | +| Closed-loop measurement | `outcome_measurement` + `conversion_tracking` on product | [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | +| Attribution window (14d click, 1d view) | `attribution_window` in delivery response | [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | +| ROAS / attributed revenue | `roas`, `conversion_value` in delivery metrics | [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | +| In-store attribution | `by_action_source` with `in_store` | [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | +| Store locations / store locator | Store catalog (seller-provided or buyer-synced) | [Catalogs — Stores](/dist/docs/3.2.0-beta.4/creative/catalogs#stores) | +| Real-time inventory / in-stock | Inventory catalog via `sync_catalogs` | [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs) | +| Proximity / catchment targeting | Store catchment areas (isochrone, radius, GeoJSON) | [Catalogs — Catchment areas](/dist/docs/3.2.0-beta.4/creative/catalogs#catchment-areas) | + +Each retailer is a separate sales agent. Their media offerings are modeled as products. The buyer's brand identity carries the product catalog for SKU-level creative rendering. Account relationships between brands and retailers are managed via `list_accounts` and `account` on media buys — see [Accounts & Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents). + +## The product spectrum + +Retail media networks offer diverse product types — not just sponsored listings. All share the `retail_media` channel, but differ in format, pricing, and creative requirements. Daniel modeled ShopGrid's full portfolio as separate products so buyer agents can mix and match across the funnel. + +### Sponsored product listings + +The simplest commerce media product. The retailer renders the creative from the buyer's product catalog — no custom creative upload needed. Pricing is typically CPC. + +```json +{ + "product_id": "shopgrid_sponsored_products", + "name": "Sponsored Products - Search & Browse", + "description": "Sponsored product listings in search results and category pages. Products are rendered from retailer catalog data.", + "channels": ["retail_media"], + "publisher_properties": [ + { "publisher_domain": "shopgrid.example", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "sponsored_product_listing", "format_kind": "sponsored_placement", "params": {} } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "sp_cpc", + "pricing_model": "cpc", + "floor_price": 0.25, + "price_guidance": { "p50": 0.85, "p75": 1.20 }, + "currency": "USD", + "min_spend_per_package": 50 + } + ], + "delivery_measurement": { + "provider": "ShopGrid deterministic purchase attribution", + "notes": "Deterministic purchase attribution from first-party shopper data. 14-day lookback." + }, + "outcome_measurement": { + "type": "attributed_sales", + "attribution": "deterministic_purchase", + "window": { "interval": 14, "unit": "days" }, + "reporting": "daily_api" + }, + "conversion_tracking": { + "action_sources": ["website", "app", "in_store"], + "supported_targets": ["cost_per", "per_ad_spend"], + "platform_managed": true + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": true + }, + "catalog_types": ["product"], + "catalog_match": { + "matched_gtins": ["00013000006408", "00013000006415", "00013000006422"], + "matched_count": 3, + "submitted_count": 1200 + } +} +``` + +The `catalog_types` field declares what catalog types this product supports. The `catalog_match` field tells the buyer which of their catalog items are eligible on this retailer. Buyers use these values as catalog selectors (`gtins`, `ids`) when creating media buys — the same way `publisher_properties` lists available properties for refinement. Sellers can include `matched_gtins`, `matched_ids`, or both. + +Sponsored product listings are catalog-rendered — the retailer pulls title, price, image, and rating from its own catalog data matched via GTIN. Enhanced product content (comparison charts, lifestyle galleries, brand story modules) and brand stores are complementary content strategies managed through the retailer's content systems, not through the ad buy. + +Key characteristics: +- **CPC pricing** with auction-based bidding +- **`platform_managed: true`** — the retailer provides always-on purchase attribution +- **`supported_targets`** — tells buyers which target kinds are available when setting `optimization_goals` on packages +- **`templates_available: true`** — the retailer renders creatives from catalog data +- **`action_sources`** includes `in_store` for omnichannel attribution + +### On-site display and video + +Display and video ads on retailer properties, targeted using retailer first-party shopper data. Buyers provide standard creatives. Higher minimums and CPMs reflect the value of retailer audience data and guaranteed placement. + +```json +{ + "product_id": "shopgrid_onsite_display", + "name": "Category Shoppers - On-Site Display & Video", + "description": "Display and video ads on ShopGrid marketplace and app, targeting shoppers with relevant purchase history.", + "channels": ["retail_media"], + "publisher_properties": [ + { "publisher_domain": "shopgrid.example", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }, + { "format_option_id": "display_728x90", "format_kind": "image", "params": { "width": 728, "height": 90 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "onsite_cpm", + "pricing_model": "cpm", + "fixed_price": 14.00, + "currency": "USD", + "min_spend_per_package": 10000 + } + ], + "delivery_measurement": { + "provider": "Retailer ad server with IAS viewability", + "notes": "Impressions per IAB guidelines. MRC-accredited viewability." + }, + "outcome_measurement": { + "type": "incremental_sales_lift", + "attribution": "deterministic_purchase", + "window": { "interval": 30, "unit": "days" }, + "reporting": "weekly_dashboard" + }, + "conversion_tracking": { + "action_sources": ["website", "app"], + "supported_targets": ["cost_per", "per_ad_spend"], + "platform_managed": true + }, + "creative_policy": { + "co_branding": "required", + "landing_page": "retailer_site_only", + "templates_available": true + } +} +``` + +Note the creative policy: retailers commonly require co-branding and restrict landing pages to the retailer's own site. + +### Off-site audience extension + +The retailer uses first-party purchase data to target audiences on third-party inventory — extending reach beyond the retailer's own site. The product still belongs to the `retail_media` channel because the buying context is the retailer's data asset. + +```json +{ + "product_id": "shopgrid_offsite_extension", + "name": "Shopper Audiences - Off-Site Display & Video", + "description": "Reach ShopGrid shoppers across premium display and video inventory using first-party purchase data.", + "channels": ["retail_media"], + "publisher_properties": [ + { "publisher_domain": "shopgrid.example", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "offsite_cpm", + "pricing_model": "cpm", + "fixed_price": 13.50, + "currency": "USD", + "min_spend_per_package": 10000 + } + ], + "delivery_measurement": { + "provider": "Self-reported impressions from proprietary ad server", + "notes": "Impressions counted per IAB guidelines. Viewability via IAS." + }, + "outcome_measurement": { + "type": "incremental_sales_lift", + "attribution": "deterministic_purchase", + "window": { "interval": 30, "unit": "days" }, + "reporting": "weekly_dashboard" + }, + "conversion_tracking": { + "action_sources": ["website", "app", "in_store"], + "supported_targets": ["cost_per", "per_ad_spend"], + "platform_managed": true + } +} +``` + +### Premium placements + +Homepage takeovers, category sponsorships, seasonal event placements. These high-visibility positions are sold at fixed rates with guaranteed delivery — often booked well in advance. + +```json +{ + "product_id": "shopgrid_homepage_takeover", + "name": "Homepage Takeover - 24 Hours", + "description": "Exclusive homepage banner and hero placement for 24 hours.", + "channels": ["retail_media"], + "publisher_properties": [ + { "publisher_domain": "shopgrid.example", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_970x250", "format_kind": "image", "params": { "width": 970, "height": 250 } }, + { "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } } + ], + "placements": [ + { + "kind": "seller_inline", + "placement_id": "homepage_hero", + "name": "Homepage Hero Banner", + "mode": "targetable", + "format_options": [{ "format_option_id": "display_970x250", "format_kind": "image", "params": { "width": 970, "height": 250 } }] + }, + { + "kind": "seller_inline", + "placement_id": "homepage_sidebar", + "name": "Homepage Sidebar", + "mode": "targetable", + "format_options": [{ "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }] + } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "takeover_flat", + "pricing_model": "flat_rate", + "fixed_price": 50000.00, + "currency": "USD" + } + ], + "delivery_measurement": { + "provider": "Retailer ad server", + "notes": "Guaranteed impressions based on homepage traffic projections." + }, + "outcome_measurement": { + "type": "attributed_sales", + "attribution": "deterministic_purchase", + "window": { "interval": 14, "unit": "days" }, + "reporting": "daily_api" + }, + "creative_policy": { + "co_branding": "required", + "landing_page": "retailer_site_only", + "templates_available": false + } +} +``` + +Premium placements use the `placements` array so buyers can assign different creatives to different positions within the same product. + +### In-store digital + +Digital screens in physical retail locations — checkout lanes, end-caps, entrance displays, and waiting areas. These bridge the digital-physical gap, with measurement tied to in-store purchases. When paired with a synced store catalog, in-store digital products can target specific locations and show inventory-aware creative. + +In-store is where retail media networks have inventory that no one else can replicate. A retailer with thousands of physical locations has screens at the point of purchase — reaching shoppers while they're browsing aisles, comparing products at the shelf, and waiting in line. Many of these shoppers never see digital ads elsewhere: they shop in-store exclusively, making them unreachable through online channels. + +```json +{ + "product_id": "shopgrid_instore_screens", + "name": "In-Store Digital Screens", + "description": "Digital screens at checkout lanes, end-cap displays, and pharmacy waiting areas across 2,000+ locations.", + "channels": ["retail_media"], + "publisher_properties": [ + { "publisher_domain": "shopgrid.example", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_1080x1920", "format_kind": "image", "params": { "width": 1080, "height": 1920 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ], + "placements": [ + { + "kind": "seller_inline", + "placement_id": "checkout_screen", + "name": "Checkout Lane Screens", + "mode": "targetable", + "format_options": [ + { "format_option_id": "display_1080x1920", "format_kind": "image", "params": { "width": 1080, "height": 1920 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ] + }, + { + "kind": "seller_inline", + "placement_id": "endcap_screen", + "name": "Aisle End-Cap Displays", + "mode": "targetable", + "format_options": [ + { "format_option_id": "display_1080x1920", "format_kind": "image", "params": { "width": 1080, "height": 1920 } } + ] + }, + { + "kind": "seller_inline", + "placement_id": "pharmacy_waiting", + "name": "Pharmacy Waiting Area", + "mode": "targetable", + "format_options": [ + { "format_option_id": "display_1080x1920", "format_kind": "image", "params": { "width": 1080, "height": 1920 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ] + } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "instore_cpm", + "pricing_model": "cpm", + "fixed_price": 12.00, + "currency": "USD", + "min_spend_per_package": 5000 + } + ], + "delivery_measurement": { + "provider": "Venue traffic sensors", + "notes": "Impressions estimated from foot traffic data. Updated weekly." + }, + "conversion_tracking": { + "action_sources": ["in_store"], + "platform_managed": true + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": true + } +} +``` + +Different screen placements have different creative requirements. Checkout screens offer 30-90 seconds of captive dwell time with a stationary shopper at close range. End-cap displays catch shoppers walking past with 2-3 seconds of glance time from further away. Pharmacy waiting areas have extended dwell time and a seated audience. Most in-store networks are silent — creative should be designed for sound-off unless the placement specifies otherwise. + +In-store products pair with the retailer's store catalog. The catalog exposes store locations with catchment areas (radius, isochrone, or GeoJSON polygons), enabling buyer agents to target specific geographies or store clusters. When combined with the brand's product catalog, in-store screens can show contextually relevant creative — the right product, in the right store, near the right shelf. + +### Beyond these examples + +Retail media portfolios often extend beyond the five product types above. Sponsored brand ads — a headline, brand logo, and 2-3 featured products — sit between sponsored product listings and display, with a custom headline from the buyer and catalog-rendered product tiles. Digital coupons and cashback offers tie directly to purchase and don't fit neatly into impression-based models — they can be modeled as products with CPA pricing and `conversion_tracking`. Sponsored placements in retailer email newsletters and app push notifications are high-performing, low-funnel products modeled the same way as on-site display with different canonical `format_options`. Shoppable video — where products are tagged within the video frame and viewers can add items to cart — combines video formats with catalog-rendered product overlays. Keyword-level search sponsorships, sampling programs, and recipe integrations each have distinct economics but follow the same pattern: a product with the right pricing model, format, and measurement declarations. + +## End-to-end workflow + +<Steps> + +### Brand with product catalog + +The buyer provides a brand reference that includes their product catalog feed. This enables SKU-level targeting and catalog-rendered creatives: + +```json +{ + "name": "Summit Foods", + "url": "https://summitfoods.example.com", + "product_catalog": { + "feed_url": "https://summitfoods.example.com/products.xml", + "feed_format": "google_merchant_center", + "categories": ["food/sauces", "food/condiments", "beverages"], + "update_frequency": "daily" + } +} +``` + +The feed contains GTINs, titles, prices, and images — everything needed to render sponsored product listings and match products across retailers. + +### Sync catalogs to the account + +Before creating media buys, sync the brand's data feeds to the retailer's account via `sync_catalogs`. This builds account state that creatives and targeting reference at serve time. See [Account state](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state) for how this fits the broader setup sequence. + +```json +{ + "account": { "account_id": "acct_summitfoods_shopgrid_001" }, + "catalogs": [ + { + "catalog_id": "product-feed", + "name": "Summit Foods Product Catalog", + "type": "product", + "url": "https://summitfoods.example.com/products.xml", + "feed_format": "google_merchant_center", + "update_frequency": "daily" + }, + { + "catalog_id": "inventory-feed", + "name": "Store-Level Inventory", + "type": "inventory", + "url": "https://feeds.summitfoods.example.com/inventory.json", + "feed_format": "custom", + "update_frequency": "hourly" + } + ] +} +``` + +The platform ingests each feed: +- **Product catalog** — validates GTINs against the retailer's own catalog, reports item-level approval status +- **Inventory feed** — refreshes stock data hourly so creatives can show "In stock nearby" + +<Note> +**Store locations are seller-provided, not buyer-synced.** In retail media, the retailer owns their store locations — a CPG brand doesn't sync the retailer's stores to the retailer. The retailer's store catalog (with catchment areas for proximity targeting) is platform-side data that the buyer can reference in targeting. Buyers who operate their own physical locations (e.g., a DTC brand with retail stores, a restaurant chain) would sync their store catalogs to other platforms via `sync_catalogs`. +</Note> + +Formats that require synced catalogs declare `catalog` asset types in their `assets` array — the buying agent checks these before submitting creatives. A sponsored product carousel might require both a `product` and `inventory` catalog. + +### Find products + +Query `get_products` with `channels: ["retail_media"]` to find commerce media products. The brand identity enables the seller to filter by catalog eligibility, and the `keywords` filter signals search terms you want to target so the seller can assess availability and recommend products where those terms are actionable: + +```json +{ + "brief": "Promote our organic ketchup line across grocery retailers. Focus on high-intent shoppers.", + "brand": { + "domain": "summitfoods.example.com" + }, + "filters": { + "channels": ["retail_media"], + "keywords": [ + { "keyword": "organic ketchup", "match_type": "exact" }, + { "keyword": "condiments" } + ] + } +} +``` + +The seller returns products where the buyer's GTINs have matches in the retailer's catalog. A multi-product retailer might return sponsored products, on-site display, and off-site extension as separate products. + +For sponsored product listings, sellers include `catalog_match` on each product to indicate which of the buyer's catalog items are eligible: + +```json +{ + "product_id": "shopgrid_sponsored_products", + "catalog_match": { + "matched_gtins": ["00013000006408", "00013000006415", "..."], + "matched_count": 3, + "submitted_count": 1200 + } +} +``` + +This tells the buyer which GTINs are eligible on this retailer and how many of their total catalog items were evaluated. Buyers use `matched_gtins` values as catalog `gtins` selectors when creating media buys — or use broader selectors like `tags` and `category` knowing the catalog coverage. + +<Tip> +Sellers can also return [proposals](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#proposals) with recommended budget allocations across product types — encoding media planning expertise that traditionally required human sales reps. +</Tip> + +### Create media buy + +A single media buy can span multiple product types and retailers. Each package targets a different product: + +```json +{ + "account": { "account_id": "acct_summitfoods_shopgrid_001" }, + "brand": { + "domain": "summitfoods.example.com" + }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-04-30T23:59:59Z", + "packages": [ + { + "product_id": "shopgrid_sponsored_products", + "pricing_option_id": "sp_cpc", + "budget": 15000, + "bid_price": 1.10, + "pacing": "even", + "optimization_goals": [{ + "kind": "event", + "event_sources": [ + { "event_source_id": "shopgrid_purchases", "event_type": "purchase", "value_field": "value" } + ], + "target": { "kind": "per_ad_spend", "value": 3.0 }, + "priority": 1 + }] + }, + { + "product_id": "shopgrid_onsite_display", + "pricing_option_id": "onsite_cpm", + "budget": 25000, + "pacing": "even" + }, + { + "product_id": "shopgrid_homepage_takeover", + "pricing_option_id": "takeover_flat", + "budget": 50000 + } + ] +} +``` + +The `account` identifies the brand's billing relationship with this retailer. The sponsored products package uses catalog selectors (`gtins`, `tags`) to specify which items to promote and `optimization_goals` with a `per_ad_spend` target to tell the retailer to optimize for 3x return on purchase value. The display and premium packages use standard creative workflows. + +### Delivery reporting + +Commerce media delivery reports include attribution metrics that traditional media lacks. The `attribution_window` makes the measurement methodology transparent for cross-platform comparison: + +```json +{ + "reporting_period": { + "start": "2026-04-01T00:00:00Z", + "end": "2026-04-14T23:59:59Z" + }, + "currency": "USD", + "attribution_window": { + "post_click": { "interval": 14, "unit": "days" }, + "post_view": { "interval": 1, "unit": "days" }, + "model": "last_touch" + }, + "media_buy_deliveries": [ + { + "media_buy_id": "mb_shopgrid_001", + "status": "active", + "totals": { + "impressions": 850000, + "spend": 10350 + }, + "by_package": [ + { + "package_id": "pkg_sp_001", + "pricing_model": "cpc", + "rate": 0.92, + "currency": "USD", + "impressions": 850000, + "spend": 10350, + "clicks": 11250, + "conversions": 2100, + "conversion_value": 28500, + "roas": 2.75, + "cost_per_acquisition": 4.93, + "by_action_source": [ + { "action_source": "website", "count": 1500, "value": 20000 }, + { "action_source": "app", "count": 350, "value": 4800 }, + { "action_source": "in_store", "count": 250, "value": 3700 } + ], + "delivery_status": "delivering" + } + ] + } + ] +} +``` + +The `by_action_source` breakdown shows where conversions happened — website, app, and physical store. This omnichannel view is unique to commerce media. + +</Steps> + +## Closed-loop attribution + +<img src="/images/walkthrough/commerce-media-05-closed-loop.png" alt="Daniel and Sam view a closed-loop attribution dashboard — impressions flow through clicks, store visits, and purchases in a circular diagram with website, app, and in-store sources" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Commerce media's defining advantage is deterministic purchase attribution. Retailers match ad exposure to transactions using loyalty card data, login state, and point-of-sale records. This is the asset that makes retail media fundamentally different from every other media channel — and it's exactly what an agentic storefront exposes to buyer agents through standard delivery reporting. + +### How products declare it + +Products signal closed-loop capability through two fields: + +**`reporting_capabilities.available_metrics`** declares which outcome metrics the product reports. Closed-loop retail media products typically report `conversions`, `conversion_value`, `roas`, `cost_per_acquisition`, `units_sold`, `new_to_brand_rate`, and incremental-lift metrics like `incremental_sales_lift` and `conversion_lift`. The methodology and attribution window flow through the `qualifier` slot on `committed_metrics` and `metric_aggregates` (`attribution_methodology: "deterministic_purchase"` for retail-media closed loop; `attribution_window: { interval: 14, unit: "days" }` for the 14-day match window). + +```json +{ + "reporting_capabilities": { + "available_metrics": [ + "conversions", "conversion_value", "roas", "cost_per_acquisition", + "units_sold", "new_to_brand_rate", "incremental_sales_lift" + ] + } +} +``` + +The legacy `outcome_measurement` field is **deprecated** but continues to work for one minor. Existing payloads: + +```json +{ + "outcome_measurement": { + "type": "attributed_sales", + "attribution": "deterministic_purchase", + "window": { "interval": 14, "unit": "days" }, + "reporting": "daily_api" + } +} +``` + +…are equivalent to declaring `conversion_value` (the standardized name for "attributed sales") in `available_metrics` plus the matching qualifier on `committed_metrics`. Migrate by populating both fields during the transition window; remove `outcome_measurement` at the next major. + +**`conversion_tracking`** declares action sources and whether the retailer manages measurement: +```json +{ + "conversion_tracking": { + "action_sources": ["website", "app", "in_store"], + "supported_targets": ["cost_per", "per_ad_spend"], + "platform_managed": true + } +} +``` + +When `platform_managed` is `true`, the retailer provides always-on measurement. No buyer-side pixel or event source configuration needed. + +<Info> +Different retailers use different attribution windows (e.g., 14-day click vs. 7-day click). The `attribution_window` in delivery responses makes this transparent so buyers can normalize ROAS comparisons across retailers. +</Info> + +### Key delivery metrics + +| Metric | Field | Description | +|---|---|---| +| Return on ad spend | `roas` | `conversion_value / spend` | +| Attributed revenue | `conversion_value` | Total purchase value attributed to ads | +| Conversions | `conversions` | Purchase events attributed to ads | +| Cost per acquisition | `cost_per_acquisition` | `spend / conversions` | +| New-to-brand rate | `new_to_brand_rate` | Fraction of conversions from first-time brand buyers | +| In-store sales | `by_action_source` | Breakdown by `website`, `app`, `in_store` | +| By event type | `by_event_type` | Breakdown by `purchase`, `add_to_cart`, etc. | + +<img src="/images/walkthrough/commerce-media-06-ecosystem.png" alt="Daniel by a retail storefront and Priya by a streaming TV shape flank Sam in the center — different sell-side verticals connecting to one buyer through the same protocol" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +## Differences from traditional media buying + +| Aspect | Traditional media | Commerce media | +|---|---|---| +| Attribution | Probabilistic, modeled | Deterministic, purchase-based | +| Targeting data | Third-party, contextual | First-party purchase/loyalty data | +| Primary KPIs | Impressions, clicks, CTR | ROAS, conversions, attributed revenue | +| Creative (sponsored) | Buyer-provided | Catalog-rendered by retailer | +| Measurement owner | Third-party (IAS, DV) | Retailer platform (`platform_managed`) | +| Conversion sources | Website only | Website + app + in-store | +| Landing page | Any destination | Often retailer site only | +| Pricing models | CPM, CPC, CPCV | CPC (sponsored), CPM (display), flat rate (premium) | + +## Best practices + +### For retailers: standing up an agentic storefront + +The default retail media playbook — build a self-service platform, hire a sales team, grow managed service revenue, eventually build a DSP — works for the largest retailers. For everyone else, it means years of engineering investment competing against platforms with orders-of-magnitude more resources. + +An agentic storefront changes the economics. Instead of building a platform that brands must learn, you expose your inventory through a standard protocol that buyer agents already speak. Your engineering investment goes into your actual differentiators — data quality, measurement accuracy, inventory breadth — not into dashboard UX. + +1. **Model product types separately** — sponsored products, on-site display, off-site, premium placements, and in-store digital should be distinct products with appropriate pricing and formats. This is how buyer agents comparison-shop across retailers. +2. **Lead with your data** — declare `outcome_measurement` with `deterministic_purchase` attribution and `conversion_tracking` with `platform_managed: true`. This is what buyer agents optimize against. Retailers with weak measurement lose to retailers with strong measurement, regardless of UI quality. +3. **Expose your physical footprint** — provide store catalogs with catchment areas so buyer agents can target by geography. In-store digital inventory is something no online-only platform can offer. Make it discoverable. +4. **Return `catalog_match`** on sponsored product listings so buyers see which GTINs/SKUs are eligible. This is the equivalent of a sales rep saying "we carry 3 of your 1,200 products" — but it happens automatically at query time. +5. **Include `attribution_window`** in delivery responses — buyers comparing across retailers need to know your lookback windows and model. +6. **Report `by_action_source`** to show omnichannel impact — website, app, and in-store conversions. The cross-channel view is unique to commerce media and drives budget allocation. +7. **Use proposals** — return recommended budget allocations across product types with `get_products` responses. This encodes your media planning expertise into the protocol, replacing the sales rep conversation with structured data that buyer agents can evaluate. +8. **Set `channels: ["retail_media"]`** on all commerce media products so buyers can filter by channel. + +### For brands + +1. **Set up accounts early** — use `list_accounts` to confirm your billing relationship with each retailer before placing buys +2. **Sync product and inventory feeds early** — product and inventory catalogs should be synced to the account before creating buys. Inventory feeds update hourly; product feeds daily. +3. **Reference retailer store catalogs in targeting** — the retailer's store locations and catchment areas are platform-side data. Use them for proximity targeting without needing to sync your own store catalog. +4. **Use `optimization_goals`** — set event goals with `cost_per` or `per_ad_spend` targets on packages to let the retailer optimize delivery against their purchase data +5. **Use catalog selectors strategically** — `gtins` for specific products, `tags` or `category` for broad promotions +6. **Budget across the funnel** — sponsored products for conversion, on-site display for awareness, off-site for reach extension +7. **Compare attribution windows** — use `attribution_window` in delivery reports to normalize ROAS across retailers with different lookback windows + +## Related documentation + +- [Account state](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state) — How catalogs, event sources, and campaigns build on the account +- [Accounts & Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) — Account setup and billing relationships +- [Media Channel Taxonomy](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy) — `retail_media` channel definition +- [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) — Product model reference +- [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs) — Product, inventory, store, and promotion feeds +- [Brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — Product catalog and brand identity +- [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models) — CPC, CPM, flat rate details +- [Optimization & Reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) — `optimization_goals` and conversion optimization +- [Delivery Reporting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) — Commerce attribution metrics +- [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) — Brief-based targeting approach diff --git a/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index.mdx new file mode 100644 index 0000000000..467fbf7f75 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index.mdx @@ -0,0 +1,776 @@ +--- +title: Conversion Tracking & Optimization Goals +description: "AdCP conversion tracking — configure pixels and event sources with sync_event_sources, send conversion events with log_event, and set optimization goals for campaign delivery." +"og:title": "AdCP — Conversion Tracking & Optimization Goals" +testable: true +--- + + +Conversion tracking in AdCP connects advertising spend to business outcomes. Two tasks handle the lifecycle: [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) configures where events come from, and [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) sends the events themselves. + +Event data feeds into delivery reporting (conversions, ROAS, cost per acquisition) and enables optimization goals on media buy packages. + +## The flow + +```mermaid +sequenceDiagram + participant B as Buyer + participant S as Seller + + rect rgb(240, 248, 255) + Note over B,S: Setup + B->>S: sync_event_sources (configure sources) + S->>B: Setup instructions (snippets, pixel URLs) + B->>B: Install snippets on site/app + end + + rect rgb(240, 255, 240) + Note over B,S: Event collection + B->>S: log_event (send conversions) + S->>S: Match users, attribute conversions + end + + rect rgb(255, 248, 240) + Note over B,S: Optimization + B->>S: create_media_buy (with optimization_goals) + S->>S: Optimize delivery toward conversions + B->>S: get_media_buy_delivery + S->>B: Conversion metrics (ROAS, CPA) + end +``` + +This shows the recommended order. In practice, media buys can be created before events are flowing — the seller begins optimizing once sufficient event history accumulates. + +## Event source + +An event source represents a channel through which conversion or marketing events are collected — a website pixel, mobile SDK, server-to-server integration, CRM import, or seller- or platform-native owned property such as a channel, profile, feed, podcast, or newsletter list. + +Configure event sources with [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources). You provide an `event_source_id`, optional `name`, `event_types`, `value_currencies`, `action_source`, `surface`, and `allowed_domains`. `value_currencies` is required when the source will feed canonical ROAS. A multi-currency source may list several currencies; each buy consumes only records matching its media-buy currency, with no conversion. The response includes additional fields for each source: + +| Field | Type | Description | +|-------|------|-------------| +| `seller_id` | string | Seller-assigned identifier in their ad platform | +| `action` | string | What happened: `created`, `updated`, `unchanged`, `deleted`, `failed` | +| `managed_by` | string | `buyer` (you configured it) or `seller` (always-on, seller-managed) | +| `value_currencies` | string[] | Currencies accepted for monetary event values and eligible for canonical ROAS | +| `action_source` | [ActionSource](#action-sources) | Flat source type for legacy and broad compatibility (website pixel, app SDK, in-store, etc.) | +| `surface` | [EventSurface](#event-surfaces) | Optional structured surface, such as an owned channel, profile, feed, podcast, newsletter list, website, app, or store | +| `setup` | object | Implementation details — snippet code, snippet type, instructions | + +### Buyer-managed vs seller-managed + +**Buyer-managed** sources are ones you configure via `sync_event_sources`. You control the event types, domains, and lifecycle. + +**Seller-managed** sources are always-on and appear in the response with `managed_by: "seller"`. These are common in commerce media where the retailer provides built-in attribution (e.g., purchase tracking on their own platform). Products with `conversion_tracking.platform_managed: true` indicate the seller provides these sources. + +To discover all sources on an account (including seller-managed), call `sync_event_sources` without an `event_sources` array: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-request.json", + "idempotency_key": "c9f3d6a7-5678-48e4-5678-9012345abcde", + "account": { "account_id": "acct_12345" } +} +``` + +## Event + +An event represents a user action — a purchase, lead submission, page view, app install, or any of the [standard event types](#event-types). + +Send events with [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event): + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/event.json", + "event_id": "evt_purchase_12345", + "event_type": "purchase", + "event_time": "2026-01-15T14:30:00Z", + "action_source": "website", + "event_source_url": "https://www.example.com/checkout/confirm", + "user_match": { + "hashed_email": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2", + "click_id": "abc123def456", + "click_id_type": "gclid" + }, + "custom_data": { + "value": 149.99, + "currency": "USD", + "order_id": "order_98765", + "num_items": 3 + } +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `event_id` | string | Yes | Unique identifier for deduplication (scoped to event_type + event_source_id). Max 256 chars. | +| `event_type` | [EventType](#event-types) | Yes | Standard event type | +| `event_time` | date-time | Yes | ISO 8601 timestamp when the event occurred | +| `user_match` | [UserMatch](#user-match) | No | User identifiers for attribution matching | +| `custom_data` | [CustomData](#custom-data) | No | Event-specific data (value, currency, items) | +| `action_source` | [ActionSource](#action-sources) | No | Where the event occurred | +| `surface` | [EventSurface](#event-surfaces) | No | Structured surface context for the event, such as an owned channel, profile, feed, podcast, newsletter list, website, app, or store | +| `event_source_url` | uri | No | URL where the event occurred (required when action_source is `website`) | +| `custom_event_name` | string | No | Name for custom events (when event_type is `custom`) | + +Events are deduplicated by `event_id` + `event_type` + `event_source_id`. Sending the same event multiple times is safe. + +## User match + +User identifiers enable the seller to attribute conversions to ad impressions. Provide the strongest identifiers available — more identifiers means higher match rates. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/user-match.json", + "hashed_email": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2", + "uids": [ + { "type": "uid2", "value": "AbC123XyZ..." } + ], + "click_id": "abc123def456", + "click_id_type": "gclid" +} +``` + +At least one identifier is required. The hierarchy from strongest to weakest: + +| Field | Type | Match quality | Description | +|-------|------|---------------|-------------| +| `uids` | UID[] | Deterministic | Universal ID values (`rampid`, `id5`, `uid2`, `euid`, `pairid`, `maid`) | +| `hashed_email` | string | Deterministic | SHA-256 hash of lowercase, trimmed email (64-char hex) | +| `hashed_phone` | string | Deterministic | SHA-256 hash of E.164 phone number (64-char hex) | +| `click_id` | string | Deterministic | Platform click identifier (fbclid, gclid, ttclid, etc.) | +| `click_id_type` | string | — | Type of click identifier | +| `client_ip` | string | Probabilistic | Client IP address (requires `client_user_agent`) | +| `client_user_agent` | string | Probabilistic | Client user agent (requires `client_ip`) | + +**Hashing**: Normalize before hashing — emails to lowercase with whitespace trimmed, phone numbers to E.164 format (e.g., `+12065551234`). Hash with SHA-256, output as 64-character lowercase hex. + +Send multiple identifier types when available. The seller uses the best available match. + +## Custom data + +Event-specific data for attribution and reporting. Sources used for canonical ROAS declare `value_currencies`; monetary records from those sources require `currency` from that list. Legacy sources without the contract remain valid for non-ROAS use. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/event-custom-data.json", + "value": 149.99, + "currency": "USD", + "order_id": "order_98765", + "content_ids": ["SKU-1234", "SKU-5678"], + "num_items": 3, + "contents": [ + { "id": "SKU-1234", "quantity": 2, "price": 49.99, "brand": "Acme" }, + { "id": "SKU-5678", "quantity": 1, "price": 50.01, "brand": "Nova" } + ] +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `value` | number | Monetary value of the event | +| `currency` | string | ISO 4217 currency code (e.g., `USD`, `EUR`, `GBP`) | +| `order_id` | string | Unique order or transaction identifier | +| `content_ids` | string[] | Product or content identifiers | +| `content_type` | string | Category of content (product, service, etc.) | +| `content_name` | string | Name of the product or content | +| `content_category` | string | Category of the product or content | +| `num_items` | integer | Number of items in the event | +| `search_string` | string | Search query (for search events) | +| `progress_percent` | number | Content progress percentage reached, primarily for `watch_milestone` events | +| `progress_seconds` | number | Content progress duration reached in seconds, primarily for time-based `watch_milestone` events | +| `contents` | Content[] | Per-item details: `id` (required), `quantity`, `price`, `brand` | + +## Event types + +Standard marketing event types, aligned with IAB ECAPI: + +| Event type | Description | +|------------|-------------| +| `page_view` | User viewed a page | +| `view_content` | User viewed specific content (product, article, etc.) | +| `select_content` | User selected or clicked on content | +| `select_item` | User selected a specific product or item from a list | +| `search` | User performed a search | +| `share` | User shared content via social or messaging | +| `add_to_cart` | User added an item to cart | +| `remove_from_cart` | User removed an item from cart | +| `viewed_cart` | User viewed their shopping cart | +| `add_to_wishlist` | User added an item to a wishlist | +| `initiate_checkout` | User started checkout process | +| `add_payment_info` | User added payment information | +| `purchase` | User completed a purchase | +| `refund` | A purchase was fully or partially refunded (adjusts ROAS) | +| `lead` | User expressed interest (form submission, signup, etc.) | +| `qualify_lead` | Lead qualified by sales or scoring criteria | +| `close_convert_lead` | Lead converted to a customer or closed deal | +| `disqualify_lead` | Lead disqualified or marked as not viable | +| `complete_registration` | User completed account registration | +| `subscribe` | User started a paid subscription or paid membership | +| `follow` | User made a free, durable opt-in to an account, channel, feed, list, podcast, or similar owned property | +| `content_view` | User meaningfully consumed a content unit, such as a watch, listen, stream, episode play, or read | +| `watch_milestone` | User reached a content progress threshold, such as 25%, 50%, 75%, 100%, or a seconds-viewed milestone | +| `start_trial` | User started a free trial | +| `app_install` | User installed an application | +| `app_launch` | User launched an application | +| `contact` | User initiated contact (call, message, etc.) | +| `schedule` | User scheduled an appointment or event | +| `donate` | User made a donation | +| `submit_application` | User submitted an application (loan, job, etc.) | +| `custom` | Custom event type (specify in `custom_event_name`) | + +Use `view_content` for a product, article, or page content view where the view is mostly context for a lower-funnel goal. Use `content_view` when meaningful consumption of the content unit is itself the event being optimized or attributed. For `watch_milestone`, put the threshold in `custom_data.progress_percent` or `custom_data.progress_seconds`; reserve `custom_data.value` for monetary event value. + +## Action sources + +Where the conversion event originated: + +| Action source | Description | +|---------------|-------------| +| `website` | Event occurred on a website | +| `app` | Event occurred in a mobile or desktop app | +| `offline` | Event occurred offline (imported data) | +| `phone_call` | Event originated from a phone call | +| `chat` | Event originated from a chat conversation | +| `email` | Event originated from an email interaction | +| `in_store` | Event occurred at a physical retail location | +| `system_generated` | Event generated by an automated system | +| `other` | Other source (specify in `ext`) | + +## Event surfaces + +`action_source` stays intentionally flat for compatibility. Use `surface` when the optimization-relevant source needs more structure, especially for creator and content engagement on owned platform properties. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/event-surface.json", + "category": "owned_property", + "property_type": "channel", + "namespace": "video_platform", + "property_id": "channel_123" +} +``` + +| Field | Type | Description | +|-------|------|-------------| +| `category` | enum | Closed generic category: `owned_property`, `website`, `app`, `offline`, `phone_call`, `chat`, `email`, `in_store`, `system_generated`, or `other` | +| `property_type` | string | Open vocabulary for the property kind, such as `channel`, `profile`, `feed`, `list`, `podcast`, `playlist`, or `newsletter` | +| `namespace` | string | Free-form platform, publisher, or system namespace, such as `video_platform`, `short_video_app`, or `audio_service`; this is not an enum | +| `property_id` | string | Optional identifier for the property within `namespace` | + +For `owned_property`, set both `property_type` and `namespace`, and include `property_id` whenever the platform exposes a stable property identifier. + +When `surface.category` matches an `action_source` value, producers should set `action_source` to the same value. For `owned_property`, keep the closest compatible flat value for older consumers, commonly `system_generated` for platform-native events or `other` when no closer value applies. Platform-native details such as a raw conversion origin can still ride in `ext`, but shared optimization meaning belongs in `event_type`, `action_source`, and `surface`. + +## Event source health + +Sellers that evaluate event source quality include a `health` object on each source in the [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) response. This is the AdCP equivalent of platform-specific quality scores like Snap's Event Quality Score (EQS) or Meta's Event Match Quality (EMQ). + +The `status` field is the AdCP-standardized score — comparable across all sellers: + +| Status | Meaning | +|--------|---------| +| `insufficient` | Setup incomplete or event quality too low — optimization cannot run | +| `minimum` | Functional but data quality limits optimization effectiveness | +| `good` | Meets quality thresholds for most optimization goals | +| `excellent` | Exceeds quality thresholds across all dimensions | + +Buyer agents should key decisions off `status`, not `detail`. The optional `detail` object contains seller-specific scoring (e.g., Snap's 0-10 EQS, Meta's 0-10 EMQ) for human dashboards or advanced diagnostics, but scales vary by seller and cannot be compared across platforms. + +| Field | Type | Description | +|-------|------|-------------| +| `status` | string | AdCP-standardized health level. Use for cross-seller decisions. | +| `detail` | object | Seller-specific `score`, `max_score`, and optional `label`. Only present when the seller has a native quality score. | +| `match_rate` | number | Fraction of events matched to ad interactions (0.0-1.0). Low rates indicate weak user_match identifiers. Only available from sellers that compute match rates (Snap, Meta). | +| `last_event_at` | date-time | Timestamp of the most recent event received. | +| `evaluated_at` | date-time | When this health assessment was computed. Use to detect stale assessments. | +| `events_received_24h` | integer | Events received in the last 24 hours. | +| `issues` | array | Actionable problems with `severity` and `message`. Sellers should limit to the top 3-5 most actionable items. Buyer agents should sort by severity rather than relying on array position. | + +Health is reported per event source, not per account. A buyer with a healthy website pixel and a broken app SDK will see different health on each. + +**When `health` is absent**, the seller does not evaluate event source quality. Buyer agents should proceed without health gating — the seller handles quality internally. Do not treat absent health as `insufficient`. + +### How sellers compute health + +Sellers with native API-accessible quality scores (Snap EQS, Meta EMQ) relay them directly in `status` and `detail`. Most sellers do not have native scores — they derive `status` from operational metrics: + +- **`insufficient`**: tag inactive, or `events_received_24h` is 0 +- **`minimum`**: tag active, low volume or high error rate +- **`good`**: firing steadily, reasonable volume, core event types covered +- **`excellent`**: high volume, low errors, enhanced matching enabled + +When sellers compute health from reporting data, the `evaluated_at` timestamp tells the buyer how fresh the assessment is. Assessments older than 24 hours may not reflect recent changes to tag configuration or event volume. The `detail` object is absent for these sellers — there is no native score to relay. + +**Schema**: [`/schemas/3.2.0-beta.4/core/event-source-health.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/event-source-health.json) + +## Measurement readiness + +Products that support event-based optimization can include a `measurement_readiness` object in [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) responses. This tells the buyer whether their event setup is sufficient for the product to optimize effectively. + +| Field | Type | Description | +|-------|------|-------------| +| `status` | string | AdCP-standardized level: `insufficient`, `minimum`, `good`, `excellent` | +| `required_event_types` | EventType[] | Event types this product needs | +| `missing_event_types` | EventType[] | Required types the buyer hasn't configured | +| `issues` | array | Actionable problems with `severity` and `message` | +| `notes` | string | Seller explanation or recommendations | + +Measurement readiness is evaluated per product in the context of the buyer's account. The same product shows different readiness for different buyers depending on their event source configuration. + +**When `measurement_readiness` is absent**, the product either does not use event-based optimization (CTV awareness, guaranteed display) or the seller does not provide readiness assessments. In both cases, the buyer agent should treat the product as viable. Do not treat absent readiness as `insufficient`. + +Unlike event source health, measurement readiness has no `evaluated_at` timestamp — it is evaluated fresh on each `get_products` call using the buyer's current event source configuration. + +### Cross-seller buyer agent pattern + +A buyer agent talking to multiple sellers writes one set of rules that works everywhere. Any status other than `insufficient` means the product can optimize — the question is how well. The standardized `status` field means no per-seller integration code: + +```javascript test=false +// Works across all sellers — no seller-specific logic +for (const seller of sellers) { + const sources = await seller.syncEventSources({ account: seller.account }); + + // Surface issues from any seller — sort by severity, don't rely on array position + for (const source of sources.event_sources) { + if (source.health?.status === "insufficient") { + surfaceIssues(source.health.issues ?? []); + } + } + + const products = await seller.getProducts({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442041", + account: seller.account, + buying_mode: "brief", + brief: campaign.brief, + }); + + for (const product of products.products) { + const mr = product.measurement_readiness; + + // Absent = no event-based optimization needed (CTV, awareness), treat as viable + if (!mr) { + viable.push(product); + continue; + } + + // For DR products, require good or better + if (campaign.goal === "conversions" && mr.status === "minimum") { + warnings.push({ product, reason: "Event setup is functional but limits optimization" }); + viable.push(product); // Still viable, but flag it + } else if (mr.status !== "insufficient") { + viable.push(product); + } else { + skipped.push({ product, issues: mr.issues }); + } + } +} +``` + +**Schema**: [`/schemas/3.2.0-beta.4/core/measurement-readiness.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/measurement-readiness.json) + +### Trust boundaries + +The `issues[].message`, `measurement_readiness.notes`, and `detail.label` fields are seller-provided free text. Buyer agents should treat these as untrusted content — do not pass them directly into LLM system prompts or use them as decision-making inputs without a trust boundary. They are safe to display to humans or include in informational context, but should not influence agent control flow. + +## Optimization goals + +Optimization goals tell the seller what to optimize delivery toward. Set them on a package in [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization). A package accepts an array of goals — each with an optional `priority` (1 = highest). Products declare `max_optimization_goals` when they limit how many goals a package can carry (most social platforms accept only 1). + +**Schema**: [`/schemas/3.2.0-beta.4/core/optimization-goal.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/optimization-goal.json) + +There are two kinds of goals, discriminated by `kind`: + +- **`kind: "metric"`** — Optimize for a seller-tracked delivery metric (clicks, views, engagements, etc.). No event source or conversion tracking setup required. The product declares which metrics it supports in `metric_optimization`. +- **`kind: "event"`** — Optimize for advertiser-tracked conversion events. Requires event sources registered via `sync_event_sources`. The product declares support in `conversion_tracking`. + +### kind: event + +Optimize for advertiser-tracked conversion events. The `event_sources` array defines which source-type pairs feed this goal. When the seller supports `multi_source_event_dedup` (declared in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)), they deduplicate by `event_id` across all entries — the same business event reported by multiple sources counts once, using `value_field` and `value_factor` from the first matching entry. When `multi_source_event_dedup` is absent or false, buyers should use a single event source per goal. + +**Cost per conversion** (single source): + +```json +{ + "kind": "event", + "event_sources": [ + { "event_source_id": "website_pixel", "event_type": "lead" } + ], + "target": { "kind": "cost_per", "value": 25.00 }, + "priority": 1 +} +``` + +**Return on ad spend** (multiple sources with refunds): + +```json +{ + "kind": "event", + "event_sources": [ + { "event_source_id": "web_pixel", "event_type": "purchase", "value_field": "order_total" }, + { "event_source_id": "app_sdk", "event_type": "purchase", "value_field": "order_total" }, + { "event_source_id": "web_pixel", "event_type": "refund", "value_field": "refund_amount", "value_factor": -1 } + ], + "target": { "kind": "per_ad_spend", "value": 4.0 }, + "attribution_window": { "post_click": { "interval": 28, "unit": "days" }, "post_view": { "interval": 1, "unit": "days" } }, + "priority": 1 +} +``` + +For `per_ad_spend` targets, each event source entry specifies a `value_field` (which field on `custom_data` carries the monetary value) and an optional `value_factor` (multiplier, defaults to 1). The seller computes `sum(value_field * value_factor) / spend` across all deduplicated events. + +**Maximize conversion value** (no specific ROAS target): + +```json +{ + "kind": "event", + "event_sources": [ + { "event_source_id": "web_pixel", "event_type": "purchase", "value_field": "value" } + ], + "target": { "kind": "maximize_value" }, + "priority": 1 +} +``` + +A `maximize_value` target steers spend toward higher-value conversions without committing to a specific return ratio. Requires `value_field` on at least one event source entry. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `kind` | `"event"` | Yes | Discriminator | +| `event_sources` | array | Yes | Source-type pairs feeding this goal. Seller deduplicates by `event_id` across entries — when the same `event_id` arrives from multiple sources with different `value_field`s, the seller uses the `value_field` and `value_factor` from the first matching entry in this array. | +| `event_sources[].event_source_id` | string | Yes | Event source (must be configured via `sync_event_sources`) | +| `event_sources[].event_type` | [EventType](#event-types) | Yes | Event type to include (e.g., `purchase`, `lead`, `refund`) | +| `event_sources[].custom_event_name` | string | When event_type is `custom` | Platform-specific custom event name | +| `event_sources[].value_field` | string | When target is `per_ad_spend` or `maximize_value` | Which field on `custom_data` carries the monetary value. The seller must use this for value extraction and aggregation — it is not passed directly to underlying platform APIs. | +| `event_sources[].value_factor` | number | No | Multiplier the seller must apply to `value_field` before aggregation (default 1). Use -1 for refunds, 0.01 for cents, 0 to zero out a source's value contribution while still counting it for dedup. | +| `target.kind` | `"cost_per"` \| `"per_ad_spend"` \| `"maximize_value"` | No | Target type. When omitted, the seller maximizes conversion count within budget (see [default behavior](#default-behavior-for-event-goals)). | +| `target.value` | number | Yes (if target set) | Cost per event in buy currency, or return ratio (e.g., 4.0 = \$4 per \$1 spent) | +| `attribution_window` | object | No | Click-through and view-through windows. When omitted, the seller uses their default. | +| `priority` | integer | No | Lower values rank first. Ties use array order; unprioritized goals follow explicitly prioritized goals. | + +For canonical `bidding.roas`, every value-bearing source must declare the media-buy currency in `value_currencies` before buy creation. Monetary `log_event` records require `custom_data.currency` from the source's declared list. A USD buy uses only USD records; EUR records from the same source remain available to EUR buys. Sellers never convert value currencies. + +### kind: metric + +Optimize for a seller-tracked delivery metric. No event source needed — the seller tracks these natively. Products declare which metrics they support in `metric_optimization.supported_metrics`. + +**Maximize clicks** (no target — seller optimizes for volume within budget): + +```json +{ + "kind": "metric", + "metric": "clicks" +} +``` + +**Cost per click**: + +```json +{ + "kind": "metric", + "metric": "clicks", + "target": { "kind": "cost_per", "value": 2.00 }, + "priority": 2 +} +``` + +**Minimum click-through rate**: + +```json +{ + "kind": "metric", + "metric": "clicks", + "target": { "kind": "threshold_rate", "value": 0.001 }, + "priority": 2 +} +``` + +**Minimum attention from a specific vendor** (the `attention_seconds` / `attention_score` enum values on `kind: "metric"` are deprecated — vendor-attested metrics use `kind: "vendor_metric"` instead, which binds the goal to a specific measurement vendor): + +```json +{ + "kind": "vendor_metric", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "target": { "kind": "threshold_rate", "value": 70 }, + "priority": 3 +} +``` + +**Maximize engagements** (social reactions, comments, shares, story opens, overlay taps): + +```json +{ + "kind": "metric", + "metric": "engagements" +} +``` + +**Completed views with duration threshold** (6-second views on TikTok): + +```json +{ + "kind": "metric", + "metric": "completed_views", + "view_duration_seconds": 6, + "target": { "kind": "cost_per", "value": 0.02 }, + "priority": 1 +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `kind` | `"metric"` | Yes | Discriminator | +| `metric` | string | Yes | Seller-native metric (see metrics table below) | +| `view_duration_seconds` | number | No | Minimum video view duration (in seconds) that qualifies as a `completed_views` event. Only applicable when metric is `completed_views`. When omitted, the seller uses their platform default. Must be a value listed in the product's `metric_optimization.supported_view_durations` — sellers reject unsupported values. | +| `target.kind` | `"cost_per"` \| `"threshold_rate"` | No | Target type. When omitted, the seller maximizes metric volume within budget. | +| `target.value` | number | Yes (if target set) | Cost per metric unit in buy currency, or minimum per-impression value | +| `priority` | integer | No | 1 = highest priority. When omitted, sellers use array position. | + +**Metrics**: + +| Metric | Unit | `threshold_rate` example | Description | +|---|---|---|---| +| `clicks` | count/impression | 0.001 (0.1% CTR) | Link clicks, swipe-throughs, CTA taps that navigate away | +| `views` | count/impression | 0.70 (70% viewability) | Viewable impressions | +| `completed_views` | count/impression | 0.85 (85% VCR) | Video or audio completions. Use `view_duration_seconds` to control the qualifying threshold (e.g., 2s, 6s, 15s). | +| `viewed_seconds` | seconds/impression | 3.0 (3s in view) | Time in view per impression. Reported via `viewability.viewed_seconds`; governed by the viewability `standard` (MRC threshold). | +| `attention_seconds` | seconds/impression | — | **Deprecated** — has no industry-graduated definition. Use `kind: "vendor_metric"` with `vendor` + `metric_id: "attention_seconds"` instead. | +| `attention_score` | score/impression | — | **Deprecated** — has no industry-graduated definition. Use `kind: "vendor_metric"` with `vendor` + `metric_id: "attention_score"` instead. | +| `engagements` | count/impression | — | Direct interaction beyond viewing — social reactions/comments/shares, story/unit opens, interactive overlay taps on CTV, companion banner interactions on audio | +| `follows` | count/impression | — | New followers, page likes, artist/podcast/channel follows, or free channel/feed subscribes | +| `saves` | count/impression | — | Saves, bookmarks, playlist adds, pins — signals of intent to return | +| `profile_visits` | count/impression | — | Visits to the brand's in-platform page — profile, artist page, channel, or storefront. Does not include external website clicks (use `clicks` for that). | +| `reach` | unique entities/window | — | Unique audience reach within a frequency window. Requires `reach_unit` (e.g., `households`, `individuals`). Use `target_frequency` to set the frequency band for optimization. | + +### kind: vendor_metric + +For vendor-attested measurement where the metric has no industry-graduated definition — attention (DoubleVerify, IAS, Adelaide, TVision, Lumen), panel-based brand lift (Kantar, Upwave, Cint), emissions (Scope3, Good-Loop — see polarity caveat below), retail-media partner metrics — the goal binds a specific vendor + `metric_id` end-to-end. The seller's bidding stack steers toward that vendor's measurement; delivery reports the value via `vendor_metric_values[]` with the same `(vendor, metric_id)` key. + +**Direction polarity** (upward-pushing only this minor). `cost_per` and `threshold_rate` are upward-pushing targets — the seller steers delivery toward higher metric values, or toward meeting a minimum threshold. Metrics where the buyer wants to *minimize* (emissions, IVT, latency) currently rely on seller-side polarity interpretation per the vendor's metric definition. First-class minimize semantics (a `direction: "minimize"` field on the goal or a `target.kind: "ceiling_rate"`) are under WG discussion — see [#4644](https://github.com/adcontextprotocol/adcp/issues/4644). + +```json +{ + "kind": "vendor_metric", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "target": { + "kind": "threshold_rate", + "value": 70 + }, + "priority": 1 +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `kind` | `"vendor_metric"` | Yes | Discriminator | +| `vendor` | BrandRef | Yes | Vendor that defines and computes this metric. Anchored on the vendor's `brand.json` `agents[type='measurement']`. Same shape used across `vendor_metric_values`, `reporting_capabilities.vendor_metrics`, `committed_metrics` (vendor-scope entries), and `performance_standards.vendor`. | +| `metric_id` | string | Yes | Identifier in the vendor's vocabulary (e.g., `attention_score`, `awareness_lift`, `gco2e_per_impression`). MUST be in the vendor's published `measurement.metrics[]` catalog. | +| `target.kind` | `"cost_per"` \| `"threshold_rate"` | No | Target type. When omitted, the seller maximizes metric value within budget. | +| `target.value` | number | Yes (if target set) | Cost per metric unit (currency) or minimum per-impression value. Units are vendor-defined. | +| `priority` | integer | No | 1 = highest priority. When omitted, sellers use array position. | + +**Three preconditions for goal acceptance.** Sellers MUST reject `vendor_metric` goals that fail the capability or reporting-coherence preconditions; sellers SHOULD verify the discovery precondition: + +1. **Discovery** (SHOULD this minor; MUST at next minor) — `metric_id` is in the vendor's published `measurement.metrics[]` catalog (queried from the vendor's `brand.json` measurement agent). Softened to SHOULD while measurement-vendor adoption of AdCP-conformant capability publication catches up; tightens to MUST once two-plus vendors ship conformant agents. +2. **Capability** — the `(vendor, metric_id)` pair is in the product's `vendor_metric_optimization.supported_metrics[]`, and the goal's `target.kind` is in the matching entry's `supported_targets`. +3. **Reporting coherence** — the package's `committed_metrics[]` includes a matching `{ scope: "vendor", vendor, metric_id }` entry. **Optimization without committed reporting is unverifiable** — the buyer can't grade performance against a goal whose value the seller isn't contractually obligated to populate. This precondition is what makes the goal meaningful; the seller MUST reject (with `TERMS_REJECTED`) any goal whose metric isn't also committed for reporting on the same package. + +**Distinct from `metric` kind.** The `metric` kind is for seller-native measurement (clicks, views, completed_views, reach, engagements, etc.) where no vendor binding is needed — the seller measures the metric natively. The `vendor_metric` kind is for vendor-attested measurement where the same metric name means different things across vendors and must be reconciled to a specific source. The deprecated `attention_seconds` / `attention_score` values on the `metric` kind enum predate this split and route through `vendor_metric` going forward. + +**Full lifecycle reference.** See [Metric lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#metric-lifecycle) for the complete capability → commitment → optimization → delivery picture across both standard and vendor metric flows. + +### Target kinds + +All target kinds across the three goal kinds: + +| `target.kind` | Metric goals | Vendor metric goals | Event goals | Description | +|---|---|---|---|---| +| `cost_per` | Cost per click/view/etc. | Cost per vendor metric unit | Cost per conversion event | `spend / count` | +| `threshold_rate` | Minimum per-impression value | Minimum per-impression vendor metric value | — | `at least X per impression` | +| `per_ad_spend` | — | — | Target return on ad spend | `sum(value_field * value_factor) / spend` | +| `maximize_value` | — | — | Maximize total conversion value | Steers spend toward higher-value conversions. Requires `value_field`. | + +### Choosing a strategy + +| Goal | When to use | What you set | +|---|---|---| +| Max conversions | As many conversions as possible within budget | `kind: "event"` + event sources, no target. `value_field` may be present for reporting but does not change the objective. | +| Target cost per conversion | Specific cost per event | `kind: "event"` + `target: { kind: "cost_per", value: 25.0 }` | +| Target return on ad spend | Specific return ratio on event values | `kind: "event"` + `value_field` on sources + `target: { kind: "per_ad_spend", value: 4.0 }` | +| Maximize conversion value | Steer toward higher-value conversions without a ROAS target | `kind: "event"` + `value_field` on sources + `target: { kind: "maximize_value" }` | +| Max clicks | Maximize clicks within budget | `kind: "metric"`, `metric: "clicks"`, no target | +| Target cost per click | Specific cost per click | `kind: "metric"`, `metric: "clicks"` + `target: { kind: "cost_per", value: 2.0 }` | +| Target CTR | Minimum click-through rate | `kind: "metric"`, `metric: "clicks"` + `target: { kind: "threshold_rate", value: 0.001 }` | +| Target viewability | Minimum viewability rate | `kind: "metric"`, `metric: "views"` + `target: { kind: "threshold_rate", value: 0.70 }` | +| Target attention (vendor-bound) | Minimum attention from a specific vendor | `kind: "vendor_metric"`, `vendor: { domain: "adelaidemetrics.com" }`, `metric_id: "attention_score"` + `target: { kind: "threshold_rate", value: 70 }` | +| Target brand lift (vendor-bound) | Maximize awareness lift from a specific panel provider | `kind: "vendor_metric"`, `vendor: { domain: "kantar.com" }`, `metric_id: "awareness_lift"`, no target (maximize) | +| Target VCR | Minimum video completion rate | `kind: "metric"`, `metric: "completed_views"` + `target: { kind: "threshold_rate", value: 0.85 }` | +| Completed views with duration | Video views with specific duration threshold | `kind: "metric"`, `metric: "completed_views"` + `view_duration_seconds: 6` | +| Max engagements | Maximize social interactions within budget | `kind: "metric"`, `metric: "engagements"`, no target | +| Max follows | Maximize new followers, page likes, or free channel/feed subscribes | `kind: "metric"`, `metric: "follows"`, no target | +| Max saves | Maximize saves/bookmarks/playlist adds | `kind: "metric"`, `metric: "saves"`, no target | +| Max profile visits | Drive traffic to brand page/profile | `kind: "metric"`, `metric: "profile_visits"`, no target | +| Max unique reach | Maximize unique audience within budget | `kind: "metric"`, `metric: "reach"` + `reach_unit: "households"`, no target | +| Reach with frequency | Reach at 1-3x/week frequency band | `kind: "metric"`, `metric: "reach"` + `reach_unit` + `target_frequency: { min: 1, max: 3, window: "7d" }` | + +### Multiple goals and priority + +A package can have multiple goals. Priority controls which the seller treats as primary. A common pattern is to use metric goals as proxy signals when event data is sparse: + +```json +"optimization_goals": [ + { + "kind": "metric", + "metric": "clicks", + "target": { "kind": "cost_per", "value": 2.00 }, + "priority": 2 + }, + { + "kind": "event", + "event_sources": [ + { "event_source_id": "mobile_sdk", "event_type": "app_install" }, + { "event_source_id": "mmp_adjust", "event_type": "app_install" } + ], + "target": { "kind": "cost_per", "value": 10.00 }, + "priority": 1 + } +] +``` + +The seller focuses on the `priority: 1` goal (installs at \$10 cost per, deduplicated across SDK and MMP) and uses clicks as a proxy signal until install data accumulates. + +### Default behavior for event goals + +When `target` is omitted from an event goal, the seller maximizes conversion count within budget. This is true regardless of whether `value_field` is present on event sources — `value_field` without an explicit value-oriented target enables reporting (conversion_value, ROAS in delivery reports) but does not change the optimization objective. + +| `target` | `value_field` | Seller behavior | +|-----------|---------------|-----------------| +| omitted | omitted | Maximize event count within budget | +| omitted | present | Maximize event count within budget. Value available for reporting only. | +| `cost_per` | either | Target cost per conversion. Value used for reporting if present. | +| `per_ad_spend` | present | Target return on ad spend. | +| `per_ad_spend` | **missing** | **Validation error** — seller must reject. No value dimension to compute return. | +| `maximize_value` | present | Steer toward higher-value conversions. | +| `maximize_value` | **missing** | **Validation error** — seller must reject. No value dimension to maximize. | + +### Blending vs. sequencing goals + +`value_factor` and `priority` both express "event type A matters more than event type B" but mean different things to the seller's optimization: + +- **`value_factor`** blends multiple event sources into a **single objective function**. Set per event source entry *within* a single goal's `event_sources` array. The seller sees one goal with a composite value signal. Use this when purchases and page views should be optimized together with explicit relative weights. +- **`priority`** sequences **independent goals**. Set on separate goal objects in the `optimization_goals` array. The seller optimizes for goal 1 first; goal 2 is a secondary objective, not blended in. Use this when goals are conceptually separate (e.g., hit a CPA target first, then maximize reach with remaining budget). + +Use `value_factor` to blend. Use `priority` to sequence. Mixing them up produces subtly wrong optimization — a blended goal that should be sequenced, or sequenced goals that should be blended — and the effect is hard to detect in delivery reports. + +### Event type polarity + +Most event types are positive signals — a purchase, lead, or install is something the buyer wants more of. Some event types are observation signals that should not be standalone optimization targets: + +| Polarity | Event types | Notes | +|----------|-------------|-------| +| Positive | `purchase`, `lead`, `qualify_lead`, `close_convert_lead`, `app_install`, `complete_registration`, `subscribe`, `follow`, `content_view`, `watch_milestone`, `start_trial`, `contact`, `schedule`, `donate`, `submit_application` | Safe as standalone optimization targets when the event has enough volume and is the buyer's desired outcome | +| Upper funnel | `page_view`, `view_content`, `select_content`, `select_item`, `search`, `add_to_cart`, `viewed_cart`, `add_to_wishlist`, `initiate_checkout`, `add_payment_info`, `share`, `app_launch` | Valid optimization targets but typically used as proxy signals (`priority: 2`) when lower-funnel data is sparse | +| Observation | `refund`, `remove_from_cart`, `disqualify_lead` | Include in `event_sources` for attribution accuracy and ROAS adjustment, not as standalone optimization targets | + +`custom` events are not classified here — their polarity depends on the buyer's definition. Buyer agents should apply the same reasoning when choosing whether a custom event is safe as a standalone target. + +Observation events are useful inside a composite goal — `refund` with `value_factor: -1` adjusts ROAS downward, which is exactly what you want. The risk is a misconfigured buyer agent that creates a standalone goal optimizing toward `refund` or `remove_from_cart` count. This is a buyer-agent implementation concern, not a protocol constraint — the protocol intentionally does not restrict which event types can be optimization targets. + +### Volume normalization with `value_factor` + +When combining event sources at different volume scales (e.g., `page_view` in the tens of thousands vs. `purchase` in the hundreds), the aggregate value in `sum(value_field * value_factor) / spend` will be dominated by the highest-volume type without explicit weighting. Buyers should use `value_factor` to express relative weights across sources: + +```json +{ + "kind": "event", + "event_sources": [ + { "event_source_id": "web_pixel", "event_type": "page_view", "value_field": "value", "value_factor": 0.01 }, + { "event_source_id": "web_pixel", "event_type": "purchase", "value_field": "value", "value_factor": 1 } + ], + "target": { "kind": "per_ad_spend", "value": 4.0 } +} +``` + +Here `page_view` contributes 1% of its face value, preventing it from dominating the ROAS calculation despite being ~100x more frequent than `purchase`. + +Automatic normalization is intentionally out of scope — it requires event history the seller may not have, and would make the ROAS formula opaque. Buyer agents that want to normalize across event types should do so on their end before setting `value_factor`. + +### Pricing model vs. optimization goal + +The pricing model (CPC, CPM, CPA, etc.) determines what the buyer pays. The optimization goal determines how the seller allocates impressions. These are independent — a package can use CPM pricing while optimizing toward a CPA target, or use CPA pricing while optimizing for ROAS. See [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models) for details on billing. + +### Reach and frequency + +Reach-based optimization uses `metric: "reach"` with two additional fields: + +- **`reach_unit`** (required): The unit of measurement — must be a value declared in the product's `metric_optimization.supported_reach_units` (e.g., `households`, `individuals`). +- **`target_frequency`** (optional): Frequency band that guides optimization. The seller treats impressions toward unreached entities as higher-value and impressions toward already-saturated entities as lower-value. Includes `min`, `max`, and `window` (e.g., `"7d"`, `"campaign"`). When omitted, the seller maximizes unique reach. + +```json +{ + "kind": "metric", + "metric": "reach", + "reach_unit": "households", + "target_frequency": { "min": 1, "max": 3, "window": "7d" }, + "priority": 1 +} +``` + +For GRP-based buys, use [CPP pricing](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#cpp-cost-per-point). For hard frequency limits independent of optimization, use `frequency_cap` on the package. Reach and frequency metrics are available in delivery reporting via [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery). + +### Prerequisites + +**For metric goals** (`kind: "metric"`): + +1. **Check product support** — The product must declare `metric_optimization` with the desired metric in `supported_metrics`. No event source or conversion tracking setup is required. +2. **Check target support** — If setting a target, verify the target kind is listed in `metric_optimization.supported_targets`. +3. **Check view durations** — If using `completed_views` with `view_duration_seconds`, verify the value is listed in `metric_optimization.supported_view_durations`. + +**For event goals** (`kind: "event"`): + +1. **Configure event sources** — Call [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) to set up the event sources referenced in `event_sources`. +2. **Check product support** — The product must declare `conversion_tracking` with the desired target kind in `supported_targets`. +3. **Check dedup support** — If using multiple event sources per goal, verify the seller supports `multi_source_event_dedup` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). When unsupported, use a single event source per goal. +4. **Send events** — Use [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) to send conversion data. The seller needs event history to optimize effectively. + +### Attribution windows + +Attribution windows control how far back the seller looks to credit an ad impression for a conversion. Common options: + +| Window | Meaning | +|--------|---------| +| `post_click: {interval: 7, unit: "days"}` | Conversions within 7 days of a click | +| `post_click: {interval: 28, unit: "days"}` | Conversions within 28 days of a click | +| `post_view: {interval: 1, unit: "days"}` | Conversions within 1 day of viewing an ad | +| `post_view: {interval: 7, unit: "days"}` | Conversions within 7 days of viewing an ad | + +Values must match an option in the seller's `conversion_tracking.attribution_windows` capability. When omitted, the seller applies their default window. + +## Connection to delivery reporting + +Once event sources are configured and events are flowing, conversion metrics appear in [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) responses: + +- **`conversions`** — Post-click or post-view conversions attributed to the campaign +- **`conversion_value`** — Monetary value of attributed conversions +- **`roas`** — Return on ad spend (conversion_value / spend) +- **`cost_per_acquisition`** — Cost per conversion (spend / conversions) + +These metrics are reported per-package when the package has `optimization_goals` set. Sellers that support `by_action_source` breakdowns can show conversions split by source (website, app, in_store, etc.). + +## Catalog-item attribution + +For catalog-driven packages, conversion events carry `content_ids` that identify which catalog items were involved. The catalog's `content_id_type` declares what identifier type to expect (`sku`, `gtin`, `job_id`, etc.). + +Attribution is broad by design: a user might click on one item (job A) but convert on another (apply to job B). The event fires with the actual `content_id` of the conversion, not the clicked item. Per-item click-to-conversion path analysis is a platform optimization concern, not a protocol concern. + +The `by_catalog_item` breakdown in [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) shows per-item metrics (impressions, spend, clicks, conversions). + +## Related documentation + +- [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) — Configure event sources +- [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) — Send conversion events +- [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization) — Set optimization goals on packages +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) — Monitor conversion metrics +- [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#cpa-cost-per-acquisition) — CPA billing (pay per conversion) diff --git a/dist/docs/3.2.0-beta.4/media-buy/creatives/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/creatives/index.mdx new file mode 100644 index 0000000000..3ef1acbe97 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/creatives/index.mdx @@ -0,0 +1,143 @@ +--- +title: Creative Lifecycle +description: "AdCP creative lifecycle — discover supported formats, sync creative assets to sellers, manage libraries, and track approval status across campaigns." +"og:title": "AdCP — Creative Lifecycle" +--- + + +Creative management is central to successful media buying campaigns. AdCP manages the complete creative lifecycle from initial format discovery through ongoing optimization, providing comprehensive tools for managing creative assets throughout their entire lifecycle. + +## Overview + +AdCP's creative management system handles: + +- **Format specifications** for all supported creative types +- **Asset lifecycle management** from creation to optimization +- **Cross-platform synchronization** of creative libraries +- **Standard format support** for consistent delivery + +## Key Creative Tasks + +### Creative Synchronization +Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) to upload and manage creative assets in the creative library hosted by your seller or creative platform. This ensures your creatives are available for assignment across platforms and campaigns. + +For sellers that advertise `inline_creative_management: true` without `creative.has_creative_library: true`, creatives are supplied as package-scoped `packages[].creatives` on `create_media_buy` or `update_media_buy` instead of through a reusable library. + +### Creative Library Management +Use [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) to view and manage your creative asset library, including status tracking and performance metadata. + +## The Three Main Phases + +AdCP manages creatives through three main phases: + +### Phase 1: Format Discovery +Before producing assets, determine both the inventory contract and the creative operation that can satisfy it. AdCP 3.2 uses three explicit sources: + +- Publisher acceptance: `adagents.json.formats[]` +- Seller deliverability: each `get_products` result's closed `format_options[]` set +- Creative-agent operations: `get_adcp_capabilities.creative.supported_formats[]` + +`list_creative_formats` and recursive `creative_agents[]` discovery are deprecated. To find a producer for a publisher format, query the AgenticAdvertising.org registry by `{publisher_domain, format_option_id}` or by a compatible canonical `format_kind`, then confirm the selected agent directly with `get_adcp_capabilities`. + +#### Inventory-first + +"What products match my campaign, and what creative contracts do they accept?" + +```javascript +const products = await get_products({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442049", + buying_mode: "brief", + brand: { domain: "acmeoutdoor.example" }, + brief: "Acme Outdoor product launch campaign" +}); + +const acceptedOptions = products.products.flatMap(product => product.format_options); +// Each option is already a complete canonical declaration: format_kind, +// params, slots, and optionally publisher_domain + format_option_id. +``` + +#### Creative-first + +"Which creative agents can build this exact publisher contract?" + +```javascript +const { agents } = await fetch( + "/api/registry/agents?publisher_domain=shorts.streamhaus.example" + + "&format_option_id=vertical_video&creative_operation=build" +).then(response => response.json()); + +const creativeAgent = connectAdcpAgent(agents[0].url); +const capabilities = await creativeAgent.get_adcp_capabilities({ protocols: ["creative"] }); +const capability = capabilities.creative.supported_formats.find(entry => + entry.format.publisher_domain === "shorts.streamhaus.example" && + entry.format.format_option_id === "vertical_video" && + entry.operations.includes("build") +); + +const result = await creativeAgent.build_creative({ + target_capability_id: capability.capability_id, + message: "Produce a concise vertical launch video", + brand: { domain: "acmeoutdoor.example" } +}); +``` + +### Phase 2: Creative Production +Once you understand format requirements, create the actual creative assets according to the specifications discovered in Phase 1. + +### Phase 3: Creative Library Management + +AdCP uses creative libraries hosted by creative-capable agents, where assets are uploaded once and assigned to multiple campaigns. This approach enables: + +- Upload creatives to account-level library +- Assign creatives to specific campaigns/packages +- Reuse creatives across multiple media buys +- Track performance across all assignments + +Asset management is handled through [brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json), which provides brand-level assets with tags for discovery. + +## Platform Considerations + +Different platforms have varying creative requirements: + +### Google Ad Manager +- Supports standard IAB formats +- Requires policy compliance review +- Creative approval typically within 24 hours + +### Kevel +- Supports custom template-based creatives +- Real-time creative decisioning +- Flexible format support + +### Triton Digital +- Audio-specific platform +- Supports standard audio formats +- Station-level creative targeting + +## Response Times + +Creative operations have varying response times: +- **Format listings**: ~1 second (database lookup) +- **Creative sync**: Minutes to days (asset processing and approval) +- **Library queries**: ~1 second (database lookup) + +## Best Practices + +1. **Format Planning**: Review supported formats before creative production +2. **Early Upload**: Submit creatives well before campaign launch +3. **Adaptation Acceptance**: Consider publisher suggestions for better performance +4. **Asset Organization**: Use clear naming conventions for creative IDs +5. **Performance Monitoring**: Track creative effectiveness and iterate +6. **Quality Control**: Follow format specifications exactly +7. **File Optimization**: Optimize file sizes for fast loading +8. **Testing**: Test assets across different devices and platforms + +## Related Documentation + +- **[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives)** - Bulk creative management with upsert semantics +- **[`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives)** - Advanced creative library querying and filtering +- **[Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats)** - Publisher, product, and creative-agent format authority +- **[Brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json)** - Brand identity and asset management +- **[Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats)** - Understanding format specifications and discovery +- **[Creative Channel Guides](/dist/docs/3.2.0-beta.4/creative/channels/video)** - Format examples across video, display, audio, DOOH, and carousels +- **[Asset Types](/dist/docs/3.2.0-beta.4/creative/asset-types)** - Understanding asset roles and specifications diff --git a/dist/docs/3.2.0-beta.4/media-buy/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/index.mdx new file mode 100644 index 0000000000..3e565fb56e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/index.mdx @@ -0,0 +1,310 @@ +--- +title: Media buy protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/media-buy-01-sams-desk.png +description: "AdCP 3.2 media buy walkthrough — follow a seller-planned campaign from brief through proposal acceptance, creative supply, control, and delivery." +"og:title": "AdCP — Media buy protocol" +--- + +<img src="/images/walkthrough/media-buy-01-sams-desk.png" alt="Sam Adeyemi, a media buyer with close-cropped hair and rolled sleeves, sits at a desk surrounded by four incompatible platform dashboards" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Sam Adeyemi is a senior media buyer at Pinnacle Agency. His client just +greenlit a USD 50,000 Q2 campaign for Acme Outdoor—premium video and display +across sports and outdoor lifestyle publishers. Three sellers to evaluate. +Creatives to match. A governance review before anything goes live. + +Last time he ran a campaign this size, it took two weeks, four dashboards, and +a spreadsheet to compare plans that were never in the same format. This +walkthrough follows the same campaign through the AdCP 3.2 proposal lifecycle. + +## First choose the buying path + +Sam's agent reads `get_adcp_capabilities.media_buy.lifecycle_tools` before +planning. AdCP 3.2 exposes two distinct commercial paths: + +| Path | Use it when | Lifecycle | +|---|---|---| +| Published offer | The buyer can select and price a seller's published products directly | `list_products` → `buy_products` | +| Seller-planned proposal | The seller should curate, price, or negotiate a plan from the brief | `request_proposals` → `refine_proposals` → finalize → `accept_proposal` | + +Wholesale mirrors use the published-offer path: `list_products` bootstraps and +repairs the feed, while account-level product webhooks keep it current. They are +not proposal conversations. See [Product discovery and planning](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/) +for both paths. + +StreamHaus advertises the proposal lifecycle, so Sam asks its sales agent—built +by Priya Nair's ad products team—to plan the campaign. + +## Step 1: Request proposals + +<img src="/images/walkthrough/media-buy-02-brief-radiates.png" alt="Sam's campaign brief radiates to three seller agents, each evaluating the same structured requirements" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam keeps strategy and goals in the brief. Exact commercial filters and +delivery constraints use structured criteria: + +```javascript +const proposals = await Promise.all( + sellers.map((seller) => + seller.requestProposals({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-proposals-001', + account: { account_id: 'account_123' }, + brand: { domain: 'acme-outdoor.example' }, + brief: + 'Premium video and display on trusted sports and outdoor lifestyle properties for the Acme Outdoor Q2 launch. Prioritize reach within a USD 50,000 ceiling.', + criteria: { + offer_filters: { + channels: ['olv', 'display'], + pricing_currencies: ['USD'], + }, + targeting_overlay: { + geo_countries: ['US', 'CA'], + demographics: { + age: { min: 25, max: 54, include_unknown: false }, + }, + }, + }, + }) + ) +); +``` + +One brief. Three sellers. The same structured constraints, proposal shape, and +task lifecycle everywhere. + +<Accordion title="Agency language → AdCP 3.2 terms"> + +| What Sam says | What the protocol calls it | +|---|---| +| Campaign brief | `brief` on `request_proposals` | +| Exact product constraint | `criteria.offer_filters` | +| Exact delivery targeting | `criteria.targeting_overlay` | +| Targeting dimension chosen later | `criteria.required_overlay_support` | +| Seller-authored media plan | Immutable proposal snapshot | +| Inventory reservation | Committed proposal with `expires_at` | +| IO / insertion order | `accept_proposal`, optionally with `io_acceptance` | +| Operational campaign change | `control_media_buy` inside accepted terms | +| Commercial amendment | Revise the accepted proposal, finalize, then accept | +| Campaign report | `get_media_buy_delivery` | + +</Accordion> + +## Step 2: Compare and refine + +<img src="/images/walkthrough/media-buy-03-proposals.png" alt="Three seller agents present video, display, and audio plans while Sam compares them in one view" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Draft proposals return priced purchases, flight dates, forecasts, targeting +resolution, and canonical creative format options. Sam can compare them without +normalizing seller-specific spreadsheets. + +| Seller | Plan | CPM | Forecast | Format | +|---|---|---|---|---| +| StreamHaus | Premium sports video | $28 | 890K impressions | SSAI 30s video | +| OutdoorNet | Adventure display | $12 | 2.1M impressions | 300x250, 728x90 | +| PodTrail | Outdoor podcast | $22 | 340K impressions | Audio 30s + companion | + +Sam wants guaranteed delivery and a lower CPM ceiling. He creates a successor +draft with typed constraints: + +```javascript +const refined = await streamHaus.refineProposals({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-refine-001', + refinements: [ + { + proposal_id: 'proposal_streamhaus_001', + action: 'revise', + constraints: { + total_budget: { max: 50000, currency: 'USD' }, + cpm: { max: 25, currency: 'USD' }, + }, + ask: 'Keep guaranteed delivery and prioritize completed video views.', + }, + ], +}); +``` + +Typed constraints are mechanically testable. Subjective commercial guidance +stays in `ask`. Each transition creates a new `proposal_id`; the source +snapshot never changes. Sam branches on each result's `outcome` and verifies +any `partial` result before continuing. + +## Step 3: Check creative requirements + +<img src="/images/walkthrough/media-buy-04-creatives.png" alt="Canonical video, display, and audio format requirements align with Sam's creative assets" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Every proposed product declares canonical `format_options[]`. Sam's platform +can therefore validate or produce assets before accepting commercial terms: + +- StreamHaus needs SSAI-compatible 30-second video. +- OutdoorNet needs 300x250 and 728x90 images. +- PodTrail needs 30-second audio plus a companion image. + +Sam's creative team already has the video and display assets. The platform +flags the missing audio cut early, while the proposal is still negotiable. +Creative bodies do not belong in `buy_products` or `accept_proposal`; they are +supplied through the seller's advertised creative workflow after commitment. + +## Step 4: Finalize and accept + +<img src="/images/walkthrough/media-buy-05-launch.png" alt="Sam reviews a committed campaign plan before accepting its expiring inventory hold" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Once the terms are right, Sam finalizes the selected draft. Finalization +creates a committed successor and an inventory hold: + +```javascript +const finalized = await streamHaus.refineProposals({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-finalize-001', + refinements: [ + { + proposal_id: 'proposal_streamhaus_002', + action: 'finalize', + }, + ], +}); +``` + +Sam verifies the committed proposal's `terms_digest` and `expires_at`, then +accepts that exact snapshot: + +```javascript +const buy = await streamHaus.acceptProposal({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-accept-001', + account: { account_id: 'account_123' }, + proposal_id: 'proposal_streamhaus_003', + proposal_terms_digest: 'sha256:Fy6Bo7wUa_FmXGJssc37kGyHNjzBiBZLB9rtVNz8I-E', +}); +``` + +The ID and digest bind acceptance to the reviewed terms. If the task enters +`submitted`, `working`, or `input-required`, Sam follows the standard task +lifecycle until the completion artifact returns the `media_buy_id`. + +## Step 5: Governance and creative supply + +<img src="/images/walkthrough/media-buy-06-governance.png" alt="Jordan Ochoa's governance agent checks Sam's campaign budget, publisher, targeting, and creative provenance" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Pinnacle registers the campaign plan with `sync_plans` and checks the proposed +acceptance against Jordan Ochoa's governance policy. Budget, approved sellers, +targeting rules, and creative provenance are evaluated before money moves. +Seller-side governance can independently validate the committed action against +the same plan context. + +After acceptance, Sam supplies the assets through `sync_creatives` and assigns +them to the returned packages. The buy remains `pending_creatives` until every +required format has coverage, then moves to `pending_start` or `active`. + +<Accordion title="A library-backed creative sync"> + +```javascript +await streamHaus.syncCreatives({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-creatives-001', + account: { account_id: 'account_123' }, + creatives: [ + { + creative_id: 'video_30s_trail_pro', + name: 'Trail Pro 3000 — 30s CTV spot', + format_kind: 'video_hosted', + assets: { + video_main: { + asset_type: 'video', + url: 'https://cdn.pinnacle-agency.example/trail-pro-30s.mp4', + width: 1920, + height: 1080, + duration_ms: 30000, + container_format: 'mp4', + codec: 'h264', + }, + }, + }, + ], + assignment_operations: [ + { + operation: 'assign', + creative_id: 'video_30s_trail_pro', + package_id: buy.packages[0].package_id, + }, + ], +}); +``` + +</Accordion> + +## Step 6: Match at serve time + +When a user loads a StreamHaus surface, its Trusted Match router can evaluate +which packages should activate. Context Match asks whether the content fits +the package; Identity Match asks whether the user is eligible. The publisher +joins the two responses locally, so Sam's buyer agent does not receive identity +and page context together. + +See [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match) for the privacy architecture +and surface-specific flows. + +## Step 7: Monitor and control delivery + +<img src="/images/walkthrough/media-buy-07-delivery.png" alt="Sam reviews unified delivery charts from all three sellers in a single view" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam reads operational state and the current revision from `get_media_buys`, and +uses billing-grade `get_media_buy_delivery` for reporting. If he needs to pause +a package or adjust a budget inside the accepted commercial envelope, he uses +`control_media_buy` with the latest revision: + +```javascript +const controlled = await streamHaus.controlMediaBuy({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-control-001', + account: { account_id: 'account_123' }, + media_buy_id: buy.media_buy_id, + revision: current.revision, + packages: [ + { + package_id: current.packages[0].package_id, + paused: true, + }, + ], +}); +``` + +If a requested change falls outside accepted terms, the seller returns +`REQUOTE_REQUIRED`. Sam starts an amendment from `accepted_proposal_id`, then +repeats revise → finalize → accept. Operational state and commercial agreement +remain separate and auditable. + +## The full picture + +```mermaid +flowchart LR + C[Capabilities] --> P{Buying path} + P -->|Published offers| L[list_products] + L --> B[buy_products] + P -->|Seller-planned| R[request_proposals] + R --> F[refine_proposals] + F --> H[Finalize hold] + H --> A[accept_proposal] + B --> M[MediaBuy] + A --> M + M --> S[sync_creatives] + S --> G[get_media_buys and delivery] + G --> O[control_media_buy] + O -->|Outside terms| F +``` + +Sam still gets one protocol and one operational view across sellers, but 3.2 +makes the commercial intent explicit: published offers are purchased directly; +seller-planned terms move through immutable proposals; live delivery is changed +with revision-checked controls. + +## Continue + +- [Product discovery and planning](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/) — choose + published offers, wholesale mirroring, or proposals +- [Proposal negotiation](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation) + — implement immutable revisions and holds +- [Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle) — state, + creatives, controls, and delivery +- [3.1 → 3.2 migration](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2) — isolate the + compatibility facade behind capability-driven adaptation diff --git a/dist/docs/3.2.0-beta.4/media-buy/media-buys/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/media-buys/index.mdx new file mode 100644 index 0000000000..4b0213d26d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/media-buys/index.mdx @@ -0,0 +1,238 @@ +--- +title: MediaBuy lifecycle +description: "Create, operate, reconcile, amend, and complete AdCP 3.2 MediaBuys through explicit commercial and operational lifecycles." +"og:title": "AdCP — MediaBuy lifecycle" +--- + +A MediaBuy is the operational resource created from accepted commercial terms. +AdCP 3.2 keeps three concerns separate: + +1. **Commercial formation** chooses or negotiates the terms. +2. **Creative supply** attaches approved assets to the resulting packages. +3. **Operational control** changes delivery inside the accepted envelope. + +That separation gives buyers and sellers an immutable commercial record while +allowing normal campaign operations to remain fast and revision-safe. + +## Form the commercial commitment + +Read `get_adcp_capabilities.media_buy.lifecycle_tools`, then choose an +advertised path: + +| Path | Formation | Commitment | +|---|---|---| +| Published offer | `list_products` returns versioned seller offers | `buy_products` accepts selected offer terms and feed versions | +| Seller-planned | `request_proposals` and `refine_proposals` create immutable drafts | Finalize a draft into a committed hold, then call `accept_proposal` | + +Both paths produce a MediaBuy with seller-issued `media_buy_id`, packages, +commercial readback, lifecycle status, and revision. + +```mermaid +flowchart LR + L[list_products] --> B[buy_products] + R[request_proposals] --> V[refine_proposals] + V --> F[finalize] + F --> A[accept_proposal] + B --> M[MediaBuy] + A --> M +``` + +Use [Product discovery and planning](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/) to +choose a path, and [Proposal negotiation](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation) +for immutable revision and hold semantics. + +## MediaBuy and package model + +A MediaBuy contains: + +- the accepted commercial snapshot and digest when formed from a proposal; +- aggregate budget, pacing, bidding, and daily-cap policy; +- one or more packages representing purchased products and their executable + targeting, flight, pricing, and creative requirements; +- operational status, health, indicators, and revision history; +- correlation context and reporting configuration; and +- `revision`, `valid_actions`, and `available_actions` for safe routing. + +Packages preserve the seller-confirmed execution contract. Important fields +include: + +| Field | Meaning | +|---|---| +| `product_id` | Published or proposal-bound product that produced the package | +| `targeting_overlay` | Complete effective targeting, including seller resolution | +| `start_time` / `end_time` | Executable package flight | +| `budget` / `daily_budget_cap` | Package-level spend constraints when applicable | +| `formats_pending` | Canonical creative requirements that still lack coverage | +| `creative_approvals[]` | Current assignment review state | +| `indicators[]` | Current seller observations such as pacing or inventory risk | + +The buyer does not reconstruct package state from its original request. Read +the current seller snapshot through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). + +## State machine + +| State | Meaning | Terminal? | +|---|---|---| +| `pending_creatives` | Commercially accepted; required creative coverage is missing | No | +| `pending_start` | Ready to serve; waiting for the flight to begin | No | +| `active` | Eligible to deliver | No | +| `paused` | Delivery is intentionally held | No | +| `completed` | Flight ended, goal completed, or budget exhausted | Yes | +| `rejected` | Seller declined before activation | Yes | +| `canceled` | Buyer or seller terminated the buy | Yes | + +```mermaid +stateDiagram-v2 + [*] --> pending_creatives : commitment lacks creative coverage + [*] --> pending_start : commitment ready, flight future + [*] --> active : commitment ready, flight started + [*] --> paused : direct purchase created held + pending_creatives --> pending_start : creative assignments complete + pending_start --> active : flight starts + active --> paused : control_media_buy pause + paused --> active : control_media_buy resume + active --> completed : flight, goal, or budget completes + paused --> completed : flight, goal, or budget completes + pending_creatives --> canceled : accepted cancellation path + pending_start --> canceled : accepted cancellation path + active --> canceled : accepted cancellation path + paused --> canceled : accepted cancellation path + pending_creatives --> rejected : seller decline + pending_start --> rejected : seller decline + completed --> [*] + rejected --> [*] + canceled --> [*] +``` + +Task status is separate. `buy_products`, `accept_proposal`, and +`control_media_buy` may return `submitted`, `working`, or `input-required` +while an operation awaits systems or human review. The MediaBuy changes only +when that task completes. See [Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +## Supply and assign creatives + +Compact purchase calls do not carry creative bodies. Use +[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) to create or +update library assets, then use `assignment_operations` to assign, unassign, or +replace package creatives. + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441050", + "account": { "account_id": "account_123" }, + "assignment_operations": [ + { + "operation": "assign", + "creative_id": "creative_trail_video_30", + "package_id": "package_streamhaus_video" + } + ] +} +``` + +Package-level `creative_deadline` takes precedence over the MediaBuy-level +deadline. After the deadline, the seller rejects new or replacement creative +assignments for that package. Creative library state and package assignment +state remain distinct: ending a buy releases assignments but does not delete a +reusable library creative. + +## Control delivery inside accepted terms + +Use [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) for +operational changes already permitted by the accepted commercial envelope: + +- pause or resume delivery; +- exercise an accepted unilateral cancellation right; +- change total, aggregate-daily, or package budget controls; +- update allocation, pacing, bidding, targeting, catalog references, keywords, + impression controls, or optimization goals; and +- change reporting-webhook configuration. + +Every control includes the latest `revision` from `get_media_buys`: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441051", + "account": { "account_id": "account_123" }, + "media_buy_id": "media_buy_789", + "revision": 4, + "packages": [ + { + "package_id": "package_streamhaus_video", + "paused": true + } + ] +} +``` + +The seller atomically rejects a stale revision with `CONFLICT`. Re-read the +snapshot, reconcile the prior operation, and decide whether the original intent +still applies before retrying. + +## Amend commercial terms + +`control_media_buy` does not add products, change negotiated pricing or billing +terms, attach creatives, or move a flight outside the accepted envelope. When +an otherwise valid control requires new terms, the seller returns +`REQUOTE_REQUIRED`. + +The buyer then: + +1. reads `accepted_proposal_id` and the current terms from `get_media_buys`; +2. calls `refine_proposals` with `change_kind: "amendment"`; +3. verifies the immutable successor draft; +4. finalizes it into a committed hold; and +5. calls `accept_proposal` to apply the amendment atomically. + +A cancellation requiring counterparty agreement uses the same lifecycle with +`change_kind: "cancellation"`. A cancellation right already granted in the +accepted terms can use `control_media_buy` directly. + +## Read, reconcile, and report + +Use the surfaces for their intended consistency level: + +| Surface | Use | +|---|---| +| `get_media_buys` | Operational snapshot: state, revision, accepted proposal, packages, approvals, health, and optional near-real-time delivery | +| `get_media_buy_delivery` | Billing-grade delivery and dimensional reporting | +| Reporting webhooks | Push hints that delivery or health changed; repair from snapshots after gaps | +| Revision history | Append-only audit context for accepted operational changes | + +Webhook arrival order is not resource order. Treat the snapshot as the repair +surface and compare resource revisions rather than transport timestamps. See +[Snapshot and log contract](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log). + +## Seller implementation invariants + +Sellers implementing the lifecycle should preserve these properties: + +- Store MediaBuy status explicitly; do not recompute paused, canceled, or + rejected state from flight dates. +- Enforce the revision comparison atomically with every control. +- Return the accepted proposal ID, digest, and complete snapshot for + proposal-formed buys so restarted clients can amend safely. +- Keep creative assignment mutations separate from commercial controls. +- Persist account-scoped buys regardless of whether they were created through + AdCP or another seller surface. +- Expose current routing through `available_actions` rather than requiring + buyers to infer it from status. + +## Compatibility boundary + +Sellers without `media_buy.lifecycle_tools` continue to use the 3.x +`get_products`, `create_media_buy`, and `update_media_buy` facade. Keep that +translation in a version-adaptation layer. New business logic should reason in +terms of published offers, immutable proposals, accepted terms, and +revision-checked controls. + +See [Migrating from 3.1 to 3.2](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2) for the +mapping and [Media buy lifecycle flow](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle) for +the detailed state and dependency reference. + +## Continue + +- [Optimization and reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) +- [Indicators and warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators) +- [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) +- [Policy compliance](/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance) diff --git a/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators.mdx b/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators.mdx new file mode 100644 index 0000000000..a8da12b3f9 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators.mdx @@ -0,0 +1,175 @@ +--- +title: "Indicators and Warnings" +description: "How AdCP exposes immediate operation warnings and durable seller indicators through existing media-buy and creative reads." +"og:title": "AdCP — Indicators and Warnings" +--- + +AdCP separates an immediate successful-operation warning from a condition that remains current after the operation: + +| Situation | Protocol surface | +|---|---| +| Operation failed | `errors[]` | +| Operation needs buyer input before success | `input-required` | +| Operation succeeded with noteworthy context | `warnings[]` on the success response | +| Seller identifies a current material risk or optimization opportunity warranting buyer attention | `indicators[]` on the authoritative read | +| Creative is approved, partially approved, pending, or rejected for one assignment | Assignment approval state and optional `approval_scopes[]` | +| Resource is serving with a quality or coverage gap | Resource defect surface | +| Buy/package cannot deliver correctly | Impairment or operational delivery issue | + +A warning is an immediate receipt. It MUST NOT become the only home for a continuing condition: a persistent forecast, pacing, creative, or budget conclusion also appears as current resource state. An indicator is not a separate resource—there is no indicator ID, history API, sub-version, or `get_indicators` task. + +An indicator says that the buyer should evaluate and probably address a condition. It does not claim that one universal remedy exists, authorize a mutation, or make seller-supplied text executable. Buyer products may translate an indicator into one or more recommendations, but any resulting change still uses its normal AdCP task, authorization, and governance path. + +## Where indicators live + +`get_media_buys` carries three levels of current indicator state: + +```text +media_buys[] buy indicators +└── packages[] package indicators + └── creative_approvals[] assignment indicators +``` + +Creative-library sellers may expose the same package–creative relationship in reverse: + +```text +creatives[] +└── assignments.assigned_packages[] assignment approval + indicators +``` + +When `media_buy.relationship_notifications.projection_tasks` includes `list_creatives`, the two assignment projections MUST agree on `media_buy_id`, `package_id`, `creative_id`, approval state, rejection reason, and scoped approval outcomes. Indicator state SHOULD converge, but separate reads can legitimately straddle a reevaluation; buyers reconcile toward the snapshot with the strictly newer `indicators_as_of`. The seller includes `media_buy_id` and `approval_status` on every creative assignment row, even when indicators are unknown. Inline-only sellers use `get_media_buys` without implementing this reverse projection. + +Do not put assignment-specific fatigue or approval on the creative root. One creative can be fatigued or rejected on one publisher while remaining effective and approved elsewhere. When a multi-publisher assignment has mixed eligibility, the scalar is `partially_approved` and complete `approval_scopes[]` carries a disjoint partition: one row per normalized scope, using either publisher-wide or placement-specific rows for a publisher, never both. Uniform assignments omit the array. + +## Standard 3.2 catalog + +| Type | Valid placement | Broad meaning | +|---|---|---| +| `creative_fatigue` | Package–creative assignment | Repeated delivery is materially saturating the audience or degrading objective-relevant performance | +| `creative_quality_opportunity` | Package–creative assignment | The accepted creative has a material format, asset, composition, or quality improvement opportunity | +| `creative_diversity_low` | Package | Too few meaningfully distinct eligible creatives for effective rotation, learning, reach, or fatigue resistance | +| `audience_saturation` | Package | The reachable audience is materially saturated independent of one creative | +| `inventory_shortfall_forecast` | Package | Current forecast is materially below the requested delivery goal | +| `pacing_risk` | Package | Material over- or under-delivery is projected by flight end absent intervention | +| `budget_constrained` | Media buy or package | Budget or a spend cap materially limits otherwise eligible delivery | + +The negotiated AdCP release defines these broad meanings, not a universal algorithm. Provider scores, thresholds, evaluation windows, native labels, suggested actions, deep links, and upstream attribution remain in namespaced `ext`. A generic action dispatcher is intentionally absent; applying a recommendation still uses normal AdCP authorization, governance, idempotency, and readback. + +## Evaluated snapshot shape + +```json +{ + "creative_id": "cr_summer_video", + "approval_status": "approved", + "indicator_types_evaluated": [ + "creative_fatigue", + "creative_quality_opportunity" + ], + "indicators_as_of": "2026-08-04T12:00:00Z", + "indicators_evaluated_scope": [ + { "publisher_domain": "publisher-a.example" } + ], + "indicators": [ + { + "type": "creative_fatigue", + "detected_at": "2026-08-03T09:00:00Z", + "scope": [ + { + "publisher_domain": "publisher-a.example", + "placement_id": "feed" + } + ], + "ext": { + "seller_example": { + "fatigue_rate": 0.47, + "window_days": 7 + } + } + } + ] +} +``` + +`indicator_types_evaluated` is required with `indicators`. It prevents an empty fatigue result from being misread as an evaluation of pacing, budget, or another type. Every returned `indicator.type` MUST appear in this list; omitted types remain unknown. + +`indicators_as_of` records when this evaluation completed. `indicators_evaluated_scope` optionally limits publisher or placement coverage. Omit scope coverage only when the named types were evaluated across the whole enclosing buy, package, or assignment. With partial coverage, every indicator includes a contained `scope`; unlisted scopes remain unknown. + +Only `type` is required inside each indicator. `detected_at`, when known, remains stable throughout one uninterrupted occurrence. A relationship contains at most one item per `(type, normalized scope set)`. + +## Unknown, clear, and monotonic state + +- Omitted `indicators` means unknown or not evaluated. +- `indicators: []` means evaluated-clear only for `indicator_types_evaluated` and the declared coverage. +- A non-empty array is the current assertion set for those types and coverage. +- A prior key clears only when absent from a successful direct snapshot with coverage containing the key and a strictly newer `indicators_as_of`. +- Equal-timestamp conflicting snapshots are invalid; buyers retain stored state. +- Filtered disappearance, incomplete pagination, a failed read, or uncovered scope never clears state. +- A successful direct unfiltered read showing that an assignment was deleted retires all keys for that relationship. + +For serve-time generative creative, assignment indicators describe the stable brief-or-creative × package aggregate. Variant/render diagnostics belong in `get_creative_delivery`. + +## Querying + +Use `list_creatives` for portfolio-wide assignment indicator discovery: + +```json +{ + "include_assignments": true, + "filters": { + "indicator_types": ["creative_fatigue", "creative_quality_opportunity"] + }, + "fields": ["creative_id", "assignments"], + "pagination": { + "max_results": 100 + } +} +``` + +The outer cursor limits creatives. For bounded portfolio discovery, request `assignment_projection: "matching"` and `assignment_limit`; each result reports `returned_assignment_count` and `assignments_truncated`. A truncated reverse projection is discovery-only—repair complete state through `get_media_buys`. Reread known relationships without `indicator_types` when reconciling clearing. + +`get_media_buys.indicator_types` matches an indicator at any of the three levels and returns the selected full buy. Use it for buy/package conclusions such as budget, inventory, audience, diversity, or pacing. Buyers MUST NOT send the filter unless every requested type appears in `supported_indicator_types`; a seller MAY reject a violation with `UNSUPPORTED_FEATURE`. This avoids an undetectable unfiltered superset on a response that has no `filters_applied` receipt. + +## Webhooks + +`supported_indicator_types` declares polling readback independently of webhook support. A seller may expose indicators through `get_media_buys` and omit `relationship_notifications` entirely. Sellers that support push additionally declare `media_buy.relationship_notifications`; `indicators.changed` requires an indicator catalog, while `creative.assignment_changed` may be declared alone when the seller can detect assignment or approval changes. A creative-library seller may advertise the bounded `list_creatives` reverse projection inside that block. The capability also declares whether activity logs are available: + +```json +{ + "subscriber_id": "optimization-worker", + "url": "https://buyer.example/webhooks/adcp", + "event_types": [ + "indicators.changed", + "creative.assignment_changed" + ], + "active": true +} +``` + +`indicators.changed` fires after the seller observes a semantic assertion-set or evaluation-coverage change. It does not fire because only `indicators_as_of` advanced. `creative.assignment_changed` fires when an assignment is added, removed, or its assignment-specific approval state/reason changes. Removing an assignment with stored indicators also fires `indicators.changed` with `change_kind: "assignment_removed"`; the two fires have no ordering guarantee. + +Subscriptions are prospective and do not replay already-current indicators. After activation or reactivation, establish a complete baseline through `get_media_buys`: either enumerate known `media_buy_ids`, or request all seven `status_filter` values and follow pagination to exhaustion. Do not use `indicator_types` for this baseline. A material in-place creative-content update retires the prior assignment evaluation: the seller fires `indicators.changed` with `change_kind: "invalidated"` and omits the stale snapshot as unknown until reevaluated, or atomically publishes a strictly newer evaluation and fires `updated`. + +Both payloads are small signed invalidations containing account, media-buy, package, and—when applicable—creative identity. Buyers: + +1. verify the registered webhook signature; +2. dedupe by `idempotency_key`; +3. reread `get_media_buys` without an indicator filter (the bounded `list_creatives` projection may assist discovery but cannot prove complete state); and +4. reconcile from the snapshot, never from the webhook payload. + +Retries reuse the same `idempotency_key`. Poll-based upstream integrations fire when they detect a change; capability support does not promise native-platform detection latency. Relevant delivery attempts appear on the declared repair reads when `supports_webhook_activity` is true and activity was requested. + +## Success warnings + +Completed `buy_products` and `accept_proposal` commitments and completed `control_media_buy` controls may return structured `warnings[]`. The 3.x `create_media_buy` and `update_media_buy` compatibility facades mirror the warning returned by the canonical operation they map to. Proposal planning (`request_proposals` and `refine_proposals`) carries forecasts in proposal state rather than using commitment warnings. Initial codes are: + +| Code | Typical durable readback | +|---|---| +| `inventory_shortfall_forecast` | Package indicator of the same name | +| `flight_change_creates_pacing_risk` | Package `pacing_risk` | +| `fields_ignored_due_to_precedence` | Operation-relative receipt; no continuing condition. `details` identifies ignored fields | + +Canonical commitments use the first two codes: direct or newly accepted purchases may report `inventory_shortfall_forecast`, and an accepted flight amendment may report `flight_change_creates_pacing_risk`. `control_media_buy` does not change flight dates and therefore only uses `inventory_shortfall_forecast` from this initial catalog. `fields_ignored_due_to_precedence` remains a compatibility-facade receipt; canonical inputs reject conflicting intent instead of silently applying legacy precedence. + +Every warning includes typed `affected_resource` identity so buyers can join it to durable state in multi-package and multi-creative responses. On compact commitment responses, package IDs come from `purchase_bindings[]`. Warnings never change success, never appear on terminal or submitted arms, and never grant action authority. Codes are the closed vocabulary of the negotiated AdCP release. `details` is seller-specific in 3.2; portable handling relies only on `code` and `affected_resource`. Whether `inventory_shortfall_forecast` surfaces as a warning on a completed commitment or instead blocks via `input-required` is seller discretion; a buyer unconditionally carries delivery risk on a MediaBuy committed with that warning. + +A seller MUST NOT emit `inventory_shortfall_forecast` unless it advertises that indicator type, or `flight_change_creates_pacing_risk` unless it advertises `pacing_risk`. This keeps the promised durable readback available; `fields_ignored_due_to_precedence` is operation-relative and needs no indicator capability. diff --git a/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle.mdx b/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle.mdx new file mode 100644 index 0000000000..4e8ad78dfe --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle.mdx @@ -0,0 +1,397 @@ +--- +title: Media Buy Lifecycle Flow +description: "Step-by-step sequence from product discovery through delivery, including the guaranteed-deal IO acceptance path and creative sync timing." +"og:title": "AdCP — Media Buy Lifecycle Flow" +--- + +This page is the canonical sequence reference for media buy lifecycle. For conceptual background on the full lifecycle — campaign structure, package model, property targeting, and async operations — see [Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/). + +## AdCP 3.2 flow + +Capability discovery determines how the commercial commitment is formed. The +two compact paths converge on the same MediaBuy lifecycle: + +```mermaid +flowchart TD + C[get_adcp_capabilities] --> P{commercial path} + P -->|published offer| L[list_products] + L --> B[buy_products] + P -->|seller-planned| R[request_proposals] + R --> V[refine_proposals] + V --> H[finalize committed hold] + H --> A[accept_proposal] + B --> M{initial MediaBuy state} + A --> M + M -->|creatives missing| D[pending_creatives] + M -->|flight in future| E[pending_start] + M -->|ready to deliver| F[active] + D --> S[sync_creatives and assign] + S --> E + E --> F + F --> O[control_media_buy] + O -->|pause| J[paused] + J -->|resume| F + F -->|goal met, budget spent, or flight ended| I[completed] +``` + +1. **Discover capabilities** — read `media_buy.lifecycle_tools` and related + creative capabilities. +2. **Form the commercial commitment** — purchase a versioned published offer + with `buy_products`, or accept a committed immutable proposal with + `accept_proposal`. +3. **Supply creatives** — use `sync_creatives` and explicit assignment + operations. Compact purchase calls never carry creative bodies. +4. **Operate and reconcile** — read `get_media_buys`, apply in-envelope changes + with `control_media_buy`, and use `get_media_buy_delivery` for reporting. + +Commercial changes outside the accepted envelope return `REQUOTE_REQUIRED`. +Begin an amendment from the snapshot's `accepted_proposal_id`, then revise, +finalize, and accept the successor proposal. + +### Compact operations form a saga + +Each compact mutation is atomic by itself, but a workflow containing more than +one mutation is not atomic as a group. In particular, purchase followed by +creative sync has this boundary: + +1. `buy_products` or `accept_proposal` commits the MediaBuy and returns + `purchase_bindings[]` with seller-assigned package IDs. +2. `sync_creatives` uploads library creatives and applies assignment operations. +3. A failure in step 2 leaves step 1 committed. The buyer reads the MediaBuy, + fixes and retries trafficking, or exercises an available cancellation right. + +The same rule applies when a legacy `update_media_buy` request is decomposed +into proposal acceptance, operational control, and creative sync. Those calls +have independent validation, authorization, idempotency, async-task, and +failure boundaries. A commercial amendment can succeed while the following +control or creative assignment fails, and a control can succeed while a later +assignment fails. Implementations MUST NOT describe such a sequence as an +atomic translation of the compatibility facade. + +Some compatibility requests therefore require the facade itself. A placement +targeting replacement that removes a placement used by an assignment must +replace or reroute that assignment in the same `update_media_buy` mutation. +`control_media_buy` cannot carry creative assignments, so `control_media_buy` +followed by `sync_creatives` is not equivalent. Inline-only creative sellers +also have no compact creative continuation and use `create_media_buy` or +`update_media_buy` for package-scoped bodies. + +Other facade-only or explicitly lossy create shapes include +`artifact_webhook`, per-package initial pause, inline catalog bodies or filters, +and a buyer-authored exact `committed_metrics` set. Compact callers synchronize +catalogs before purchase and accept that a catalog can remain after a failed +purchase. Direct compact purchase derives reporting commitments from published +terms; an exact set is lossless only when it is already captured by the +proposal being accepted. + +## State machine + +### Media buy states + +| State | Meaning | Terminal? | +|-------|---------|-----------| +| `pending_creatives` | Approved; no creatives assigned yet | No | +| `pending_start` | Creatives assigned; waiting for flight date | No | +| `active` | Delivering impressions | No | +| `paused` | Temporarily halted | No | +| `completed` | Flight ended, goal met, or budget exhausted | Yes | +| `rejected` | Seller declined the buy | Yes | +| `canceled` | Buyer or seller terminated before completion | Yes | + +<Note> +`submitted`, `working`, and `input-required` are **task-level** statuses. They +describe an operation such as `buy_products` or `accept_proposal`, not the +MediaBuy itself. The completion artifact creates or updates the MediaBuy, whose +state is then read through `get_media_buys`. See [task status and MediaBuy state](/dist/docs/3.2.0-beta.4/media-buy/media-buys#state-machine). +</Note> + +### Transitions + +```mermaid +stateDiagram-v2 + [*] --> pending_creatives : buy_products / accept_proposal\n(creatives missing) + [*] --> pending_start : buy_products / accept_proposal\n(flight future) + [*] --> active : buy_products / accept_proposal\n(ready to deliver) + [*] --> paused : buy_products\n(paused: true) + + pending_creatives --> pending_start : sync_creatives assignment + pending_creatives --> paused : sync_creatives assignment\n(buy held) + pending_start --> active : flight date reached + pending_start --> paused : flight date reached\n(create held) + + active --> paused : control_media_buy\n(paused: true) + paused --> active : control_media_buy\n(paused: false) + + active --> completed : flight ended /\ngoal met / budget exhausted + paused --> completed : flight ended /\ngoal met / budget exhausted + + pending_creatives --> rejected : seller declines + pending_start --> rejected : seller declines + + pending_creatives --> canceled : control_media_buy\n(accepted unilateral right) + pending_start --> canceled : control_media_buy\n(accepted unilateral right) + active --> canceled : control_media_buy\n(accepted unilateral right) + paused --> canceled : control_media_buy\n(accepted unilateral right) + + completed --> [*] + rejected --> [*] + canceled --> [*] +``` + +### Discovering valid actions at runtime + +Rather than hardcoding the state machine, read `valid_actions` from `get_media_buys`. The seller returns exactly what the buyer can do in the current state: + +```json +{ + "media_buy_id": "mb_12345", + "status": "active", + "revision": 3, + "valid_actions": ["pause", "cancel", "update_budget", "update_dates", "update_packages", "add_packages", "sync_creatives"] +} +``` + +`control_media_buy` requires the latest `revision`. The seller rejects a stale +revision with `CONFLICT`, so concurrent controls cannot silently overwrite one +another. `available_actions` tells compact clients whether the next change +routes to `control_media_buy`, proposal refinement, creative assignment, or +another task. Prefer it over inferring routing from the state enum. + +A display-name-only change routes to `control_media_buy`. `name` is +revision-checked non-commercial metadata: changing it increments the MediaBuy +revision without changing the accepted terms or creating an accepted-proposal +successor. + +Use `sync_creatives.assignment_operations` for creative changes. Creative +assignment is independent from commercial control and does not increment the +MediaBuy revision merely because an assignment changed. There is no shared +optimistic-concurrency fence between `sync_creatives` and +`control_media_buy`: a successful sync can change assignment state while the +MediaBuy `revision` remains unchanged. By contrast, a creative-assignment or +inline-creative mutation performed inside the `update_media_buy` compatibility +facade is part of that atomic MediaBuy update and MUST increment `revision`. +Clients mixing the two surfaces must re-read both package assignments and the +MediaBuy before computing a replacement; the revision alone cannot prove that +assignment state is unchanged. + +## Guaranteed / PG deal variation + +Guaranteed products require contractual commitment before delivery begins. In +the compact lifecycle, sellers normally express negotiated guaranteed terms as +a committed proposal: + +```mermaid +flowchart TD + A[request_proposals] --> B[refine proposal terms] + B --> C[finalize committed hold] + C --> D[accept_proposal\nwith IO acceptance when required] + D --> E{task status} + E -->|human or counterparty review| F[submitted / input-required] + E -->|completed| G[pending_creatives or pending_start] + F --> G + G --> H[sync_creatives and assign] + H --> I[active — guaranteed delivery] + I --> J{performance} + J -->|standards met| K[completed] + J -->|under-delivery| L[makegood or remediation] + L --> K +``` + +### What makes a guaranteed buy different + +**Accountability terms are part of the accepted commercial snapshot.** A +guaranteed proposal can carry: + +- `performance_standards` — viewability, IVT, completion rate, and other thresholds with measurement vendor +- `measurement_terms` — who counts the billing metric, acceptable variance, and makegood remedies +- `cancellation_policy` — notice period and cancellation fee for early termination + +Omitting any of these on a guaranteed package causes the seller to return `TERMS_REJECTED`. + +**IO acceptance** — `accept_proposal` can include structured `io_acceptance` +when the committed terms require it. The operation may still return +`submitted` or `input-required` while the seller completes human or +counterparty review. Poll with `get_task_status` or use the configured task +webhook. The completion artifact carries the `media_buy_id`. + +**Makegoods** — if the seller under-delivers against agreed `performance_standards`, they propose a remedy from the `makegood_policy`: `additional_delivery`, `credit`, or `invoice_adjustment`. The buyer accepts or disputes. + +<Note> +A seller who accepts without under-delivering earns a favorable accountability +signal. See [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) for +performance standards, measurement terms, and makegood resolution. +</Note> + +## Creative sync timing + +### When creatives are required + +`buy_products` and `accept_proposal` do not accept creative bodies. After +commitment, supply or update library creatives with `sync_creatives`, then use +explicit `assignment_operations` to assign them to packages. A compact seller +advertises the creative workflow it supports; callers should not infer an +inline-creative path from older tool availability. + +This sequence does not move request-time validation across the commitment +boundary. On the compatibility facades, one invalid inline creative or +assignment fails the complete create or update without mutation. On the compact +path, the buy already exists when package-aware creative validation runs. A +strict sync prevents partial creative or assignment mutation within that sync, +but it cannot undo the preceding purchase. Later policy review is different +from either validation case: a review rejection does not roll back a valid +facade mutation or compact purchase. + +When required formats lack creative coverage, the buy enters +`pending_creatives`. After assignments cover the package's effective +`format_options[]`, it moves to `pending_start` when the flight is in the future +or `active` when delivery can begin. A direct `buy_products` call may set +`paused: true`; resume it later with `control_media_buy` and the latest +revision. + +### The `creative_deadline` + +The MediaBuy snapshot can carry a `creative_deadline`; individual packages may +carry their own. **Package-level deadlines take precedence over the MediaBuy +deadline.** This matters for mixed-channel orders—a print package may have a +material deadline days before digital packages in the same buy. + +After the deadline, new or replacement assignments for that package return +`CREATIVE_REJECTED`. Delivery continues with the currently assigned creatives, +or the package remains `pending_creatives` if none were accepted. + +``` +Deadline hierarchy: + package.creative_deadline (if present — wins) + ↓ else + media_buy.creative_deadline +``` + +### Effect on creatives when a buy ends + +When a media buy reaches `rejected`, `canceled`, or `completed`, creative assignments are released. For library-backed sellers, the creatives themselves are not deleted — they remain in the library with their existing review status and are available for assignment to other media buys. Inline-only sellers may retain package-scoped creative records for audit and reporting without exposing reusable library entries. + +## Health and dependency impairment + +`status` describes operational state — is the buy serving, paused, or terminal? **`health`** is a separate orthogonal field describing whether upstream dependencies are intact: + +| Field | Tracks | Values | +|-------|--------|--------| +| `status` | Operational state | `pending_creatives`, `pending_start`, `active`, `paused`, `completed`, `rejected`, `canceled` | +| `health` | Dependency state | `ok`, `impaired` | + +The two are orthogonal. A buy can be `paused`-and-impaired, `pending_creatives`-and-impaired, or `active`-and-impaired. Health does not change `status`; `valid_actions` is unaffected. + +### When `health` is `impaired` + +`health` transitions to `impaired` when an upstream dependency referenced by the buy enters an offline state that affects delivery for at least one package: + +- An audience the buy targets transitions to `suspended` (consent expiry, TTL, policy enforcement). +- A creative the buy uses transitions from `approved` to `suspended` (recoverable dependency/authorization loss), from `suspended` to `rejected` (terminal dependency/authorization loss), or from `approved` to `rejected` (post-approval revocation). +- A catalog item the buy targets transitions to `withdrawn` (seller-initiated removal). +- An event source the buy depends on enters `insufficient` (zero events received). +- A property the buy targets is depublished via brand.json / adagents.json. + +The buy's `impairments[]` array carries one entry per affected dependency: + +```json +{ + "media_buy_id": "mb_456", + "status": "active", + "health": "impaired", + "impairments": [ + { + "impairment_id": "imp_01HZX9...", + "resource_type": "audience", + "resource_id": "aud_123", + "package_ids": ["pkg_a"], + "transition": { "from": "ready", "to": "suspended" }, + "reason_code": "consent_expired", + "reason": "Hashed identifier consent basis expired on 2026-06-01.", + "observed_at": "2026-06-02T14:11:00Z", + "remediation": "Re-sync audience after refreshing consent upstream." + } + ] +} +``` + +### Materiality + +Each entry in `impairments[]` MUST list at least one package whose ability to serve is degraded. Cosmetic effects (one rejected creative in a package that still has serviceable peers) MUST NOT be reported as impairments — they're surfaced via the resource's own status, not the buy's. + +### Reverse direction + +When the underlying resource returns to a serviceable state (audience re-syncs, creative re-approved), the seller MUST remove the corresponding entry from `impairments[]` and flip `health` to `ok` if no other impairments remain. The buyer sees the recovered state on the next snapshot read or via the next `impairment` push (which carries the closure). + +### Pushed via `impairment` webhook + +When a buy's `health` transitions or an impairment is added/removed, the seller fires an `impairment` notification against the buy's `push_notification_config`. The payload reuses the `impairment` object shape plus the buy's updated `health`. See the [persistent webhook contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#persistent-channel-contract) for delivery semantics (at-least-once, no-ordering, coalescence, replay via snapshot). + +Impairment webhooks identify affected packages with `package_ids[]` by design. Buyers that need package-level correlation context, such as `context.buyer_ref`, should call `get_media_buys` after receiving an impairment fire and read the package snapshot. + +### Materiality coverage + +The MUST-strength materiality rule applies to resource types where the resource → buy join is cheap and 1:N — audience, event_source, property. For creative and catalog_item, materiality is SHOULD-strength: a creative in a large pool may not degrade serving when removed, and the join is more expensive for sellers to compute. Implementers SHOULD report conservatively when uncertain and MUST NOT report when serving is provably unaffected. + +### Remediation by `reason_code` + +Each `reason_code` has a typical buyer remediation path. Sellers don't fill this in per-impairment — buyer agents key remediation off `reason_code` directly. The table below is the protocol-level guidance; the per-impairment free-text `remediation` field carries seller-specific context that doesn't fit the typical path (e.g., "we restored this audience yesterday; sync now to pick up the refresh"). + +| `reason_code` | Typical buyer remediation | +|---|---| +| `consent_expired` | Refresh upstream consent (e.g., hashed-id consent renewal on a clean-room flow), then re-sync the audience via `sync_audiences`. | +| `ttl_expired` | Re-sync the audience via `sync_audiences` to renew. | +| `pii_audit_failed` | Address audit findings upstream (hashing, identifier hygiene). Re-sync only **after** the seller signals the audit is cleared — a buyer agent that loops `sync_audiences` against an uncleared audit will not converge. | +| `content_rejected` | Fix or replace the asset through `sync_creatives`, then use an explicit assignment operation. Campaign-level replace-versus-wait policy stays with the buyer. | +| `identity_authorization_revoked` | Restore the downstream identity/post authorization through the seller's connection flow, or replace the affected `published_post` creative if authorization cannot be restored. | +| `identity_authorization_expired` | Renew the downstream identity/post authorization through the seller's connection flow, then let the seller re-check or re-review the creative. | +| `source_private` | Restore source post visibility or replace the affected `published_post` reference. | +| `source_offline` | Verify the tag is firing on the buyer's properties (this is often a buyer/publisher integration issue, not a seller-side outage), then re-sync via `sync_event_sources`. | +| `seller_removed` | No buyer-side resubmit path. Find a replacement through `list_products` or `request_proposals`, inspect canonical product format options, or contact the seller for restoration ETA. | +| `policy_violation` | Seller-side enforcement; buyer-side resubmit unlikely to clear. Await resolution or escalate per the seller's standard contact path. | +| `property_depublished` | No buyer-side fix — property publication is controlled by the publisher's `brand.json` / `adagents.json`. Find a replacement through product listing or proposal planning, or remove it from targeting. | + +### Triage ordering + +Buyer agents triaging a non-empty `impairments[]` SHOULD sort entries by `observed_at` ascending — the oldest open impairment is the most likely to have already eaten into delivery. Webhook arrival time is not a reliable proxy: under the coalescence rule (see [webhooks § Coalescence](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#coalescence)) the seller MAY batch multiple state changes into one fire, and re-emission under a fresh `idempotency_key` resets the transport timestamp without changing `observed_at`. + +### Impairments are operational signals, not commercial events + +An `impairment` reports degraded delivery from upstream dependency change. It is **not** a billing event, makegood trigger, or credit dispute. Commercial remedies for under-delivery are governed by `accountability_terms` on guaranteed buys and remain out of scope for this surface. Integrators building dispute pipelines should drive them from delivery reports and accountability terms, not from `impairments[]`. + +### Compliance + +The `impairment.coherence` assertion verifies that the buy's `impairments[]` surface stays in sync with the underlying resources it references. It is a cross-resource invariant — it observes both the resource transition and the buy snapshot in the same compliance run. + +**Forward rule.** Every entry in a buy's `impairments[]` MUST reference a resource whose current status is an offline state — `audience: suspended` (on `audience-status`), `creative: suspended` or `creative: rejected` (on `creative-status`), `catalog_item: withdrawn` (on `catalog-item-status`), `event_source: insufficient` (the `assessment-status` value surfaced through `event-source-health.status`), or a property depublished via `brand.json` / `adagents.json`. A buy reporting an impairment whose referenced resource is no longer offline fails the check — the seller has stale state on the buy. + +**Inverse rule.** Any resource in an offline state that is referenced by a non-terminal buy MUST appear in that buy's `impairments[]`. A seller that transitions a resource without propagating to the affected buys fails the check — the seller has stale state on the resource. + +**Health-iff rule.** A non-terminal buy's `health` MUST be `impaired` whenever `impairments[]` is non-empty, and MUST be `ok` whenever `impairments[]` is empty. This is a strict iff — stale `health: "impaired"` with an empty `impairments[]` (or `health: "ok"` with a non-empty `impairments[]`) violates the rule even when the forward and inverse rules are individually satisfied. + +**Out of scope.** All three rules relax on buys in terminal status (`completed`, `canceled`, `rejected`). Sellers MAY leave `impairments[]` and `health` in whatever state they held at the terminal transition — they are not required to clean up. Buyers MUST NOT treat post-terminal drift as a coherence violation; the buy is no longer serving and synchronisation is wasted effort. Materiality (the requirement that `package_ids` be non-empty) is enforced at the schema layer by `package_ids: minItems: 1` on `impairment.json` — `impairment.coherence` does not re-check it. + +**Snapshot is one of several propagation surfaces.** Sellers declare which surfaces they use via [`capabilities.media_buy.propagation_surfaces`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json) on `get_adcp_capabilities` — a non-exclusive array, so a seller mirroring impairments on both the buy snapshot AND firing webhooks declares `["snapshot", "webhook"]` (the common case for premium guaranteed sellers). The three surface values: + +- **`snapshot`** — seller populates `health` + `impairments[]` on `get_media_buys` reads. The contract above governs this surface; `impairment.coherence` storyboards grade it when declared, `not_applicable` otherwise. +- **`webhook`** — seller fires `notification-type: impairment` webhooks via `push_notification_config`. Subject to the persistent-channel webhook contract. +- **`out_of_band`** — seller propagates via channels outside the AdCP protocol surface (email, dashboard, partner-specific feeds). Long-tail and enterprise-bundled platforms commonly use this when impairment workflows are managed in human channels. Sellers declaring only `["out_of_band"]` are not graded by snapshot or webhook compliance — their bar is the offline agreement. + +Default when absent is `["snapshot"]`. Each surface is independent of the others; declare the actual mix of surfaces buyers will observe on the agent. A seller with impairment data in their API under a non-AdCP field name (a mapping gap) SHOULD document the mapping rather than declare `out_of_band` — the spec's gap is what `out_of_band` legitimately covers. + +**Relationship to other invariants.** `impairment.coherence` complements `status.monotonic`, which observes single-resource transitions only. The two run together on every specialism whose storyboard exercises both a resource-state transition and a media-buy snapshot read — audience-sync, creative-ad-server, creative-template, creative-generative, sales-catalog-driven. The cross-resource exercise that drives non-NA grading is the dependency-impairment storyboard (`media_buy_seller/dependency_impairment`, creative-track), which forces a creative on an active buy into an offline state (`approved → suspended` for recoverable dependency loss or `approved/suspended → rejected` for terminal revocation), verifies the buy reflects `health: impaired` with a matching `impairments[]` entry, recovers or replaces the creative, and verifies the buy returns to `health: ok` with `impairments[]` cleared. Audience-track and catalog-track variants are follow-ups, pending `force_audience_status` / `force_catalog_item_status` support in the compliance test controller. + +See the [Snapshot and log contract](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log) for the read-side rules that tie `impairments[]` (snapshot) to the `impairment` push (log). + +<Tip> +For library-backed sellers, creative library state and creative assignment state are tracked independently. A creative that was assigned to a canceled buy still has whatever review status it earned and can be immediately assigned to a new buy. Inline-only sellers expose package-scoped creative status on `get_media_buys` but do not advertise reusable library creatives. See [creative state and assignment state](/dist/docs/3.2.0-beta.4/creative/creative-libraries#creative-state-and-assignment-state-are-separate). +</Tip> + +## See also + +- [Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/) — full lifecycle reference: campaign structure, package model, async operations +- [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) — purchase versioned published offers directly +- [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) — accept committed new-buy, amendment, or cancellation terms +- [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) — apply revision-checked operational controls +- [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) — upload and update library creatives when the seller advertises `creative.has_creative_library: true` +- [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) — performance standards, measurement terms, makegood resolution +- [Optimization & Reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) — delivery monitoring, dimensional reporting, campaign updates diff --git a/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting.mdx b/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting.mdx new file mode 100644 index 0000000000..0d84746c75 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting.mdx @@ -0,0 +1,1401 @@ +--- +title: Optimization & Reporting +description: "AdCP optimization and reporting — monitor delivery metrics, analyze dimensional breakdowns, share performance feedback, and optimize active media buys." +"og:title": "AdCP — Optimization & Reporting" +--- + + +Continuous improvement through data-driven monitoring and optimization. AdCP provides comprehensive reporting tools and optimization features to help you track performance, analyze delivery, and improve campaign outcomes. + +Reporting in AdCP aligns with the [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) system used for campaign setup, enabling consistent analysis across the campaign lifecycle. This unified approach means you can report on exactly what you targeted. + +Performance data feeds into AdCP's [Accountability & Trust Framework](/dist/docs/3.2.0-beta.4/media-buy/index.mdx#accountability--trust-framework), enabling publishers to build reputation through consistent delivery and helping buyers make data-driven allocation decisions. + +## Key Optimization Tasks + +### Delivery Reporting +Use [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) to retrieve comprehensive performance data including impressions, spend, clicks, and conversions across all campaign packages. + +Alternatively, configure **webhook-based reporting** during media buy creation to receive automated delivery notifications at regular intervals. + +### Campaign Updates +Use [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) to modify campaign settings, budgets, and configurations based on performance insights. + +## Optimization Workflow + +The typical optimization cycle follows this pattern: + +1. **Monitor Delivery**: Track campaign performance against targets +2. **Analyze Performance**: Identify optimization opportunities +3. **Make Adjustments**: Update budgets, targeting, or creative assignments +4. **Track Changes**: Monitor impact of optimizations +5. **Iterate**: Continuous improvement through regular analysis + +## Metric lifecycle + +Every optimization metric in AdCP — whether seller-native (clicks, views, reach), graduated vendor-attested (viewability), or vendor-defined (attention, brand lift, emissions) — flows through the same set of surfaces. Buyers reason about a metric by asking three questions in order: + +- **Can you?** — Is the product capable of optimizing for this metric? *(Discovery)* +- **Will you?** — For this package, are you committing to optimize and report it? *(Commitment)* +- **Did you?** — In delivery, what was the value, and did you meet the commitment? *(Reporting)* + +Each question maps to a specific protocol surface. The same `metric_id` (or `(vendor, metric_id)` tuple for vendor-attested metrics) flows through every layer — discovery, capability declarations, package commitments, and delivery — so buyers reconciling delivery against a goal never need a translation table. + +### Standard metric flow (e.g., `clicks`, `viewable_rate`) + +| Question | Surface | Field | +|---|---|---| +| Can the product report it? | Product capability | `reporting_capabilities.available_metrics` | +| Can the product optimize for it? | Product capability | `metric_optimization.supported_metrics` | +| Will the seller commit to reporting it? | Package | `committed_metrics[]` (scope: `standard`) | +| Does the buyer want it optimized? | Package | `optimization_goals[]` (kind: `metric`) | +| Does the buyer want accountability? | Package | `performance_standards[]` | +| What was the value? | Delivery | Standard scalar (e.g., `clicks`, `viewability.viewable_rate`) | +| Did the seller fail to deliver a committed metric? | Delivery | `missing_metrics[]` (scope: `standard`) | + +### Vendor-attested metric flow (e.g., Adelaide attention, Scope3 emissions, Kantar brand lift) + +Same lifecycle, with the `(vendor, metric_id)` tuple replacing the plain `metric_id` everywhere: + +| Question | Surface | Field | +|---|---|---| +| Does the vendor define this metric? | Vendor's capabilities | `get_adcp_capabilities.measurement.metrics[]` | +| Can the product report this vendor metric? | Product capability | `reporting_capabilities.vendor_metrics[]` | +| Can the product optimize for this vendor metric? | Product capability | `vendor_metric_optimization.supported_metrics[]` | +| Will the seller commit to reporting it? | Package | `committed_metrics[]` (scope: `vendor`) | +| Does the buyer want it optimized? | Package | `optimization_goals[]` (kind: `vendor_metric`) | +| Does the buyer want accountability? | Package | `performance_standards[]` (with `vendor` field) | +| What was the value? | Delivery | `vendor_metric_values[]` | +| Did the seller fail to deliver a committed metric? | Delivery | `missing_metrics[]` (scope: `vendor`) | + +### Why both flows matter + +The two flows aren't a duplication — they encode the difference between *standardized* and *vendor-specific* measurement. Clicks mean the same thing across every seller; attention does not. Vendor binding is the wire-level evidence that the buyer and seller agreed on *which* attention model is being optimized and reported. See [`measurement/taxonomy.mdx`](/dist/docs/3.2.0-beta.4/measurement/taxonomy) for the Tier 0 → Tier 1 graduation policy that decides which flow a given metric uses. + +### Required coherence between layers + +`optimization_goals` define the objective function: what the seller should optimize, its units, and priority. They do not define 3.2 bidding policy. Currency-bearing execution controls live in `bidding` at media-buy or package scope. All monetary amounts use the media-buy currency; a selected pricing option contributes the auction unit but MUST declare that same currency: + +- seller-optimized media-buy `cost_per`/`roas` bind to the primary `budget_allocation.optimization_goals` goal; +- package-authored `cost_per`/`roas` bind to that package's primary goal; +- fixed media-buy `cost_per` binds to every inheriting package and requires compatible primary-goal result units; fixed inherited `roas` requires value-bearing primary goals; +- `bid_amount` and `max_bid` are expressed per the selected pricing option's auction unit; and +- `{automatic: true}` explicitly overrides inherited policy with provider automatic bidding. + +The separation matters when the units differ—for example, a seller can optimize toward conversions using a target CPA while also enforcing a max-CPC auction ceiling, with both amounts denominated in the media-buy currency. Legacy goal targets `cost_per` and `per_ad_spend` remain accepted during 3.2 migration but cannot be combined with canonical `bidding` on the same effective package. Their conservative normalization remains `cost_per` → `strength: "target"` and `per_ad_spend` → `strength: "target"`. + +Four rules connect the layers and prevent orphaned goals: + +1. **Optimization requires capability.** A package's `optimization_goals[]` entry MUST match a product capability — `metric_optimization.supported_metrics` for `kind: "metric"`, or `vendor_metric_optimization.supported_metrics` for `kind: "vendor_metric"`. Sellers reject mismatches with `TERMS_REJECTED`. + +2. **Optimization requires reporting commitment.** For `kind: "vendor_metric"` goals, the matching `(vendor, metric_id)` MUST also appear in the package's `committed_metrics[]`. Optimizing for a metric the seller isn't committed to reporting is unverifiable — the buyer has no way to grade the goal. Sellers reject uncommitted vendor_metric goals with `TERMS_REJECTED`. (This rule is normative for vendor metrics specifically; for seller-native `metric` goals, the metric is usually always reported by virtue of being seller-native, so the coherence is implicit.) A third precondition — discovery, that `metric_id` appears in the vendor's published `measurement.metrics[]` catalog — is SHOULD this minor and tightens to MUST at the next minor while measurement-vendor adoption of AdCP-conformant capability publication catches up. + +3. **Performance accountability is independent.** `performance_standards[]` lives in parallel — buyers MAY add a threshold commitment on any metric the seller commits to reporting, regardless of whether they also set an optimization goal on it. The three surfaces (goal / commitment / standard) compose: + - Goal only — "push toward this," no accountability floor + - Standard only — "you owe me ≥ X," seller decides how to hit it + - Both — optimization steers; standard backstops + +4. **Priority is ordinal, lowest-value-first.** When `optimization_goals[]` carry explicit `priority` values, the seller treats the goal with the **lowest** priority value as primary — even when no goal is `priority: 1` (priorities of `2` and `3` mean `2` is primary). When all priorities are omitted, the first array entry is primary. Duplicate priority values are undefined. + +### Worked example: Adelaide attention end-to-end + +A buyer wants to optimize against Adelaide's `attention_score` with a threshold of 70. Here's how the four surfaces line up: + +**1. Product capability** (discovered via `get_products`): + +```json +{ + "product_id": "premium_ctv_video", + "vendor_metric_optimization": { + "supported_metrics": [ + { + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "supported_targets": ["cost_per", "threshold_rate"] + } + ] + }, + "reporting_capabilities": { + "vendor_metrics": [ + { "vendor": { "domain": "adelaidemetrics.com" }, "metric_id": "attention_score" } + ] + } +} +``` + +**2. Package proposal on `create_media_buy`** — the buyer commits to reporting AND sets the optimization goal (both required by the reporting-coherence rule): + +```json +{ + "product_id": "premium_ctv_video", + "committed_metrics": [ + { + "scope": "vendor", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score" + } + ], + "optimization_goals": [ + { + "kind": "vendor_metric", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "target": { "kind": "threshold_rate", "value": 70 }, + "priority": 1 + } + ] +} +``` + +A `performance_standard` MAY be layered on top if the buyer wants a contractual floor — e.g., `{ "metric": "attention_score", "vendor": { "domain": "adelaidemetrics.com" }, "threshold": 65 }` — but it's independent of the goal. + +**3. Delivery** (`get_media_buy_delivery` response): + +```json +{ + "vendor_metric_values": [ + { + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "value": 73.2, + "measurable_impressions": 420000 + } + ] +} +``` + +The seller's bidding stack steered toward higher Adelaide attention scores; the reported value `73.2` is above the threshold `70`, so the goal is met. The `measurable_impressions` denominator (`420000` out of, say, 1M delivered impressions) is the coverage figure for Adelaide's measurement — vendor SDKs rarely fire on 100% of delivered impressions, and attention-vendor coverage on CTV today is typically 30–60% depending on app-SDK presence. Always compute coverage from `measurable_impressions / impressions` before reasoning about the reported value. + +**4. Accountability gap reporting** (also in the `get_media_buy_delivery` response, when commitment isn't met): + +```json +{ + "by_package": [{ + "package_id": "...", + "missing_metrics": [ + { + "scope": "vendor", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score" + } + ] + }] +} +``` + +If Adelaide's coverage on the inventory dropped below the seller's confidence threshold and they couldn't populate `vendor_metric_values` for this period, the same `(vendor, metric_id)` shows up in `missing_metrics` — same key across the entire lifecycle, so buyer reconciliation is a row-level join. + +## Performance Monitoring + +### Real-Time Metrics +Track campaign delivery as it happens: +- **Impression delivery** vs. targets +- **Spend pacing** against budget +- **Click-through rates** and engagement +- **Conversion tracking** for business outcomes + +### Historical Analysis +Understand performance trends over time: +- **Daily/hourly breakdowns** of key metrics +- **Performance comparisons** across time periods +- **Trend identification** for optimization opportunities + +### Alerting and Notifications +Stay informed of important campaign events: +- **Delivery alerts** for pacing issues +- **Performance notifications** for significant changes +- **Budget warnings** before limits are reached + +## Delivery Methods + +Publishers can proactively push reporting data to buyers through webhook notifications or offline file delivery. This eliminates continuous polling and provides timely campaign insights. + +**Webhook Push (Real-time)** - HTTP POST to buyer endpoint +- Best for: Most buyer-seller relationships +- Latency: Near real-time (seconds to minutes) +- Cost: Standard webhook infrastructure + +**Offline File Delivery (Batch)** - Cloud storage bucket push +- Best for: Large buyer-seller pairs (high volume) +- Latency: Scheduled batch delivery (hourly/daily) +- Cost: Significantly lower (\$0.01-0.10 per GB vs. \$0.50-2.00 per 1M webhooks) +- Format: JSON Lines, CSV, or Parquet files +- Storage: S3, GCS, Azure Blob Storage + +### Webhook-Based Reporting + +#### Webhook Configuration + +Configure reporting webhooks when creating a media buy using the `reporting_webhook` parameter: + +```json +{ + "packages": [...], + "reporting_webhook": { + "url": "https://buyer.example.com/webhooks/reporting", + "authentication": { + "schemes": ["Bearer"], + "credentials": "secret_token_min_32_chars" + }, + "reporting_frequency": "daily" + } +} +``` + +**Or with HMAC signature (recommended for production):** +```json +{ + "packages": [...], + "reporting_webhook": { + "url": "https://buyer.example.com/webhooks/reporting", + "authentication": { + "schemes": ["HMAC-SHA256"], + "credentials": "shared_secret_min_32_chars" + }, + "reporting_frequency": "daily" + } +} +``` + +**Security is Required:** +- `authentication` configuration is mandatory (minimum 32 characters) +- **Bearer tokens**: Simple, good for development (Authorization header) +- **HMAC-SHA256**: Production-recommended, prevents replay attacks (signature headers) +- Credentials exchanged out-of-band during publisher onboarding +- See [Security](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for implementation details + +#### Supported Frequencies + +Publishers declare supported reporting frequencies in the product's `reporting_capabilities`. Publishers are **not required** to support all frequencies - choose what makes operational sense for your platform. + +- **`hourly`**: Receive notifications every hour during campaign flight (optional, consider cost/complexity) +- **`daily`**: Receive notifications once per day (most common, recommended for Phase 1) +- **`weekly`**: Receive notifications once per week — the native cadence for audience-currency channels reporting weekly increments (OOH, radio) +- **`monthly`**: Receive notifications once per month (timezone specified by publisher) +- **`quarterly`**: Receive notifications once per quarter — matches quarterly measurement-currency publication cycles +- **`post_campaign`**: A single report after the flight ends — for channels where delivery is only knowable in arrears + +A product's declared frequencies are an optimization-eligibility signal: buyers should not mid-flight-optimize against a channel whose data arrives quarterly or post-campaign. + +**Cost Consideration:** Hourly webhooks generate 24x more traffic than daily. Large buyer-seller pairs may prefer offline reporting mechanisms (see below) for cost efficiency. + +#### Available Metrics + +Metric availability is declared at two levels: + +1. **Product level**: `reporting_capabilities.available_metrics` declares what the platform can report +2. **Format level**: `reported_metrics` on a creative format declares what the format can produce (see [Reported Metrics](/dist/docs/3.2.0-beta.4/creative/formats#reported-metrics)) + +Buyers receive the intersection of both. `impressions` and `spend` are always reported regardless of the intersection. Standard metrics include: + +- **`impressions`**: Ad views (always available) +- **`spend`**: Amount spent (always available) +- **`clicks`**: Click events +- **`ctr`**: Click-through rate +- **`views`**: Views at platform-defined threshold +- **`completed_views`**: Video/audio completions (or threshold-based completion when an optimization goal sets a custom view duration) +- **`completion_rate`**: Completion rate (`completed_views` / `impressions`); `null` when not applicable (e.g. a non-video buy) +- **`conversions`**: Post-click or post-view conversions +- **`conversion_value`**: Monetary value of attributed conversions +- **`commissionable_value`**: Settled portion of attributed conversion value eligible for revenue-share commission. Distinct from `conversion_value` when the agreement excludes taxes, shipping, discounts, returns, cancellations, or ineligible items. +- **`roas`**: Return on ad spend +- **`cost_per_acquisition`**: Cost per conversion +- **`new_to_brand_rate`**: Fraction of conversions from first-time brand buyers +- **`leads`**: Leads generated +- **`reach`**: Unique reach (paired with `reach_unit`). Measurement window declared via `reach_window` (`cumulative` / `period` / `rolling`). When `reach_window` is omitted, the window is unspecified — buyers MUST NOT sum reach across rows. +- **`reach_window`**: Window semantics for reach/frequency — object with `kind` (`cumulative` since campaign start, `period` for non-overlapping snapshot, `rolling` for trailing window) and `period: Duration` (required for `period` and `rolling`) +- **`frequency`**: Average frequency per reach unit, measured over `reach_window` +- **`grps`**: Gross Rating Points (for CPP billing) +- **`engagements`**: Direct ad interactions beyond viewing (reactions, taps, opens) +- **`engagement_rate`**: Platform-specific engagement rate +- **`follows`**: New followers, page likes, artist/podcast/channel follows, or free channel/feed subscribes attributed to delivery. Paid subscriptions are conversion events with `event_type: "subscribe"`. +- **`saves`**: Saves, bookmarks, playlist adds attributed to delivery (platforms vary in name — Pinterest "repins", TikTok "video_saves" — all report under this canonical key) +- **`profile_visits`**: Visits to the brand's in-platform page +- **`viewability`**: Viewability data (measurable_impressions, viewable_impressions, viewable_rate, viewed_seconds, standard, vendor). Separates MRC and GroupM standards. `viewed_seconds` is the average in-view duration per measurable impression — reporting-side counterpart to the `viewed_seconds` optimization goal, governed by the same `standard` threshold as `viewable_rate`. The optional `vendor` field carries a `BrandRef` so the row is self-describing — buyer agents reading delivery in isolation can attribute the numbers to a measurement vendor without joining back to `package.committed_metrics` or `package.performance_standards`. +- **`quartile_data`**: Video quartile completion data (q1-q4); `null` when not applicable (e.g. a non-video buy) +- **`dooh_metrics`**: DOOH-specific metrics (loop plays, screens, venue breakdown) +- **`cost_per_click`**: Cost per click (`spend / clicks`) +- **`cost_per_completed_view`**: Cost per completed view (`spend / completed_views`); CPCV pricing scalar for video/audio inventory +- **`cpm`**: Cost per thousand impressions (`(spend / impressions) × 1000`); universal pricing scalar across CTV, display, mobile/web video, native, audio, and DOOH +- **`downloads`**: Audio/podcast downloads (IAB Podcast Measurement Technical Guidelines methodology); distinct from `views` +- **`units_sold`**: Items sold attributed to delivery (retail-media commerce scalar; distinct from `conversions` — one transaction may carry multiple units; attribution-window declared via `measurement_terms`) +- **`new_to_brand_units`**: Unit-volume parallel to `new_to_brand_rate` — count of units sold to first-time brand buyers +- **`plays`**: Raw play count for DOOH/broadcast inventory (mirrors `forecastable-metric.plays`); distinct from `dooh_metrics.loop_plays` (per-screen rotation) and `impressions` (multiplied audience figure) + +Buyers can optionally request a subset via `requested_metrics` to reduce payload size and focus on relevant KPIs. + +For `completion_rate` and `quartile_data`, sellers MAY return `null` to signal the metric does not apply (e.g. on a non-video buy), and clients MUST accept `null` as a valid value for these two fields. Every other metric signals "not applicable" by omission — sellers omit it rather than sending `null`. + +#### Vendor-Defined Metrics + +The standard `available_metrics` enum is the closed protocol vocabulary. Vendor-defined metrics — proprietary attention scores, emissions per impression, panel-based demographics, brand-lift surveys, in-flight attention panels, custom viewability variants — live in a parallel structured surface: + +- **Declaration** (`reporting_capabilities.vendor_metrics`): each entry is a pointer (`{ vendor: BrandRef, metric_id }`) into the vendor's metric catalog. Sellers say "I support this vendor's metric"; everything else (category, methodology, standard alignment, human-readable documentation) lives at the vendor. Identifiers are namespaced by the vendor — the same `metric_id` may mean different things in different vendors' vocabularies. + +- **Discovery anchor**: the vendor's `brand.json` `agents[type='measurement']` is the canonical place to find the measurement agent's URL, capability profile, the methodology, the standards each metric implements, and per-metric documentation. AdCP does not duplicate that metadata on every seller's per-product extension; buyers resolve it once per vendor (cacheable) when they need it. + +- **Filter** (`get_products` `filters.required_vendor_metrics`): each entry pins `vendor` and/or `metric_id` — at least one. Cross-vendor queries (e.g., "any attention measurement from a vendor that supports it") are the buyer agent's responsibility: the agent resolves which vendors offer a category via their `brand.json` records, then enumerates them as filter entries. Same filter-not-fail convention as the other `required_*` filters. + +- **Reporting** (`vendor_metric_values` on each `by_package` delivery row): each value carries `{ vendor, metric_id, value, unit?, measurable_impressions?, breakdown? }`. `measurable_impressions` is the coverage denominator — vendor measurement is rarely 100% of delivered impressions. When the field is present, buyers compute coverage as `measurable_impressions / impressions`; when absent, coverage is unspecified (do not compute a rate or assume full coverage). The `breakdown` slot is the place vendors put structured payloads beyond a single scalar (panel demographics, co-view ratios, incremental decompositions); it is the only escape hatch — the rest of the value envelope is closed. + +- **Promotion path**: when the industry converges on a metric via a published standard, the spec adds it to the closed `available_metrics` enum and the vendor extensions become historical aliases. Promotion is anchored on standards-body publication, not on ad-hoc vendor convergence counts. + +- **Accountability scope**: when the seller stamps a vendor metric in `package.committed_metrics` (with `scope: "vendor"`), it is subject to the same `missing_metrics` contract on `get_media_buy_delivery` as standard metrics. Sellers who can't credibly attest to a vendor metric SHOULD NOT stamp it in `committed_metrics`; absence keeps the metric advisory and reconciliation falls back to `vendor_metric_values.measurable_impressions` coverage plus out-of-band verification via the vendor's measurement agent. The advisory-vs-accountable distinction is now explicit at the contract layer rather than asymmetric across metric scopes. + +#### Publisher Commitment + +When a reporting webhook is configured, publishers commit to sending: + +**(campaign_duration / reporting_frequency) + 1** notifications + +- One notification per frequency period during the campaign +- One final notification when the campaign completes +- If reporting data is delayed beyond the expected delay window, a `"delayed"` notification will be sent + +#### Webhook Payload + +Reporting webhooks send a full MCP webhook envelope. The delivery report itself uses the same payload structure as [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) with additional metadata, but it is nested under `result`. Do not send the inner delivery object as the top-level POST body. + +```json +{ + "idempotency_key": "whk_20240205_example_000005", + "operation_id": "delivery_report_mb001_2024_02_05", + "task_id": "delivery_report_mb001_2024_02_05_000005", + "task_type": "media_buy_delivery", + "status": "completed", + "timestamp": "2024-02-06T08:00:00Z", + "message": "Scheduled media buy delivery report available", + "result": { + "notification_type": "scheduled", + "sequence_number": 5, + "next_expected_at": "2024-02-06T08:00:00Z", + "reporting_period": { + "start": "2024-02-05T00:00:00Z", + "end": "2024-02-05T23:59:59Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { + "media_buy_id": "mb_001", + "status": "active", + "totals": { + "impressions": 125000, + "spend": 5625.0, + "clicks": 250, + "ctr": 0.002 + }, + "by_package": [] + } + ] + } +} +``` + +The inner `result` object can be shown or stored separately, but this shape is not valid as the top-level webhook POST body: + +```json +{ + "notification_type": "scheduled", + "sequence_number": 5, + "reporting_period": { + "start": "2024-02-05T00:00:00Z", + "end": "2024-02-05T23:59:59Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { + "media_buy_id": "mb_001", + "status": "active", + "totals": { + "impressions": 125000, + "spend": 5625.0 + }, + "by_package": [] + } + ] +} +``` + +**Fields:** +- **`idempotency_key`**: Unique per webhook event and stable across retries of that same event. Receivers dedupe by this field. +- **Top-level `status`**: Async webhook status, such as `"completed"` for a delivered report. +- **`notification_type`**: `"scheduled"` (regular update), `"final"` (campaign complete), `"delayed"` (data not yet available), `"adjusted"` (corrected data for the same window), or `"window_update"` (a wider measurement window supersedes an earlier one) +- **`sequence_number`**: Sequential notification number (starts at 1) +- **`next_expected_at`**: ISO 8601 timestamp for next notification (omitted for final notifications) +- **`media_buy_deliveries[].status`**: Media buy lifecycle or reporting status, distinct from the top-level async webhook status. +- **`media_buy_deliveries`**: Array of media buy delivery data (may contain multiple media buys aggregated by publisher) + +Webhook signatures and content digests are computed over the exact raw bytes of the full envelope being sent, not over a reserialized `result` object. + +#### Timezone Handling + +**All reporting MUST use UTC.** This eliminates DST complexity, simplifies reconciliation, and ensures consistent 24-hour reporting periods. + +```json +{ + "reporting_capabilities": { + "timezone": "UTC", + "available_reporting_frequencies": ["daily"], + "date_range_support": "date_range" + } +} +``` + +**Reporting periods:** +- Daily: 00:00:00Z to 23:59:59Z (always 24 hours) +- Hourly: Top of hour to 59:59 seconds (always 1 hour) +- Monthly: First to last day of month + +**Example webhook payload:** +```json +{ + "reporting_period": { + "start": "2024-02-05T00:00:00Z", + "end": "2024-02-05T23:59:59Z" + } +} +``` + +#### Delayed Reporting + +If reporting data is not available within the product's `expected_delay_minutes`, publishers send a notification with `notification_type: "delayed"`: + +```json +{ + "notification_type": "delayed", + "sequence_number": 3, + "next_expected_at": "2024-02-06T10:00:00Z", + "message": "Reporting data delayed due to upstream processing. Expected availability in 2 hours." +} +``` + +This prevents buyers from incorrectly assuming a missed notification. + +#### Measurement Maturation Windows + +For channels where billing-grade data is produced in **phases** rather than arriving final on day one, sellers declare `measurement_windows` on their products. Each window describes a maturation stage with its own expected availability. This pattern is used across channels: + +| Channel | Typical windows | +|---------|-----------------| +| Broadcast / linear TV | `live` (same day) → `c3` (~4 days) → `c7` (~15–22 days, guarantee basis) | +| DOOH | `tentative` (same day) → `final` post-IVT/fraud-check (~1 day, guarantee basis) | +| Digital with IVT filtering | raw → `post_givt` → `post_sivt` (~2–3 days, guarantee basis) | +| Podcast | `downloads_7d` → `downloads_30d` (guarantee basis) | + +Each window's numbers supersede the previous one. One window is typically the `is_guarantee_basis` — the number both sides reconcile against. The measurement vendor's processing time is captured in `expected_availability_days` on each window (it includes both accumulation and processing). + +For broadcast, delayed or sparse early-window data is usually a measurement-vendor settlement issue, not a seller-side metadata problem. Nielsen, Comscore, VideoAmp, or another named vendor may publish Live, C3, C7, Live+5, or market-level results in waves. During that period, sellers should label delivery as provisional or awaiting measurement-vendor finalization, preserve the `measurement_window`, and use `is_final`, `finalized_at`, `supersedes_window`, and delayed/window-update notifications to show what changed. Buyers should not fork creative records or product metadata to represent partial affiliate or station visibility; aggregate the seller's delivery rows by market, placement, daypart, creative, and measurement window instead. + +Sellers set `expected_delay_minutes` on their products to reflect the first-available data pipeline. The `measurement_windows` array on `reporting_capabilities` provides per-window timelines. + +Delivery data for products with measurement windows includes three fields on each package: + +- **`is_final`** — `true` when the seller considers this data closed for the reporting period. `false` when the data will be updated (wider window, more processing). Absent when the seller doesn't distinguish provisional from final. +- **`measurement_window`** — which window this data represents (e.g., `"c3"`). References a `window_id` from the product's `measurement_windows`. Absent for standard digital reporting without windowed maturation. +- **`supersedes_window`** — which previous window this report replaces (e.g., `"live"` when C3 data arrives). Absent on the first report for a period. + +When the seller sends updated data for the same period with a wider window, they use `notification_type: "window_update"`. This is distinct from `adjusted` (a correction within the same window). + +**Measurement window lifecycle example** — a broadcast spot airing March 1: + +**March 2** — Live data arrives (notification_type: `scheduled`): +```json +{ + "notification_type": "scheduled", + "media_buy_deliveries": [{ + "media_buy_id": "mb_nova_q4", + "by_package": [{ + "package_id": "primetime_30s", + "impressions": 980000, + "spend": 24500, + "is_final": false, + "measurement_window": "live" + }] + }] +} +``` + +**March 5** — C3 data supersedes live (notification_type: `window_update`): +```json +{ + "notification_type": "window_update", + "media_buy_deliveries": [{ + "media_buy_id": "mb_nova_q4", + "by_package": [{ + "package_id": "primetime_30s", + "impressions": 1050000, + "spend": 26250, + "is_final": false, + "measurement_window": "c3", + "supersedes_window": "live" + }] + }] +} +``` + +**March 16** — C7 data arrives, final for this period (notification_type: `window_update`): +```json +{ + "notification_type": "window_update", + "media_buy_deliveries": [{ + "media_buy_id": "mb_nova_q4", + "by_package": [{ + "package_id": "primetime_30s", + "impressions": 1120000, + "spend": 28000, + "is_final": true, + "measurement_window": "c7", + "supersedes_window": "c3" + }] + }] +} +``` + +The buyer replaces stored data each time a `window_update` arrives. When `is_final: true`, this is the number to reconcile against the guarantee. The same lifecycle shape applies to DOOH (`tentative` → `final`), digital with IVT filtering (`post_givt` → `post_sivt`), podcast (`downloads_7d` → `downloads_30d`), and any other channel where data matures in phases — only the window IDs and timing differ. + +For how `measurement_window` appears on billing terms and drives reconciliation and invoicing clocks, see [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability). + +#### Webhook Aggregation + +Publishers SHOULD aggregate webhooks to reduce call volume when multiple media buys share: +- Same webhook URL +- Same reporting frequency +- Same reporting period + +**Example**: Buyer has 100 active campaigns with daily reporting to the same endpoint. Publisher sends: +- **Without aggregation**: 100 webhooks per day (inefficient) +- **With aggregation**: 1 webhook per day containing all 100 campaigns (optimal) + +The `media_buy_deliveries` array may contain 1 to N media buys per webhook. Buyers should iterate through the array to process each campaign's data. + +**Aggregated webhook example:** +```json +{ + "notification_type": "scheduled", + "reporting_period": { + "start": "2024-02-05T00:00:00Z", + "end": "2024-02-05T23:59:59Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { "media_buy_id": "mb_001", "totals": { "impressions": 50000, "spend": 1750 }, ... }, + { "media_buy_id": "mb_002", "totals": { "impressions": 48500, "spend": 1695 }, ... }, + // ... 98 more media buys + ] +} +``` + +Buyers should iterate through the array and process each media buy independently. If aggregated totals are needed, calculate them from the individual media buy totals. + +#### Partial Failure Handling + +When aggregating multiple media buys into a single webhook, publishers must handle cases where some campaigns have data available while others don't. + +**Approach: Best-Effort Delivery with Status Indicators** + +Publishers SHOULD send aggregated webhooks containing all available data, using status fields to indicate partial availability: + +```json +{ + "notification_type": "scheduled", + "sequence_number": 5, + "reporting_period": { + "start": "2024-02-05T00:00:00Z", + "end": "2024-02-05T23:59:59Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { + "media_buy_id": "mb_001", + "status": "active", + "totals": { + "impressions": 50000, + "spend": 1750 + } + }, + { + "media_buy_id": "mb_002", + "status": "active", + "totals": { + "impressions": 48500, + "spend": 1695 + } + }, + { + "media_buy_id": "mb_003", + "status": "reporting_delayed", + "message": "Reporting data temporarily unavailable for this campaign", + "expected_availability": "2024-02-06T02:00:00Z" + } + ], + "partial_data": true, + "unavailable_count": 1 +} +``` + +**Key Fields for Partial Failures:** +- `partial_data`: Boolean indicating if any campaigns are missing data +- `unavailable_count`: Number of campaigns with delayed/missing data +- `status`: Per-campaign status (`"active"`, `"reporting_delayed"`, `"failed"`) +- `expected_availability`: When delayed data is expected (if known) + +**When to Use Partial Delivery:** +1. **Upstream delays**: Some data sources are slower than others +2. **System degradation**: Partial system outage affects subset of campaigns +3. **Data quality issues**: Specific campaigns fail validation, others proceed +4. **Rate limiting**: API limits prevent fetching all campaign data + +**When NOT to Use Partial Delivery:** +1. **Complete system outage**: Send `"delayed"` notification instead +2. **All campaigns affected**: Use `notification_type: "delayed"` +3. **Buyer endpoint issues**: Circuit breaker handles this (don't send at all) + +**Buyer Processing Logic:** +```javascript +function processAggregatedWebhook(webhook) { + if (webhook.partial_data) { + console.warn(`Partial data: ${webhook.unavailable_count} campaigns delayed`); + } + + for (const delivery of webhook.media_buy_deliveries) { + if (delivery.status === 'reporting_delayed') { + // Mark campaign as pending, retry via polling or wait for next webhook + markCampaignPending(delivery.media_buy_id, delivery.expected_availability); + } else if (delivery.status === 'active') { + // Process normal delivery data + processCampaignMetrics(delivery); + } else { + console.error(`Unexpected status for ${delivery.media_buy_id}: ${delivery.status}`); + } + } +} +``` + +**Best Practices:** +- Always include all campaigns in array, even if data unavailable (with status indicator) +- Set `partial_data: true` flag when any campaigns are delayed/failed +- Provide `expected_availability` timestamp if known +- Don't retry the entire webhook - buyers can poll individual campaigns if needed +- Track partial delivery rates in monitoring to detect systemic issues + +#### Privacy and Compliance + +##### PII Scrubbing for GDPR/CCPA + +Publishers MUST scrub personally identifiable information (PII) from all webhook payloads to ensure GDPR and CCPA compliance. Reporting webhooks should contain only aggregated, anonymized metrics. + +**What to Scrub:** +- User IDs, device IDs, IP addresses +- Email addresses, phone numbers +- Precise geolocation data (latitude/longitude) +- Cookie IDs, advertising IDs (unless aggregated) +- Any custom dimensions containing PII + +**What to Keep:** +- Aggregated metrics (impressions, spend, clicks, etc.) +- Coarse geography (city, state, country - not street address) +- Device type categories (mobile, desktop, tablet) +- Browser/OS categories +- Time-based aggregations + +**Example - Before PII Scrubbing (❌ DO NOT SEND):** +```json +{ + "media_buy_id": "mb_001", + "user_events": [ + { + "user_id": "user_12345", + "ip_address": "192.168.1.100", + "device_id": "abc-def-ghi", + "impressions": 1, + "lat": 40.7128, + "lon": -74.0060 + } + ] +} +``` + +**Example - After PII Scrubbing (✅ CORRECT):** +```json +{ + "media_buy_id": "mb_001", + "totals": { + "impressions": 125000, + "spend": 5625.00, + "clicks": 250 + }, + "by_package": [ + { + "package_id": "pkg_001", + "impressions": 125000, + "spend": 5625.00, + "by_geo": [ + { + "geo_level": "region", + "geo_code": "US-NY", + "geo_name": "New York", + "impressions": 45000, + "spend": 2025.00 + } + ], + "by_geo_truncated": false + } + ] +} +``` + +**Publisher Responsibilities:** +- Implement PII scrubbing at the data collection layer, not at webhook delivery +- Ensure aggregation thresholds prevent re-identification (e.g., minimum 10 users per segment) +- Document what data is collected vs. what is shared in webhooks +- Provide data processing agreements (DPAs) for GDPR compliance +- Support GDPR/CCPA data deletion requests + +**Buyer Responsibilities:** +- Do not request PII in `requested_metrics` or custom dimensions +- Understand that webhook data is aggregated and anonymized +- Implement proper data retention policies +- Include webhook data in privacy policies and user disclosures + +#### Implementation Best Practices + +1. **Handle Arrays**: Always process `media_buy_deliveries` as an array, even if it contains one element +2. **Idempotent Handlers**: Process duplicate notifications safely (webhooks use at-least-once delivery) +3. **Sequence Tracking**: Use `sequence_number` to detect missing or out-of-order notifications +4. **Fallback Polling**: Continue periodic polling as backup if webhooks fail +5. **Timezone Awareness**: Store publisher's reporting timezone for accurate period calculation +6. **Validate Frequency**: Ensure requested frequency is in product's `available_reporting_frequencies` +7. **Validate Metrics**: Ensure requested metrics are in product's `available_metrics` +8. **PII Compliance**: Never include user-level data in webhook payloads + +#### Webhook Health Monitoring + +Webhook delivery status is tracked through **AdCP's global task management system** (see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle)). + +When a media buy is created with `reporting_webhook` configured, the publisher creates an ongoing task for webhook delivery. Buyers can monitor webhook health using standard task queries. + +**Benefits of using task management:** +- Consistent status tracking across all AdCP operations +- Standard polling/webhook notification patterns +- Existing infrastructure for task status, history, and errors +- No need for media-buy-specific webhook health endpoints + +If webhook delivery fails persistently (circuit breaker opens), publishers update the task status to indicate the issue. Buyers detect this through normal task monitoring. + +### Offline-File-Delivery-Based Reporting + +**Example: Offline Delivery** +Publisher pushes daily report files to buyer's cloud storage: +``` +s3://buyer-reports/publisher_name/2024/02/05/media_buy_delivery.json.gz +``` + +File contains same structure as webhook payload but aggregated across all campaigns. Buyer processes files on their schedule. + +**When to Use Offline Delivery:** +- \>100 active campaigns with same buyer +- Hourly reporting requirements (24x cost reduction) +- High data volume (detailed breakdowns, dimensional data) +- Buyer has batch processing infrastructure + +Sellers declare their supported push-based delivery methods and protocols in `get_adcp_capabilities`. Polling via `get_media_buy_delivery` is always available — it is a required task for all `media_buy` sellers. +```json +{ + "media_buy": { + "reporting_delivery_methods": ["webhook", "offline"], + "offline_delivery_protocols": ["s3", "gcs"] + } +} +``` + +Buyers express a protocol preference when syncing accounts. The seller provisions the bucket using the preferred protocol if supported: +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com" }, + "operator": "pinnacle-media.com", + "billing": "operator", + "preferred_reporting_protocol": "s3" + }] +} +``` + +Products declare supported cadence and metrics in `reporting_capabilities`: +```json +{ + "reporting_capabilities": { + "available_reporting_frequencies": ["daily"], + "supports_webhooks": true, + "available_metrics": ["impressions", "spend", "clicks"], + "date_range_support": "date_range" + } +} +``` + +For offline delivery, the seller provisions storage per account and grants the buyer read access out-of-band. Sellers may use a dedicated bucket per account or a shared bucket with per-account `prefix` isolation — either way, the buyer can only access data under their account's path. When multiple buying platforms operate on the same brand, each gets a separate account (scoped by operator/agent), so their data is isolated by prefix. + +The bucket location appears on the account object returned by `sync_accounts`: +```json +{ + "account_id": "acc_pinnacle_001", + "status": "active", + "reporting_bucket": { + "protocol": "s3", + "bucket": "seller-reports", + "prefix": "accounts/pinnacle/adcp", + "region": "us-east-1", + "format": "jsonl", + "compression": "gzip", + "file_retention_days": 30, + "setup_instructions": "https://seller.example.com/docs/bucket-access" + } +} +``` + +Buyers read from the bucket on their own schedule. The seller pushes files at the product's reporting frequency. + +**Delivery method determines the reporting path:** +- `get_media_buy_delivery` is a required task for all `media_buy` sellers. Polling is always available as a baseline, regardless of which push methods the seller supports. +- When `reporting_delivery_methods` includes `offline` and a `reporting_bucket` is present on the account, the seller also pushes detailed delivery data to the bucket. Buyers with batch infrastructure should read from the bucket for efficiency. +- Files in the bucket are retained for `file_retention_days` (declared on the `reporting_bucket`). Buyers must read files within this window. +- `get_media_buys` always returns the media buy object with status, totals, and pacing snapshots. Use it for status checks, not detailed reporting. + +For offline file delivery, publishers can provide reporting data in JSON Lines (JSONL), CSV, Parquet, Avro, or ORC format. All formats preserve the nested JSON structure from webhook payloads, making them ideal for batch processing. + +JSONL and CSV files can be compressed with gzip (`.jsonl.gz`, `.csv.gz`) to reduce storage and transfer costs. Parquet, Avro, and ORC use internal compression — the top-level `compression` field is ignored for these formats. + +#### JSON Lines (JSONL) + +One media buy delivery per line (newline-delimited JSON). Each line contains a single media buy delivery object with its reporting period and package-level data. Preserves full nested structure. Easy to parse line-by-line for streaming processing. + +**Example JSONL file:** +```jsonl +{"notification_type": "scheduled", "sequence_number": 5, "next_expected_at": "2024-02-06T08:00:00Z", "reporting_period": {"start": "2024-02-05T00:00:00Z", "end": "2024-02-05T23:59:59Z"}, "currency": "USD", "media_buy_id": "mb_001", "status": "active", "totals": {"impressions": 50000, "spend": 1750.00, "clicks": 100, "ctr": 0.002}, "by_package": [{"package_id": "pkg_001", "impressions": 30000, "spend": 1050.00, "pacing_index": 0.95, "pricing_model": "cpm", "rate": 0.035, "currency": "USD"}, {"package_id": "pkg_002", "impressions": 20000, "spend": 700.00, "pacing_index": 0.98, "pricing_model": "cpm", "rate": 0.035, "currency": "USD"}]} +{"notification_type": "scheduled", "sequence_number": 5, "next_expected_at": "2024-02-06T08:00:00Z", "reporting_period": {"start": "2024-02-05T00:00:00Z", "end": "2024-02-05T23:59:59Z"}, "currency": "USD", "media_buy_id": "mb_002", "status": "active", "totals": {"impressions": 200000, "spend": 9000.00, "clicks": 400, "ctr": 0.002}, "by_package": [{"package_id": "pkg_003", "impressions": 200000, "spend": 9000.00, "pacing_index": 1.02, "pricing_model": "cpm", "rate": 45.00, "currency": "USD"}]} +{"notification_type": "scheduled", "sequence_number": 5, "next_expected_at": "2024-02-06T08:00:00Z", "reporting_period": {"start": "2024-02-05T00:00:00Z", "end": "2024-02-05T23:59:59Z"}, "currency": "USD", "media_buy_id": "mb_003", "status": "active", "totals": {"impressions": 75000, "spend": 3375.00, "clicks": 150, "ctr": 0.002}, "by_package": [{"package_id": "pkg_004", "impressions": 75000, "spend": 3375.00, "pacing_index": 0.96, "pricing_model": "cpcv", "rate": 0.045, "currency": "USD"}]} +``` + +#### CSV + +**For tabular analysis** + +CSV files require unnesting nested arrays. Each record should be unnested to the `by_package` level, meaning one row per package with parent-level data (reporting period, media buy info, totals) duplicated. + +**Example CSV structure:** +```csv +notification_type,sequence_number,next_expected_at,reporting_period_start,reporting_period_end,currency,media_buy_id,status,totals_impressions,totals_spend,totals_clicks,totals_ctr,by_package_package_id,by_package_impressions,by_package_spend,by_package_clicks,by_package_pacing_index,by_package_pricing_model,by_package_rate,by_package_currency +scheduled,5,2024-02-06T08:00:00Z,2024-02-05T00:00:00Z,2024-02-05T23:59:59Z,USD,mb_001,active,50000,1750.00,100,0.002,pkg_001,30000,1050.00,60,0.95,cpm,0.035,USD +scheduled,5,2024-02-06T08:00:00Z,2024-02-05T00:00:00Z,2024-02-05T23:59:59Z,USD,mb_001,active,50000,1750.00,100,0.002,pkg_002,20000,700.00,40,0.98,cpm,0.035,USD +scheduled,5,2024-02-06T08:00:00Z,2024-02-05T00:00:00Z,2024-02-05T23:59:59Z,USD,mb_002,active,200000,9000.00,400,0.002,pkg_003,200000,9000.00,400,1.02,cpm,45.00,USD +scheduled,5,2024-02-06T08:00:00Z,2024-02-05T00:00:00Z,2024-02-05T23:59:59Z,USD,mb_003,active,75000,3375.00,150,0.002,pkg_004,75000,3375.00,150,0.96,cpcv,0.045,USD +``` + +#### Parquet + +**For high-volume analytics** + +Columnar format optimized for analytics workloads. Excellent compression ratios. Supports nested structures natively. Best for data warehouses and big data processing. + +**Example Parquet schema:** +```json +{ + "type": "record", + "name": "MediaBuyDelivery", + "fields": [ + {"name": "notification_type", "type": "string"}, + {"name": "sequence_number", "type": "int"}, + {"name": "next_expected_at", "type": "string"}, + {"name": "reporting_period", "type": { + "type": "record", + "name": "ReportingPeriod", + "fields": [ + {"name": "start", "type": "string"}, + {"name": "end", "type": "string"} + ] + }}, + {"name": "currency", "type": "string"}, + {"name": "media_buy_id", "type": "string"}, + {"name": "status", "type": "string"}, + {"name": "totals", "type": { + "type": "record", + "name": "Totals", + "fields": [ + {"name": "impressions", "type": "long"}, + {"name": "spend", "type": "double"}, + {"name": "clicks", "type": "long"}, + {"name": "ctr", "type": "double"} + ] + }}, + {"name": "by_package", "type": { + "type": "array", + "items": { + "type": "record", + "name": "PackageDelivery", + "fields": [ + {"name": "package_id", "type": "string"}, + {"name": "impressions", "type": "long"}, + {"name": "spend", "type": "double"}, + {"name": "pacing_index", "type": "double"}, + {"name": "pricing_model", "type": "string"}, + {"name": "rate", "type": "double"}, + {"name": "currency", "type": "string"} + ] + } + }} + ] +} +``` + +#### Avro + +**For schema-rich streaming pipelines** + +Row-oriented format with embedded schema. Self-describing — readers don't need external schema files. Handles schema evolution (adding/removing fields) gracefully. Common in Kafka and Hadoop ecosystems. Uses internal compression (snappy, deflate, or zstd). + +**Example Avro schema:** +```json +{ + "type": "record", + "name": "MediaBuyDelivery", + "namespace": "org.example.reporting", + "fields": [ + {"name": "notification_type", "type": "string"}, + {"name": "sequence_number", "type": "int"}, + {"name": "next_expected_at", "type": "string"}, + {"name": "reporting_period", "type": { + "type": "record", + "name": "ReportingPeriod", + "fields": [ + {"name": "start", "type": "string"}, + {"name": "end", "type": "string"} + ] + }}, + {"name": "currency", "type": "string"}, + {"name": "media_buy_id", "type": "string"}, + {"name": "status", "type": "string"}, + {"name": "totals", "type": { + "type": "record", + "name": "Totals", + "fields": [ + {"name": "impressions", "type": "long"}, + {"name": "spend", "type": "double"}, + {"name": "clicks", "type": "long"}, + {"name": "ctr", "type": "double"} + ] + }}, + {"name": "by_package", "type": { + "type": "array", + "items": { + "type": "record", + "name": "PackageDelivery", + "fields": [ + {"name": "package_id", "type": "string"}, + {"name": "impressions", "type": "long"}, + {"name": "spend", "type": "double"}, + {"name": "pacing_index", "type": "double"}, + {"name": "pricing_model", "type": "string"}, + {"name": "rate", "type": "double"}, + {"name": "currency", "type": "string"} + ] + } + }} + ] +} +``` + +#### ORC + +**For Hive/Spark analytics** + +Columnar format optimized for read-heavy analytics on Hadoop-ecosystem tools (Hive, Spark, Presto). Predicate pushdown, built-in indexes, and lightweight compression (snappy, zlib, or zstd) reduce I/O. Supports nested structures via struct and array types. + +ORC uses the same logical schema as Parquet. Choose ORC when your data warehouse is Hive-native; choose Parquet for broader tool compatibility. + +**File Structure:** +Each file contains one media buy delivery per line (JSONL), row (CSV/Parquet/ORC), or record (Avro). Files may contain: +- Multiple media buy deliveries (one per line/row) +- Multiple reporting periods for the same media buy (separate rows) +- Multiple media buys (each with its own rows) + +**Processing Recommendations:** +- Process files in chronological order using file timestamps +- Handle duplicate files gracefully (idempotent processing) +- Validate file integrity using checksums if provided +- Monitor for missing files and alert on gaps + +### Security considerations for offline delivery + +Offline files sit at rest for `file_retention_days`, so a misconfigured IAM policy leaks historical reporting across tenants. The [general security controls](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) apply; the offline-specific requirements: + +- **Scope access at the IAM layer, not by obscurity.** Buyer read access MUST be scoped to `{bucket}/{prefix}/*` (S3 bucket policy condition, GCS conditional IAM binding on `resource.name.startsWith(...)`, or Azure SAS scoped to the prefix). A bucket-wide read grant is non-compliant even when the seller only writes under one prefix per account. +- **Scope listing as well as reads.** Prefix scoping MUST cover both object-level operations (`s3:GetObject`) and listing (`s3:ListBucket` with an `s3:prefix` condition). A policy that scopes `GetObject` to the prefix but leaves `ListBucket` unscoped lets a buyer enumerate other tenants' prefix names — a cross-tenant isolation failure even without read access to their objects. The same applies to GCS `storage.objects.list` and Azure `list` SAS permissions. +- **Revoke access when the account closes.** When the seller emits an `account.status` transition to `inactive`, `suspended`, or `closed`, the seller MUST stop honoring the associated credentials, and buyers SHOULD treat that status change as the trigger to remove matching IAM trust on their end. A seller IAM role left granted to a decommissioned bucket is a lateral-movement risk. + +PII scrubbing requirements (see [above](#pii-scrubbing-for-gdpr-ccpa)) apply to offline files identically — scrub at the collection layer, not at delivery, because the files accumulate at rest. + +`setup_instructions` is a seller-provided URL. It is operator-facing documentation, not agent-consumable content. Buyer agents MUST NOT auto-fetch the URL; they SHOULD surface it to a human operator. If an implementation chooses to fetch it (for example, to preview the target before showing it to the operator), apply [webhook URL SSRF validation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf), and the fetched content MUST NOT be passed into an LLM context without indirect-prompt-injection guarding — seller-controlled text in this field can contain instructions to rotate credentials, change billing, or alter downstream agent behavior. + +## Data Reconciliation + +**The `get_media_buy_delivery` API is the authoritative source of truth for all campaign metrics.** Polling is always available as a baseline. When the seller also supports push-based delivery (webhooks or offline buckets), those methods provide timely data but `get_media_buy_delivery` remains the reconciliation path. + +Reconciliation is important for **any reporting delivery method** because: +- **Webhooks**: May be missed due to network failures or circuit breaker drops +- **Offline files**: May be delayed, corrupted, or fail to process +- **Polling**: May miss data during API outages +- **Late-arriving data**: Impressions can arrive 24-48+ hours after initial reporting (all methods) + +#### Reconciliation Process + +Buyers SHOULD periodically reconcile delivered data against API to ensure accuracy: + +**Recommended Reconciliation Schedule:** +- **Hourly delivery**: Reconcile via API daily +- **Daily delivery**: Reconcile via API weekly +- **Monthly delivery**: Reconcile via API at month end + 7 days +- **Campaign close**: Always reconcile after campaign_end + attribution_window + +**Reconciliation Logic:** +```javascript +async function reconcileWebhookData(mediaBuyId, startDate, endDate) { + // Get authoritative data from API + const apiData = await adcp.getMediaBuyDelivery({ + media_buy_id: mediaBuyId, + date_range: { start: startDate, end: endDate } + }); + + // Compare with webhook data in local database + const webhookData = await db.getWebhookTotals(mediaBuyId, startDate, endDate); + + const discrepancy = { + impressions: apiData.totals.impressions - webhookData.impressions, + spend: apiData.totals.spend - webhookData.spend, + clicks: apiData.totals.clicks - webhookData.clicks + }; + + // Acceptable discrepancy thresholds + const impressionVariance = Math.abs(discrepancy.impressions) / apiData.totals.impressions; + const spendVariance = Math.abs(discrepancy.spend) / apiData.totals.spend; + + if (impressionVariance > 0.02 || spendVariance > 0.01) { + // Significant discrepancy (>2% impressions or >1% spend) + console.warn(`Reconciliation discrepancy for ${mediaBuyId}:`, discrepancy); + + // Update local database with authoritative API data + await db.updateCampaignTotals(mediaBuyId, apiData.totals); + + // Alert if discrepancy is unusually large + if (impressionVariance > 0.10 || spendVariance > 0.05) { + await alertOps(`Large reconciliation discrepancy detected`, { + media_buy_id: mediaBuyId, + webhook_totals: webhookData, + api_totals: apiData.totals, + discrepancy + }); + } + } + + return { + status: impressionVariance < 0.02 ? 'reconciled' : 'discrepancy_found', + api_data: apiData.totals, + webhook_data: webhookData, + discrepancy + }; +} +``` + +**Why Discrepancies Occur:** +1. **Delivery failures**: Webhooks missed, offline files corrupted, API timeouts during polling +2. **Late-arriving data**: Impressions attributed after initial reporting (all delivery methods) +3. **Data corrections**: Publisher adjusts metrics after initial reporting +4. **Processing errors**: Buyer-side failures to process delivered data +5. **Timezone differences**: Period boundaries may differ between delivery and API query + +**Source of Truth Rules:** +- **For billing**: Always use `get_media_buy_delivery` API at campaign end + attribution window +- **For real-time decisions**: Use delivered data (webhook/file/poll) for speed, reconcile later +- **For discrepancies**: API data wins, update local records accordingly +- **For audits**: API provides complete historical data, delivered data is ephemeral + +**Best Practices:** +- Store webhook `sequence_number` to detect missed notifications +- Run automated reconciliation daily for active campaigns +- Alert on discrepancies >2% for impressions or >1% for spend +- Use API data for all financial reporting and invoicing +- Document reconciliation process for audit compliance + +#### Late-Arriving Impressions + +Ad serving data often arrives with delays due to attribution windows, offline tracking, and pipeline latency. Publishers declare `expected_delay_minutes` in `reporting_capabilities`: +- **Display/Video**: Typically 4-6 hours +- **Audio**: Typically 8-12 hours +- **CTV**: May be 24+ hours + +This represents when **most** data is available, not **all** data. + +#### Handling Late Arrivals + +When late data arrives for a previously reported period, **resend that period** with `is_adjusted: true`: + +```json +{ + "notification_type": "adjusted", + "reporting_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-01T23:59:59Z" + }, + "media_buy_deliveries": [{ + "media_buy_id": "mb_001", + "is_adjusted": true, + "totals": { + "impressions": 51000, // Updated total (was 50000) + "spend": 1785 // Updated spend (was 1750) + } + }] +} +``` + +**Buyer Processing:** +```javascript +function processWebhook(webhook) { + for (const delivery of webhook.media_buy_deliveries) { + if (delivery.is_adjusted) { + // Replace entire period with updated totals + db.replaceCampaignPeriod( + delivery.media_buy_id, + webhook.reporting_period, + delivery.totals + ); + } else { + // Normal new period data + db.insertCampaignPeriod(delivery.media_buy_id, webhook.reporting_period, delivery.totals); + } + } +} +``` + +**When to send adjusted periods:** +- Significant data changes (>2% impression variance or >1% spend variance) +- Final reconciliation at campaign_end + attribution_window +- Data quality corrections + +With polling-only, buyers detect adjustments through reconciliation by comparing API results over time. + +#### Webhook Reliability + +Reporting webhooks follow AdCP's standard webhook reliability patterns: + +- **At-least-once delivery**: Same notification may be delivered multiple times +- **Best-effort ordering**: Notifications may arrive out of order +- **Timeout and retry**: Limited retry attempts on delivery failure + +See [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for detailed implementation guidance. + +## Optimization Strategies + +### Conversion optimization + +Set optimization goals on media buy packages to direct delivery toward specific outcomes — target CPC, CPV, ROAS, or CPA. Metric goals (clicks, views) work without event setup. Event goals require configured event sources and conversion data. + +See [Conversion Tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/) for the complete setup flow, and [Optimization Goals](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#optimization-goals) for the `optimization_goals` array reference. + +### Budget optimization +- **Reallocation** between high and low performing packages via [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) +- **Pacing adjustments** — switch between `even`, `asap`, or `front_loaded` delivery +- **Spend efficiency** — compare cost per acquisition across packages and shift budget to the best performers + +### Creative optimization +- **Performance analysis** by creative asset via [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) with by-creative breakdowns +- **A/B testing** — assign multiple creatives with weights via `creative_assignments` +- **Refresh strategies** — swap creatives via [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or inline `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) for inline-only sellers, to prevent fatigue + +### Targeting refinement +- **Geographic optimization** — adjust `targeting_overlay` based on delivery data by region +- **Frequency management** — tune `frequency_cap` (suppress cooldown or max_impressions/per/window cap) based on delivery patterns + +## Performance Feedback Loop +The performance feedback system enables AI-driven optimization by feeding back business outcomes to publishers. See [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) for detailed API documentation. + +### Performance Index Concept + +A normalized score indicating relative performance: +- `0.0` = No measurable value or impact +- `1.0` = Baseline/expected performance +- `> 1.0` = Above average (e.g., 1.45 = 45% better) +- `< 1.0` = Below average (e.g., 0.8 = 20% worse) + +### Sharing Performance Data + +Buyers can voluntarily share performance outcomes using the [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) task: + +```json +{ + "media_buy_id": "gam_1234567890", + "measurement_period": { + "start": "2024-01-15T00:00:00Z", + "end": "2024-01-21T23:59:59Z" + }, + "performance_index": 1.35, + "metric_type": "conversion_rate" +} +``` + +### Supported Metrics + +- **overall_performance**: General campaign success +- **conversion_rate**: Post-click or post-view conversions +- **brand_lift**: Brand awareness or consideration lift +- **click_through_rate**: Engagement with creative +- **completion_rate**: Video or audio completion rates +- **viewability**: Viewable impression rate +- **brand_safety**: Brand safety compliance +- **cost_efficiency**: Cost per desired outcome + +### How Publishers Use Performance Data + +Publishers can leverage performance indices to: + +1. **Optimize Delivery**: Shift impressions to high-performing segments +2. **Adjust Pricing**: Update CPMs based on proven value +3. **Improve Products**: Refine product definitions based on performance patterns +4. **Enhance Algorithms**: Train ML models on actual business outcomes + +### Privacy and Data Sharing + +- Performance feedback sharing is voluntary and controlled by the buyer +- Aggregate performance patterns may be used to improve overall platform performance +- Individual campaign details remain confidential to the buyer-publisher relationship + +### Dimension breakdowns + +Delivery data can be broken down across multiple dimensions within each package. Buyers request specific breakdowns via the `reporting_dimensions` parameter on `get_media_buy_delivery`. Each breakdown appears as a `by_*` array within `by_package` items, following the same composition pattern as `by_creative`. + +| Dimension | Breakdown field | Required fields | Additional fields | Capability declaration | +|-----------|----------------|-----------------|-------------------|------------------------| +| Geography | `by_geo` | `geo_level`, `geo_code`, `impressions`, `spend` | `system`, `country`, `geo_name` | `supports_geo_breakdown` | +| Device type | `by_device_type` | `device_type`, `impressions`, `spend` | — | `supports_device_type_breakdown` | +| Device platform | `by_device_platform` | `device_platform`, `impressions`, `spend` | — | `supports_device_platform_breakdown` | +| Audience | `by_audience` | `audience_id`, `audience_source`, `impressions`, `spend` | `audience_name` | `supports_audience_breakdown` | +| Demographic | `by_demographic` | `demographic`, `demographic_system`, `impressions`, `spend` | `age`, other delivery metrics | `supports_demographic_breakdown` | +| Placement | `by_placement` | `placement_id`, `impressions`, `spend` | `publisher_domain`, `placement_name` | `supports_placement_breakdown` | +| Spot/as-run | `by_spot` | `spot_id`, `aired_at` | `impressions`, `network`, `station`, `daypart`, other delivery metrics | `supports_spot_breakdown` | + +Each breakdown entry inherits all fields from `delivery-metrics` (clicks, conversions, and other optional metrics) plus its dimension-specific fields. Every entry requires the fields shown in the required fields column. Check `reporting_capabilities` on the product to discover which dimensions are available; product-level capabilities are authoritative because different products from the same seller may support different breakdowns. `supports_geo_breakdown`, `supports_demographic_breakdown`, and `supports_spot_breakdown` are structured declarations; the other capability declarations in this table are boolean flags. Within `supports_geo_breakdown`, `country` and `region` are booleans, while `metro` is keyed by `metro-system` values and native `postal_area` is keyed by ISO 3166-1 alpha-2 country with arrays of country-local `postal-system` values. Geo rows use `system` for `geo_level: "metro"` and `"postal_area"`; native postal rows also include `country`. Deprecated country-fused postal systems remain accepted for compatibility. + +Demographic targeting and demographic reporting are separate product capabilities. A product may execute an exact buyer predicate while its measurement source reports only fixed buckets. For example, a social product might declare continuous targeting for ages 18–65 but the following reporting capability: + +```json test=false +{ + "supports_demographic_breakdown": { + "age": { + "reporting_modes": ["enumerated_intervals"], + "intervals": [ + { + "age": { "min": 25, "max": 34, "include_unknown": false }, + "demographic": "25-34", + "demographic_system": "custom" + } + ] + }, + "demographic_systems": ["custom"], + "may_suppress_small_cells": true + } +} +``` + +That product can target 26–30 if its separate `demographic_targeting` declaration allows it, but it cannot report 26–30. The buyer sees the 25–34 reporting interval before purchase and MUST NOT treat that wider row as delivery against the requested target. `reporting_dimensions.demographic.age_ranges` requests exact output ranges; every range must be supported by `exact_predicates` or equal a declared interval. Omitting `age_ranges` asks for the seller's native declared breakdown. + +Demographic rows pair a free-form `demographic` code with its `demographic_system`, such as `P25-54` with `nielsen`. When the capability or request identifies an age interval, the row also carries canonical `age`; that structured predicate, not a parsed label, is authoritative. `by_demographic_suppressed` discloses privacy or measurement-threshold omissions separately from `by_demographic_truncated`. + +Placement identity is publisher-scoped. Placement rows MAY carry `publisher_domain`, the publisher namespace from the product's `placements[]` entry, so buyers can treat `{publisher_domain, placement_id}` as the stable placement identity for multi-publisher products when it is present. Sellers SHOULD emit `publisher_domain` whenever the product placement carries it (always true for `kind: "publisher_ref"`); sellers MAY omit it only for `kind: "seller_inline"` placements in a legacy single-publisher context where the seller agent's own domain is the namespace. When `publisher_domain` is omitted, buyers MAY interpret `placement_id` relative to the seller agent's own publisher domain only in that legacy single-publisher context; otherwise buyers should not infer a cross-publisher placement key. `publisher_domain` is single-valued because each placement belongs to exactly one publisher namespace. + +Spot rows are channel-neutral as-run records: TV sellers commonly populate `network`, radio sellers commonly populate `station`, and either may populate both. `spot_id` is stable across measurement-window updates; `aired_at` proves the airing. Sellers MUST order rows by `aired_at` ascending. An empty `reporting_dimensions.spot` request asks for the complete log for the reporting period; an optional `limit` may bound the response. `by_spot_truncated` indicates whether the log is complete. + +Spot metrics are optional because airing evidence and audience measurement mature independently. `supports_spot_breakdown.available_metrics` tells the buyer which metrics the product can eventually produce at spot grain. A Live row may contain only `{ spot_id, aired_at }`; the same `spot_id` can reappear under C3 or C7 with `impressions`. An absent `impressions` field means unavailable at that measurement window or not declared at spot grain. `impressions: 0` means a measured zero and is never interchangeable with omission; sellers do not emit `null`. + +Breakdowns are opt-in — no dimension data is returned unless explicitly requested. Sellers that don't support a requested dimension silently omit it. An unsupported `demographic.age_ranges` value on a product that otherwise supports the dimension returns `UNSUPPORTED_FEATURE`; sellers never widen or narrow it silently. Each breakdown array has a sibling `by_*_truncated` boolean indicating whether additional non-suppressed rows exist beyond the requested `limit`. + +## Targeting Consistency +Reporting aligns with AdCP's [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) approach, enabling: +- **Consistent analysis** across campaign lifecycle +- **Granular breakdowns** by targeting parameters +- **Cross-campaign insights** for portfolio optimization + +### Target → Measure → Optimize +The power of consistent targeting and reporting creates a virtuous cycle: + +1. **Target**: Define your audience using briefs and overlays (e.g., "Mobile users in major metros") +2. **Measure**: Report on the same attributes (Track performance by device type and geography) +3. **Optimize**: Feed performance back to improve delivery (Shift budget to high-performing segments) + +## Standard Metrics + +All platforms must support these core metrics: + +- **impressions**: Number of ad views +- **spend**: Amount spent in currency +- **clicks**: Number of clicks (if applicable) +- **ctr**: Click-through rate (clicks/impressions) + +Optional standard metrics: + +- **conversions**: Post-click/view conversions +- **viewability**: Percentage of viewable impressions +- **completion_rate**: Video/audio completion percentage +- **engagement_rate**: Platform-specific engagement metric + +## Platform-Specific Considerations + +Different platforms offer varying reporting and optimization capabilities: + +### Google Ad Manager +- Comprehensive dimensional reporting, real-time and historical data, advanced viewability metrics + +### Kevel +- Real-time reporting API, custom metric support, flexible aggregation options + +### Triton Digital +- Audio-specific metrics (completion rates, skip rates), station-level performance data, daypart analysis + +## Advanced Analytics + +### Cross-Campaign Analysis +- **Portfolio performance** across multiple campaigns +- **Audience overlap** and frequency management +- **Budget allocation** optimization across campaigns + +### Predictive Insights +- **Performance forecasting** based on historical data +- **Optimization recommendations** from AI analysis +- **Trend prediction** for proactive adjustments + +## Response Times + +Optimization operations have predictable timing: +- **Delivery reports**: ~60 seconds (data aggregation) +- **Campaign updates**: Minutes to days (depending on changes) +- **Performance analysis**: ~1 second (cached metrics) + +## Best Practices + +1. **Report Frequently**: Regular reporting improves optimization opportunities +2. **Track Pacing**: Monitor delivery against targets to avoid under/over-delivery +3. **Analyze Patterns**: Look for performance trends across dimensions +4. **Consider Latency**: Some metrics may have attribution delays +5. **Normalize Metrics**: Use consistent baselines for performance comparison + +## Integration with Media Buy Lifecycle + +Optimization and reporting is the ongoing phase that runs throughout active campaigns: + +- **Connects to Creation**: Use learnings to improve future campaign setup +- **Guides Updates**: Data-driven decisions for campaign modifications +- **Enables Scale**: Proven strategies can be applied to similar campaigns +- **Feeds AI**: Performance data improves automated optimization + +## Related Documentation + +- **[`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery)** - Retrieve delivery reports +- **[`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy)** - Modify campaigns based on performance +- **[Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys)** - Complete campaign management workflow +- **[Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting)** - Brief-based targeting and overlays diff --git a/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance.mdx b/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance.mdx new file mode 100644 index 0000000000..accdc43011 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance.mdx @@ -0,0 +1,215 @@ +--- +title: Policy compliance +description: "AdCP policy compliance — how publishers enforce brand safety and regulatory checks during product discovery and media buy creation. Includes policy types and violation handling." +"og:title": "AdCP — Policy Compliance" +--- + + +AdCP includes comprehensive policy compliance features to ensure brand safety and regulatory compliance across all advertising operations. This document explains how publishers should implement and enforce policy checks throughout the media buying lifecycle. + +## Overview + +Policy compliance in AdCP uses the `brand` field when advertiser-specific context is available. `brand` is optional for `get_products` unless the request includes `catalog`; it is required for `create_media_buy`. Brand context enables publishers to: + +- Filter inappropriate advertisers before showing inventory +- Enforce category-specific restrictions +- Maintain brand safety standards +- Comply with regulatory requirements + +## Brand + +Buyers should include `brand` in `get_products` when the advertiser is known so sellers can return context-rich recommendations and apply advertiser-specific policy checks. A catalog-bearing `get_products` request must include `brand`, and every `create_media_buy` request must include `brand`. + +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +The brand domain resolves `/.well-known/brand.json`. On a single-brand domain, `brand_id` can be omitted. On a house or portfolio domain, use `brand_id` to select the intended entry. The selected entry provides: +- **Brand name and identity** for verification +- **Industries** for policy filtering +- **Brand assets** for creative compliance + +Callers can supply `brand.industries` as a per-request override when the canonical entry is missing or does not describe the campaign's current industry context. When that field is absent, sellers and governance agents resolve `industries` from the selected `brand.json` entry. + +Combined with the `brief` field (which describes what's being promoted), publishers have fuller context for policy decisions. When `brand` is absent from a non-catalog discovery request, a seller may apply general policy rules or limit the products it returns rather than perform advertiser-specific checks. + +For comprehensive guidance on briefs and brand information, see [Brief Expectations](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations). + +## Policy check implementation + +Publishers must implement policy checks at two key points in the workflow: + +### 1. During product discovery (`get_products`) + +When a `get_products` request is received, the publisher should: + +1. Require `brand` when `catalog` is present +2. When `brand` is present, validate it and resolve the selected brand entry and its `industries` +3. Apply advertiser-specific policy checks when that context is available +4. Otherwise, apply general policy rules or limit discovery +5. Filter out unsuitable products + +**Example policy context resolution:** +```python +def resolve_policy_industries(brand: dict | None) -> list[str] | None: + if brand is None: + return None + + manifest = fetch_brand_json(brand["domain"]) + brand_entry = select_brand_entry(manifest, brand.get("brand_id")) + + if "industries" in brand: + return brand["industries"] + return brand_entry.get("industries", []) +``` + +If this function returns `None`, apply general discovery policy or limit the returned products. Otherwise, evaluate policy against the resolved industries and any other applicable request context. + +### 2. During media buy creation (`create_media_buy`) + +When creating a media buy, the publisher must first require `brand`, then: + +1. Validate the `brand` against publisher policies +2. Ensure consistency with the campaign brief +3. Flag for manual review if needed +4. Return appropriate errors for violations + +## Policy outcomes + +AdCP does not define a separate policy-compliance status or response field. Use the task status and error model that matches the outcome. + +### Products can be returned + +When policy checks pass, return the ordinary completed response. An empty `products` array means the search completed but no products matched. + +```json +{ + "status": "completed", + "products": [], + "cache_scope": "public", + "message": "No products matched the request." +} +``` + +### More information is needed + +Use `input-required` only when the buyer must supply information before the seller can continue. Include `task_id` and `context_id` so the buyer can continue the same task, plus the status-specific reason and optional suggestions. + +```json +{ + "status": "input-required", + "task_id": "task_policy_clarification_001", + "context_id": "ctx_policy_clarification_001", + "message": "Which country will this campaign target?", + "reason": "CLARIFICATION_NEEDED", + "suggestions": ["United States", "Canada"] +} +``` + +### Seller-side review continues asynchronously + +Seller-internal review does not require buyer input. When a well-formed `brief` or `refine` request needs human review that cannot finish within the current time budget, return `submitted` with a `task_id`; use `working` for subsequent progress. Wholesale discovery is synchronous and does not use these async states. + +### The seller declines a well-formed request + +When the request is valid and understood but the seller makes a business decision not to offer products, use the typed `rejected` outcome. This remains a successful transport response. + +```json +{ + "status": "rejected", + "reason": "This publisher does not offer inventory for the requested campaign.", + "suggestions": ["Try a different channel or publisher."] +} +``` + +### The request violates a policy + +When the request itself violates an applicable content or advertising policy and can be corrected, return a failed response with `POLICY_VIOLATION`. Populate `errors[]` and mirror the fatal error in `adcp_error` so clients can handle both response layers. + +```json +{ + "status": "failed", + "message": "The request violates an applicable advertising policy.", + "errors": [ + { + "code": "POLICY_VIOLATION", + "message": "The requested campaign is not permitted on this inventory.", + "field": "brand", + "recovery": "correctable", + "details": { + "policy_id": "publisher-restricted-industries", + "policy_url": "https://publisher.example/policies/restricted-industries", + "violated_rules": ["restricted-industry"] + } + } + ], + "adcp_error": { + "code": "POLICY_VIOLATION", + "message": "The requested campaign is not permitted on this inventory.", + "field": "brand", + "recovery": "correctable" + } +} +``` + +## Creative Validation + +All uploaded creatives should be validated against the declared brand identity: + +1. **Automated Analysis**: Use creative recognition to verify brand consistency +2. **Human Review**: Manual verification for sensitive categories +3. **Continuous Monitoring**: Ongoing checks during campaign delivery + +This ensures: +- Creative content matches the declared brand +- No misleading or deceptive advertising +- Brand safety for all parties + +## Common Policy Categories + +Publishers typically implement restrictions for: + +### Blocked Categories +- Illegal products or services +- Prohibited content (varies by region) +- Categories requiring special licensing + +### Restricted Categories (Manual Approval) +- Alcohol (may require age-gating) +- Gambling/Gaming +- Cryptocurrency/Financial services +- Political advertising +- Healthcare/Pharmaceuticals +- Dating services + +### Special Requirements +- Political ads may require disclosure +- Healthcare may need disclaimers +- Financial services need compliance review + +## Implementation Best Practices + +1. **Clear Communication**: Provide specific reasons for restrictions +2. **Contact Information**: Include sales contact for restricted categories +3. **Consistent Enforcement**: Apply policies uniformly across all advertisers +4. **Documentation**: Maintain clear policy documentation for advertisers +5. **Appeals Process**: Allow advertisers to request policy exceptions + +## Integration with HITL + +Keep the two human-in-the-loop paths distinct: + +- **Buyer clarification:** Return `input-required` only when the buyer must answer a question. Include `task_id` and `context_id`, then continue that task context after the buyer responds. +- **Seller-internal review:** For `brief` or `refine`, return `submitted` when review cannot finish within the current time budget and `working` while it remains active. Do not use `input-required` merely because a seller-side reviewer is involved. + +After review, return the canonical completed, rejected, or failed outcome. + +## Related Documentation + +- [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) - Product discovery with policy checks +- [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) - Media buy creation with validation +- [Accounts & Security](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security) - Authentication and authorization diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations.mdx new file mode 100644 index 0000000000..666b017a08 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations.mdx @@ -0,0 +1,188 @@ +--- +title: Brief expectations +description: "How buyers and sellers use briefs alongside offer filters, targeting overlays, future targeting requirements, and refinement." +"og:title": "AdCP — Brief expectations" +--- + +A brief gives a seller the campaign meaning needed for curation. It is not a +second schema written in prose. Buyers preserve goals, context, semantic intent, +preferences, and requirements without a structured AdCP representation in the +brief; they put machine-representable facts in typed fields. + +## When a brief is used + +| Task | Brief rule | Purpose | +|---|---|---| +| `list_products` | Not accepted | Read matching product offers without seller curation | +| `request_proposals` | Required | Ask the seller to curate one or more draft plans | +| `refine_proposals` | Not repeated | Revise a proposal with structured fields, a semantic `ask`, or both; or finalize a draft without changing terms | +| `get_products` | Depends on `buying_mode` | Compatibility facade for the same list, proposal, and refinement behaviors | + +For `buying_mode: "brief"`, `brief` is required. +For `buying_mode: "wholesale"`, omit `brief`. +For `buying_mode: "refine"`, omit `brief` and use the `refine` array instead. + +The `brand` field is optional for `get_products` unless the request includes `catalog`. When supplied, the seller may use it to apply general policy rules or limit discovery. A `create_media_buy` request always must include `brand`. + +Offer filters remain hard in every lifecycle. The task changes curation and +state behavior, not whether filters apply. The split tasks name them +`criteria.offer_filters`; legacy `get_products` names the equivalent field +`filters`. + +## Decompose the buyer request + +| Input | Use it for | Example | +|---|---|---| +| `brief` | Goals, semantic audience descriptions, context, soft preferences, untyped hard requirements | “Build consideration among outdoor enthusiasts in trusted adventure contexts” | +| `criteria.offer_filters` | Which offers may be returned: channel, format, commercial terms, dates, budget, reporting | `channels: ["ctv"]` | +| `criteria.targeting_overlay` | Which inventory or impressions may deliver; values known now | `geo_countries: ["US"]` | +| `criteria.required_overlay_support` | Targeting dimensions the buyer must select independently on packages later | Nielsen DMA support | +| refinement `criteria` | Structured changes to a referenced proposal | Replace the country overlay | +| refinement `ask` | Semantic changes without a structured field | Favor premium adventure contexts | + +Anything that has a structured AdCP field SHOULD use it. This costs fewer +tokens, can be validated and applied by code, and avoids lossy prose extraction. + +### Structured-first example + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441001", + "brand": { "domain": "acmeoutdoor.example" }, + "brief": "Launch a premium trail shoe to outdoor enthusiasts. Favor trusted adventure and fitness contexts and optimize for completed video views.", + "criteria": { + "offer_filters": { + "channels": ["ctv", "olv"], + "pricing_currencies": ["USD"], + "required_metrics": ["completed_views"], + "start_date": "2027-03-01", + "end_date": "2027-03-31", + "budget_range": { "max": 50000, "currency": "USD" } + }, + "targeting_overlay": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 25, "max": 44, "include_unknown": false } + } + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] } + } + } +} +``` + +The seller curates for the semantic audience and contexts, excludes offers that +fail the product filters, scopes every returned forecast and price to the US +age predicate, and returns only products that let packages select Nielsen DMA +values later. The request does not ask for one product per DMA. + +## Hard requirements in prose + +An explicit hard requirement remains binding even when the buyer puts it only +in the brief. A seller MUST NOT downgrade “US only” or “must exclude news” to a +preference merely because it was written in prose. + +When hard targeting came from prose and the seller's structured interpretation +materially affects product eligibility, pricing, or forecasting, the seller +MUST confirm that interpretation in response-root +`targeting_resolution.brief_targeting` for `request_proposals` and +`get_products`, or in the affected `refine_proposals.results[]` entry when the +interpretation came from the refinement `ask`. In other cases the +seller SHOULD still confirm it as a best practice. Requirements without a typed +AdCP representation remain visible in the natural-language response. + +`brief_targeting` is confirmation, not a counteroffer. If a product cannot +honor the seller's literal interpretation of a hard prose constraint, the +seller omits that product. Structured `modifications` apply only to a buyer's +explicit `targeting_overlay` proposal flow. + +If prose contradicts a structured field, the seller MUST reject the request as +`INVALID_REQUEST` rather than silently choose one interpretation. The buyer +corrects the contradiction and retries. + +## How buyers evaluate targeting resolution + +| Response state | Buyer conclusion and action | +|---|---| +| Structured overlay; no `targeting_resolution` | Overlay accepted exactly | +| `targeting_resolution.modifications` | Compare the ordered proposed changes; selecting the configured product accepts them | +| Hard prose plus `brief_targeting` | Verify the seller’s structured interpretation before selection | +| Hard prose without confirmation | Do not infer acceptance; inspect the seller’s prose or clarify before purchase | + +Unchanged structured overlays are not repeated. This prevents large values such +as hundreds of postal codes from bouncing through discovery responses. + +## What belongs in the brief + +Useful brief content includes: + +- business objective and why the campaign exists; +- semantic audience meaning such as “outdoor enthusiasts” or “IT decision + makers modernizing cloud infrastructure”; +- creative and product context; +- success priorities and tradeoffs not captured by typed metrics; +- sensitive adjacency or competitive context without a typed control; +- soft preferences, clearly distinguished from hard requirements. + +Do not duplicate exact dates, budget, currency, channels, formats, geography, +demographic predicates, or other values already carried in structured fields. + +## Seller processing + +For `request_proposals`, sellers: + +1. Validate structured fields before natural-language interpretation. +2. Reject contradictions between hard prose and structured fields. +3. Apply filters, targeting, and required future-support matching. +4. Interpret the remaining brief for curation and relevance. +5. Scope product pricing and forecasts to effective targeting. +6. Return draft proposals with `brief_relevance` where useful and disclose targeting resolution. + +Sellers may ask focused clarification questions when semantic intent is too +ambiguous to curate responsibly. They do not need clarification for exact +values already supplied structurally. + +```mermaid +graph TD + A[Receive discovery task] --> B[Validate structured fields] + B --> C{Contradiction?} + C -->|Yes| D[INVALID_REQUEST] + C -->|No| E[Apply filters and targeting] + E --> F{Task} + F -->|list_products| G[Return matching feed products] + F -->|request_proposals| H[Interpret semantic brief and curate] + F -->|refine_proposals| I[Resolve proposal IDs and apply refinement] + H --> J[Return configured products and resolution] + I --> J +``` + +## Listing and refinement + +Listing is not “targeting later.” It is non-curated product-feed behavior. +Buyers may still send `offer_filters`, `targeting_overlay`, and +`required_overlay_support`; returned products must honor them exactly as in +proposal mode. The legacy `get_products` wholesale mode has the same rule. + +For `action: "revise"`, refine requests are self-contained through opaque +product/proposal IDs plus structured fields, a semantic `ask`, or both. +`action: "finalize"` changes no commercial or targeting terms and cannot carry +revision fields. See [Refining products and proposals](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement). + +## Implementation checklist + +### Buyers + +- Preserve business language and semantic intent in `brief`. +- Extract machine-representable facts into structured fields. +- Mark hard versus preferred requirements clearly. +- Inspect every targeting resolution before selecting a product. +- Treat configured product IDs as opaque and context-bound until `expires_at`. + +### Sellers + +- Apply hard requirements in every request surface. +- Never infer a structured value when the buyer already supplied it. +- Never silently resolve a contradiction or unsupported constraint. +- Confirm brief-derived targeting when possible. +- Bind effective targeting, price, forecast, and terms to the returned product. diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments.mdx new file mode 100644 index 0000000000..b960c2eed0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments.mdx @@ -0,0 +1,1018 @@ +--- +title: Collections and installments +description: "AdCP collections and installments — model podcast, CTV, and streaming content as dimensions on media products. Enables collection-level targeting and installment-specific ad placement." +"og:title": "AdCP — Collections and installments" +testable: true +--- + +{/* Using latest because this schema is not yet released in any version. + Update to correct version alias after the next release. */} + +A [product](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) describes inventory along three independent axes: + +- **Publisher properties** — WHERE the ad runs (youtube.com, spotify.com) +- **Collections / installments** — WHAT CONTENT the ad runs in or around (a specific series and its installments) +- **Placements** — WHAT POSITION the ad appears in (pre-roll, mid-roll, host read) + +Collections and placements are parallel dimensions, not hierarchical. "Pre-roll" is a position. "Pinnacle Challenge" is content. A product combines them: "pre-roll on Pinnacle Challenge on Acme Streaming." + +## Channel mapping + +The collection/installment model maps to familiar concepts across media channels: + +| Channel | Collection = | Installment = | Example | +|---|---|---|---| +| Podcast | Program | Episode | "Serial" → "Chapter 1" | +| Linear TV / CTV | Series | Episode / Airing | "Monday Night Football" → "Week 12" | +| Print / Magazine | Publication | Issue | "Vogue Germany" → "May 2026" | +| Newsletter | Publication | Edition | "Money Stuff" → "Tuesday March 24" | +| YouTube / Social | Series | Video / Post | "Hot Ones" → "Gordon Ramsay" | +| DOOH | Network / Loop | Rotation | "Times Square Loop" → "March Rotation" | +| Influencer | Campaign | Post / Drop | "Spring Collection" → "Launch Post" | +| Cinema | Run | Screening | "Summer Blockbuster Run" → "Opening Weekend" | +| Radio | Program | Broadcast | "Morning Drive" → "March 24 Broadcast" | + +The `kind` field on each collection indicates how to interpret it and its installments. + +## The collection object + +A collection is a persistent content program that produces installments over time. Collections work like properties — publishers declare them in their `adagents.json`, and products reference them via `collections` selectors with `publisher_domain` and `collection_ids`. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `collection_id` | string | Yes | Publisher-assigned identifier. Declared in the publisher's `adagents.json`. Products reference collections via `collections` selectors. Use distribution identifiers for cross-seller matching. | +| `kind` | string | No | What kind of content program: `series` (TV/podcast), `publication` (print issues), `event_series` (live events), `rotation` (DOOH). Defaults to `series`. | +| `name` | string | Yes | Human-readable collection name | +| `description` | string | No | What the collection is about | +| `genre` | string[] | No | Genre tags. When `genre_taxonomy` is present, values are taxonomy IDs (e.g., IAB Content Taxonomy 3.0). Otherwise free-form. | +| `genre_taxonomy` | string | No | Taxonomy system for genre values (e.g., `iab_content_3.0`). Recommended for machine-readable brand safety. | +| `language` | string | No | Primary language (BCP 47) | +| `content_rating` | object | No | Baseline rating: `system` + `rating`. Systems: `tv_parental`, `mpaa`, `podcast`, `esrb`, `bbfc`, `fsk`, `acb`, `custom`. Episodes can override. | +| `cadence` | string | No | `daily`, `weekly`, `seasonal`, `event`, `irregular` | +| `season` | string | No | Current or most recent season identifier (e.g., `"3"`, `"2026"`) | +| `status` | string | No | `active`, `hiatus`, `ended`, `upcoming` | +| `production_quality` | string | No | `professional`, `prosumer`, `ugc`. Seller-declared. Maps to OpenRTB `content.prodq`. | +| `talent` | array | No | Hosts, recurring cast, creators. Each entry has `role`, `name`, and optional `brand_url` linking to [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json). | +| `special` | object | No | When present, this collection is a special — content anchored to a real-world event or occasion. See [specials and limited series](#specials-and-limited-series). | +| `limited_series` | object | No | When present, this collection is a limited series — a bounded run with a defined arc and end date. See [specials and limited series](#specials-and-limited-series). | +| `distribution` | array | No | Where this collection is distributed, with platform-specific identifiers per publisher. | +| `deadline_policy` | object | No | Default deadline rules for installments. Agents compute absolute deadlines from `scheduled_at` minus `lead_days`. Episodes with explicit `deadlines` override. See [deadline policy](#deadline-policy). | +| `related_collections` | array | No | Relationships to other collections: `spinoff`, `companion`, `sequel`, `prequel`, `crossover`. Each entry has `collection_id` + `relationship`. References are scoped to the same publisher's `adagents.json`. Symmetric types (`companion`, `crossover`) do not require both collections to declare. | + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/collection.json", + "collection_id": "pinnacle_challenge", + "name": "The Pinnacle Challenge", + "description": "Competition reality collection with extreme physical and mental challenges", + "genre": ["IAB1", "IAB1-6"], + "genre_taxonomy": "iab_content_3.0", + "language": "en", + "content_rating": { + "system": "tv_parental", + "rating": "TV-PG" + }, + "cadence": "weekly", + "season": "1", + "status": "active", + "production_quality": "professional", + "talent": [ + { + "role": "host", + "name": "Jordan Vega", + "brand_url": "https://jordanvega.example.com/brand.json" + } + ], + "distribution": [ + { + "publisher_domain": "youtube.com", + "identifiers": [ + { "type": "youtube_channel_id", "value": "UCexample123456" } + ] + }, + { + "publisher_domain": "acmestreaming.example.com", + "identifiers": [ + { "type": "imdb_id", "value": "tt9876543" } + ] + } + ] +} +``` + +## The installment object + +An installment is a specific installment of a collection. Not all installments will be known in advance — a weekly podcast may only have next week's installment scheduled, and some installments may be tentative (a playoff Game 7 depends on Game 6). + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `installment_id` | string | Yes | Unique identifier within the collection | +| `collection_id` | string | When needed | Parent collection. Required when the product spans multiple collections. | +| `name` | string | No | Episode title | +| `season` | string | No | Season identifier (e.g., `"1"`, `"2026"`) | +| `installment_number` | string | No | Episode number within the season | +| `scheduled_at` | datetime | No | When the installment airs or publishes | +| `status` | string | No | `scheduled`, `tentative`, `live`, `postponed`, `cancelled`, `aired`, `published` | +| `duration_seconds` | integer | No | Expected duration | +| `flexible_end` | boolean | No | Whether end time is approximate (live events) | +| `valid_until` | datetime | No | When this data expires. Agents should re-query before committing budget to tentative installments. | +| `content_rating` | object | No | Overrides the collection's baseline when present | +| `topics` | string[] | No | Installment-level content topics for brand safety. Uses collection's `genre_taxonomy` when present. | +| `special` | object | No | Installment-specific event context. When present, this installment is anchored to a real-world event. Overrides the collection-level `special`. | +| `guest_talent` | array | No | Installment-specific guests. Additive to the collection's recurring `talent`. | +| `ad_inventory` | object | No | Break-based ad inventory configuration | +| `deadlines` | object | No | Booking, cancellation, and material submission deadlines for this installment. See [installment deadlines](#installment-deadlines). | +| `derivative_of` | object | No | When this installment is a clip, highlight, or recap derived from a full installment. Has `installment_id` + `type` (`clip`, `highlight`, `recap`, `trailer`, `bonus`). Source `installment_id` must be in the same response. | + +### Episode status lifecycle + +| Status | Meaning | +|--------|---------| +| `scheduled` | Confirmed, will happen | +| `tentative` | May not happen (depends on external conditions) | +| `live` | Currently airing or streaming right now | +| `postponed` | Was scheduled but delayed to a future date | +| `cancelled` | Will not happen | +| `aired` | Already broadcast — for back-catalog and replay inventory | +| `published` | Already released — for on-demand catch-up inventory | + +Expected transitions: `scheduled` or `tentative` → `live` → `aired` or `published`. A `scheduled` installment may become `postponed` (delayed) or `cancelled`. A `postponed` installment returns to `scheduled` when rescheduled. A `tentative` installment resolves to `scheduled`, `cancelled`, or `postponed`. + +### Inheritance from collections + +Episodes inherit collection-level fields they do not override: + +- **`content_rating`**: Episode value overrides collection baseline. When absent, the collection's rating applies. +- **`special`**: Episode value overrides collection-level special. When absent, the collection's special applies. A regular collection can have event-anchored installments (e.g., a daily news collection with an election night special). +- **`guest_talent`**: Additive to the collection's recurring `talent` — does not replace it. +- **`topics`**: Additive context for brand safety, not a replacement for the collection's `genre`. + +Buyer agents evaluate both levels: the collection baseline provides the default safety profile, and installment fields refine it for specific installments. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/installment.json", + "installment_id": "s1e03_the_wall", + "collection_id": "pinnacle_challenge", + "name": "The Wall", + "season": "1", + "installment_number": "3", + "scheduled_at": "2026-04-07T20:00:00Z", + "status": "scheduled", + "duration_seconds": 3600, + "valid_until": "2026-04-06T20:00:00Z", + "content_rating": { + "system": "tv_parental", + "rating": "TV-14" + }, + "topics": ["IAB17-18"], + "guest_talent": [ + { + "role": "guest", + "name": "Samira Okafor", + "brand_url": "https://samiraokafor.example.com/brand.json" + } + ], + "ad_inventory": { + "expected_breaks": 4, + "total_ad_seconds": 480, + "max_ad_duration_seconds": 120, + "unplanned_breaks": false, + "supported_formats": ["video", "audio"] + } +} +``` + +## Installment deadlines + +Episodes can carry booking, cancellation, and material submission deadlines. These apply to any channel where inventory is tied to a scheduled unit — print issues, podcast installments, influencer posts, linear TV airings, DOOH rotations. + +| Field | Type | Description | +|-------|------|-------------| +| `booking_deadline` | datetime | Last date/time to book a placement in this installment | +| `cancellation_deadline` | datetime | Last date/time to cancel without penalty | +| `material_deadlines` | array | Ordered stages for creative material submission | + +Deadlines MUST be chronologically ordered: `booking_deadline` ≤ `cancellation_deadline` ≤ each `material_deadlines[n].due_at` (ascending by array index) ≤ the installment's `scheduled_at`. Buyer agents SHOULD reject installments where deadlines violate this ordering. + +Each material deadline has: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `stage` | string | Yes | Stage identifier (`draft`, `final`, or seller-defined) | +| `due_at` | datetime | Yes | When materials for this stage are due | +| `label` | string | No | What the seller needs (e.g., "Talking points", "Press-ready PDF with bleed") | + +The two-stage pattern — draft then final — covers a wide range of channels: + +| Channel | Draft stage | Final stage | +|---------|-----------|------------| +| Print | Raw artwork for review | Press-ready PDF with bleed | +| Podcast (host read) | Talking points and brief | Approved script | +| Influencer | Brand guidelines and key messages | Approved post content | +| Linear TV | Rough cut | Encoded broadcast spot | +| DOOH | Draft creative for review | Final assets per screen specs | + +### Podcast with deadlines + +```json +{ + "installment_id": "ep47", + "name": "The future of autonomous supply chains", + "scheduled_at": "2026-04-07T10:00:00Z", + "status": "scheduled", + "guest_talent": [ + { "role": "guest", "name": "Kai Tanaka" } + ], + "deadlines": { + "booking_deadline": "2026-03-28T17:00:00Z", + "cancellation_deadline": "2026-03-31T17:00:00Z", + "material_deadlines": [ + { + "stage": "draft", + "due_at": "2026-04-01T17:00:00Z", + "label": "Talking points and brand guidelines for host read" + }, + { + "stage": "final", + "due_at": "2026-04-04T17:00:00Z", + "label": "Approved script" + } + ] + } +} +``` + +### Print issue with deadlines + +```json +{ + "installment_id": "2026-05", + "name": "Mai 2026", + "season": "2026", + "installment_number": "5", + "scheduled_at": "2026-05-01T00:00:00+02:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-03-15T17:00:00+01:00", + "cancellation_deadline": "2026-03-22T17:00:00+01:00", + "material_deadlines": [ + { + "stage": "draft", + "due_at": "2026-03-29T17:00:00+01:00", + "label": "Raw artwork for review and color proofing" + }, + { + "stage": "final", + "due_at": "2026-04-05T17:00:00+02:00", + "label": "Press-ready PDF/X-4, CMYK, 300 DPI, 3mm bleed" + } + ] + } +} +``` + +### Influencer post with deadlines + +```json +{ + "installment_id": "post_2026_04_10", + "name": "Spring campaign post", + "scheduled_at": "2026-04-10T12:00:00Z", + "status": "scheduled", + "deadlines": { + "cancellation_deadline": "2026-04-03T17:00:00Z", + "material_deadlines": [ + { + "stage": "draft", + "due_at": "2026-04-05T17:00:00Z", + "label": "Key messages, product images, and brand guidelines" + }, + { + "stage": "final", + "due_at": "2026-04-08T17:00:00Z", + "label": "Approved post content and caption" + } + ] + } +} +``` + +Deadlines are optional. Run-of-collection digital products typically omit them. The pattern is most valuable for guaranteed inventory with advance material requirements. + +## Deadline policy + +High-frequency collections (daily newspapers, weekly podcasts) would generate large payloads if every installment carried explicit deadlines. The `deadline_policy` on a collection declares lead-time rules that agents use to compute deadlines from each installment's `scheduled_at`. + +| Field | Type | Description | +|-------|------|-------------| +| `booking_lead_days` | integer | Days before `scheduled_at` by which the placement must be booked | +| `cancellation_lead_days` | integer | Days before `scheduled_at` by which cancellation is penalty-free | +| `material_stages` | array | Default material submission stages with `stage`, `lead_days`, and optional `label` | +| `business_days_only` | boolean | When true, lead_days counts Mon-Fri only. Defaults to false. | + +### Daily newspaper with policy + +Instead of enumerating deadlines for every issue, the collection declares the rule once: + +```json +{ + "collection_id": "bergedorfer_zeitung", + "name": "Bergedorfer Zeitung", + "kind": "publication", + "cadence": "daily", + "status": "active", + "deadline_policy": { + "booking_lead_days": 4, + "cancellation_lead_days": 3, + "material_stages": [ + { "stage": "final", "lead_days": 2, "label": "Druckfertige PDF" } + ], + "business_days_only": true + } +} +``` + +For the April 1 issue (`scheduled_at: "2026-04-01"`), an agent computes: +- **Booking deadline**: 4 business days before = March 26 +- **Cancellation deadline**: 3 business days before = March 27 +- **Material due**: 2 business days before = March 28 + +Episodes with explicit `deadlines` override the policy. A special edition with tighter turnaround declares its own deadlines; regular issues inherit from the policy. + +### Weekly podcast with policy + +```json +{ + "collection_id": "wonderstruck_weekly", + "name": "Wonderstruck Weekly", + "kind": "series", + "cadence": "weekly", + "deadline_policy": { + "booking_lead_days": 10, + "cancellation_lead_days": 7, + "material_stages": [ + { "stage": "draft", "lead_days": 5, "label": "Talking points and brand guidelines" }, + { "stage": "final", "lead_days": 3, "label": "Approved script for host read" } + ] + } +} +``` + +### Policy vs explicit deadlines + +| Scenario | Use | +|----------|-----| +| Daily newspaper, consistent deadlines | `deadline_policy` on collection | +| Weekly podcast, consistent deadlines | `deadline_policy` on collection | +| Monthly magazine, varying lead times per issue | Explicit `deadlines` on each installment | +| One-off special with tight turnaround | Explicit `deadlines` on that installment, policy covers the rest | + +When both are present, explicit installment `deadlines` take precedence. An agent SHOULD NOT compute deadlines from the policy for installments that have their own. + +## Specials and limited series + +Collections can carry optional annotations that signal their nature to buyer agents. These are composable — a collection can be both a special and a limited series (e.g., a 4-installment Olympics documentary). + +### Specials + +A special is content anchored to a real-world event or occasion. The `special` object can appear on both collections and installments. On a collection, it means the entire collection is event-anchored. On an installment, it means that specific installment is event-anchored (and overrides the collection-level special when present, following the same inheritance pattern as `content_rating`). + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `name` | string | Yes | Name of the event (e.g., "Olympics 2028", "Super Bowl LXI") | +| `category` | string | No | `awards`, `championship`, `concert`, `conference`, `election`, `festival`, `gala`, `holiday`, `premiere`, `product_launch`, `reunion`, `tribute` | +| `starts` | datetime | No | When the event starts | +| `ends` | datetime | No | When the event ends. Omit for single-day events. | + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/collection.json", + "collection_id": "apex_finals_2026", + "name": "Apex Championship Finals 2026", + "genre": ["IAB17", "IAB17-12"], + "genre_taxonomy": "iab_content_3.0", + "cadence": "event", + "status": "upcoming", + "special": { + "name": "Apex Championship Finals 2026", + "category": "championship", + "starts": "2026-05-18T19:00:00Z", + "ends": "2026-05-25T23:00:00Z" + }, + "talent": [ + { "role": "host", "name": "Deshawn Moreaux" } + ] +} +``` + +The `special` field is distinct from `cadence`. Cadence describes release frequency (`event` = one-time or occasional). The `special` object describes what real-world event anchors the content and when it happens — information a buyer agent needs to evaluate timing relevance and premium pricing. + +### Limited series + +A limited series is a bounded content run with a defined arc. Unlike ongoing series, limited series have a planned end. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `total_installments` | integer | No | Planned number of installments | +| `starts` | datetime | No | When the series begins | +| `ends` | datetime | No | When the series ends | + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/collection.json", + "collection_id": "ember_s3", + "name": "The Ember", + "description": "Award-winning drama following a chef navigating the pressure of running a top restaurant", + "genre": ["IAB1", "IAB1-7"], + "genre_taxonomy": "iab_content_3.0", + "cadence": "weekly", + "status": "active", + "limited_series": { + "total_installments": 8, + "starts": "2026-02-28T21:00:00Z", + "ends": "2026-04-18T21:00:00Z" + } +} +``` + +This tells buyer agents that The Ember is a finite opportunity — 8 installments over 7 weeks. The `limited_series` field is distinct from `season`: a collection can have seasons without being limited (ongoing series have seasons too), and a limited series is a structural commitment that the collection has a planned end. + +## How products reference collections + +Products reference collections via `collections` — an array of `{publisher_domain, collection_ids}` selectors that point to collections declared in the publisher's `adagents.json`. This is the same pattern as `publisher_properties`. Buyers resolve full collection objects from the publisher's `adagents.json`. Episodes are listed per-product in the `installments` array, since different products may scope different installments of the same collection. + +### Run-of-collection (no specific installments) + +A product can reference a collection without listing installments. This means "inventory across this collection, whatever installments air during the flight dates": + +```json +{ + "product_id": "pinnacle_run_of_collection", + "name": "Pinnacle Challenge Run of Show", + "collections": [{ "publisher_domain": "acmestreaming.example.com", "collection_ids": ["pinnacle_challenge"] }], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll", "mode": "targetable" } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { "pricing_option_id": "cpm", "pricing_model": "cpm", "floor_price": 25.00, "currency": "USD" } + ] +} +``` + +### Specific installments + +For premium or guaranteed buys, the seller scopes to specific installments: + +```json +{ + "product_id": "pinnacle_finale", + "name": "Pinnacle Challenge Season Finale Sponsorship", + "collections": [{ "publisher_domain": "acmestreaming.example.com", "collection_ids": ["pinnacle_challenge"] }], + "installments": [ + { + "installment_id": "s1e10_finale", + "name": "The Grand Finale", + "scheduled_at": "2026-06-02T20:00:00Z", + "status": "scheduled", + "ad_inventory": { + "expected_breaks": 6, + "total_ad_seconds": 720, + "unplanned_breaks": false + } + } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "flat", "pricing_model": "flat_rate", "fixed_price": 2000000, "currency": "USD" } + ] +} +``` + +## get_products response structure + +Products reference collections via `collections` selectors — the same pattern as `publisher_properties`. Each selector has a `publisher_domain` and `collection_ids` array pointing to collections declared in that publisher's `adagents.json`. Buyers resolve full collection objects from `adagents.json`. + +```json +{ + "products": [ + { + "product_id": "pinnacle_april_bundle", + "name": "Pinnacle Challenge April Sponsorship", + "collections": [{ "publisher_domain": "acmestreaming.example.com", "collection_ids": ["pinnacle_challenge"] }], + "installments": [ + { + "installment_id": "s1e03", + "name": "The Wall", + "scheduled_at": "2026-04-07T20:00:00Z", + "status": "scheduled", + "content_rating": { "system": "tv_parental", "rating": "TV-14" }, + "guest_talent": [{ "role": "guest", "name": "Samira Okafor" }], + "valid_until": "2026-04-06T20:00:00Z" + }, + { + "installment_id": "s1e04", + "name": "TBD", + "scheduled_at": "2026-04-14T20:00:00Z", + "status": "tentative", + "valid_until": "2026-04-07T20:00:00Z" + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "mid_roll", "name": "Mid-roll", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "flat", "pricing_model": "flat_rate", "fixed_price": 500000, "currency": "USD" } + ] + } + ] +} +``` + +## Canonical collection identity + +A collection's identity is **`{publisher_domain, collection_id}`** — scoped to the publisher that declares it in their `adagents.json`. This means any collection creator can serve as their own canonical registry. + +### Creator as canonical publisher + +A creator like MrBeast declares collections in `mrbeast.com/adagents.json`. Any seller packaging that creator's inventory — a YouTube sales house, a CTV distributor, the creator's own team — references the same canonical source: + +```json +{ + "products": [ + { + "product_id": "beast_games_youtube", + "name": "Beast Games - YouTube Pre-roll", + "collections": [ + { "publisher_domain": "mrbeast.com", "collection_ids": ["beast_games"] } + ], + "publisher_properties": [ + { "publisher_domain": "youtube.com", "property_ids": ["UCX6OQ3DkcsbYNE6H8uQQuVA"] } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { "pricing_option_id": "cpm", "pricing_model": "cpm", "floor_price": 18.00, "currency": "USD" } + ] + } + ] +} +``` + +The buyer sees `mrbeast.com` + `beast_games` regardless of which seller or platform the inventory comes from. No cross-referencing of IMDb IDs or distribution identifiers needed — the creator's domain **is** the registry. + +### When creators don't publish adagents.json + +Not every collection has a creator-owned domain. A streaming platform's original series may only exist in that platform's `adagents.json`. In that case, the platform is the canonical publisher and `collections` points to their domain. Distribution identifiers on the collection object handle cross-seller matching when the same collection appears on multiple platforms without a single canonical source. + +### Identity resolution priority + +Buyer agents should resolve collection identity in this order: + +1. **Canonical publisher** — `publisher_domain` + `collection_id` from the creator's own `adagents.json`. Strongest signal. +2. **Platform-independent identifiers** — `imdb_id`, `gracenote_id`, `eidr_id` from the collection's `distribution` array. Reliable cross-reference when no canonical publisher exists. +3. **Platform-specific identifiers** — Spotify, Apple, YouTube IDs. Useful within a platform but not universal. + +## Discovery examples + +### CTV collection with installments + +A streaming platform selling sponsorships against a known collection with upcoming installments: + +```json +{ + "products": [ + { + "product_id": "nova_kitchen_april", + "name": "Nova Kitchen - April Episodes", + "collections": [{ "publisher_domain": "novastreaming.example.com", "collection_ids": ["nova_kitchen"] }], + "publisher_properties": [{ + "publisher_domain": "novastreaming.example.com", + "selection_type": "all" + }], + "installments": [ + { + "installment_id": "s3e09", + "name": "Fire and Ice", + "scheduled_at": "2026-04-05T21:00:00Z", + "status": "scheduled", + "duration_seconds": 2700, + "ad_inventory": { + "expected_breaks": 3, + "total_ad_seconds": 360, + "max_ad_duration_seconds": 30, + "unplanned_breaks": false, + "supported_formats": ["video"] + } + }, + { + "installment_id": "s3e10", + "scheduled_at": "2026-04-12T21:00:00Z", + "status": "tentative", + "valid_until": "2026-04-06T00:00:00Z" + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll (15s)", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "mid_roll", "name": "Mid-roll (30s)", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "cpm_fixed", "pricing_model": "cpm", "fixed_price": 38.00, "currency": "USD" } + ] + } + ] +} +``` + +### Related collections and derivative content + +A streaming platform offering a main collection and its companion after-collection, plus highlight clips: + +```json +{ + "products": [ + { + "product_id": "nova_highlights", + "name": "Nova Kitchen Highlights Package", + "collections": [{ "publisher_domain": "novastreaming.example.com", "collection_ids": ["nova_kitchen"] }], + "installments": [ + { + "installment_id": "s3e09", + "name": "Fire and Ice", + "status": "aired", + "duration_seconds": 2700 + }, + { + "installment_id": "s3e09_highlights", + "name": "Fire and Ice - Best Moments", + "status": "published", + "duration_seconds": 180, + "derivative_of": { + "installment_id": "s3e09", + "type": "highlight" + } + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll (15s)", "mode": "targetable" } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { "pricing_option_id": "cpm", "pricing_model": "cpm", "floor_price": 12.00, "currency": "USD" } + ] + } + ] +} +``` + +The highlight clip references its source installment via `derivative_of`. The companion after-collection is linked via `related_collections` on the main collection — buyers targeting Nova Kitchen can discover the after-collection as an additional reach opportunity. + +### Podcast with distribution + +A podcast network selling across multiple distribution platforms. The collection's `distribution` array in `adagents.json` captures the full distribution footprint; buyers use distribution identifiers for cross-seller matching: + +```json +{ + "products": [ + { + "product_id": "wonderstruck_april", + "name": "Wonderstruck Weekly - April Episodes", + "collections": [{ "publisher_domain": "wonderstruck.example.com", "collection_ids": ["wonderstruck_weekly"] }], + "installments": [ + { + "installment_id": "ep47", + "name": "The future of autonomous supply chains", + "scheduled_at": "2026-04-07T10:00:00Z", + "status": "scheduled", + "guest_talent": [ + { "role": "guest", "name": "Kai Tanaka", "brand_url": "https://kaitanaka.example.com/brand.json" } + ] + }, + { + "installment_id": "ep48", + "scheduled_at": "2026-04-14T10:00:00Z", + "status": "tentative" + }, + { + "installment_id": "ep49", + "scheduled_at": "2026-04-21T10:00:00Z", + "status": "tentative" + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "pre_roll", "name": "Pre-roll (30s)", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "mid_roll", "name": "Mid-roll host read (60s)", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "flat_monthly", "pricing_model": "flat_rate", "fixed_price": 15000, "currency": "USD" }, + { "pricing_option_id": "per_episode", "pricing_model": "flat_rate", "fixed_price": 5000, "currency": "USD" } + ] + } + ] +} +``` + +Tentative installments (ep48, ep49) have no names or guest info — they have not been produced yet. The buyer evaluates based on the collection's baseline profile and the known details of ep47. + +### Live event with tentative installments + +A sports league selling sponsorships against a live event series. Live broadcasts use `flexible_end` because game duration is unpredictable, and `unplanned_breaks` because ad breaks follow game flow (timeouts, period breaks) rather than a fixed schedule. The tentative Game 5 depends on the series outcome — it only happens if neither team wins in four games. + +```json +{ + "products": [ + { + "product_id": "apex_finals_sponsorship", + "name": "Apex Championship Finals — Category Sponsorship", + "collections": [{ "publisher_domain": "apexleague.example.com", "collection_ids": ["apex_championship_2026"] }], + "installments": [ + { + "installment_id": "finals_game4", + "name": "Game 4: Titan City vs Coastal FC", + "scheduled_at": "2026-05-18T19:00:00Z", + "status": "scheduled", + "flexible_end": true, + "ad_inventory": { + "expected_breaks": 8, + "total_ad_seconds": 960, + "max_ad_duration_seconds": 30, + "unplanned_breaks": true, + "supported_formats": ["video"] + } + }, + { + "installment_id": "finals_game5", + "name": "Game 5 — If necessary", + "scheduled_at": "2026-05-21T19:00:00Z", + "status": "tentative", + "flexible_end": true, + "valid_until": "2026-05-19T06:00:00Z", + "ad_inventory": { + "expected_breaks": 8, + "total_ad_seconds": 960, + "max_ad_duration_seconds": 30, + "unplanned_breaks": true, + "supported_formats": ["video"] + } + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "in_game_overlay", "name": "In-game overlay (10s)", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "halftime", "name": "Halftime feature (60s)", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "exclusivity": "category", + "pricing_options": [ + { "pricing_option_id": "per_game", "pricing_model": "flat_rate", "fixed_price": 750000, "currency": "USD" } + ] + } + ] +} +``` + +This pattern combines several features designed for live inventory: `cadence: "event"` signals a non-recurring series, `flexible_end` tells buyers the broadcast length is approximate, and `unplanned_breaks: true` indicates ad breaks follow game flow rather than a predetermined schedule. The tentative Game 5 includes `valid_until` so buyer agents know when to re-query — if the series ends in four games, that installment will resolve to `cancelled`. Buyers should always check `valid_until` on tentative installments before committing budget. + +### Discovering collections + +Buyers discover collections through the standard `get_products` workflow. Natural language briefs drive collection selection: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442011", + "buying_mode": "brief", + "brief": "Podcast sponsorships for technology collections reaching startup founders in April", + "filters": { + "channels": ["podcast"], + "start_date": "2026-04-01", + "end_date": "2026-04-30" + } +} +``` + +The seller returns products with `collections` selectors. The buyer resolves full collection objects from each publisher's [adagents.json](/dist/docs/3.2.0-beta.4/governance/property/adagents). Registry clients can also bootstrap and look up the crawled collection catalog through `/api/registry/catalog/collections/sync` and `/api/registry/catalog/collections/distribution`, which is useful for cross-referencing platform aliases such as YouTube channel IDs back to the publisher-declared collection. + +For community-maintained entries, registry moderators can seed a publisher-scoped collection with `PUT /api/registry/catalog/collections/{publisher_domain}/{collection_id}`. This creates a contributed registry record and emits the same `collection.created` / `collection.updated` feed events. It does not replace publisher-origin proof: once the publisher declares the collection in their own `adagents.json`, the authoritative declaration wins. + +## Brand safety + +Collections provide a two-level brand safety model: a collection baseline and per-installment overrides. + +### Collection baseline + +A collection's default brand safety profile comes from: +- `content_rating` — the collection's declared rating system and value +- `genre` — content categories (ideally using `genre_taxonomy` for machine-readable evaluation) +- `talent` — hosts and recurring cast, with optional [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) references for deeper evaluation + +This is what buyers evaluate when individual installment content is not yet known. + +### Installment overrides + +When installment details are available, they can shift the safety profile: +- A `content_rating` that differs from the collection baseline (this week is TV-14 instead of TV-PG) +- `guest_talent` that changes the talent profile (a controversial guest) +- `topics` that add installment-specific content signals + +### What is not modeled + +AdCP does not predict content safety for unknown future installments. A buyer who commits to "all April installments" buys based on the collection's baseline profile, accepting variation. The seller's content standards and the collection's track record are the buyer's basis for that decision. + +## Distribution identifiers + +Each collection's `distribution` array maps it to specific publisher platforms with platform-specific identifiers. This enables cross-seller matching: when two different sellers both offer products for the same collection, a buyer agent can match them via shared identifiers. + +### Cross-seller matching + +Platform-independent identifiers are the most reliable for deduplication: + +| Type | Example | Notes | +|------|---------|-------| +| `imdb_id` | `tt1234567` | Universal cross-platform reference | +| `gracenote_id` | `EP012345678` | Industry standard for TV metadata | +| `eidr_id` | `10.5240/XXXX-XXXX-XXXX-XXXX-XXXX-C` | ISO 10528 for audiovisual content | + +Shows SHOULD include at least one platform-independent identifier when available. + +### Platform-specific identifiers + +<CodeGroup> + +```json Podcast +{ + "distribution": [ + { + "publisher_domain": "spotify.com", + "identifiers": [{ "type": "spotify_collection_id", "value": "4rOoJ6Egrf8K2IrywzwOMk" }] + }, + { + "publisher_domain": "apple.com", + "identifiers": [{ "type": "apple_podcast_id", "value": "1234567890" }] + }, + { + "publisher_domain": "feeds.example.com", + "identifiers": [{ "type": "rss_url", "value": "https://feeds.example.com/collection.xml" }] + } + ] +} +``` + +```json Video / CTV +{ + "distribution": [ + { + "publisher_domain": "youtube.com", + "identifiers": [{ "type": "youtube_channel_id", "value": "UCexample123456" }] + }, + { + "publisher_domain": "acmestreaming.example.com", + "identifiers": [{ "type": "amazon_title_id", "value": "B0DFBT5GBP" }] + } + ] +} +``` + +</CodeGroup> + +Available podcast types: `apple_podcast_id`, `spotify_collection_id`, `rss_url`, `podcast_guid`, `amazon_music_id`, `iheart_id`, `podcast_index_id`. Available video/CTV types: `youtube_channel_id`, `youtube_channel_handle`, `youtube_channel_url`, `youtube_playlist_id`, `amazon_title_id`, `roku_channel_id`, `pluto_channel_id`, `tubi_id`, `peacock_id`, `tiktok_id`, `twitch_channel`. Other: `domain`, `substack_id`. For YouTube channels, `youtube_channel_id` is the preferred canonical identifier; handles and URLs are aliases for discovery and matching when the channel ID is not yet resolved. + +## Ad inventory + +Episodes declare break-based ad inventory in the `ad_inventory` object: + +| Field | Type | Description | +|-------|------|-------------| +| `expected_breaks` | integer | Number of planned ad breaks | +| `total_ad_seconds` | integer | Total seconds of ad time across all breaks | +| `max_ad_duration_seconds` | integer | Maximum duration for a single ad within a break | +| `unplanned_breaks` | boolean | `false`: all breaks pre-defined. `true`: breaks driven by live conditions (sports timeouts, live news). | +| `supported_formats` | string[] | Format types supported in breaks (e.g., `"video"`, `"audio"`) | + +For non-break ad formats like host reads, custom integrations, or sponsorships, use product [placements](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#placements) instead. A podcast product might have a placement for "mid-roll host read (60s)" — that is a placement on the product, not part of `ad_inventory`. + +## Relationship to LEAP + +The installment model aligns with IAB Tech Lab's LEAP Forecasting API for live streaming events: + +| LEAP concept | AdCP equivalent | +|-------------|----------------| +| UpcomingEvent | Episode (`scheduled_at` + `status`) | +| Content (AdCOM 1.0) | Show metadata (`genre`, `content_rating`, `talent`) | +| AdInventoryConfiguration | Episode `ad_inventory` + product placements | +| Event status | Episode `status` (`scheduled`, `tentative`, `cancelled`) | +| Unplanned breaks | `ad_inventory.unplanned_breaks` | +| Flexible end time | Episode `flexible_end` | + +LEAP targets SSP-to-DSP plumbing. AdCP operates at the agent-to-agent negotiation layer where buying decisions happen. + +## Collection targeting + +Products with multiple collections default to bundles — the buyer gets all listed collections. Sellers can set `collection_targeting_allowed: true` to let buyers target a subset, the same pattern as `property_targeting_allowed` for properties. + +| `collection_targeting_allowed` | Meaning | +|---|---| +| `false` (default) | Bundle — buyer gets all collections | +| `true` | Buyer can select specific collections in the media buy | + +## Multi-collection bundles + +A single product can span multiple collections by listing multiple collection IDs in `collections`. When a product has multiple collections, each installment MUST include `collection_id` so the buyer agent knows which collection each installment belongs to. + +```json +{ + "products": [ + { + "product_id": "technet_april_bundle", + "name": "TechNet Podcast Bundle - April", + "collections": [{ "publisher_domain": "technet.example.com", "collection_ids": ["tech_weekly", "startup_hour"] }], + "installments": [ + { "installment_id": "tw_ep12", "collection_id": "tech_weekly", "scheduled_at": "2026-04-07T10:00:00Z", "status": "scheduled" }, + { "installment_id": "tw_ep13", "collection_id": "tech_weekly", "scheduled_at": "2026-04-14T10:00:00Z", "status": "tentative" }, + { "installment_id": "sh_ep30", "collection_id": "startup_hour", "scheduled_at": "2026-04-09T14:00:00Z", "status": "scheduled" }, + { "installment_id": "sh_ep31", "collection_id": "startup_hour", "scheduled_at": "2026-04-16T14:00:00Z", "status": "tentative" } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "bundle", "pricing_model": "flat_rate", "fixed_price": 25000, "currency": "USD" } + ] + } + ] +} +``` + +### Print publication with issues + +A magazine publisher selling display ads across upcoming issues. Each issue is an installment with deadlines for booking, cancellation, and material delivery: + +```json +{ + "products": [ + { + "product_id": "vogue_de_display_q2", + "name": "Vogue Germany — Display Ads, Q2 2026", + "channels": ["print"], + "collections": [{ "publisher_domain": "vogue.de", "collection_ids": ["vogue_de"] }], + "installments": [ + { + "installment_id": "2026-04", + "name": "April 2026", + "season": "2026", + "installment_number": "4", + "scheduled_at": "2026-04-01T00:00:00+02:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-02-15T17:00:00+01:00", + "cancellation_deadline": "2026-02-22T17:00:00+01:00", + "material_deadlines": [ + { "stage": "draft", "due_at": "2026-03-01T17:00:00+01:00", "label": "Artwork for color proofing" }, + { "stage": "final", "due_at": "2026-03-08T17:00:00+01:00", "label": "Press-ready PDF/X-4, CMYK, 300 DPI" } + ] + } + }, + { + "installment_id": "2026-05", + "name": "Mai 2026", + "season": "2026", + "installment_number": "5", + "scheduled_at": "2026-05-01T00:00:00+02:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-03-15T17:00:00+01:00", + "cancellation_deadline": "2026-03-22T17:00:00+01:00", + "material_deadlines": [ + { "stage": "draft", "due_at": "2026-03-29T17:00:00+01:00", "label": "Artwork for color proofing" }, + { "stage": "final", "due_at": "2026-04-05T17:00:00+02:00", "label": "Press-ready PDF/X-4, CMYK, 300 DPI" } + ] + } + } + ], + "placements": [ + { "kind": "seller_inline", "placement_id": "full_page", "name": "Full Page", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "dps", "name": "Double Page Spread", "mode": "targetable" }, + { "kind": "seller_inline", "placement_id": "ifc", "name": "Inside Front Cover", "mode": "targetable" } + ], + "delivery_type": "guaranteed", + "delivery_measurement": { + "provider": "IVW", + "notes": "Verified circulation, updated quarterly" + }, + "pricing_options": [ + { "pricing_option_id": "full_page", "pricing_model": "flat_rate", "fixed_price": 28000, "currency": "EUR" }, + { "pricing_option_id": "dps", "pricing_model": "flat_rate", "fixed_price": 48000, "currency": "EUR" } + ] + } + ] +} +``` + +The collection/installment model works identically for print publications and audio/video content. The installment's `deadlines` object replaces what the German OBS system handles through separate message exchanges — booking, cancellation, and material delivery are all visible upfront. + +## See also + +- [Media products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) — the full product model +- [Print ads](/dist/docs/3.2.0-beta.4/creative/channels/print) — print-specific creative formats, physical dimensions, bleed, and DPI +- [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — talent identity and brand safety evaluation +- [Product discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery) — how buyers discover inventory via `get_products` diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs.mdx new file mode 100644 index 0000000000..88866e3aa5 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs.mdx @@ -0,0 +1,161 @@ +--- +sidebar_label: Example discovery requests +title: Example campaign discovery requests +description: "Worked examples showing how buyer agents decompose natural-language campaign requests into briefs, filters, targeting overlays, and future targeting support." +"og:title": "AdCP — Example campaign discovery requests" +--- + +The examples below start with what a human says, then show the structured +`request_proposals` request an agent should send. The goal is not to make the brief +verbose. Preserve campaign meaning in prose and move exact values into typed +fields. + +## Local service launch + +### Human request + +> Help Acme Home Services drive appointment calls from homeowners in Colorado +> during October. We have $8,000 and only want display inventory priced in USD. + +### AdCP request + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441101", + "brand": { "domain": "acmehome.example" }, + "brief": "Drive appointment calls from homeowners who may need urgent or planned home repairs. Favor trusted local and home-improvement contexts.", + "criteria": { + "offer_filters": { + "channels": ["display"], + "pricing_currencies": ["USD"], + "start_date": "2027-10-01", + "end_date": "2027-10-31", + "budget_range": { "max": 8000, "currency": "USD" } + }, + "targeting_overlay": { + "geo_regions": ["US-CO"] + } + } +} +``` + +The seller interprets “homeowners” and contextual fit. It does not infer the +state, channel, currency, dates, or budget. + +## Multi-country B2B campaign + +### Human request + +> Pinnacle Cloud wants qualified leads from technical leaders at growing +> businesses in the US, Canada, UK, and Germany. We need display or online +> video, USD or EUR pricing, and completed-view reporting where video is used. + +### AdCP request + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441102", + "brand": { "domain": "pinnaclecloud.example" }, + "brief": "Generate qualified leads from technical leaders modernizing multi-cloud infrastructure. Favor trusted technology, security, and business contexts.", + "criteria": { + "offer_filters": { + "channels": ["display", "olv"], + "pricing_currencies": ["USD", "EUR"], + "required_metrics": ["completed_views"] + }, + "targeting_overlay": { + "geo_countries": ["US", "CA", "GB", "DE"] + } + } +} +``` + +The brief carries job-function meaning because AdCP does not impose one global +taxonomy for “technical leader.” Geography and product requirements are exact. + +## Known country, cities selected later + +### Human request + +> Nova Meals is launching nationally to parents ages 25–44. After we compare +> forecasts, our planners will choose separate DMAs and placements for each +> package. We do not want one product returned per city. + +### AdCP request + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441103", + "brand": { "domain": "novameals.example" }, + "brief": "Launch a premium family meal service to time-pressed parents. Favor trusted family, food, and lifestyle contexts.", + "criteria": { + "targeting_overlay": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 25, "max": 44, "include_unknown": false } + } + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] }, + "placement_selection": true + } + } +} +``` + +`targeting_overlay` is applied now and participates in every returned forecast. +`required_overlay_support` filters to products that let packages select DMAs +and placements later. It does not create a product or package per value. + +## Hard prose fallback + +Structured-first authoring is a SHOULD, not permission for sellers to ignore +prose. If a buyer sends: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441104", + "brand": { "domain": "acmeoutdoor.example" }, + "brief": "Hard requirements: US delivery only and ages 25–44. Favor outdoor enthusiasts." +} +``` + +the seller still applies the hard constraints and, because they affect product +eligibility, pricing, and forecasting, must confirm the structured interpretation +in `targeting_resolution.brief_targeting`. The buyer should not infer +confirmation from a missing resolution. + +Legacy callers can express the same decomposition through `get_products` with +`buying_mode: "brief"`, top-level `filters`, `targeting_overlay`, and +`required_overlay_support`. The split tasks are preferred because they make +the listing, proposal, and refinement lifecycle explicit. + +## Practice + +Decompose this request before revealing the answer: + +> Acme Audio has $75,000 for a six-week US podcast launch. Only USD pricing. +> We need completion reporting, want music and technology enthusiasts, and will +> choose individual shows after reviewing the publisher's recommendations. + +<Accordion title="Show one valid decomposition"> + +- Brief: launch context plus music and technology enthusiast intent. +- Offer filters: podcast channel, USD currency, six-week dates, $75,000 budget, and + required completion metric. +- Targeting overlay: US. +- Required overlay support: placement or collection selection later, depending + on how the seller models public shows. + +</Accordion> + +## Review every response + +Before purchase: + +1. Confirm offer filters excluded ineligible offers. +2. Confirm forecast and price reflect the structured overlay. +3. Verify `overlay_support` covers every later-selectable requirement. +4. Review `targeting_resolution.modifications` and any `brief_targeting`. +5. Accept a configured product only when its complete targeting resolution is + acceptable. diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/index.mdx new file mode 100644 index 0000000000..90ffa93816 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/index.mdx @@ -0,0 +1,176 @@ +--- +title: Product discovery and planning +sidebarTitle: Discovery and planning +description: "Choose the AdCP 3.2 path for published product offers, wholesale feed synchronization, or seller-planned proposals." +"og:title": "AdCP — Product discovery and planning" +--- + +AdCP 3.2 separates reading published offers from asking a seller to build a +plan. Start by reading `get_adcp_capabilities.media_buy.lifecycle_tools`, then +choose the path the seller advertises. + +| Buyer intent | Start with | Commit with | +|---|---|---| +| Browse or filter published offers | [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) | [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) | +| Maintain a wholesale product mirror | `list_products`, feed versions, and account-level product webhooks | `buy_products`, or pass selected IDs into `request_proposals` | +| Ask the seller to build or negotiate a plan | [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) | Finalize with `refine_proposals`, then [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) | + +<Note> +Wholesale is a product-feed topology, not a proposal mode. A mirror tracks the +seller's published offers and pricing. Proposal tasks create immutable, +seller-authored commercial snapshots for a specific planning conversation. +</Note> + +## 1. Discover the available lifecycle + +Do not infer compact-tool support from the protocol version alone. Use the +seller's advertised lifecycle tools: + +```javascript +const capabilities = await seller.getCapabilities(); +const lifecycleTools = new Set(capabilities.mediaBuyLifecycleTools ?? []); + +const canBuyPublishedOffers = + lifecycleTools.has('list_products') && lifecycleTools.has('buy_products'); +const canNegotiate = + lifecycleTools.has('request_proposals') && + lifecycleTools.has('refine_proposals') && + lifecycleTools.has('accept_proposal'); +``` + +The field names above use the TypeScript SDK's normalized capability view. +On the wire, inspect `media_buy.lifecycle_tools`. + +## 2. Express criteria once + +Both `list_products` and `request_proposals` accept +`ProductDiscoveryCriteria`. Keep three concerns separate: + +- `offer_filters` select commercial and product characteristics such as + channel, delivery type, currency, and reporting support. +- `targeting_overlay` contains concrete delivery constraints that must affect + the returned product, price, and forecast. +- `required_overlay_support` asks for targeting dimensions that the buyer will + select later; it is a capability requirement, not a current target value. + +```json +{ + "offer_filters": { + "channels": ["olv"], + "pricing_currencies": ["USD"] + }, + "targeting_overlay": { + "geo_countries": ["US", "CA"] + }, + "required_overlay_support": { + "demographics": { "age": true } + } +} +``` + +Products return canonical `format_options[]` as their closed accepted creative +set. Resolve publisher-backed definitions from `adagents.json.formats[]`; use a +creative agent's capability IDs to choose production operations. + +## Published offers and wholesale mirrors + +Use `list_products` when the buyer wants to inspect seller-published offers +without asking the seller to author a media plan: + +```javascript +const result = await seller.listProducts({ + adcp_version: '3.2-beta.3', + account: { account_id: 'account_123' }, + criteria: { + offer_filters: { + channels: ['olv'], + pricing_currencies: ['USD'], + }, + targeting_overlay: { geo_countries: ['US', 'CA'] }, + }, + max_results: 25, +}); +``` + +The response contains products only—never proposals—and carries an opaque +`feed_version`. A direct buyer passes that version and selected product terms +to `buy_products` so the seller can reject stale offers instead of silently +applying changed terms. + +A catalog mirror uses the same read as its bootstrap and repair surface. Store +`feed_version`, `pricing_version`, and `cache_scope`; subscribe to `product.*` +and `wholesale_feed.bulk_change` through account notification configuration; +then use conditional `list_products` reads to repair gaps. Do not poll the full +feed when the webhook stream is healthy. + +See [`list_products` wholesale feed webhooks](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products#wholesale-feed-webhooks) +for the complete mirror contract. + +## Seller-planned proposals + +Use `request_proposals` when the seller should translate a campaign brief into +one or more priced plans. Sam Adeyemi at Pinnacle Agency can send the same +structured criteria to StreamHaus while keeping strategy in prose: + +```javascript +const response = await seller.requestProposals({ + adcp_version: '3.2-beta.3', + idempotency_key: 'acme-q2-proposals-001', + account: { account_id: 'account_123' }, + brand: { domain: 'acme-outdoor.example' }, + brief: + 'Premium video on trusted sports and outdoor lifestyle properties for the Acme Outdoor Q2 launch. Prioritize reach within a USD 50,000 ceiling.', + criteria: { + offer_filters: { + channels: ['olv'], + pricing_currencies: ['USD'], + }, + targeting_overlay: { geo_countries: ['US', 'CA'] }, + }, +}); +``` + +The seller returns immutable draft proposals. Each revision creates a new +`proposal_id` and preserves its parent: + +1. Use `refine_proposals` with `action: "revise"` for typed budget, CPM, + flight, product, alternative, or targeting changes. +2. Verify every returned typed constraint; a `partial` outcome identifies the + exact unsatisfied fields. +3. Use `refine_proposals` with `action: "finalize"` to create a committed, + expiring inventory hold. +4. Call `accept_proposal` with both the committed `proposal_id` and + `terms_digest` before `expires_at`. + +Commercial changes after acceptance use the same proposal lineage to create an +amendment or negotiated cancellation. Operational changes inside the accepted +envelope use [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy). + +See [Proposal negotiation](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation) +for request shapes, failure planes, finalization, and recovery. + +## Catalog-driven campaigns + +Retail media, travel, job, and other catalog-driven campaigns pass a compact +catalog selection in `criteria.catalog`. The seller matches the buyer-managed +catalog to eligible offers; ingest or update the underlying feed separately +through [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs). + +## Compatibility path + +If `media_buy.lifecycle_tools` is absent, use the established `get_products`, +`create_media_buy`, and `update_media_buy` facade documented in the +[3.1 → 3.2 migration guide](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2). Keep this +branch at the version-adaptation boundary so new planning code works in terms +of published offers, proposal snapshots, and revision-checked controls. + +## Next steps + +- [Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle) — commitment, + creative supply, control, and delivery +- [Media products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) — product, + pricing, targeting, and format semantics +- [Brief expectations](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations) — + what belongs in prose versus structured criteria +- [Task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/) — compact lifecycle request + and response contracts diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products.mdx new file mode 100644 index 0000000000..ac38ff3311 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products.mdx @@ -0,0 +1,1846 @@ +--- +title: Media Products +description: "AdCP media products — the core sellable unit in the protocol. Covers product structure, pricing options, delivery types, format references, and catalog-driven inventory." +"og:title": "AdCP — Media Products" +--- + + +A **Product** is the core sellable unit in AdCP. This document details the Product model, including its pricing and delivery types, and how products are discovered and structured in the system. + +<Tip> +**Pricing Models** +Products declare which pricing models they support. Buyers select a specific pricing option when creating media buys. See the complete [Pricing Models Guide](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models) for details on CPM, CPCV, CPP, CPC, CPA, vCPM, flat rate, and time-based pricing. +</Tip> + +## The Product Model + +- `product_id` (string, required): Opaque buyable identifier. Non-custom wholesale IDs remain stable for the same logical offer within seller and declared cache scope, including across reads and webhooks. Custom IDs remain stable only within their issuing discovery/refinement lineage. +- `name` (string, required) +- `description` (string, required) +- `publisher_properties` (list[PublisherPropertySelector], required): Publisher properties covered by this product. See [Property Targeting](#property-targeting). +- `channels` (list[string], optional): Advertising channels this product is sold as (e.g., `["retail_media"]`, `["display", "olv"]`). Sellers SHOULD declare `channels` on products that span non-obvious channels, particularly retail media, CTV/OLV, and multi-channel bundles. Product channels SHOULD be a subset of the union of their properties' `supported_channels`. See [Media Channel Taxonomy](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy). +- `video_placement_types` (list[string], optional): Declared video placement types that may be included in this product, using IAB Tech Lab/OpenRTB 2.6 `video.plcmt` definitions with AdCP-native names: `instream`, `accompanying_content`, `interstitial`, and `standalone`. Aggregate products and ad-network products may include multiple values. This is seller-declared discovery metadata, not independent verification of inventory quality or delivery context. +- `audio_distribution_types` (list[string], optional): Declared audio distribution types that may be included in this product, using IAB Tech Lab/OpenRTB 2.6 `audio.feed` definitions with AdCP-native names: `music_streaming_service`, `fm_am_broadcast`, `podcast`, `catch_up_radio`, `web_radio`, `video_game`, and `text_to_speech`. Aggregate products and ad-network products may include multiple values. This is seller-declared discovery metadata, not independent verification of inventory quality or delivery context. +- `sponsored_placement_types` (list[string], optional): Declared sponsored-placement types for catalog-driven retail-media products: `sponsored_search`, `sponsored_display`, and `sponsored_native`. Aggregate products and ad-network products may include multiple values. This is seller-declared discovery metadata, not independent verification of inventory quality or delivery context. +- `social_placement_surfaces` (list[string], optional): Declared social-placement surfaces for social products: `feed`, `stories`, `short_video`, `explore`, and `search`. Aggregate products and ad-network products may include multiple values. This is seller-declared discovery metadata, not independent verification of inventory quality or delivery context. +- `format_options` (list[ProductFormatDeclaration], required for 3.2 authoring): Canonical format declarations accepted by this product. Product-level formats are the upper bound for the sellable product; placement-level formats can narrow this set but cannot add formats or `locale_policy` ranges the product does not accept. A declaration's optional `locale_policy.accepted_language_ranges` exposes seller-enforced creative-language eligibility before purchase. Buyer `FormatOptionRef` selectors use `{scope: "publisher", publisher_domain, format_option_id}` for publisher-declared options and `{scope: "product", format_option_id}` for product-local options. +- `format_ids` (list[FormatID], deprecated compatibility only): Optional projection for older 3.x peers. A 3.2 seller must not use this field as its only authored creative contract. When both fields are emitted, every legacy reference must resolve to the same underlying declaration in `format_options`. See [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats). +- `placements` (list[Placement], optional): Specific public ad placements within this product. Each placement declares `kind` (`publisher_ref` or `seller_inline`) and `mode` (`targetable` or `included`); seller-private delivery objects are not exposed here. See [Placements](#placements). +- `shows` (list[CollectionSelector], optional): Shows covered by this product, grouped by publisher. Each entry has `publisher_domain` and `collection_ids` referencing shows in the publisher's `adagents.json`. See [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments). +- `episodes` (list[Episode], optional): Specific episodes available within this product. See [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments). +- `delivery_type` (string, required): Either `"guaranteed"` or `"non_guaranteed"`. +- `exclusivity` (string, optional): Whether this product offers exclusive access. `"none"` (default when absent) — multiple advertisers can buy simultaneously. `"category"` — one advertiser per industry category. `"exclusive"` — sole sponsorship. Most relevant for guaranteed products tied to specific shows or placements. +- `pricing_options` (list[PricingOption], required): Array of available pricing models for this product. A binding option applies uniformly across later values permitted by `overlay_support`; a changed fixed price, floor, currency, model, or priced applicability receives a new `pricing_option_id`. Sellers with value-dependent rates use concretely targeted configured products, separate rate-tier products, or non-binding guidance. See [Pricing Models](#pricing-models). +- `delivery_measurement` (object, optional): Who measures ad delivery — the ad server and viewability vendor used to count impressions. New implementations populate `vendors` as a structured `BrandRef` array (e.g., `[{ "domain": "googleadmanager.com" }, { "domain": "integralads.com" }]`); the legacy `provider` string is deprecated. When absent, buyers should apply their own measurement defaults. See [Delivery Measurement](#delivery-measurement). +- `outcome_measurement` (OutcomeMeasurement, **deprecated**): Legacy field for declaring business outcome measurement (lift, brand lift, foot traffic). New implementations declare outcome metrics via `reporting_capabilities.available_metrics` and pin attribution methodology + window via the `qualifier` slot on `committed_metrics`. Retained for one-minor backwards compatibility; removed at the next major. See [Commerce Media](/dist/docs/3.2.0-beta.4/media-buy/commerce-media) for the migration pattern. +- `creative_policy` (CreativePolicy, optional): Creative requirements and restrictions. +- `is_custom` (bool, optional): `true` for any request-specific configured offer, including exact structured targeting, disclosed targeting changes, or request-bound price, forecast, inventory, or terms. +- `expires_at` (datetime, conditionally required): Required for a request-specific product issued through targeting-aware discovery and whenever `targeting_resolution` is present. Earlier custom products remain schema-valid when it is absent. After this time, a recognized expired ID issued to the authenticated account and lineage returns `PRODUCT_EXPIRED`; an ID whose tombstone is no longer retained or belongs to another account/lineage returns `PRODUCT_NOT_FOUND`, preventing cross-tenant existence disclosure. +- `overlay_support` (TargetingOverlaySupport, optional): Product-scoped targeting dimensions whose values may be selected later. Required when requested through `required_overlay_support`. It guarantees selectable capability subject to disclosed limits, not inventory or a forecast for every value. +- `targeting_resolution` (ProductTargetingResolution, optional): Sparse differences from a structured overlay. Absence confirms exact acceptance of that product's structured overlay, but not how prose was interpreted; response-level `targeting_resolution.brief_targeting` confirms hard brief interpretation once for the result set when that interpretation materially affects eligibility, pricing, or forecasting. Presence requires `is_custom: true` and `expires_at`. +- `property_targeting_allowed` (bool, optional, default: false): Whether buyers can filter this product to a subset of its `publisher_properties`. When `false` (default), the product is "all or nothing" - buyers must accept all properties or the product is excluded from `property_list` filtering results. See [Property Targeting](#property-targeting). +- `collection_targeting_allowed` (bool, optional, default: false): Whether buyers can target a subset of this product's `shows`. When `false` (default), the product is a bundle — buyers get all listed shows. When `true`, buyers can select specific shows in the media buy. +- `data_provider_signals` (list[DataProviderSignalSelector], **deprecated**): Legacy/non-selectable metadata for data-provider signals already bundled into or associated with this product. New implementations should use `included_signals`. +- `included_signals` (list[SignalListing], optional): Non-selectable signal metadata for signals already included in, bundled with, or planned into this product. These describe what the product is; buyers do not select them in package `signal_targeting_groups`. +- `signal_targeting_allowed` (bool, optional, default: false): Whether this product has a package-level signal targeting surface. Editability is controlled by `signal_targeting_rules`. +- `signal_targeting_options` (list[ProductSignalTargetingOption], optional): Inline seller-offered signals that may be buyer-selected or seller-applied for this product. These may be product-local signal options or data-provider signals the seller is authorized to apply. See [Signal Targeting](#signal-targeting). +- `signal_targeting_rules` (SignalTargetingRules, optional): Composition rules such as single/multi-select limits for the selectable signals. +- `audience_evidence` (list[AudienceEvidence], optional): Immutable, digest-pinned population evidence explaining audience composition, affinity, or estimated reach. This is planning evidence, not exact targeting or legal-age verification. See [Audience evidence](#audience-evidence). +- `audience_evidence_selections` (list[AudienceEvidenceSelection], optional): Exact evidence snapshots that satisfied a required evidence policy or affected ranking for this discovery result. +- `catalog_types` (list[string], optional): Catalog types this product supports for catalog-driven campaigns. A sponsored product listing declares `["product"]`, a job board declares `["job", "offering"]`. Buyers match synced catalogs to products via this field. See [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs). +- `catalog_match` (object, optional): When the buyer provides a `catalog` on `get_products`, indicates which catalog items are eligible for this product. Contains `matched_gtins` (cross-retailer GTIN matches), `matched_ids` (generic item ID matches), `matched_count`, and `submitted_count`. +- `metric_optimization` (object, optional): Metric optimization capabilities for this product. Presence indicates the product supports `optimization_goals` with `kind: "metric"`. See [Metric optimization](#metric-optimization). +- `max_optimization_goals` (integer, optional): Maximum number of `optimization_goals` this product accepts on a package. When absent, no limit is declared. Most social platforms accept only 1. +- `conversion_tracking` (object, optional): Conversion event tracking capabilities. Presence indicates the product supports `optimization_goals` with `kind: "event"`. See [Conversion tracking](#conversion-tracking-1). +- `product_card` (object, optional): Visual card definition for displaying this product in user interfaces. See [Product Cards](#product-cards). + +### Metric optimization + +Products that support `optimization_goals` with `kind: "metric"` declare their capabilities in `metric_optimization`. No event source or conversion tracking setup is required for metric goals — the seller tracks these metrics natively. + +```json +{ + "metric_optimization": { + "supported_metrics": ["clicks", "views", "completed_views", "engagements"], + "supported_view_durations": [2, 6, 15], + "supported_targets": ["cost_per", "threshold_rate"] + } +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `supported_metrics` | string[] | Yes | Metric kinds this product can optimize for. Buyers should only request metric goals for kinds listed here. | +| `supported_view_durations` | number[] | No | Video view duration thresholds (in seconds) supported for `completed_views` goals. When absent, the seller uses their platform default. | +| `supported_targets` | string[] | No | Target kinds available: `cost_per`, `threshold_rate`. Values match `target.kind` on the optimization goal. Only listed kinds are accepted. When omitted, buyers can set target-less metric goals (maximize volume) but cannot set specific targets. | + +### Conversion tracking + +Products that support `optimization_goals` with `kind: "event"` declare their capabilities in `conversion_tracking`. Seller-level capabilities (supported event types, UID types, attribution windows) are declared in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). + +```json +{ + "conversion_tracking": { + "action_sources": ["website", "app"], + "supported_targets": ["cost_per", "per_ad_spend", "maximize_value"], + "platform_managed": false + } +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `action_sources` | string[] | No | Action sources relevant to this product (e.g., a retail media product might have `in_store` and `website`). | +| `supported_targets` | string[] | No | Target kinds available for event goals: `cost_per`, `per_ad_spend`, `maximize_value`. Values match `target.kind` on the optimization goal. Only listed kinds are accepted. When omitted, buyers can still set target-less event goals. | +| `platform_managed` | boolean | No | Whether the seller provides always-on measurement (e.g., retailer purchase attribution). When true, `sync_event_sources` returns seller-managed event sources. | + +See [Conversion Tracking & Optimization Goals](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking) for the full optimization goals reference. + +### Audience evidence + +`audience_evidence[]` gives a buyer structured reasons that inventory may suit an audience even when the seller cannot deterministically identify or target every user in that audience. Each item identifies an immutable `snapshot_id`, provider version, canonical `content_digest`, audience characteristic, relationship, baseline population, evidence type, population-level methodology, provider, measurement window, and freshness. + +```json +{ + "audience_evidence": [ + { + "evidence_id": "evidence_northstar_age_affinity", + "snapshot_id": "evidence_snapshot_2026_q2", + "version": "2026-q2", + "content_digest": "sha256:2a9cba3b29a6804e53bdb15a348b5e9741cfc613c210a91f61b0276655c5f1df", + "audience": { + "dimension": "age", + "range": { "min": 25, "max": 34 } + }, + "relationship": "index", + "value": 1.8, + "unit": "ratio", + "baseline": { + "system": "https://measurement.example/populations", + "population_id": "us_adults", + "version": "2026-q2" + }, + "evidence_type": "measured", + "methodology": "projected", + "subject_type": "individual", + "provider": { "domain": "measurement.example" }, + "measurement_window": { "start": "2026-04-01", "end": "2026-06-30" }, + "sample_size": 12000, + "confidence": 0.92, + "last_updated": "2026-07-15T00:00:00Z", + "methodology_url": "https://measurement.example/methodology/audience-projection" + } + ] +} +``` + +The three concepts remain separate: + +- `audience_evidence` says something about an inventory population. +- `demographic_targeting` and package targeting overlays say what the seller can execute for individual delivery decisions. +- age-restriction and identity-attestation surfaces handle legal compliance for a particular subject. + +`content_digest` is SHA-256 over the RFC 8785 canonical evidence core with both `content_digest` and `attestation_refs` omitted. References are excluded so a later independent credential can be attached without changing the immutable evidence snapshot or creating a recursive digest. The built-in `age` characteristic uses completed years: values and range bounds are non-negative integers and `range.min` cannot exceed `range.max`. + +`projected` is deliberately defined only for population evidence. It does not expand the user-level signal methodology vocabulary. Optional `attestation_refs[]` use the shared portable-attestation contract as an independent verification layer; they do not change `evidence_type`. Their subject identifies the exact evidence `snapshot_id` and carries the evidence `content_digest`. Evaluators still apply their own issuer and resolver allowlists. + +When a buyer supplies evidence requirements and evidence affects product inclusion or rank, the returned Product carries `audience_evidence_selections[]` with the exact matching snapshots and `decision_use` of `eligibility` or `recommendation`. This decision readback is mandatory even when the buyer's `fields` projection omitted `audience_evidence_selections`; projection may omit the optional full evidence payload, not the explanation of an applied policy. + +At buy time, a package can repeat `audience_evidence_requirements` and can carry `audience_evidence_pins[]` copied from discovery. Every pin includes `evidence_id`, `snapshot_id`, `version`, and `content_digest`; the seller rejects a missing or mutated snapshot instead of substituting current catalog content. The confirmed Package returns a matching `audience_evidence_selections[]` entry with `decision_use: "package_construction"` for every accepted pin and every snapshot used to satisfy package requirements, and preserves that readback on later package reads. + +When an attestation affected either decision, readback preserves the exact reference and its `AttestationEvaluation` as one pair. That pair is valid only when the reference is published on the selected snapshot, its claim and issuer satisfy both buyer and seller policy, `reference_digest` covers that same reference, the outcome is `verified`, and both the subject digest and action-binding digest equal the evidence `content_digest`. An evaluation for one reference cannot verify a different reference. Sellers retain the full immutable snapshot and evaluations for at least as long as the package remains readable. Buyers should cache the evidence returned during discovery; AdCP 3.2 does not introduce a buyer-controlled snapshot fetch URL. Sellers may embed the full snapshot in readback, but need not duplicate it on every product or package. + +### Pricing Models + +Publishers declare which pricing models they support for each product. Buyers select from the available options when creating a media buy. This approach supports: + +- **Multiple pricing models per product** - Publishers can offer the same inventory via different pricing structures +- **Multi-currency support** - Publishers declare supported currencies per `pricing_options` entry; buyers can use `filters.pricing_currencies` during discovery to narrow media product transaction currencies and must use a supported currency at buy time +- **Flexible pricing** - Support for CPM, CPCV, CPP (GRP-based), CPA, and more + +#### Supported Pricing Models + +- **CPM** (Cost Per Mille) - Cost per 1,000 impressions (traditional display) +- **CPC** (Cost Per Click) - Cost per click on the ad +- **CPCV** (Cost Per Completed View) - Cost per 100% video/audio completion +- **CPV** (Cost Per View) - Cost per view at publisher-defined threshold +- **CPA** (Cost Per Acquisition) - Cost per conversion event (purchase, lead, signup, etc.) +- **Revenue Share** - Commission rate applied to settled attributed conversion value +- **CPP** (Cost Per Point) - Cost per Gross Rating Point (TV/audio) +- **Flat Rate** - Fixed cost regardless of delivery volume +- **Time** - Cost per time unit (day, week, month) that scales with campaign duration + +#### PricingOption Structure + +Each pricing option includes: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpcv-option.json", + "pricing_option_id": "cpcv_usd_guaranteed", + "pricing_model": "cpcv", + "fixed_price": 0.15, + "currency": "USD", + "min_spend_per_package": 5000 +} +``` + +For auction-based pricing (no `fixed_price`), use `floor_price` for the seller's minimum and optional `price_guidance` for non-binding percentile hints. The buyer expresses execution intent separately through `bidding.bid_amount`, `bidding.max_bid`, `bidding.cost_per`, or `bidding.roas` on `create_media_buy`. Pricing-option `max_bid` and package `bid_price` are deprecated legacy migration fields in 3.2: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_auction", + "pricing_model": "cpm", + "currency": "USD", + "floor_price": 10.00, + "price_guidance": { + "p25": 12.50, + "p50": 15.00, + "p75": 18.00, + "p90": 22.00 + } +} +``` + +`revenue_share` is the exception to the old "no fixed price means auction" shortcut: it is contingent pricing, uses `commission_rate`, and never uses auction bidding fields. + +#### Delivery Measurement + +Products SHOULD declare their measurement provider when available: +```json +{ + "delivery_measurement": { + "provider": "Google Ad Manager with IAS viewability verification", + "notes": "MRC-accredited viewability. 50% in-view for 1s display / 2s video." + } +} +``` + +Common provider examples: +- `"Google Ad Manager with IAS viewability"` +- `"Nielsen DAR for P18-49 demographic measurement"` +- `"Geopath DOOH traffic counts updated monthly"` +- `"Comscore vCE for video completion tracking"` +- `"Self-reported impressions from proprietary ad server"` + +Guaranteed products can also declare `performance_standards`, `measurement_terms`, and `cancellation_policy` that define accountability obligations at the buy level. See [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability). + +### Outcome Measurement Object + +For products that include outcome measurement (common in retail media): +```json +{ + "type": "incremental_sales_lift", + "attribution": "deterministic_purchase", + "window": { "interval": 30, "unit": "days" }, + "reporting": "weekly_dashboard" +} +``` + +### CreativePolicy Object + +Defines creative requirements and restrictions: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/creative-policy.json", + "co_branding": "required", + "landing_page": "retailer_site_only", + "templates_available": true +} +``` + +### Placements + +Products can optionally declare specific public ad placements within their inventory. Placement IDs are publisher-scoped. When a placement exists in a publisher's `adagents.json` placement declarations, the product placement references that entry with `kind: "publisher_ref"`, `publisher_domain`, and `placement_id`. The product may omit `name` in that case because the publisher declaration resolves the name and other public metadata. When no public publisher declaration exists, the sales agent defines an inline placement with `kind: "seller_inline"` and buyer-facing fields such as `name`, `description`, formats, and tags; its `placement_id` is still interpreted in the publisher namespace, or in the seller agent's own publisher namespace when `publisher_domain` is omitted. Whether a publisher reference resolved from publisher-hosted adagents.json or a community-maintained fallback file is resolver metadata, not a separate placement kind. + +- **`kind: "publisher_ref"`** - Publisher-scoped placement reference resolved from the named publisher's `adagents.json`; requires `publisher_domain` +- **`kind: "seller_inline"`** - Public buyer-facing placement metadata defined inline by the sales agent; requires `name` +- **`publisher_domain`** - Domain whose `adagents.json` defines the referenced placement. New multi-publisher products SHOULD include it so the placement namespace is explicit. +- **`placement_id`** - Placement ID in the publisher namespace. Buyers reference it with `publisher_domain` in `creative_assignments[].placement_refs`; legacy `placement_ids` strings are only unambiguous in single-publisher contexts. +- **`mode: "targetable"`** - The buyer may select this publisher-scoped placement with `targeting_overlay.placement_selection` +- **`mode: "included"`** - The public placement is fixed product inventory and cannot be cherry-picked. Across discovery, create, and update, a selected request exactly equal to the product's complete included set is an inherent match and may be echoed without `overlay_support.placement_selection`; partial selection requires a selectable product. +- **`video_placement_types`** - Declared video placement types for OLV and other video placements. Concrete placements usually declare one value; aggregate placements may declare multiple. +- **`audio_distribution_types`** - Declared audio distribution types for radio, streaming-audio, podcast, gaming, and other audio placements. Concrete placements usually declare one value; aggregate placements may declare multiple. +- **`sponsored_placement_types`** - Declared sponsored-placement types for catalog-driven retail-media placements. Concrete placements usually declare one value; aggregate placements may declare multiple. +- **`social_placement_surfaces`** - Declared social-placement surfaces for social placements. Concrete placements usually declare one value; aggregate placements may declare multiple. +- **Publisher reference rule** - Publisher-referenced product placements resolve to `{publisher_domain, placement_id}` in the publisher's `adagents.json` +- **Private inventory rule** - Seller-private delivery objects, ad-server mappings, and source/origin details must stay out of `get_products` +- **Creative assignment** - Different creatives can be routed to selected placements with `creative_assignments[].placement_refs`; assignment does not select inventory +- **Omitting placement targeting** - `placement_selection.mode: "default"` leaves the product's default placement composition intact. Creatives without placement refs run across the package's selected/default placements. +- **Use registered IDs when available** - If the publisher declares canonical `placements` in `adagents.json`, product placements SHOULD use the catalog ID as `placement_id` +- **Preserve registry semantics** - When a product references a registered placement, it is referring to that same placement. The product may narrow canonical `format_options` or add operational detail, but it should not change the placement's meaning incompatibly +- **Tags stay useful at product level** - Product placements can carry `tags` for grouping and should align with registry tags when the placement comes from the publisher registry + +`mode` is required for new senders as of May 25, 2026. During the six-month migration window ending November 25, 2026, buyers may tolerate legacy products where `placements[]` entries omit `mode` and treat those placements as targetable for creative assignment. After November 25, 2026, buyers should fail closed on missing `mode`. + +Publishers can authorize agents for specific placements in `adagents.json` with `authorized_agents[].placement_ids` or `authorized_agents[].placement_tags`. Sales agents should only return publisher-referenced placements they are authorized to sell. + +#### Video placement types + +Video products can declare `video_placement_types` at the product level, placement level, or both. The vocabulary follows the IAB Tech Lab/OpenRTB 2.6 `video.plcmt` definitions, but AdCP uses readable field and value names rather than the OpenRTB wire name: + +| Value | Meaning | +|---|---| +| `instream` | Video ads before, during, or after streaming video content requested by the user | +| `accompanying_content` | Video ads in a player with accompanying video content associated with the page or app content | +| `interstitial` | Video ads shown as an interstitial experience, typically between content or app states | +| `standalone` | Video ads shown without associated video content, also called no-content or standalone video | + +The field is an array because a sellable product can aggregate multiple placement types. For example, an OLV network product might include both `instream` and `accompanying_content`, while individual targetable placements narrow to one type. When both product and placement declarations are present, the product-level array should be the union of the video placement types the seller may deliver under that product. + +This is a discovery signal, not a verification claim. Buyers can filter for products that can satisfy a requested type with `get_products.filters.video_placement_types`, but sellers should not return mixed, non-targetable bundles for an instream-only filter unless they can constrain delivery to instream inventory during planning or purchase. + +#### Audio distribution types + +Audio products can declare `audio_distribution_types` at the product level, placement level, or both. The vocabulary follows the IAB Tech Lab/OpenRTB 2.6 `audio.feed` definitions, but AdCP uses readable field and value names rather than the OpenRTB numeric codes: + +| Value | Meaning | +|---|---| +| `music_streaming_service` | Music streaming service | +| `fm_am_broadcast` | FM/AM broadcast, including live content broadcast over the air and also available via online streaming | +| `podcast` | Original, pre-recorded content distributed as episodes in a series | +| `catch_up_radio` | Recorded segment of a radio show that was originally broadcast live | +| `web_radio` | Live audio content only available via online streaming, not as FM/AM broadcast | +| `video_game` | Background audio in video games | +| `text_to_speech` | Text-to-speech audio such as audio books or website/plugin article narration | + +This field describes execution and distribution details inside the buyer-facing `radio`, `streaming_audio`, `podcast`, or `gaming` channel. It does not rename channels and it does not change `adagents.json` `property_type` semantics, which remain tied to authorizable inventory surfaces. The field is an array because a sellable product can aggregate multiple audio distribution types. When both product and placement declarations are present, the product-level array should be the union of the audio distribution types the seller may deliver under that product. + +This is a discovery signal, not a verification claim. Buyers can filter for products that can satisfy a requested type with `get_products.filters.audio_distribution_types`, but sellers should not return mixed, non-targetable bundles unless they can constrain delivery to the requested audio distribution type during planning or purchase. + +#### Sponsored placement types + +Catalog-driven retail-media products can declare `sponsored_placement_types` at the product level, placement level, or both, distinguishing where the sponsored placement renders on the retailer surface: + +| Value | Meaning | +|---|---| +| `sponsored_search` | Sponsored placements rendered against retailer on-site search results, keyed to the shopper's query | +| `sponsored_display` | Sponsored placements rendered in display slots across browse, category, and product-detail pages outside the search results stream | +| `sponsored_native` | Sponsored placements rendered using the retailer's native in-grid product template, blending into the organic listing | + +These values describe placement surfaces for products under the catalog-driven `sponsored_placement` canonical, whose `source_catalog` slot is required; an off-site value is intentionally excluded because off-site placements are not catalog-keyed. The field is an array because a sellable product can aggregate multiple surfaces; when both product and placement declarations are present, the product-level array should be the union the seller may deliver under that product. + +This is a discovery signal, not a verification claim. Buyers can filter for products that can satisfy a requested type with `get_products.filters.sponsored_placement_types`, but sellers should not return mixed, non-targetable bundles unless they can constrain delivery to the requested type during planning or purchase. + +#### Social placement surfaces + +Social products can declare `social_placement_surfaces` at the product level, placement level, or both, distinguishing the in-app surface where the social placement renders: + +| Value | Meaning | +|---|---| +| `feed` | The primary scrolling home or timeline surface | +| `stories` | The full-screen, ephemeral tap-through story surface | +| `short_video` | The full-screen vertical algorithmically-recommended short-video surface (branded Reels, Shorts, Spotlight, etc.) | +| `explore` | The discovery or browse surface outside the followed graph | +| `search` | The in-app search-results surface, keyed to the user's query | + +The field is an array because a sellable product can aggregate multiple surfaces; when both product and placement declarations are present, the product-level array should be the union the seller may deliver under that product. + +This is a discovery signal, not a verification claim. Buyers can filter for products that can satisfy a requested surface with `get_products.filters.social_placement_surfaces`, but sellers should not return mixed, non-targetable bundles unless they can constrain delivery to the requested surface during planning or purchase. + +#### Format precedence with placements + +Product-level `format_options` define the creative formats accepted by the product as a whole. Placement-level `format_options`, whether returned inline on the product placement or inherited from a public publisher placement declaration, only narrow that product-wide set for the specific placement. Deprecated `format_ids` may appear only as a 3.x compatibility projection of the same declarations. + +For a multi-publisher or multi-placement product, the product-level list is the union of formats the seller can traffic somewhere in the product. It is not a promise that every option works on every placement. Compute each placement's effective set independently by intersecting the product declaration with that placement's publisher declaration. + +If both product and placement format declarations are present, buyers compute the effective accepted formats for that placement as their intersection. For legacy `format_ids`, first project named formats to canonical declarations through `canonical`, `v1_format_ref`, or the canonical mapping registry; do not compare raw `(agent_url, id)` values after projection. A legacy 300x250 display ID and a canonical `image` declaration with `width: 300` and `height: 250` are compatible. For 3.1+ `format_options`, match publisher-declared options by `{publisher_domain, format_option_id}`, match product-local options by `format_option_id` when `publisher_domain` is omitted, and otherwise match declarations with the same `format_kind` whose placement parameters narrow the product declaration. + +For a multi-publisher product without explicit `placements[]`, each `publisher_properties[]` selector is an eligibility slice. A publisher-scoped format option applies only to slices for the matching `publisher_domain`; a product-local option applies to every slice. One creative intended for the entire product must satisfy the intersection across all slices. A set of distinct creatives may use the union only when it covers every slice. If a seller or buyer cannot determine a slice's effective formats from the product and resolved publisher catalog, it must fail closed and require the seller to add placements or return a refined product. + +Product gating is stricter than equivalence matching. When the product or placement declares fixed constraints such as `width`, `height`, `duration_ms_exact`, or a duration range, the buyer's selected format or creative manifest must declare and satisfy those constraints. A broad request (`format_kind: "image"` with no dimensions, or `video_hosted` with no duration) does not satisfy a fixed-size or fixed-duration product. For ranges, satisfaction means containment: a range-based request satisfies a product only when every value it permits falls within the product's accepted range; overlap alone is insufficient. An exact duration satisfies a range when the exact value falls inside it. The reverse is allowed: a broad product declaration can accept a specific 300x250 image or 30-second video unless another product constraint excludes it. See [format matching vs product satisfaction](/dist/docs/3.2.0-beta.4/creative/canonical-formats#format-matching-vs-product-satisfaction). + +If a placement has no format declaration, it inherits the product-level formats. A placement-only format that is absent from the product-level declaration is a seller conformance error, not an expansion of the product's creative contract; buyers should fail closed for that format and not treat it as accepted. + +For a product or selected package containing multiple included placements, a single creative intended to run everywhere must be in the intersection of all selected placements' effective sets. If distinct creatives may be assigned by placement, the package can expose the union, but the selected creative set must cover every included delivery placement. If any placement has an empty intersection or remains uncovered, the seller must reject or refine the product/package; it must not silently remove that inventory after purchase. Price, floor, availability, and deal eligibility stay on the product or pricing option—they are commercial facts, not creative-format parameters. + +#### Creative locale constraints + +A format option may carry `locale_policy.accepted_language_ranges` when the +seller can execute only particular creative languages. The policy narrows the +same base format; it does not create a locale-specific `format_kind` or a +synthetic ID such as `display_image_fr_only`. + +Ranges use RFC 4647 Basic Filtering. Seller range `fr` accepts materialized +creative variants tagged `fr`, `fr-CA`, or `fr-FR`; seller range `fr-CA` does +not accept bare `fr` or `fr-FR`. Buyers SHOULD compare planned or existing +creative locale topology during discovery and discard incompatible products +before `create_media_buy`. A source-only locale topology is sufficient for a +monolingual creative. + +At assignment, the seller computes the effective product-and-placement format +declaration and rejects with `CREATIVE_LOCALE_NOT_ACCEPTED` when no materialized +variant matches. The check runs independently for every placement where the +assignment may serve. A placement may introduce a locale policy when the +product option is unconstrained; when both carry policies, placement ranges may +narrow product ranges (`fr-CA` under `fr`) but cannot broaden them. The seller filters eligible variants before +buyer Lookup, explicit fallback, or default behavior; `serve_default` is valid +only when the default is eligible. Nonmatching variants remain reusable on +other products. + +The effective locale policy is snapshotted when the seller accepts an +assignment. Later product-catalog changes apply only to new or changed +assignments; they do not silently rewrite or remove an existing assignment. + +Sellers exposing a locale-constrained product or placement MUST advertise +`creative.localization` and `creative.has_creative_library: true`; buyers sync +the locale topology before assigning because inline media-buy creatives cannot +carry it. Locale-constrained effective options are canonical-only. No product +or placement `format_id` may project to one, including when only a placement +introduces the policy. Buyers use a format-options-aware canonical path: +`format_option_refs` when published or required for disambiguation, otherwise a +direct `format_kind`/`params` selector. They never rely on `format_ids` for the +constrained route. + +#### Placement Object Structure + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/placement.json", + "kind": "publisher_ref", + "publisher_domain": "daily-pulse.example", + "placement_id": "homepage_banner", + "name": "Homepage Banner", + "description": "Above-the-fold banner on the homepage", + "mode": "targetable", + "tags": ["homepage", "display", "premium"], + "format_options": [ + {"format_option_id": "display_728x90", "format_kind": "image", "params": {"width": 728, "height": 90}}, + {"format_option_id": "display_970x250", "format_kind": "image", "params": {"width": 970, "height": 250}} + ] +} +``` + +#### Example: Product with Placements + +```json +{ + "product_id": "news_site_premium", + "name": "News Site Premium Package", + "description": "Premium placements across news site", + "format_options": [ + {"format_option_id": "display_728x90", "format_kind": "image", "params": {"width": 728, "height": 90}}, + {"format_option_id": "display_300x250", "format_kind": "image", "params": {"width": 300, "height": 250}} + ], + "placements": [ + { + "kind": "publisher_ref", + "placement_id": "homepage_banner", + "publisher_domain": "daily-pulse.example", + "name": "Homepage Banner", + "mode": "targetable", + "tags": ["homepage", "display", "premium"], + "format_options": [{"format_option_id": "display_728x90", "format_kind": "image", "params": {"width": 728, "height": 90}}] + }, + { + "kind": "publisher_ref", + "placement_id": "article_sidebar", + "publisher_domain": "daily-pulse.example", + "name": "Article Sidebar", + "mode": "targetable", + "tags": ["article", "display"], + "format_options": [{"format_option_id": "display_300x250", "format_kind": "image", "params": {"width": 300, "height": 250}}] + }, + { + "kind": "seller_inline", + "placement_id": "premium_rotation", + "name": "Premium rotation", + "mode": "included", + "tags": ["premium"] + } + ], + "delivery_type": "guaranteed", + "pricing_options": [...] +} +``` + +When creating a media buy, buyers can assign different creatives to different placements: + +```json +{ + "packages": [ + { + "product_id": "news_site_premium", + "creative_assignments": [ + { + "creative_id": "creative_1", + "placement_refs": [ + { + "publisher_domain": "daily-pulse.example", + "placement_id": "homepage_banner" + } + ] + }, + { + "creative_id": "creative_2", + "placement_refs": [ + { + "publisher_domain": "daily-pulse.example", + "placement_id": "article_sidebar" + } + ] + } + ] + } + ] +} +``` + +See [Creative Assignment and Placement Targeting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/index.mdx#creative-assignment-and-placement-targeting) for more details. + +### Collections and installments + +Shows are a third product dimension alongside formats and placements. While placements describe *where* an ad appears and formats describe *what* the ad looks like, shows describe the *content context* — the programming a viewer is watching. Products can declare `shows` and `episodes` so buyers can target specific shows or episodes when purchasing inventory. + +See [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments) for the full model, examples, and targeting details. + +### Exclusivity + +The `exclusivity` field indicates whether a product offers exclusive access to its inventory. Defaults to `"none"` when absent. + +| Value | Meaning | +|---|---| +| `none` | Multiple advertisers can buy this product simultaneously | +| `category` | One advertiser per industry category (e.g., one auto brand per collection sponsorship) | +| `exclusive` | Sole sponsorship — only one advertiser can buy this product | + +Exclusivity is most relevant for guaranteed products tied to specific shows or placements, where advertisers want brand separation or sole ownership of a content association. + +#### When to use each level + +- **`none`**: Programmatic inventory, run-of-network, open auction products. Multiple advertisers sharing the same inventory is expected. +- **`category`**: Podcast or CTV sponsorships where competitive separation matters. One auto brand per collection, one fintech brand per installment — but multiple non-competing advertisers can buy simultaneously. +- **`exclusive`**: Sole sponsorship of a single collection or event. The advertiser is the only brand associated with the content. + +Publishers SHOULD include `exclusivity` on guaranteed products with `shows`. The implicit default of `"none"` is ambiguous for collection-level inventory — buyers cannot tell whether the publisher intends shared inventory or simply omitted the field. + +#### Content sponsorship pattern + +A product combining `delivery_type: "guaranteed"`, `exclusivity: "exclusive"`, and `shows` represents a content sponsorship — the advertiser becomes the sole sponsor of specific content. This is the standard pattern for podcast title sponsorships, CTV collection sponsorships, and event-based takeovers. + +```json +{ + "product_id": "signal_noise_sponsor", + "name": "Signal & Noise — Exclusive Sponsorship", + "description": "Sole sponsorship of Signal & Noise, a weekly technology podcast. Includes pre-roll and mid-roll placements across all episodes.", + "publisher_properties": [ + { "publisher_domain": "crestnetwork.example", "property_ids": ["crest_podcasts"] } + ], + "format_options": [ + { "format_option_id": "audio_pre_roll_30s", "format_kind": "audio_hosted", "params": { "duration_ms_exact": 30000 } }, + { "format_option_id": "audio_mid_roll_60s", "format_kind": "audio_hosted", "params": { "duration_ms_exact": 60000 } } + ], + "collections": [{ "publisher_domain": "crestnetwork.example", "collection_ids": ["signal_noise"] }], + "delivery_type": "guaranteed", + "exclusivity": "exclusive", + "pricing_options": [ + { + "pricing_option_id": "flat_monthly", + "pricing_model": "flat_rate", + "fixed_price": 25000, + "currency": "USD" + } + ] +} +``` + +Category exclusivity works for multi-collection bundles where the publisher separates competing brands across a network but still sells to multiple non-competing advertisers: + +```json +{ + "product_id": "crest_business_bundle", + "name": "Crest Business Podcast Bundle — Category Sponsorship", + "description": "Sponsorship across three business podcasts. One advertiser per industry category across all shows.", + "publisher_properties": [ + { "publisher_domain": "crestnetwork.example", "property_ids": ["crest_podcasts"] } + ], + "format_options": [ + { "format_option_id": "audio_pre_roll_30s", "format_kind": "audio_hosted", "params": { "duration_ms_exact": 30000 } }, + { "format_option_id": "audio_mid_roll_60s", "format_kind": "audio_hosted", "params": { "duration_ms_exact": 60000 } } + ], + "collections": [{ "publisher_domain": "crestnetwork.example", "collection_ids": ["signal_noise", "market_beat", "founder_stories"] }], + "delivery_type": "guaranteed", + "exclusivity": "category", + "pricing_options": [ + { + "pricing_option_id": "flat_quarterly", + "pricing_model": "flat_rate", + "fixed_price": 60000, + "currency": "USD" + } + ] +} +``` + +### Property Targeting + +The `property_targeting_allowed` flag indicates whether buyers can filter a product to a subset of its `publisher_properties` when using property list filtering via `get_products`. + +#### Behavior + +- **`property_targeting_allowed: false` (default)**: The product is "all or nothing." If the buyer's `property_list` doesn't include all of the product's properties, the product is excluded from results entirely. + +- **`property_targeting_allowed: true`**: Buyers can filter the product to properties matching their `property_list`. The product is included in results if there is any intersection between its properties and the buyer's list. + +#### Use Cases + +| Use Case | `property_targeting_allowed` | Why | +|----------|------------------------------|-----| +| Run of Network | `false` | Buyers must accept the entire network | +| Premium Bundles | `false` | Sports + News bundle sold together | +| Flexible Inventory | `true` | Buyers can target specific sites within a category | + +#### Examples + +**All-or-nothing product** (`property_targeting_allowed: false`): +```json +{ + "product_id": "premium_news_bundle", + "name": "Premium News Bundle", + "publisher_properties": [ + { "publisher_domain": "news.example.com", "property_ids": ["site_a", "site_b", "site_c"] } + ], + "property_targeting_allowed": false +} +``` + +When a buyer calls `get_products` with a `property_list` containing only `site_a` and `site_b`, this product is **excluded** because the buyer's list doesn't include all properties (`site_c` is missing). + +**Flexible product** (`property_targeting_allowed: true`): +```json +{ + "product_id": "news_category_flexible", + "name": "News Category - Flexible Targeting", + "publisher_properties": [ + { "publisher_domain": "news.example.com", "property_ids": ["tech", "sports", "finance", "politics"] } + ], + "property_targeting_allowed": true +} +``` + +When a buyer calls `get_products` with a `property_list` containing only `tech` and `sports`, this product is **included** because there is an intersection. The buyer can then purchase this product and target only the matching properties via `targeting_overlay.property_list` in the package. + +### Signal Targeting + +Products use three different signal fields with different meanings: + +- **`data_provider_signals`** is deprecated legacy/non-selectable metadata for data-provider signals already bundled into or associated with the product. New implementations should use `included_signals`. +- **`included_signals`** is the structured, non-selectable surface. Use it when a signal is already bundled into, included in, or planned into the product. It has no per-product targeting price and no seller activation handle. +- **`signal_targeting_options`** is the inline selectable/composable surface. Use it when a seller-offered signal can appear on a package and the product needs to expose a product-specific menu, price, activation handle, default/fixed choice, grouping hint, or brief/refine-selected subset. + +`Product.signal_targeting_allowed` and `signal_targeting_rules` are the canonical product contract for signal composition. `get_signals` is the canonical broad signal discovery surface; wholesale products can use `signal_targeting_allowed: true` with no inline `signal_targeting_options` to tell buyers to call `get_signals` for the selectable signal feed. Brief/refine responses can return inline `signal_targeting_options` for the relevant subset or product-specific overrides. Sellers do not need to expose product-local options through `get_signals` unless they also want those signals to be discoverable outside this product. Sellers MUST set `signal_targeting_allowed: true` whenever they return `signal_targeting_options` or `signal_targeting_rules`, and MUST use `included_signals` rather than `signal_targeting_options` for signals that are bundled but not represented as package signal groups. + +Signals are named targetable dimensions, similar to feature values. A signal definition declares `value_type` (`binary`, `categorical`, or `numeric`) and may carry richer metadata over time. Product signal listings use `signal_ref` with an explicit resolution scope: `{ "scope": "product", "signal_id": "..." }` refers to a product-local signal defined by the listing, `{ "scope": "data_provider", "data_provider_domain": "...", "signal_id": "..." }` refers to a signal defined in a data provider's published adagents.json `signals[]`, and `{ "scope": "signal_source", "signal_source_url": "...", "signal_id": "..." }` refers to a source-native signal. `signal_ref.scope` is the resolution path, not provenance, and authoritative enrichment lives on the seller, signal source, or data-provider signal definition. For `scope: "product"`, the product listing MUST include `name` and `value_type` because the product is the definition boundary. For `scope: "data_provider"` or `scope: "signal_source"`, `signal_ref` is sufficient and any inline name, description, value type, range, or methodology is contextual, not authoritative. For product-local signals exposed on both `get_signals` and `get_products`, `signal_ref.signal_id` MUST match the seller's `get_signals.signals[].signal_ref.signal_id` for the same signal. + +Signal targeting composition is declared on each product, not in seller-wide `get_adcp_capabilities`, because one seller can sell products backed by different ad servers or platforms with different include/exclude and grouping limits. Buyers should read any inline `signal_targeting_options` and `signal_targeting_rules` from the specific product they are composing. + +- **`signal_targeting_allowed: false` (default)**: Signals are bundled into the product terms and are not represented as package-level signal groups. The buyer buys the product as offered and does not select or receive echoed signal groups on the package. +- **`signal_targeting_allowed: true`**: The product has a package-level signal targeting surface. In wholesale discovery, if inline `signal_targeting_options` is omitted, buyers use `get_signals` to discover the selectable signal feed. In brief/refine results, sellers may include inline `signal_targeting_options` for the relevant subset or product-specific overrides. +- **`signal_targeting_rules`**: Optional storefront composition rules. Use `resolution_model`, `selection_mode`, `min_selected_signals`, `max_selected_signals`, `max_selected_per_group`, `selection_group_rules`, `max_signal_targeting_groups`, and `max_signals_per_targeting_group` when the seller needs to express optional, required, single-select, mutually exclusive, fixed, seller-planned, or grouped signal choices. `resolution_model: "direct_targeting"` means selected signals are applied as targeting predicates to the package inventory. `resolution_model: "seller_planned"` means selected signals are planning inputs that the seller resolves against product-specific inventory, timing, availability, reach, or pacing constraints; buyers should not attempt to decompose the signal selection into lower-level inventory or schedule decisions. `selection_mode: "required"` means at least `min_selected_signals`, or 1 when `min_selected_signals` is omitted. All explicit package-level signal selection uses the grouped expression shape: top-level `operator: "all"` with child groups using `operator: "any"` for include groups and `operator: "none"` for exclusion groups. If `selection_mode` is `fixed`, buyers render `default_selected` signals as read-only; sellers apply those signals even when the buyer omits `targeting_overlay.signal_targeting_groups`. When `selection_group_rules` are present, each child group MUST contain signals from exactly one `selection_group` and one targeting mode, and buyers MUST send at most one child group for each `(selection_group, targeting_mode)` pair. Sellers MUST reject duplicate, mixed, or collapsed child groups. +- **`activation_status: "requires_activation"`**: `get_products` alone is not sufficient to select the signal unless the buyer already has an activation key the seller accepts. The product option MUST include `signal_agent_segment_id` so the buyer can activate the signal through `activate_signal`, then include the activation key if the seller requires it on the package. + +`allowed_targeting_modes` on each signal option controls which buy-time child group operators are valid: `"include"` maps to `operator: "any"`, and `"exclude"` maps to `operator: "none"`. `selection_group` is a product-defined composability bucket for limits like `max_selected_per_group` and `selection_group_rules`; it is not a pointer to a specific child group in the package's `signal_targeting_groups.groups[]`. Use the same `selection_group` when options are freely OR-combinable in one child group for a targeting mode. Use different `selection_group` values when options must be represented as separate ANDed clauses, such as a product backed by one ad server that exposes both audience segments and key-value targeting planes that cannot be collapsed into the same child expression. Different `selection_group` values by themselves are descriptive; sellers should publish `selection_group_rules` when group boundaries affect validation. + +```json +{ + "product_id": "retail_video_premium", + "name": "Retail Video Premium", + "signal_targeting_allowed": true, + "signal_targeting_rules": { + "resolution_model": "direct_targeting", + "selection_mode": "optional", + "max_selected_signals": 2, + "max_selected_per_group": 1, + "selection_group_rules": [ + { + "selection_group": "retail_audience", + "targeting_mode": "include", + "selection_mode": "optional", + "max_selected_signals": 1 + } + ], + "max_signal_targeting_groups": 2, + "max_signals_per_targeting_group": 3 + }, + "signal_targeting_options": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "auto_intenders" + }, + "selection_group": "retail_audience", + "allowed_targeting_modes": ["include", "exclude"], + "activation_status": "ready", + "default_selected": false, + "pricing_options": [ + { + "pricing_option_id": "signal_cpm_usd_250", + "model": "cpm", + "cpm": 2.50, + "currency": "USD" + } + ] + } + ] +} +``` + +A product can also disclose included, non-selectable signals without opening a package-level signal targeting surface: + +```json +{ + "product_id": "broadcast_auto_intenders_weekly_reach", + "name": "Broadcast Auto Intenders Weekly Reach", + "signal_targeting_allowed": false, + "included_signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "auto_intenders" + } + } + ] +} +``` + +Here the buyer can inspect or verify the Pinnacle Data signal definition through the referenced provider's adagents.json `signals[]`, but cannot add or remove that signal in `create_media_buy`. + +A wholesale product with a large or account-specific signal menu can point buyers to `get_signals` instead of inlining every option: + +```json +{ + "product_id": "retail_display_open_exchange", + "name": "Retail Display Open Exchange", + "signal_targeting_allowed": true, + "signal_targeting_rules": { + "resolution_model": "direct_targeting", + "selection_mode": "optional", + "max_signal_targeting_groups": 2 + } +} +``` + +In that shape, because `signal_targeting_allowed` is true and no inline `signal_targeting_options` are returned, the buyer calls `get_signals` to discover candidate signals. Before committing spend, the buyer SHOULD confirm product eligibility by calling `get_products` with the candidate selections in `targeting_overlay.signal_targeting_groups`, or request later-selectable support with `required_overlay_support.signal_targeting_groups`. The legacy `filters.signal_targeting` path is deprecated. + +At buy time, package-level `signal_targeting_groups` carries the selected `signal_ref`, value expression, optional seller execution handle (`signal_agent_segment_id`), and signal `pricing_option_id` when the signal has its own price. A simple include-only selection is represented as one child group with `operator: "any"`; grouped inclusion/exclusion uses additional `any` and `none` groups, such as `(A OR B) AND NOT (C)`. This is separate from the package's `pricing_option_id`, which prices the media product itself. Product-scoped signal pricing in `signal_targeting_options[].pricing_options` is authoritative for that product; broader `get_signals` pricing is a default discovery view unless the product omits a price. Sellers MUST echo all applied package signal groups in the resulting package state, including fixed/default selections the seller applied without buyer edits. + +For provider-published signals, `signal_ref.data_provider_domain` identifies the upstream data provider and `signal_ref.signal_id` identifies the public signal definition in that provider's adagents.json `signals[]`. Buyers that need provenance verification can fetch that domain's `adagents.json` and confirm the seller appears in `authorized_agents` for that signal or its tags. For product-local signals, use `scope: "product"` and `signal_id`; the ID is meaningful only within the selected product/package context. + +Backend execution kind is not part of signal identity. A GAM-backed seller can expose an audience segment, a key-value rule, or another custom-targeting primitive as ordinary `signal_ref` options. If those signals can be combined by the platform in one OR clause, put them in the same `selection_group`; if they require separate clauses, put them in separate `selection_group`s and publish `selection_group_rules` so storefronts compose one child group per `(selection_group, targeting_mode)`. + +For seller-planned guaranteed products, such as linear broadcast audio schedules, the selected audience can be portable while the plan is not. In that case, publish the shared audience as a `scope: "data_provider"` signal if it appears across products, set `resolution_model: "seller_planned"` on products where the seller resolves that audience against time-based avails or reach goals, and use `selection_mode: "required"` or `selection_group_rules[].selection_mode: "required"` when an audience choice is mandatory for the package. For non-guaranteed products where selected signals are applied as ordinary targeting predicates, use the default `resolution_model: "direct_targeting"` and point the product to `get_signals` when the wholesale signal menu should not be duplicated inline. + +The `seller_planned` model applies to any supply type where inventory is scheduled in advance and constrained by time-bound availability rather than continuously auctioned: live sports, political programming, and tentpole broadcasts follow the same pattern as linear broadcast audio. + +### Custom & Account-Specific Products + +A server can offer a general catalog, but it can also return: +- **Account-Specific Products**: Products reserved for or negotiated with specific accounts (buyers, agencies, or brands) +- **Custom Products**: Dynamically generated products with `is_custom: true`; targeting-aware discovery products also carry an `expires_at` timestamp, while legacy custom products may omit it + +## Product Examples + +### Standard CTV Product (Multiple Pricing Options) +```json +{ + "product_id": "connected_tv_prime", + "name": "Connected TV - Prime Time", + "description": "Premium CTV inventory 8PM-11PM", + "publisher_properties": [ + { "publisher_domain": "streaming.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } }, + { "format_option_id": "video_30s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 30000 } } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "cpm_usd_guaranteed", + "pricing_model": "cpm", + "fixed_price": 45.00, + "currency": "USD", + "min_spend_per_package": 10000 + }, + { + "pricing_option_id": "cpcv_usd_guaranteed", + "pricing_model": "cpcv", + "fixed_price": 0.18, + "currency": "USD", + "min_spend_per_package": 10000 + }, + { + "pricing_option_id": "cpp_usd_p18-49", + "pricing_model": "cpp", + "fixed_price": 250.00, + "currency": "USD", + "parameters": { + "demographic": "P18-49", + "min_points": 50 + }, + "min_spend_per_package": 12500 + } + ], + "delivery_measurement": { + "provider": "Nielsen DAR for P18-49 demographic measurement", + "notes": "Panel-based measurement for GRP delivery. Impressions measured via Comscore vCE." + } +} +``` + +### Auction-Based Display Product +```json +{ + "product_id": "custom_abc123", + "name": "Custom - Gaming Enthusiasts", + "description": "Custom audience package for gaming campaign", + "publisher_properties": [ + { "publisher_domain": "gaming.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }, + { "format_option_id": "display_728x90", "format_kind": "image", "params": { "width": 728, "height": 90 } } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "cpm_usd_auction", + "pricing_model": "cpm", + "currency": "USD", + "floor_price": 5.00, + "price_guidance": { + "p50": 8.00, + "p75": 12.00 + } + }, + { + "pricing_option_id": "cpc_usd_auction", + "pricing_model": "cpc", + "currency": "USD", + "floor_price": 0.50, + "price_guidance": { + "p50": 1.20, + "p75": 2.00 + } + } + ], + "delivery_measurement": { + "provider": "Google Ad Manager with IAS viewability", + "notes": "MRC-accredited viewability. 50% in-view for 1s display." + }, + "is_custom": true, + "expires_at": "2025-02-15T00:00:00Z" +} +``` + +### Retail Media Product with Measurement +```json +{ + "product_id": "albertsons_pet_category_offsite", + "name": "Pet Category Shoppers - Offsite Display & Video", + "description": "Target Albertsons shoppers who have purchased pet products in the last 90 days. Reach them across premium display and video inventory.", + "publisher_properties": [ + { "publisher_domain": "groceryretail.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_option_id": "display_300x250", "format_kind": "image", "params": { "width": 300, "height": 250 } }, + { "format_option_id": "display_728x90", "format_kind": "image", "params": { "width": 728, "height": 90 } }, + { "format_option_id": "video_15s", "format_kind": "video_hosted", "params": { "duration_ms_exact": 15000 } } + ], + "delivery_type": "guaranteed", + "pricing_options": [ + { + "pricing_option_id": "cpm_usd_guaranteed", + "pricing_model": "cpm", + "fixed_price": 13.50, + "currency": "USD", + "min_spend_per_package": 10000 + } + ], + "delivery_measurement": { + "provider": "Self-reported impressions from proprietary ad server", + "notes": "Impressions counted per IAB guidelines. Viewability measured via IAS." + }, + "outcome_measurement": { + "type": "incremental_sales_lift", + "attribution": "deterministic_purchase", + "window": { "interval": 30, "unit": "days" }, + "reporting": "weekly_dashboard" + }, + "creative_policy": { + "co_branding": "optional", + "landing_page": "must_include_retailer", + "templates_available": true + } +} +``` + +## Product Cards + +Product cards provide visual representations of products for user interfaces. They are typed inline and do not use creative format references. + +### Card Types + +Publishers should provide at least the standard card, and optionally a detailed card: + +**Standard Card** (`product_card`): +- Compact 300x400px card for product grids and lists +- Supports 2x density images for retina displays +- Quick visual identification of products + +**Detailed Card** (`product_card_detailed`, optional): +- Responsive layout with text description alongside hero carousel +- Markdown specifications section below +- Full product documentation similar to media kits + +### Structure + +```json +{ + "product_id": "ctv_premium", + "name": "Premium CTV Inventory", + // ... other product fields ... + + "product_card": { + "title": "Premium CTV - Living Room Audiences", + "description": "Reach cord-cutters on premium streaming content.", + "image": { + "asset_type": "image", + "url": "https://cdn.example.com/products/ctv_hero.jpg" + }, + "price_label": "From $22 CPM", + "cta_label": "View details" + }, + + "product_card_detailed": { + "title": "Premium CTV - Living Room Audiences", + "description": "Reach high-income households during peak viewing hours.", + "hero_image": { "asset_type": "image", "url": "https://cdn.example.com/products/ctv_hero.jpg" }, + "carousel_images": [ + { "asset_type": "image", "url": "https://cdn.example.com/products/ctv_context1.jpg" }, + { "asset_type": "image", "url": "https://cdn.example.com/products/ctv_context2.jpg" } + ], + "specifications": [ + { "label": "Resolution", "value": "1920x1080" }, + { "label": "Duration", "value": "30 seconds" } + ] + } +} +``` + +### Rendering Cards + +Cards can be rendered in two ways: + +1. **Via `preview_creative`**: Pass the card format and manifest to generate a rendered card +2. **Pre-rendered**: Publishers can pre-generate cards and serve them directly + +This flexibility allows publishers to choose between dynamic generation or static hosting based on their infrastructure. + +### Standard Card Formats + +The AdCP reference creative agent defines two standard card formats: + +- **`product_card_standard`** (300x400px) - Compact card for product browsing +- **`product_card_detailed`** (responsive) - Rich card with carousel and full specs + +Publishers can also define custom card formats to match their branding or highlight unique product attributes. + +**Note**: Standard card format definitions are maintained in the [creative-agent repository](https://github.com/adcontextprotocol/creative-agent), not in this protocol specification. + +### When to Include Product Cards + +Product cards are optional but recommended for: +- Products with strong visual identity (e.g., specific shows, events, publications) +- Premium products where visual presentation enhances perceived value +- Complex products where visual highlights help explain capabilities +- Products targeting specific audiences that benefit from visual representation + +Use the detailed card variant when you want to provide comprehensive product documentation similar to media kit pages. + +### Client Rendering Guidelines + +When displaying products in UIs, clients should follow this fallback order: + +1. **If `product_card` exists** → Render card via `preview_creative` or display pre-rendered image +2. **If neither exists** → Render text-only representation (product name + description) +3. **If card rendering fails** → Gracefully fall back to text-only representation + +This ensures a consistent user experience regardless of what product metadata is available. + +### Reference Assets + +Sellers can attach typed collateral to `product_card_detailed` via the `reference_assets` array. Each entry carries a semantic `role` and a canonical asset payload, giving buyer agents a recognized slot to find and present seller-curated visuals — coverage maps, sample renders, environment photos, and media kits. + +This is distinct from `hero_image` and `carousel_images`, which are display-oriented. `reference_assets` is for typed collateral that buyers may inspect or use for planning. + +**Supported roles:** + +| Role | Description | +|------|-------------| +| `coverage_map` | Geographic or audience reach visualization | +| `sample_render` | Mockup of ad placement in context | +| `environment_photo` | Photo of the physical or digital environment | +| `media_kit` | Downloadable media kit or spec sheet | +| `logo` | Seller or property logo | +| `other` | Seller-defined role (provide `role_label`) | + +**Example:** + +```json +{ + "product_card_detailed": { + "title": "Downtown Commuter Screens", + "description": "High-traffic digital screens in metro station concourses...", + "hero_image": { + "asset_type": "image", + "url": "https://cdn.example.com/products/metro_hero.jpg", + "width": 1920, + "height": 1080, + "alt_text": "Metro station digital screen" + }, + "reference_assets": [ + { + "role": "coverage_map", + "asset": { + "asset_type": "image", + "url": "https://assets.example.com/maps/downtown-coverage.png", + "width": 1600, + "height": 1000, + "alt_text": "Coverage map for downtown commuter screens" + }, + "description": "Shows all screen locations across the downtown metro network" + }, + { + "role": "sample_render", + "asset": { + "asset_type": "video", + "url": "https://assets.example.com/previews/station-takeover.mp4", + "width": 1080, + "height": 1920 + }, + "description": "15-second sample of a full station takeover" + }, + { + "role": "environment_photo", + "asset": { + "asset_type": "image", + "url": "https://assets.example.com/photos/concourse-evening.jpg", + "width": 2400, + "height": 1600, + "alt_text": "Evening foot traffic at Central Station concourse" + } + } + ] + } +} +``` + +Each asset uses the canonical asset types (`image`, `video`, `markdown`, `url`) — the same primitives used throughout AdCP creative schemas. + +## Proposals + +Publishers can return **proposals** alongside products - structured media plans with budget allocations that buyers can execute through a defined path. Committed proposals execute directly; draft proposals must be finalized first. + +### What Are Proposals? + +A proposal is a recommended buying strategy that groups products with suggested budget allocations. Proposals encode publisher expertise - the kind of media planning guidance that traditionally required human sales reps. + +Key characteristics: +- **Actionable**: A returned proposal is buyable through its lifecycle. `proposal_status: "draft"` means finalize first; `proposal_status: "committed"` means execute via `create_media_buy` with `proposal_id` before `expires_at`. +- **Budget-agnostic**: Fixed allocations and seller-optimized constraints use percentages, allowing the same proposal to scale to any budget +- **Allocation-aware**: Fixed proposals prescribe the split; seller-optimized proposals delegate continuous cross-package allocation to the seller within explicit goals and constraints +- **Forecast-equipped**: Proposals and allocations can include delivery forecasts to help buyers evaluate expected performance before purchase + +### Proposal Structure + +```json +{ + "proposal_id": "swiss_balanced_v1", + "name": "Swiss Multi-Channel Plan", + "description": "Balanced coverage across devices and language regions", + "allocations": [ + { + "product_id": "ch_desktop_de", + "allocation_percentage": 20, + "pricing_option_id": "cpm_usd_fixed", + "rationale": "Primary desktop audience in German Switzerland", + "tags": ["desktop", "german"] + }, + { + "product_id": "ch_desktop_fr", + "allocation_percentage": 30, + "tags": ["desktop", "french"] + }, + { + "product_id": "ch_mobile_de", + "allocation_percentage": 8, + "tags": ["mobile", "german"] + }, + { + "product_id": "ch_mobile_fr", + "allocation_percentage": 12, + "tags": ["mobile", "french"] + }, + { + "product_id": "ch_inapp_de", + "allocation_percentage": 12, + "tags": ["in-app", "german"] + }, + { + "product_id": "ch_inapp_fr", + "allocation_percentage": 18, + "tags": ["in-app", "french"] + } + ], + "total_budget_guidance": { + "min": 30000, + "recommended": 50000, + "currency": "USD" + }, + "brief_alignment": "Achieves 50/20/30 channel split (desktop/mobile/in-app) and 40/60 language split (German/French)", + "forecast": { + "points": [ + { + "budget": 50000, + "metrics": { + "impressions": { "low": 800000, "mid": 1200000, "high": 1500000 }, + "reach": { "low": 400000, "mid": 600000, "high": 750000 }, + "clicks": { "mid": 4800 } + } + } + ], + "method": "modeled", + "currency": "USD", + "valid_until": "2025-04-15T00:00:00Z" + } +} +``` + +The `tags` field enables grouping allocations by dimension: +- **By channel**: desktop (50%) + mobile (20%) + in-app (30%) = 100% +- **By language**: German (40%) + French (60%) = 100% + +#### Seller-optimized proposals + +A seller-optimized proposal names the eligible products and cross-package goal without locking an exact split. Optional minimum-spend targets are soft; maximum-spend percentages are hard caps: + +```json +{ + "proposal_id": "performance_shared_v1", + "name": "Seller-optimized performance plan", + "budget_allocation": { + "mode": "seller_optimized", + "optimization_goals": [ + { + "kind": "event", + "event_sources": [ + { + "event_source_id": "checkout_events", + "event_type": "purchase" + } + ] + } + ] + }, + "pacing": "even", + "allocations": [ + { + "product_id": "prospecting", + "min_spend_target_percentage": 20, + "max_spend_percentage": 70 + }, + { + "product_id": "retargeting", + "max_spend_percentage": 60, + "pacing": "front_loaded" + } + ] +} +``` + +Seller-optimized allocations MUST omit `allocation_percentage`. Minimum targets across allocations must sum to no more than 100, and maximums must collectively permit 100 percent of the budget to be spent. Optional allocation `pacing` becomes subordinate package pacing on execution; aggregate proposal pacing remains the media-buy pacing ceiling. When executed, the seller converts percentage constraints into absolute package constraints and continuously allocates the shared total budget. The seller's internal allocation changes are delivery decisions, not `update_media_buy` mutations. + +### Iterating on Proposals + +Proposals can be refined using `buying_mode: "refine"` with the `refine` array. Reference proposals by ID — the seller returns an updated proposal with revised allocations, forecasts, and pricing: + +``` +// Initial discovery +get_products({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442039", + buying_mode: "brief", + brief: "Swiss campaign, $50k, 50% desktop/20% mobile/30% in-app, 40% German/60% French" +}) + +// Response includes proposal "swiss_balanced_v1" + +// Refine the proposal +get_products({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442040", + buying_mode: "refine", + refine: [ + { scope: "product", product_id: "ch_desktop_de" }, + { scope: "product", product_id: "ch_desktop_fr" }, + { scope: "product", product_id: "ch_mobile_de" }, + { scope: "product", product_id: "ch_mobile_fr" }, + { scope: "product", product_id: "ch_inapp_de" }, + { scope: "product", product_id: "ch_inapp_fr" }, + { scope: "proposal", proposal_id: "swiss_balanced_v1", ask: "focus more on German speakers - try 60/40 instead of 40/60" } + ] +}) + +// Seller returns an updated proposal with revised allocations +``` + +See [`get_products` refinement](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#refinement) for the full workflow and examples. + +### Executing a Proposal + +To execute a committed proposal, provide the `proposal_id` and `total_budget` in `create_media_buy`: + +```json +{ + "proposal_id": "swiss_balanced_v1", + "total_budget": { + "amount": 50000, + "currency": "USD" + }, + "brand": { "domain": "acmecorp.com" }, + "start_time": "2025-04-01T00:00:00Z", + "end_time": "2025-04-30T23:59:59Z" +} +``` + +For a fixed proposal, the publisher converts allocation percentages into packages: +- `ch_desktop_de`: 20% × \$50,000 = \$10,000 + +The split 3.2 [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) task returns immutable drafts. [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) either creates another draft revision or, with `action: "finalize"`, returns a committed snapshot with inventory held until `expires_at`. [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) is the acceptance/execution step. Legacy `get_products` retains its equivalent finalize form throughout 3.x. +- `ch_desktop_fr`: 30% × \$50,000 = \$15,000 +- etc. + +For a seller-optimized proposal, the publisher instead converts minimum and maximum percentage constraints into absolute package constraints, activates the proposal's cross-package optimization goals and aggregate pacing, and copies allocation pacing onto the corresponding derived package. In either mode, proposal execution simplifies a complex multi-package campaign to one acceptance call. + +### When Publishers Return Proposals + +Publishers include proposals when: +- The brief requests specific allocation strategies (channel splits, language splits, etc.) +- The publisher can provide strategic guidance based on campaign goals +- Multiple products work better together than individually + +Publishers typically omit proposals in `wholesale` mode (the buyer is directing targeting and allocation themselves) or when the brief doesn't suggest a multi-product strategy. + +Proposals are optional — publishers may return only products if allocation guidance isn't applicable. In `refine` mode, sellers MAY return proposals alongside refined products even when the buyer did not include proposal entries. Proposals are a seller suggestion — allocation and campaign optimization are primarily orchestrator (buyer-side agent) responsibilities. + +### Delivery Forecasts + +Publishers can attach delivery forecasts to proposals and individual allocations to help buyers evaluate expected performance before committing budget. For targeting-aware discovery, every forecast and availability statement reflects concrete effective targeting after any disclosed `targeting_resolution` modifications. A dimension requested only through `required_overlay_support` has no concrete values, so the forecast describes the product's discovery/default scope rather than every possible later selection; buyers rediscover with concrete `targeting_overlay` values for a value-specific forecast. + +Each forecast contains a `points` array of one or more ForecastPoints. For spend curves, each point pairs a budget level with metric ranges (low/mid/high) — multiple points at ascending budgets show how delivery scales with spend. For availability forecasts, points omit budget and express total available inventory for the requested targeting and dates. + +Metric keys come from two vocabularies: +- **Delivery/engagement**: `forecastable-metric` enum values (impressions, reach, clicks, spend, views, completed_views, grps, etc.) +- **Outcomes**: `event-type` enum values (`purchase`, `lead`, `app_install`, `add_to_cart`, `subscribe` for paid subscriptions, `follow` for free durable opt-ins, etc.) + +This lets sellers forecast both delivery ("1.2M impressions") and outcomes ("1,800 purchases") in a single forecast. Each forecast declares its method: + +- **`estimate`** — rough approximation based on historical averages or heuristics +- **`modeled`** — derived from predictive models or historical data +- **`guaranteed`** — contractually committed delivery levels backed by reserved inventory + +Each metric value is a ForecastRange object. Provide `mid` for a point estimate, `low` and `high` for a range, or all three. At minimum, either `mid` or both `low` and `high` must be present. + +Forecast points can also carry `dimensions` when a seller needs to expose availability by country, region, placement, device, audience, signal value, or an intersection such as placement x country or product x signal. `dimensions` is an array; each item declares one `kind` (`geo`, `placement`, `device_type`, `device_platform`, `audience`, `signal`, or `time`) and uses the same canonical identifiers as targeting and delivery reporting, such as `geo_level`/`geo_code` for geography, `placement_ref` for placements, and `signal_ref` plus `signal_value`/`presence` for signal buckets. Metro rows use `system` values from `metro-system` (`nielsen_dma`, `uk_itl1`, `uk_itl2`, `eurostat_nuts2`, `custom`); native postal rows use `country` plus country-local `system` values from `postal-system` (for example, `US` / `zip`, `GB` / `outward`, `ZA` / `postal_code`), while deprecated country-fused postal systems such as `us_zip` remain accepted for compatibility; country and region rows omit `system`. When multiple dimension items appear on one point, the point represents the intersection of those constraints. Dimension order has no meaning; buyers normalize row identity from `(forecast_range_unit, budget if present, product_id if present, dimensions sorted by kind)`. Sellers MUST NOT repeat the same `kind` on one point. If a seller needs multiple geo, placement, audience, or signal slices, it should emit multiple points instead. This keeps dimensional availability inside one product or proposal instead of forcing sellers to create separate products for every country, placement, or signal value. Dimension rows are independent of `pricing_options`; the product's pricing options still describe how the product is bought. + +Forecast points may include measurement-aware forecasts alongside standard delivery metrics: +- **`viewability`** mirrors the `get_media_buy_delivery` `viewability` block, but numeric values use ForecastRange objects. Sellers SHOULD only emit forecast viewability when the product can report corresponding delivery viewability. Forecast `standard` is required whenever forecast viewability values are present because MRC and GroupM rows are not interchangeable; delivery `viewability.standard` remains optional for 3.x compatibility but SHOULD be populated. +- **`vendor_metric_values`** mirrors delivery reporting for vendor-defined metrics, but `value` and `measurable_impressions` use ForecastRange objects. Sellers SHOULD only forecast vendor metrics that the product declares in `reporting_capabilities.vendor_metrics`. + +#### Forecast Range Units + +The `forecast_range_unit` field tells consumers how to interpret the points array — what axis the curve represents: + +- **`spend`** (default) — points at ascending budget levels. Standard budget curve. +- **`availability`** — each point represents total available inventory for the requested targeting and dates. Budget is omitted; use `metrics.spend` to express estimated cost. Typical for guaranteed and direct-sold inventory. With `offer_filters.availability_horizon`, points carry a `time` dimension and `availability_status` so one forecast also answers "which dates can I run?" (see [Flexible Availability Windows](#flexible-availability-windows)). +- **`reach_freq`** — points at ascending reach/frequency targets. Used in broadcast planning where the publisher shows how cost scales with frequency goals. +- **`weekly`** / **`daily`** — metrics are per-period values. Budget refers to total campaign spend. A frequency of 3.2 with `weekly` means 3.2 exposures per week. +- **`clicks`** / **`conversions`** — points at ascending outcome targets. Used in goal-based planning (e.g., "tell me your conversion goal, I'll tell you the budget"). Buyers express the goal structurally via [`criteria.outcome_target`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals#reverse-forecasting-with-outcome_target) on sellers that declare `media_buy.outcome_target`. +- **`package`** — each point represents a distinct inventory package (e.g., Good/Better/Best tiers). Points are separate products with different inventory compositions, not levels on a spend curve. Used by broadcast TV, audio, and DOOH sellers. + +A spend curve and a reach/frequency curve may contain identical data — the difference is the publisher's intent. A spend curve says "here's what different budgets buy." A reach/frequency curve says "here's what it costs to hit different frequency targets." Consumers can read either curve in either direction. + +Temporal units (`weekly`, `daily`) change how metrics are interpreted. Without a range unit (or with `spend`), a frequency of 3.2 means 3.2 total campaign exposures. With `weekly`, it means 3.2 exposures per week. + +Forecasts can appear at two levels: +- **Proposal-level**: aggregate forecast for the entire media plan +- **Allocation-level**: per-product forecast for individual line items + +Allocation-level forecasts may not sum to the proposal-level forecast due to audience overlap and frequency capping. When both are present, the proposal-level forecast is authoritative for total delivery estimation. + +For cross-channel planning, forecasts declare a `reach_unit` (individuals, households, devices, accounts, cookies) so buyers can compare reach across publishers. GRP-based forecasts (linear TV, radio) use `demographic_system` and `demographic` to specify the target demo, following the same pattern as CPP pricing. + +When a forecast is based on third-party measurement, the `measurement_source` field declares which provider's data was used to produce the numbers. This is distinct from `demographic_system`, which specifies demographic notation — `measurement_source` identifies whose data produced the forecast numbers. A forecast can use Nielsen demographic codes (`demographic_system: "nielsen"`) while the impression numbers come from VideoAmp (`measurement_source: "videoamp"`). + +Sellers whose forecasts are based on third-party measurement use `measured_impressions` to express delivery as counted by the `measurement_source` provider. This is distinct from `impressions`, which represents ad-server or first-party estimated delivery. The two metrics are independent of the guarantee — `measured_impressions` can appear on both guaranteed and non-guaranteed forecasts: + +- **Guaranteed broadcast**: `method: "guaranteed"` + `measured_impressions` + `measurement_source: "nielsen"` — the seller contractually commits to Nielsen-measured delivery +- **Non-guaranteed CTV**: `method: "modeled"` + `measured_impressions` + `measurement_source: "videoamp"` — VideoAmp-measured estimate, no contractual commitment +- **Programmatic display**: `method: "modeled"` + `impressions` — ad-server counts, no third-party currency needed + +Sellers may include both `measured_impressions` and `impressions` in the same point when the buyer needs both the third-party-measured figure and the ad-server estimate. + +Podcast sellers use `downloads` as their primary delivery currency per IAB Podcast Measurement guidelines, in place of or alongside `impressions`. + +#### Budget Curve + +Multiple forecast points at ascending budget levels show how metrics scale with spend, helping buyers find the optimal investment level: + +```json +{ + "points": [ + { + "budget": 25000, + "metrics": { + "impressions": { "low": 400000, "mid": 500000, "high": 600000 }, + "reach": { "mid": 180000 }, + "clicks": { "mid": 2000 } + } + }, + { + "budget": 50000, + "metrics": { + "impressions": { "low": 850000, "mid": 1050000, "high": 1200000 }, + "reach": { "mid": 320000 }, + "clicks": { "mid": 4200 } + } + }, + { + "budget": 100000, + "metrics": { + "impressions": { "low": 1500000, "mid": 1900000, "high": 2200000 }, + "reach": { "mid": 500000 }, + "clicks": { "mid": 7600 } + } + } + ], + "method": "modeled", + "currency": "USD", + "reach_unit": "individuals" +} +``` + +The curve reveals diminishing returns — doubling budget from \$50K to \$100K increases reach by ~56%, not 2x. Buyers can use this to negotiate or reallocate budget across publishers. + +#### Availability Forecast + +For guaranteed and direct-sold inventory, the forecast is an availability check — how much inventory exists on this placement with this targeting in this flight window. Budget is omitted because available inventory doesn't depend on how much the buyer wants to spend. The seller can include `metrics.spend` to express the estimated cost of the available inventory: + +```json +{ + "points": [ + { + "metrics": { + "impressions": { "low": 320000, "mid": 400000, "high": 480000 }, + "reach": { "low": 200000, "mid": 260000, "high": 300000 }, + "spend": { "low": 6400, "mid": 8000, "high": 9600 } + } + } + ], + "forecast_range_unit": "availability", + "method": "guaranteed", + "currency": "USD" +} +``` + +The buyer agent can compare available impressions against budget requirements to identify underdelivery. If the buyer needs 500,000 impressions at a \$20 CPM to spend their full \$10K budget, and the forecast shows 400,000 mid available, the buyer knows \$2K of budget must be allocated elsewhere. + +#### Flexible Availability Windows + +Exact-date and flexible-date discovery are two readings of the same question. When the buyer already knows the flight, `offer_filters.start_date`/`end_date` scope discovery to it and the availability forecast answers "can I run these dates?". When the buyer is flexible — common for calendar-shaped inventory like homepage takeovers and sponsorships — `offer_filters.availability_horizon` asks the complementary question, "which dates can I run?": + +```json +{ + "offer_filters": { + "availability_horizon": { + "start_time": "2026-09-01T00:00:00-04:00", + "end_time": "2026-10-01T00:00:00-04:00" + } + } +} +``` + +The seller answers by partitioning the horizon into `time`-dimensioned forecast points, each carrying an `availability_status`: + +```json +{ + "forecast_range_unit": "availability", + "method": "modeled", + "currency": "USD", + "generated_at": "2026-08-18T12:00:00Z", + "valid_until": "2026-08-18T12:05:00Z", + "points": [ + { + "dimensions": [ + { "kind": "time", "start_time": "2026-09-01T00:00:00-04:00", "end_time": "2026-09-20T00:00:00-04:00" } + ], + "availability_status": "available", + "metrics": { + "impressions": { "mid": 20000 }, + "spend": { "mid": 6400 } + } + }, + { + "dimensions": [ + { "kind": "time", "start_time": "2026-09-20T00:00:00-04:00", "end_time": "2026-09-27T00:00:00-04:00" } + ], + "availability_status": "unavailable", + "metrics": {} + }, + { + "dimensions": [ + { "kind": "time", "start_time": "2026-09-27T00:00:00-04:00", "end_time": "2026-10-01T00:00:00-04:00" } + ], + "availability_status": "available", + "metrics": { + "impressions": { "mid": 4200 }, + "spend": { "mid": 1350 } + } + } + ] +} +``` + +Window semantics: + +- **Windows are half-open** (`[start_time, end_time)`), non-overlapping, and coalesced — adjacent windows with the same status and materially identical metrics are merged. +- **A complete response partitions the requested horizon.** A seller that cannot cover the full horizon signals the gap through the response's `incomplete[]` mechanism rather than silently omitting windows. +- **`availability_status` is a snapshot, never a hold.** `valid_until` bounds its freshness. Commitment happens at proposal finalization or purchase — a buy against a window that has since closed fails with `PRODUCT_UNAVAILABLE`, and the buyer re-reads. Buyers that need a guarantee take an inventory hold by finalizing a proposal rather than polling for fresher snapshots. +- **`unavailable` covers all non-bookable windows, not only held ones.** Sellers MUST apply all product booking eligibility rules — including minimum and maximum bookable duration, day-of-week restrictions, and other scheduling constraints — before reporting status. A gap that is not held by any buyer but is too short to meet the product's minimum duration is `unavailable`, not `available`. Buyers can safely skip `unavailable` rows without attempting a booking; doing so avoids an otherwise-predictable `PRODUCT_UNAVAILABLE` error. +- **No demand disclosure.** Sellers MUST NOT disclose who holds a closed window, and `unavailable` rows may carry empty metrics. +- **`availability_horizon` is not an eligibility filter.** Products remain returnable when only part of the horizon is open — that partial openness is exactly what the buyer asked to see. It is mutually exclusive with `start_date`/`end_date`; buyers that already know their flight use those instead. +- **Derived values stay buyer-side.** "Next available date" and similar conveniences are computed by the buyer from the windows; they are not response fields. + +#### Dimensional Availability and Measurement + +Sellers can expose availability by country, placement, signal value, placement x country, product x signal, or other dimensional intersections as forecast points on the same product. A point with multiple `dimensions` items represents the intersection of all listed constraints. Rows are comparable when they use the same dimension grain, such as placement x country rows for several countries or signal-value rows for one product baseline. Buyers MUST NOT sum rows unless the seller explicitly documents that the rows form a complete, non-overlapping partition. + +Within a single point, dimension items are ANDed, not ORed. Sellers MUST NOT emit more than one item per `kind`; buyers MUST NOT infer OR semantics from order or repetition. Repeated peer values such as two `geo` country rows in one point are a seller conformance issue. + +Only count or currency metrics, such as `impressions`, `clicks`, `spend`, `measured_impressions`, and `viewable_impressions`, are candidates for rollup, and only inside a declared complete, non-overlapping partition. Reach, frequency, rates, averages, `viewability.viewable_rate`, `viewability.viewed_seconds`, and `vendor_metric_values[].value` are non-additive unless the seller or measurement vendor publishes an explicit rollup method. Vendor metric coverage counts such as `vendor_metric_values[].measurable_impressions` follow the same partition rule as other counts. + +This avoids product-per-country or product-per-placement expansion while still giving buyer agents the planning rows they need: + +```json +{ + "points": [ + { + "dimensions": [ + { + "kind": "placement", + "placement_ref": { + "publisher_domain": "publisher.example", + "placement_id": "header_bidding" + }, + "placement_name": "Header bidding" + }, + { + "kind": "geo", + "geo_level": "country", + "geo_code": "US", + "geo_name": "United States" + } + ], + "metrics": { + "impressions": { "low": 900000, "mid": 1200000, "high": 1400000 }, + "spend": { "mid": 24000 } + }, + "viewability": { + "vendor": { "domain": "measurementvendor.example" }, + "measurable_impressions": { "mid": 1050000 }, + "viewable_rate": { "low": 0.68, "mid": 0.73, "high": 0.78 }, + "standard": "mrc" + }, + "vendor_metric_values": [ + { + "vendor": { "domain": "attentionvendor.example" }, + "metric_id": "attention_units", + "value": { "low": 3.9, "mid": 4.4, "high": 4.9 }, + "unit": "score", + "measurable_impressions": { "mid": 980000 } + } + ] + }, + { + "dimensions": [ + { + "kind": "placement", + "placement_ref": { + "publisher_domain": "publisher.example", + "placement_id": "header_bidding" + }, + "placement_name": "Header bidding" + }, + { + "kind": "geo", + "geo_level": "country", + "geo_code": "CA", + "geo_name": "Canada" + } + ], + "metrics": { + "impressions": { "low": 250000, "mid": 320000, "high": 380000 }, + "spend": { "mid": 9600 } + }, + "viewability": { + "vendor": { "domain": "measurementvendor.example" }, + "viewable_rate": { "mid": 0.81 }, + "standard": "mrc" + } + } + ], + "forecast_range_unit": "availability", + "method": "modeled", + "currency": "USD" +} +``` + +Each point is a row in the forecast, not a separate product. Buyers can compare country-by-placement avails, viewability expectations, and vendor measurement forecasts while still selecting from the product's normal pricing options when they create the buy. + +A buyer agent turns a chosen dimensional row into a buy through the existing buy-time surfaces: +- `kind: "geo"` rows map to `packages[].targeting_overlay.geo_countries`, `geo_regions`, `geo_metros`, or `geo_postal_areas`, depending on `geo_level` and seller support. Country rows use ISO 3166-1 alpha-2 `geo_code`; region rows use ISO 3166-2 `geo_code`; metro rows include the corresponding targeting `system` enum; native postal rows include `country` plus the country-local `system`. +- `kind: "device_type"` and `kind: "device_platform"` rows map to the corresponding targeting overlay fields when the seller supports device targeting. +- `kind: "audience"` rows map to `audience_include` or signal targeting only when the audience is selectable for that product; informational audience rows are planning signals, not automatic targeting handles. +- `kind: "placement"` rows map to `targeting_overlay.placement_selection` when the product exposes the placement as `mode: "targetable"`. `dimensions[].placement_ref` describes an inventory slice but does not select it. `creative_assignments[].placement_refs` is only the creative-routing surface after package inventory is selected. Proposal-level forecast points with placement dimensions should include `product_id` when the placement maps to one allocation's product. + +`kind: "signal"` rows use canonical `signal_ref` plus optional `signal_value` to describe a signal bucket. Use `presence: "present"` for rows where the signal is available with the supplied value, and `presence: "absent"` with `signal_value: null` for the explicit not-present bucket. `signal_id` is only a shorthand when the enclosing object already identifies the signal unambiguously, such as a coverage forecast nested directly under a single `get_signals` item. Product-level forecasts use `ForecastPoint.product_id` for product context; do not add a separate product dimension item. + +After purchase, buyers verify one-dimensional marginals with `get_media_buy_delivery.reporting_dimensions` (`geo`, `device_type`, `device_platform`, `audience`, or `placement`) and reconcile measurement expectations through the package's `committed_metrics`, `performance_standards`, and reported `viewability` / `vendor_metric_values`. Standard delivery reporting does not currently return cross-dimensional intersections such as placement x country or product x signal; sellers that need exact post-buy reconciliation for those intersections must expose a seller-specific reporting surface or a future standard intersection capability. + +#### CTV with GRP Demographics + +TV and audio forecasts use `demographic_system` and `demographic` to specify the target demo, and `measurement_source` to declare whose audience data the forecast is modeled against: + +```json +{ + "points": [ + { + "budget": 75000, + "metrics": { + "grps": { "low": 45, "mid": 60, "high": 72 }, + "impressions": { "mid": 3200000 }, + "reach": { "low": 800000, "mid": 1100000, "high": 1300000 }, + "frequency": { "mid": 2.9 } + } + } + ], + "method": "modeled", + "measurement_source": "nielsen", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P18-49", + "reach_unit": "households" +} +``` + +The `measurement_source: "nielsen"` tells the buyer agent that the GRP and impression numbers are modeled against Nielsen data. The `reach_unit: "households"` tells buyers this CTV publisher counts reach by household, not individual. A display publisher reporting `reach_unit: "devices"` is measuring something different — buyers should not directly compare the two reach numbers. + +Note that `measurement_source` and `demographic_system` can differ. A CTV publisher might use Nielsen's demographic notation (`demographic_system: "nielsen"`, `demographic: "P18-49"`) while the underlying audience data comes from VideoAmp (`measurement_source: "videoamp"`). The demographic system specifies the notation; the measurement source specifies whose numbers produced the forecast. + +#### Retail Media with Outcome Forecasts + +Retail media publishers can forecast both delivery metrics and conversion outcomes. Outcome metric keys use `event-type` values: + +```json +{ + "points": [ + { + "budget": 30000, + "metrics": { + "impressions": { "low": 600000, "mid": 750000, "high": 900000 }, + "clicks": { "mid": 6000 }, + "purchase": { "low": 1200, "mid": 1800, "high": 2400 }, + "add_to_cart": { "mid": 4500 } + } + } + ], + "method": "modeled", + "currency": "USD" +} +``` + +Here `impressions` and `clicks` are `forecastable-metric` values while `purchase` and `add_to_cart` are `event-type` values. Both use ForecastRange (low/mid/high) and coexist in the same metrics map. + +#### Allocation-Level Forecasts + +When a proposal includes per-allocation forecasts, buyers can evaluate each product independently: + +```json +{ + "proposal_id": "retail_holiday_v1", + "name": "Holiday Retail Campaign", + "allocations": [ + { + "product_id": "sponsored_search", + "allocation_percentage": 40, + "forecast": { + "points": [ + { + "budget": 20000, + "metrics": { + "impressions": { "mid": 500000 }, + "clicks": { "mid": 15000 }, + "purchase": { "mid": 900 } + } + } + ], + "method": "modeled", + "currency": "USD" + } + }, + { + "product_id": "offsite_display", + "allocation_percentage": 60, + "forecast": { + "points": [ + { + "budget": 30000, + "metrics": { + "impressions": { "low": 1800000, "mid": 2200000, "high": 2600000 }, + "reach": { "mid": 450000 }, + "purchase": { "low": 400, "mid": 600, "high": 800 } + } + } + ], + "method": "modeled", + "currency": "USD", + "reach_unit": "accounts" + } + } + ], + "forecast": { + "points": [ + { + "budget": 50000, + "metrics": { + "impressions": { "low": 2100000, "mid": 2700000, "high": 3100000 }, + "reach": { "mid": 520000 }, + "purchase": { "low": 1100, "mid": 1500, "high": 1900 } + } + } + ], + "method": "modeled", + "currency": "USD", + "reach_unit": "accounts" + } +} +``` + +Note that the allocation forecasts (900 + 600 = 1,500 purchases) happen to match the proposal forecast in this example, but they often won't — audience overlap and frequency capping mean the whole is typically less than the sum of its parts. The proposal-level forecast is authoritative for total delivery. + +#### Broadcast Audio Spot Plan + +Broadcast and audio publishers can return spot-plan proposals with `daypart_targets` on each allocation and weekly frequency projections via `forecast_range_unit: "weekly"`. This pattern lets the publisher solve the optimization problem — the buyer specifies frequency goals, and the publisher returns the plan that achieves them: + +```json +{ + "proposal_id": "iheart_q4_audio", + "name": "Q4 Audio - Adults 25-54", + "allocations": [ + { + "product_id": "morning_drive_30s", + "allocation_percentage": 50, + "daypart_targets": [ + { + "days": ["monday", "tuesday", "wednesday", "thursday", "friday"], + "start_hour": 6, + "end_hour": 10, + "label": "Morning Drive" + } + ], + "rationale": "Morning drive delivers highest reach against P25-54 with 3x weekly frequency at 2 spots/day", + "forecast": { + "points": [ + { + "budget": 37500, + "metrics": { + "grps": { "mid": 42 }, + "reach": { "low": 140000, "mid": 180000, "high": 210000 }, + "frequency": { "mid": 3.2 }, + "impressions": { "mid": 576000 } + } + } + ], + "forecast_range_unit": "weekly", + "method": "modeled", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P25-54", + "reach_unit": "individuals" + } + }, + { + "product_id": "afternoon_drive_30s", + "allocation_percentage": 30, + "daypart_targets": [ + { + "days": ["monday", "tuesday", "wednesday", "thursday", "friday"], + "start_hour": 15, + "end_hour": 19, + "label": "Afternoon Drive" + } + ], + "rationale": "Afternoon drive complements morning with incremental reach and frequency overlap", + "forecast": { + "points": [ + { + "budget": 22500, + "metrics": { + "grps": { "mid": 28 }, + "reach": { "low": 95000, "mid": 120000, "high": 145000 }, + "frequency": { "mid": 2.4 }, + "impressions": { "mid": 288000 } + } + } + ], + "forecast_range_unit": "weekly", + "method": "modeled", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P25-54", + "reach_unit": "individuals" + } + }, + { + "product_id": "daytime_30s", + "allocation_percentage": 20, + "daypart_targets": [ + { + "days": ["monday", "tuesday", "wednesday", "thursday", "friday"], + "start_hour": 10, + "end_hour": 15, + "label": "Daytime" + } + ], + "rationale": "Daytime fill provides frequency reinforcement at lower CPP", + "forecast": { + "points": [ + { + "budget": 15000, + "metrics": { + "grps": { "mid": 18 }, + "reach": { "low": 60000, "mid": 80000, "high": 95000 }, + "frequency": { "mid": 1.8 }, + "impressions": { "mid": 144000 } + } + } + ], + "forecast_range_unit": "weekly", + "method": "modeled", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P25-54", + "reach_unit": "individuals" + } + } + ], + "forecast": { + "points": [ + { + "budget": 75000, + "metrics": { + "grps": { "mid": 82 }, + "reach": { "low": 220000, "mid": 280000, "high": 330000 }, + "frequency": { "mid": 4.1 }, + "impressions": { "mid": 1008000 } + } + } + ], + "forecast_range_unit": "weekly", + "method": "modeled", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P25-54", + "reach_unit": "individuals" + } +} +``` + +The `forecast_range_unit: "weekly"` on each forecast tells the buyer that all metrics are per-week values — frequency of 3.2 means 3.2 exposures per week, not 3.2 over the entire campaign. Budget (\$75K) is total campaign spend. + +The `daypart_targets` on each allocation specify the publisher's recommended time windows. These are the same structure used in `targeting` for hard daypart constraints — here the publisher is prescribing the spot plan rather than the buyer constraining it. + +Note that allocation-level reach doesn't sum to the proposal level (180K + 120K + 80K > 280K) because of audience overlap across dayparts — the same listener may hear morning drive and afternoon drive spots. The proposal-level forecast accounts for this overlap. + +#### Broadcast TV Package Forecast + +Broadcast TV sellers offer distinct inventory packages rather than impressions at variable spend levels. The `forecast_range_unit: "package"` tells the buyer that each point is a separate package, not a position on a spend curve. Each point includes a `label` so the buyer agent can identify and reference individual packages. A broadcaster might offer a daytime rotator, a prime-access + daytime bundle, and a full prime package: + +```json +{ + "points": [ + { + "label": "Daytime Rotator", + "budget": 50000, + "metrics": { + "measured_impressions": { "mid": 800000 }, + "grps": { "mid": 35 }, + "reach": { "mid": 220000 }, + "frequency": { "mid": 2.1 } + } + }, + { + "label": "Prime Access + Daytime", + "budget": 85000, + "metrics": { + "measured_impressions": { "mid": 1400000 }, + "grps": { "mid": 58 }, + "reach": { "low": 290000, "high": 390000 }, + "frequency": { "mid": 3.4 } + } + }, + { + "label": "Full Prime", + "budget": 150000, + "metrics": { + "measured_impressions": { "mid": 2600000 }, + "grps": { "mid": 95 }, + "reach": { "low": 420000, "high": 540000 }, + "frequency": { "mid": 5.2 } + } + } + ], + "forecast_range_unit": "package", + "method": "modeled", + "measurement_source": "nielsen", + "currency": "USD", + "demographic_system": "nielsen", + "demographic": "P18-49", + "reach_unit": "households" +} +``` + +Each point represents a distinct package — different dayparts, unit types, and flight structures — not the same product at three spend levels. The `label` field lets buyer agents reference packages by name when negotiating or requesting specific options. The `measurement_source: "nielsen"` tells the buyer agent that the impression and GRP numbers are modeled against Nielsen data, not the broadcaster's own measurement. The `measured_impressions` metric expresses delivery as counted by Nielsen — paired with `method: "modeled"`, these are Nielsen-measured estimates. To make them contractual commitments, the seller would use `method: "guaranteed"` instead. + +Broadcast buying shape determines product shape: + +- **Network or rep-firm package**: model as one seller product when one seller commits the order and fulfills across multiple markets or affiliates. The affiliates are fulfillment surfaces, not independent AdCP hops. +- **Local spot or station-group inventory**: model separate products or packages when inventory is sold by distinct stations, station groups, or market sellers. +- **Market-by-market syndication**: model by the party that sells and commits the inventory. If multiple sellers commit separately, the buyer aggregates their delivery reports across media buys. + +Use `delivery_type: "guaranteed"` when spots, units, or inventory are reserved or scheduled. Use `forecast.method: "modeled"` for historical audience ranges and `forecast.method: "guaranteed"` only when the seller is contractually committing to make good delivery outside the stated range. Do not use `non_guaranteed` merely because final measured impressions depend on historical ranges or third-party measurement settlement. + +If packages share the same inventory pool and differ only in volume or mix, use `package` forecast points on one product. If they represent fundamentally different inventory (different shows, properties, or dayparts with no overlap), create separate products with their own forecasts. + +Sellers expressing the same inventory in multiple measurement currencies (e.g., both Nielsen and VideoAmp) should provide separate DeliveryForecast objects, one per `measurement_source`. + +## Integration with Discovery + +Products are discovered through the [Product Discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery) process, which uses natural language to match campaign briefs with available inventory. Once products are identified, they can be purchased via `create_media_buy`. + +## See Also + +- [Product Discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery) - How to discover products using natural language +- [Media Buys](/dist/docs/3.2.0-beta.4/media-buy/media-buys) - How to purchase products +- [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) - Detailed targeting options +- [Creative Formats](/dist/docs/3.2.0-beta.4/creative/formats) - Understanding format specifications and discovery diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation.mdx new file mode 100644 index 0000000000..1f31541938 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation.mdx @@ -0,0 +1,633 @@ +--- +title: Proposal negotiation +description: "Implement AdCP 3.2 proposal negotiation from capability discovery through revision, finalization, acceptance, amendment, and cancellation." +"og:title": "AdCP — Proposal negotiation implementation guide" +--- + +AdCP 3.2 proposal negotiation is an immutable-snapshot workflow. Buyers express mechanically verifiable requirements as typed fields and reserve `ask` for commercial nuance. Sellers validate the complete request before mutation, then return one independently classified result for each source proposal. + +This guide uses one scenario throughout: Sam, a buyer agent acting for Pinnacle Agency, is negotiating an Acme Outdoor campaign with the StreamHaus sales agent. + +## Lifecycle + +```mermaid +flowchart LR + D0[Initial draft] -->|refine_proposals: revise| D1[Successor draft] + D1 -->|refine_proposals: finalize| H[Committed inventory hold] + H -->|accept_proposal before expires_at| A[Accepted proposal and MediaBuy] + A -->|revise: amendment| AD[Amendment draft] + A -->|revise: cancellation| CD[Cancellation draft] + AD -->|finalize then accept| A2[Updated MediaBuy] + CD -->|finalize then accept| C[Canceled MediaBuy] +``` + +Every transition creates a new `proposal_id`; the source snapshot remains unchanged. Every successor returned by [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) carries `parent_proposal_id` equal to the source ID. A buyer can therefore reconstruct negotiation and amendment history by walking the parent chain. + +`draft` terms are indicative and do not reserve inventory. `finalize` copies an unchanged draft into a `committed` snapshot and creates a hold until `expires_at`. [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) consumes that hold and creates, updates, or cancels the MediaBuy according to `proposal_kind`. + +In traditional media terms, this lifecycle is the two-phase avails check. A draft is a **soft avail**: the seller answers from models or cached inventory state, forecasts carry `valid_until` freshness bounds, and nothing is reserved — another buyer can take the inventory before this one commits. `finalize` is where the **firm avail** runs: the seller hits its inventory system, re-prices if needed, and either takes the hold or fails the finalize. Draft numbers are therefore non-binding, and a finalize returning different pricing or forecast values than its source draft showed is correct behavior, not an error. Buyers that need certainty across a slow approval chain hold inventory by finalizing early — not by polling discovery for fresher snapshots. + +## Discover what the seller supports + +Read `get_adcp_capabilities.media_buy.lifecycle_tools` before selecting the compact lifecycle. A negotiating seller includes `refine_proposals`; it may also publish `media_buy.proposal_refinement`: + +| Dimension | Request field | Mechanical promise | +|---|---|---| +| `total_budget` | `constraints.total_budget` | Validate a present total, matching currency, and inclusive bounds. | +| `cpm` | `constraints.cpm` | Validate every purchase as fixed CPM/vCPM in the requested currency at or below the ceiling; auction and non-CPM pricing are unsatisfied. | +| `impressions` | `constraints.impressions` | Validate that every purchase has a concrete impression volume and their sum meets the inclusive floor. | +| `flight` | `constraints.flight` | Validate concrete timestamps against `start_no_later_than` and `end_no_earlier_than`; an `asap` start cannot satisfy a start bound. | +| `product_changes` | `product_changes` | Validate keyed `include` and `omit` actions against returned purchases. | +| `alternatives` | `alternatives.count` | Return distinct commercial terms up to the advertised `max_alternatives`. | +| `criteria` | `criteria` | Parse and replace structured discovery criteria. | + +An explicit `supported_dimensions: []` means ask-only refinement. An omitted `proposal_refinement` block means typed support is unknown, so the buyer must tolerate per-result `partial` or `unable` outcomes. + +When an explicit list omits a dimension, the buyer SHOULD remove or translate that field before sending. If it sends the field anyway, the seller MUST reject the entire task with `UNSUPPORTED_FEATURE` before creating any successor. Free-text interpretation is competence, not a capability dimension; `ask` remains available even when the list is empty. + +When the seller interprets hard targeting found only in `ask` and that interpretation materially affects eligibility, pricing, or forecasting, inspect the result's `targeting_resolution.brief_targeting`. Structured `criteria.targeting_overlay` is not echoed when accepted exactly; any product-specific departure remains a sparse `Product.targeting_resolution.modifications` proposal that the buyer must review. + +## Two failure planes + +Do not flatten task errors and negotiation outcomes into one exception type. + +| Plane | Examples | Mutation rule | Buyer action | +|---|---|---|---| +| Task-level error | Malformed payload, more than 25 refinements, duplicate source IDs, count above 10 or `max_alternatives`, explicitly unsupported dimension, unauthorized source | No sibling may mutate | Correct the whole request and retry with a new key. | +| Per-proposal outcome | `revised`, `partial`, `unable`, `finalized` | One ordered result per source; revision outcomes are independent | Verify the typed result, then select, revise, finalize, or decline. | +| Atomic finalize outcome | `finalized`, `hold_unavailable`, `batch_aborted` | Every hold is created or none are | Retry the exact batch only for an exact replay; otherwise form a new request. | + +`constraint_unsatisfiable` means the seller accepted the dimension but did not satisfy it. `unsupported_dimension` is used per proposal only when capabilities were unknown; an explicitly omitted dimension is a task-level `UNSUPPORTED_FEATURE`. `commercially_declined` applies only to `ask`, never to a typed constraint. + +For example, if StreamHaus explicitly omits `criteria`, the task fails before any proposal is created: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/protocol-envelope.json", + "status": "failed", + "adcp_error": { + "code": "UNSUPPORTED_FEATURE", + "message": "This seller does not support criteria refinement.", + "field": "refinements[0].criteria", + "recovery": "correctable", + "details": { + "unsupported_dimension": "criteria", + "supported_dimensions": ["total_budget", "cpm", "alternatives"] + } + } +} +``` + +## Buyer implementation + +### 1. Build typed-first requests + +Sam requests a USD 50,000 ceiling, a CPM ceiling, US/Canada criteria, a product change, and three distinct alternatives. The prose asks for subjective reach optimization only: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-request.json", + "idempotency_key": "typed-negotiation-sam-0001", + "refinements": [ + { + "proposal_id": "proposal_streamhaus_001", + "action": "revise", + "constraints": { + "total_budget": { "max": 50000, "currency": "USD" }, + "cpm": { "max": 18, "currency": "USD" }, + "flight": { "end_no_earlier_than": "2026-10-31T23:59:59Z" } + }, + "product_changes": { + "premium_video_q4": "include", + "display_standard_q4": "omit" + }, + "criteria": { + "targeting_overlay": { "geo_countries": ["US", "CA"] } + }, + "alternatives": { "count": 3 }, + "ask": "Use materially different mixes and prioritize reach." + } + ] +} +``` + +Typed fields are hard proposal requirements. Do not copy legacy `get_products.filters.budget_range` into `constraints.total_budget`: the legacy field is a hard product-discovery filter, while the compact field validates the negotiated proposal's `commercial_terms.total_budget` and forces `partial` or `unable` when missed. Legacy `more_like_this` has no typed compact equivalent and maps only lossily to `ask`. + +### Legacy budget compatibility (normative) + +Budget compatibility has two distinct rules: + +- **Discovery range:** Initial [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) has no `criteria.constraints.total_budget` field. Its budget field is `request_proposals.criteria.offer_filters.budget_range`. A compatibility adapter MAY project that field to `get_products.filters.budget_range` because both are hard product-discovery filters. The adapter MUST copy every supplied numeric bound and the three-letter currency unchanged, MUST preserve inclusive `min` and `max` boundaries, MUST enforce `min <= max`, and MUST NOT perform currency conversion. If the legacy seller cannot apply the exact currency and bounds, the adapter MUST return the pre-dispatch rejection below rather than approximate the filter. +- **Proposal-term constraint:** An adapter MUST NOT project `refine_proposals.refinements[].constraints.total_budget` to `get_products.filters.budget_range`. The compact constraint is evaluated after proposal generation against each successor's `commercial_terms.total_budget`; the legacy field filters product candidates and does not guarantee any returned proposal's aggregate total. Identical `{min,max,currency}` syntax does not make those evaluation targets equivalent. Dropping the constraint, converting currency, changing a boundary, placing it in `ask`, or returning an out-of-range proposal with a warning would all weaken the buyer's hard requirement. + +These rules are lifecycle-specific. The discovery projection is valid for an initial `request_proposals` compatibility call. On a revision, a present `criteria.offer_filters` replaces that entire criterion from the source proposal; it is not a subfield delta. The adapter MUST project the complete replacement object to legacy absolute `filters`, or reject before dispatch if any field cannot be represented exactly. When `criteria.offer_filters` is omitted, the adapter MUST also omit legacy `filters`, preserving each referenced proposal's bound discovery constraints. This discovery mapping is not a substitute for `constraints.total_budget` on `action: "revise"`. + +Compact `action: "finalize"` accepts no constraints and copies the draft's complete `commercial_terms` unchanged into a committed snapshot. Legacy `finalize` asks for firm pricing and therefore does not, by itself, prove unchanged terms. An adapter MAY project finalize only when it can guarantee that the legacy operation preserves the complete commercial terms, not merely the total budget. Otherwise it MUST reject before dispatch rather than compare or repair terms after mutation. + +Every unsupported compact-to-legacy case above returns the same typed local compatibility result: + +```typescript +type PreMutationUnsupported = { + code: 'PRE_MUTATION_UNSUPPORTED'; + unsupported_fields: Array<{ + path: string; // RFC 6901 JSON Pointer rooted at the compact request + reason: 'NO_LOSSLESS_LEGACY_MAPPING'; + lost_guarantee: + | 'exact_discovery_offer_filter_state' + | 'proposal_total_budget_constraint' + | 'immutable_finalize_terms'; + }>; + recovery: 'USE_COMPACT_LIFECYCLE' | 'REFORMULATE_REQUEST'; + dispatched: false; +}; +``` + +For example, the first refinement's hard budget constraint uses `/refinements/0/constraints/total_budget`; an unsafe finalize uses `/refinements/0/action`. `unsupported_fields` MUST contain every incompatibility detected during preflight, and any entry rejects the whole operation before a network request or mutation. `PRE_MUTATION_UNSUPPORTED` is not an AdCP wire error code. SDKs MAY express the type idiomatically in each language, but MUST preserve these discriminator values, JSON Pointer paths, lost-guarantee identifiers, recovery choices, and `dispatched: false`. An explicit caller opt-in to lossy projection does not make the mapping conformant. + +A fully satisfied revision returns new immutable drafts and no failure prose: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-response.json", + "status": "completed", + "results": [ + { + "source_proposal_id": "proposal_streamhaus_001", + "outcome": "revised", + "proposals": [ + { + "proposal_id": "proposal_streamhaus_002a", + "parent_proposal_id": "proposal_streamhaus_001", + "proposal_kind": "new_media_buy", + "proposal_status": "draft", + "name": "Acme Outdoor — premium video", + "commercial_terms": { + "brand": { "domain": "acmeoutdoor.example" }, + "purchases": [ + { + "product_id": "premium_video_q4", + "pricing_option_id": "cpm_guaranteed", + "pricing": { + "pricing_option_id": "cpm_guaranteed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 18 + }, + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z" + } + ], + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z", + "total_budget": { "amount": 50000, "currency": "USD" } + }, + "terms_digest": "sha256:Fy6Bo7wUa_FmXGJssc37kGyHNjzBiBZLB9rtVNz8I-E" + } + ] + } + ], + "products": [] +} +``` + +### 2. Branch on the discriminated result + +Handle `outcome` before reading proposal fields: + +| Outcome | Read | Required verification | +|---|---|---| +| `revised` | `proposals[]` | Every requested typed constraint and product action is satisfied. The array has one item unless alternatives were requested, in which case it has the exact requested count. | +| `partial` | `proposals[]`, `reason_code`, `unsatisfied_constraints`, `unsatisfied_product_changes` | Every returned draft satisfies every constraint and product action *not* listed as unsatisfied. | +| `unable` | `reason_code`, machine-readable unsatisfied fields | No proposal was produced; never access `proposal` or `proposals`. | +| `finalized` | singular `proposal` | Status is `committed`, parent is the source draft, and `expires_at` leaves enough time to accept. | + +A valid counteroffer with only two of the three requested alternatives is `partial`: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-response.json", + "status": "completed", + "results": [ + { + "source_proposal_id": "proposal_streamhaus_001", + "outcome": "partial", + "reason_code": "alternatives_unavailable", + "reason": "Two commercially distinct mixes are available at these terms.", + "proposals": [ + { + "proposal_id": "proposal_streamhaus_002a", + "parent_proposal_id": "proposal_streamhaus_001", + "proposal_kind": "new_media_buy", + "proposal_status": "draft", + "name": "Acme Outdoor — premium video", + "commercial_terms": { + "brand": { "domain": "acmeoutdoor.example" }, + "purchases": [ + { + "product_id": "premium_video_q4", + "pricing_option_id": "cpm_guaranteed", + "pricing": { + "pricing_option_id": "cpm_guaranteed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 18 + }, + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z" + } + ], + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z", + "total_budget": { "amount": 50000, "currency": "USD" } + }, + "terms_digest": "sha256:Fy6Bo7wUa_FmXGJssc37kGyHNjzBiBZLB9rtVNz8I-E" + }, + { + "proposal_id": "proposal_streamhaus_002b", + "parent_proposal_id": "proposal_streamhaus_001", + "proposal_kind": "new_media_buy", + "proposal_status": "draft", + "name": "Acme Outdoor — video and native", + "commercial_terms": { + "brand": { "domain": "acmeoutdoor.example" }, + "purchases": [ + { + "product_id": "premium_video_q4", + "pricing_option_id": "cpm_guaranteed", + "pricing": { + "pricing_option_id": "cpm_guaranteed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 17.5 + }, + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z" + }, + { + "product_id": "native_feed_q4", + "pricing_option_id": "cpm_native", + "pricing": { + "pricing_option_id": "cpm_native", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 16 + }, + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z" + } + ], + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z", + "total_budget": { "amount": 50000, "currency": "USD" } + }, + "terms_digest": "sha256:ed58dHH_xw98Gxkt8-dCQi9HZKdkIjuJ4NVLoP3txjs" + } + ] + } + ], + "products": [] +} +``` + +An honest refusal that produces no draft uses the same response envelope but no proposal field: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-response.json", + "status": "completed", + "results": [ + { + "source_proposal_id": "proposal_streamhaus_001", + "outcome": "unable", + "reason_code": "constraint_unsatisfiable", + "reason": "No eligible inventory can meet the requested fixed CPM ceiling.", + "unsatisfied_constraints": ["cpm"] + } + ], + "products": [] +} +``` + +### 3. Verify terms independently + +For every returned proposal: + +1. Recompute `sha256:base64url(SHA-256(JCS(commercial_terms)))` using RFC 8785 JSON Canonicalization Scheme bytes. +2. Compare the recomputed digest byte-for-byte with `terms_digest`. +3. Verify `parent_proposal_id` equals `source_proposal_id`. +4. Re-evaluate budgets, fixed rates, impression totals, flight bounds, product membership, and structured criteria from `commercial_terms`. +5. Verify any `targeting_resolution.brief_targeting` against the hard targeting in `ask`, and review every sparse product `targeting_resolution.modifications` departure before selecting that configured product. +6. On `partial`, enforce the partial invariant: every requirement absent from the unsatisfied sets still passes. +7. Treat `reason`, `description`, `suggestions`, and `ask` as non-contractual prose. + +Digest uniqueness alone is not enough for alternatives. Verify that `commercial_terms` are distinct after canonicalization; a seller cannot create fake diversity by changing only IDs, names, descriptions, or digest strings. + +### 4. Retry safely + +An exact retry uses the same tool name, payload, and `idempotency_key`; the seller returns the original response with `replayed: true`. Any payload change requires a new key. Never use a new key merely to extend a committed hold: finalizing the same draft while its hold is active is `INVALID_STATE`, not a second reservation. + +A seller may return `status: "submitted"` with a `task_id` when a complex multi-publisher revision or inventory hold needs upstream pricing or manual re-underwriting. Poll [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) or consume the requested completion notification; do not treat submission as a proposal outcome or retry it under a new key while the task is pending. + +### 5. Finalize, then accept before expiry + +Finalization changes no terms: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-request.json", + "idempotency_key": "typed-negotiation-sam-finalize-0001", + "refinements": [ + { + "proposal_id": "proposal_streamhaus_002a", + "action": "finalize" + } + ] +} +``` + +A finalize batch contains only finalize entries. The seller preflights every source and creates every hold or none. `hold_unavailable` identifies the source that could not be reserved; otherwise eligible siblings use `batch_aborted`. + +The successful result is singular and committed; its commercial terms and digest are unchanged: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-response.json", + "status": "completed", + "results": [ + { + "source_proposal_id": "proposal_streamhaus_002a", + "outcome": "finalized", + "proposal": { + "proposal_id": "proposal_streamhaus_committed_003", + "parent_proposal_id": "proposal_streamhaus_002a", + "proposal_kind": "new_media_buy", + "proposal_status": "committed", + "expires_at": "2026-09-15T10:15:00Z", + "name": "Acme Outdoor — premium video", + "commercial_terms": { + "brand": { "domain": "acmeoutdoor.example" }, + "purchases": [ + { + "product_id": "premium_video_q4", + "pricing_option_id": "cpm_guaranteed", + "pricing": { + "pricing_option_id": "cpm_guaranteed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 18 + }, + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z" + } + ], + "start_time": "2026-10-01T00:00:00Z", + "end_time": "2026-11-01T00:00:00Z", + "total_budget": { "amount": 50000, "currency": "USD" } + }, + "terms_digest": "sha256:Fy6Bo7wUa_FmXGJssc37kGyHNjzBiBZLB9rtVNz8I-E" + } + } + ], + "products": [] +} +``` + +Accept the returned committed proposal and its exact digest before `expires_at`: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/accept-proposal-request.json", + "idempotency_key": "typed-negotiation-sam-accept-0001", + "account": { "account_id": "account_pinnacle_acme" }, + "proposal_id": "proposal_streamhaus_committed_003", + "proposal_terms_digest": "sha256:Fy6Bo7wUa_FmXGJssc37kGyHNjzBiBZLB9rtVNz8I-E" +} +``` + +The seller atomically verifies the proposal ID, digest, hold expiry, authorization, and any base MediaBuy revision. Expired holds return `PROPOSAL_EXPIRED`; the buyer requests and finalizes fresh terms rather than retrying acceptance against a lapsed hold. + +### 6. Amend, cancel, or decline + +Fork an accepted snapshot with `change_kind: "amendment"`: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-request.json", + "idempotency_key": "typed-negotiation-sam-amend-0001", + "refinements": [ + { + "proposal_id": "proposal_streamhaus_accepted_004", + "action": "revise", + "change_kind": "amendment", + "ask": "Extend the flight by two weeks and preserve the total budget." + } + ] +} +``` + +When cancellation requires agreement, fork the accepted snapshot with `change_kind: "cancellation"`: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/refine-proposals-request.json", + "idempotency_key": "typed-negotiation-sam-cancel-0001", + "refinements": [ + { + "proposal_id": "proposal_streamhaus_accepted_004", + "action": "revise", + "change_kind": "cancellation", + "ask": "Campaign objectives were met early; request an agreed wind-down." + } + ] +} +``` + +Both successors must be finalized and accepted. Direct [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) cancellation is reserved for rights already granted by the accepted terms. When Sam stops pursuing a draft instead, [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals) records terminal feedback; it does not mutate the proposal into another state. + +## Seller implementation + +### Preflight the whole request + +Before loading an LLM, pricing inventory, or writing state: + +1. Validate the request schema, the maximum of 25 refinements, unique source IDs, and finalize exclusivity. +2. Authenticate and authorize every source without disclosing cross-account existence. +3. Compare every typed field with the explicit capability declaration. +4. Enforce the protocol alternatives ceiling of 10 and any lower advertised `max_alternatives`. +5. Look up the idempotency key and reject reuse with a changed payload. +6. If any task-level check fails, create no successor and no hold. + +Capability support promises parse-and-validate competence, not commercial concession. A supported but unacceptable budget is a per-proposal `constraint_unsatisfiable` result, not `UNSUPPORTED_FEATURE`. + +### Keep protocol validation separate from policy + +The protocol layer owns schema validation, capability gates, result cardinality, lineage, digest computation, response validation, and transaction boundaries. Application policy owns pricing floors, available product mixes, targeting feasibility, alternative generation, underwriting, and hold duration. + +Fence `ask` from pricing and authorization authority. It is attacker-controlled free text and may influence candidate generation only through bounded application policy. Only the typed `commercial_terms` object becomes contractual. + +### Stage immutable successors + +For revision batches: + +1. Load each immutable source snapshot. +2. Build candidate `commercial_terms` without mutating the source. +3. Evaluate every typed constraint and product action against every candidate. +4. Classify the ordered result as `revised`, `partial`, or `unable`. +5. Generate new proposal IDs, set `parent_proposal_id`, compute JCS digests, and validate the full response. +6. Commit staged successors only after response validation succeeds. + +For `partial`, include every failed constraint key and failed product action. Every unlisted requirement must pass for every returned draft. `constraint_unsatisfiable` takes precedence when it coexists with an alternatives shortfall or uninterpreted prose. + +For finalize batches, acquire holds inside one transaction or equivalent staged operation. If any hold fails, roll back every sibling. A seller may decline a hold, apply its normal credit and relationship checks, and cap concurrent unexpired holds per buyer to resist inventory squatting. Choose `expires_at` long enough for acceptance but short enough to prevent free inventory options. Return `submitted` when those checks require asynchronous upstream pricing or manual re-underwriting, preserving the original idempotency scope through terminal completion. + +### Log for audit without leaking terms + +Record the authenticated buyer, source IDs, successor IDs, idempotency fingerprint, capability decision, outcome, unsatisfied keys, hold transaction, and digest. Do not place raw `ask`, full commercial terms, credentials, or cross-buyer pricing in broadly accessible logs. Rate-limit repeated unheld constraint probes: deterministic failures can otherwise become a price oracle. + +## Conformance and SDK status + +The canonical compliance scenario is `media_buy_seller/typed_proposal_negotiation`. It exercises capability gating, satisfied and unsatisfied constraints, alternatives, immutable lineage, finalize atomicity, exact replay, acceptance, amendment, cancellation, double-finalize rejection, and multi-source ordering. + +The deterministic training profiles expose the exact `3.2-beta.3` proposal-negotiation wire contract. The ordinary `/sales/mcp` route remains the backward-compatible ask-only seller. Use the [public test token](/dist/docs/3.2.0-beta.4/quickstart#setup) with `https://test-agent.adcontextprotocol.org` and one of these capability-distinct routes: + +| Profile | Route | Deterministic behavior | +| --- | --- | --- | +| Typed negotiation | `/sales/profiles/typed-negotiation/mcp` | All typed dimensions, up to three alternatives, successful atomic finalize | +| Constrained seller | `/sales/profiles/constrained-seller/mcp` | USD floors, product conflicts, and at most two available alternatives | +| Finalization failure | `/sales/profiles/finalization-failure/mcp` | `hold_unavailable` plus `batch_aborted` siblings with no committed successors | + +Pin the beta exactly on every call. A stable `3.2` selector intentionally negotiates to the seller's stable compatibility response instead of silently opting into beta behavior. The bundled `ADCPMultiAgentClient.simple()` proposal path cannot yet target a different exact beta ordinal. Until [adcp-client#2609](https://github.com/adcontextprotocol/adcp-client/issues/2609) ships, construct a lower-level client with `wireAdcpVersion: "3.2-beta.3"` or send raw calls as below. + +### Run the constrained profile + +This live example proves the three-to-two counteroffer and the changed-request retry rule against the public seller. It first requests three alternatives and receives a deterministic `partial` result containing two. It then changes the count to two, uses a new idempotency key, and receives `revised`. + +```javascript test=true integration requires-env=ADCP_AUTH_TOKEN +const endpoint = 'https://test-agent.adcontextprotocol.org/sales/profiles/constrained-seller/mcp'; +const token = process.env.ADCP_AUTH_TOKEN; +if (!token) throw new Error('Set ADCP_AUTH_TOKEN to the public test token'); + +function parseRpc(raw) { + const dataLine = raw.split(/\r?\n/).find((line) => line.startsWith('data:')); + return JSON.parse(dataLine ? dataLine.replace(/^data:\s*/, '') : raw); +} + +async function callTool(id, name, args) { + const response = await fetch(endpoint, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + Accept: 'application/json, text/event-stream', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + jsonrpc: '2.0', + id, + method: 'tools/call', + params: { name, arguments: args }, + }), + }); + const raw = await response.text(); + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${raw.slice(0, 200)}`); + } + const payload = parseRpc(raw); + const result = payload.result?.structuredContent; + if (payload.error || !result || result.adcp_error) { + throw new Error(JSON.stringify(payload.error ?? result?.adcp_error ?? 'missing structuredContent')); + } + return result; +} + +const version = { + adcp_version: '3.2-beta.3', + adcp_major_version: 3, +}; +const nonce = crypto.randomUUID(); + +const capabilities = await callTool(1, 'get_adcp_capabilities', version); +if ( + capabilities.adcp_version !== '3.2-beta.3' + || capabilities.media_buy?.supports_proposals !== true + || !capabilities.media_buy?.lifecycle_tools?.includes('refine_proposals') +) { + throw new Error('The seller did not negotiate the proposal profile'); +} + +const requested = await callTool(2, 'request_proposals', { + ...version, + idempotency_key: `docs-request-${nonce}`, + brand: { domain: 'acmeoutdoor.example' }, + brief: 'social engagement display', +}); +const proposalId = requested.proposals?.[0]?.proposal_id; +if (!proposalId) throw new Error('The seller returned no source proposal'); + +const refinement = { + proposal_id: proposalId, + action: 'revise', + constraints: { total_budget: { currency: 'USD', max: 50000 } }, +}; +const partial = await callTool(3, 'refine_proposals', { + ...version, + idempotency_key: `docs-refine-three-${nonce}`, + refinements: [{ ...refinement, alternatives: { count: 3 } }], +}); +const retried = await callTool(4, 'refine_proposals', { + ...version, + idempotency_key: `docs-refine-two-${nonce}`, + refinements: [{ ...refinement, alternatives: { count: 2 } }], +}); + +const first = partial.results?.[0]; +const second = retried.results?.[0]; +if ( + first?.outcome !== 'partial' + || first.reason_code !== 'alternatives_unavailable' + || first.proposals?.length !== 2 + || second?.outcome !== 'revised' + || second.proposals?.length !== 2 +) { + throw new Error('The public profile did not return the documented outcomes'); +} + +console.log({ + first: { outcome: first.outcome, alternatives: first.proposals.length }, + retry: { outcome: second.outcome, alternatives: second.proposals.length }, +}); +``` + +The constrained route is the canonical three-to-two exercise: request a USD 50,000 cap, include and omit products, apply US/Canada criteria, and request three alternatives. Retry the returned `partial` / `alternatives_unavailable` result with two alternatives before selecting and finalizing one. Exact retries reuse the same idempotency key; a changed alternatives count is a new logical request and needs a new key. + +For reason-code labs, the semantic ask markers `[commercially-declined]` and `[unsupported-dimension]` select those bounded fixture outcomes. An ordinary untyped ask reaches `uninterpreted`; impossible typed terms reach `constraint_unsatisfiable`; an unknown source reaches `source_unavailable`. The training seller caps each principal at three concurrent unexpired holds. + +Keep the following boundaries in your adapter: + +- capability preflight is separate from mutation; +- exact replay is separate from changed-request retry; +- task errors are separate from per-proposal outcomes; +- commercial policy is separate from protocol verification; +- finalization is separate from acceptance; +- immutable terms are separate from explanatory prose. + +## Implementation checklist + +- [ ] Discover `lifecycle_tools`, `supported_dimensions`, and `max_alternatives`. +- [ ] Enforce 25 refinements, 10 alternatives, seller limits, unique sources, and finalize-only batches before mutation. +- [ ] Preserve task errors separately from `revised` / `partial` / `unable` / `finalized`. +- [ ] Verify typed constraints, product actions, partial unsatisfied subsets, parent lineage, and JCS digests. +- [ ] Reuse a key only for the exact same request; use a new key for changed payloads. +- [ ] Stage successors and validate responses before commit. +- [ ] Create finalize holds atomically and enforce expiry during acceptance. +- [ ] Fork accepted snapshots for amendments and negotiated cancellation. +- [ ] Fence `ask`, authorize every source, rate-limit probing, and avoid sensitive logs. +- [ ] Run the typed proposal negotiation storyboard against the implementation. + +## Related reference + +- [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) +- [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) +- [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) +- [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals) +- [Capability discovery](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#proposal_refinement) +- [Legacy refinement compatibility](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement) diff --git a/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement.mdx b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement.mdx new file mode 100644 index 0000000000..670c6480b6 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement.mdx @@ -0,0 +1,366 @@ +--- +title: Refinement +description: "AdCP product refinement — iterate on discovered products and proposals using refine mode in get_products. Adjust selections and request changes before creating a media buy." +"og:title": "AdCP — Refinement" +--- + +Refinement turns product discovery into a conversation. After an initial `brief` or `wholesale` discovery, use `buying_mode: "refine"` to iterate on specific products and proposals — adjusting the selection, requesting changes, and exploring alternatives — before committing to a [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). + +## The refinement lifecycle + +A typical media buying workflow follows this pattern: + +``` +discover → refine → refine → ... → buy +``` + +1. **Discover** — Call `get_products` with `buying_mode: "brief"` or `"wholesale"` to find matching inventory. The seller returns products (and optionally proposals). + +2. **Refine** — Call `get_products` with `buying_mode: "refine"` and a `refine` array of change requests. Each entry declares a scope and what the buyer is asking for. The seller returns updated products with revised pricing and configurations. + +3. **Repeat** — Refine as many times as needed. Each call is self-contained and stateless. + +4. **Buy** — When satisfied, execute the final selection via `create_media_buy`. + +<Tip> +Refinement is not required. Simple campaigns can go straight from discovery to purchase. But for campaigns involving multiple products, proposals with budget allocations, or iterative negotiation, refinement is where the value is. +</Tip> + +## The refine array + +<Note> + This is the deprecated `get_products` compatibility grammar. New compact-lifecycle integrations use [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals). The surfaces share `ask`, product `include`/`omit` verbs, and the `budget_range` shape. Compact hard constraints are strict while these legacy filters remain extension-tolerant, and their response envelopes are intentionally different. +</Note> + +The `refine` array is a list of change requests. Each entry declares a `scope` and what the buyer is asking for: + +| Scope | Purpose | Required fields | +|-------|---------|-----------------| +| `request` | Direction for the selection as a whole | `ask` | +| `product` | Action on a specific product | `product_id` | +| `proposal` | Action on a specific proposal | `proposal_id` | + +The `refine` array requires at least one entry. The seller considers all entries together when composing the response, and replies to each one via `refinement_applied`. + +Each scope uses its own id field — `product_id` for product entries, `proposal_id` for proposal entries — matching the id naming convention AdCP uses everywhere else. `action` is optional on product and proposal entries and defaults to `"include"`. + +### Product actions + +Product-scoped entries may declare an action. When omitted, the seller treats the entry as `"include"`: + +| Action | Behavior | `ask` | +|--------|----------|-------| +| `include` (default) | Return this product with updated pricing and data | Optional — specific changes to request (e.g., "add 16:9 format") | +| `omit` | Exclude this product from the response | Ignored | +| `more_like_this` | Find additional products similar to this one. The original product is also returned. | Optional — what "similar" means (e.g., "same audience but video format") | + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442013", + "buying_mode": "refine", + "refine": [ + { "scope": "product", "product_id": "prod_video_premium", "ask": "add 16:9 format option" }, + { "scope": "product", "product_id": "prod_display_ros", "action": "omit" }, + { "scope": "product", "product_id": "prod_native", "action": "more_like_this", "ask": "same audience but video format" } + ] +} +``` + +### Request-level direction + +Use `scope: "request"` to describe what you want from the selection as a whole: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442014", + "buying_mode": "refine", + "refine": [ + { "scope": "request", "ask": "good selection but I want more video options and less display" }, + { "scope": "product", "product_id": "prod_video_premium" }, + { "scope": "product", "product_id": "prod_display_ros" }, + { "scope": "product", "product_id": "prod_native" } + ] +} +``` + +The seller may add, remove, or rebalance products based on this direction. Products not referenced in the `refine` array may appear in the response if the seller determines they fit the direction. + +**Precedence**: Per-product actions take precedence over request-level direction. If the request-level ask says "less display" but a specific product carries an explicit action to include it, that product is returned regardless. + +### Proposal refinement + +Reference proposals by `proposal_id` to request adjustments or remove them. Like product entries, `action` defaults to `"include"`: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442015", + "buying_mode": "refine", + "refine": [ + { "scope": "product", "product_id": "prod_video_premium" }, + { "scope": "product", "product_id": "prod_display_ros" }, + { "scope": "proposal", "proposal_id": "prop_balanced_v1", "ask": "shift 20% from display to video" } + ] +} +``` + +### Combining scopes + +All scopes work together. A single refinement call can set direction for the selection, act on specific products, and request changes to a proposal: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442016", + "buying_mode": "refine", + "refine": [ + { "scope": "request", "ask": "increase emphasis on video across the plan" }, + { "scope": "product", "product_id": "prod_video_premium" }, + { "scope": "product", "product_id": "prod_display_ros" }, + { "scope": "product", "product_id": "prod_native", "action": "omit" }, + { "scope": "product", "product_id": "prod_audio_spot" }, + { "scope": "proposal", "proposal_id": "prop_awareness_q2", "ask": "reallocate native budget to video products" } + ], + "filters": { + "budget_range": { "min": 200000, "max": 200000, "currency": "USD" } + } +} +``` + +## Seller response + +When a buyer sends a `refine` array, the seller responds with `refinement_applied` — an array matched by position to the buyer's change requests. Each entry reports whether the ask was fulfilled: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | Echoes the scope (`"request"` / `"product"` / `"proposal"`) from the corresponding `refine` entry. | +| `product_id` | string | Yes when `scope` is `"product"` | Echoes `product_id` from the corresponding refine entry. | +| `proposal_id` | string | Yes when `scope` is `"proposal"` | Echoes `proposal_id` from the corresponding refine entry. | +| `status` | string | Yes | `"applied"`: ask fulfilled. `"partial"`: partially fulfilled. `"unable"`: could not fulfill. | +| `notes` | string | No | Seller explanation. Recommended when status is `"partial"` or `"unable"`. | + +```json +{ + "products": ["..."], + "proposals": ["..."], + "refinement_applied": [ + { "scope": "request", "status": "applied", "notes": "Added 3 video products. No CTV inventory for those dates." }, + { "scope": "product", "product_id": "prod_video_premium", "status": "applied" }, + { "scope": "product", "product_id": "prod_display_ros", "status": "applied" }, + { "scope": "product", "product_id": "prod_native", "status": "applied" }, + { "scope": "product", "product_id": "prod_audio_spot", "status": "partial", "notes": "16:9 not available for this placement — returning 4:3 and 1:1" }, + { "scope": "proposal", "proposal_id": "prop_awareness_q2", "status": "applied", "notes": "Shifted 22% to video (nearest allocation boundary)" } + ] +} +``` + +The `refinement_applied` array MUST contain the same number of entries in the same order as the `refine` array. Each entry MUST echo `scope` and the matching id (`product_id` on product scope, `proposal_id` on proposal scope) so orchestrators can cross-validate alignment. The entire field is optional — sellers that don't track per-ask outcomes can omit it — but sellers that return it MUST return valid, position-matched entries. + +Orchestrators SHOULD cross-check entries by the echoed id rather than trusting positional order alone — a seller bug that reorders entries would otherwise silently mis-attribute each outcome. + +## Common refinement patterns + +### Price and budget asks + +Use the free-text `ask` field for commercial requests such as a lower price or a different budget allocation. For example, a buyer can ask for a proposal-scoped CPM reduction: + +```json +{ + "buying_mode": "refine", + "refine": [ + { + "scope": "proposal", + "proposal_id": "prop_awareness_q2", + "ask": "reduce the CPM by 10% while keeping the same inventory and dates" + } + ] +} +``` + +Buyers discover this legacy refinement mode when `get_adcp_capabilities.media_buy.buying_modes` includes `"refine"`. That declaration means the seller can receive this free-text ask; it does not guarantee that the seller understands every negotiation strategy or has commercial flexibility on price. There is no finer-grained price-negotiation capability flag. Compact `refine_proposals` integrations separately inspect `media_buy.proposal_refinement.supported_dimensions` for typed parse-and-validate support. + +When the seller returns `refinement_applied`, read the matching entry's `status` (`applied`, `partial`, or `unable`) and optional `notes` to learn how it handled this specific request. These fields acknowledge handling; they are not the executable commercial terms. Inspect the returned proposal's pricing and allocations before finalizing or buying. + +Because the entire `refinement_applied` field is optional, omission communicates no per-ask outcome: do not infer `applied`, `partial`, or `unable`. A seller may omit it even when the response applies the requested change. Treat the returned proposal and any reported outcome as runtime evidence for this request, not as a general promise that the seller can negotiate price. + +### Find similar products + +Use `more_like_this` to discover products similar to ones you like. The seller returns the original product plus additional options matching its characteristics: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442017", + "buying_mode": "refine", + "refine": [ + { "scope": "product", "product_id": "prod_video_premium", "action": "more_like_this", "ask": "same premium audience but different formats" } + ] +} +``` + +### Adjust filters + +Filters on a refine request represent the complete target state, not a delta. Always send the full filter set you want applied: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442018", + "buying_mode": "refine", + "refine": [ + { "scope": "product", "product_id": "prod_video_premium" }, + { "scope": "product", "product_id": "prod_display_ros" } + ], + "filters": { + "start_date": "2026-04-01", + "end_date": "2026-06-30", + "budget_range": { "min": 150000, "max": 150000, "currency": "USD" } + } +} +``` + +### Narrow or expand a proposal + +The product entries define which products the seller should consider for the proposal. Combined with proposal entries, this narrows or expands the proposal's product set: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442019", + "buying_mode": "refine", + "refine": [ + { "scope": "product", "product_id": "prod_video_premium" }, + { "scope": "product", "product_id": "prod_display_ros" }, + { "scope": "proposal", "proposal_id": "prop_balanced_v1", "ask": "rebalance for just these two products" } + ] +} +``` + +## Finalize is exclusive within `refine[]` + +`action: "finalize"` is seller commitment, not buyer acceptance — it transitions a draft proposal to committed with firm pricing and an expires_at hold window. The buyer accepts/executes a committed proposal later via `create_media_buy(proposal_id)`. When a buyer wants to finalize, the spec requires the `refine[]` array contain **only** finalize entries: + +- If any entry has `action: "finalize"`, **all** entries in the array MUST be proposal-scoped with `action: "finalize"`. Mixing finalize with `include` / `omit` entries, or with request- or product-scoped entries, MUST be rejected by the seller with `INVALID_REQUEST`. +- Buyers needing to refine *and* commit in close succession **sequence** the calls: first a refine call (no finalize), then a finalize call against the resulting `proposal_id`(s). The two intents are distinct decisions and the spec treats them as distinct calls. + +```yaml +# ✅ Refine only — no finalize present, mixed scopes allowed +refine: + - { scope: proposal, proposal_id: p1, ask: "shift more to ctv" } + - { scope: request, ask: "frequency cap 3/day across all products" } + +# ✅ Finalize only — multiple finalize entries against different proposals +refine: + - { scope: proposal, proposal_id: p1, action: finalize } + - { scope: proposal, proposal_id: p2, action: finalize } + +# ❌ Rejected — finalize mixed with non-finalize +refine: + - { scope: proposal, proposal_id: p1, action: finalize } + - { scope: proposal, proposal_id: p2, ask: "shift more to ctv" } +``` + +**Multi-finalize is atomic at the observation point.** When multiple finalize entries target different proposals in one call, the contract is: sellers MUST NOT return a success response unless every named proposal has both completed and been persisted as committed. Pre-commit validation runs before any side-effects (inventory pull, terms lock, governance attestation); if any proposal fails validation, the seller MUST reject the entire call without committing any. There is no `unfinalize` operation — atomicity runs on the pre-commit validation gate, not on post-commit reversal. Sellers that cannot guarantee atomic pre-commit validation MUST reject multi-finalize arrays with `MULTI_FINALIZE_UNSUPPORTED` (preferred — explicitly signals seller-side capability gap rather than client-side mistake) or `INVALID_REQUEST` (acceptable fallback for sellers on a pre-3.1 error catalog), and buyers SHOULD then sequence single-finalize calls. + +**Mid-commit failure (post-validation, pre-persist).** If a downstream system fails between commit one and commit two — e.g., the second ad server times out after the first has already locked inventory — the seller MUST return `INTERNAL_ERROR` with `refinement_applied[]` carrying per-position outcomes. The spec does NOT define a recovery path: buyers SHOULD treat the resulting state as undefined and re-read via `get_media_buys` / equivalent before retrying. Recovery from this case is operational, not protocol-defined. + +**Buyer intent caveat.** Buyers whose intent specifically requires atomic commit (e.g., budget-shared proposals where one finalizing without the other is incoherent) MUST be prepared to abandon the intent if the seller returns `MULTI_FINALIZE_UNSUPPORTED`. The fallback path — sequencing single-finalize calls — is a looser commit guarantee than the original atomic intent; there is no recovery for that loss of intent beyond accepting the looser guarantee or declining to commit at all. There is no capability flag for multi-finalize support — the failure response is the discovery surface, so buyers MUST NOT assume support without a successful first attempt. + +## Proposals in refine mode + +Sellers MAY return proposals alongside refined products, even when the buyer did not include proposal entries. For example, a buyer refining three products may receive those products back with updated pricing *and* a proposal suggesting how to combine them. + +Key points: + +- **Proposals are not guaranteed.** Sellers are not required to generate proposals in refine mode. Allocation and campaign optimization are primarily orchestrator (buyer-side agent) responsibilities. +- **Signal interest via a request-level ask.** Include `{ "scope": "request", "ask": "suggest how to combine these products" }` to indicate you'd welcome a proposal. +- **Unsolicited proposals can be refined or ignored.** If a seller returns a proposal you didn't request, you can refine it in a follow-up call, or simply ignore it and build packages manually via `create_media_buy`. + +Publishers typically omit proposals in `wholesale` mode, where the buyer is directing targeting and allocation themselves. + +## Statelessness + +Each `get_products` request with `buying_mode: "refine"` is self-contained. The +opaque product and proposal IDs carry the configurations being refined; they do +not identify a transport session. Top-level `filters`, `targeting_overlay`, and +`required_overlay_support`, when present, are complete replacement state for +the refined results rather than deltas. When omitted, the configuration already +bound to each referenced product ID remains in force. Sales agents MUST NOT +depend on unreferenced transport-level or conversational state. + +Sellers still maintain their own product and proposal registries — "stateless" means the *protocol exchange* carries no implicit state between calls. + +This design enables: +- **Stateless implementations** — sellers don't need to track refinement sessions +- **Safe retries** — a failed refinement call can be retried with the same parameters +- **Parallel exploration** — an orchestrator can explore multiple refinement paths simultaneously + +## Client validation + +Orchestrators should validate refinement requests before sending: + +- **Non-empty refine** — The `refine` array requires at least one entry. An empty `[]` is rejected by schema validation. +- **Valid entries** — Each product entry requires `scope` and `product_id`. Each proposal entry requires `scope` and `proposal_id`. Request-level entries require `scope` and `ask`. `action` is optional on product and proposal entries (defaults to `"include"`); valid values are `include` / `omit` / `more_like_this` for products and `include` / `omit` / `finalize` for proposals. +- **Filters are absolute** — Send the full filter set you want applied, not a delta from the previous request. +- **Targeting and future support are absolute when present** — Send the complete + desired `targeting_overlay` and `required_overlay_support`. Changed effective + targeting, forecast assumptions, non-pricing terms, resolution, or overlay + support produces a new configured `product_id`; otherwise the seller keeps + the prior ID stable until expiration. Changed commercial terms receive a new + immutable `pricing_option_id`, so the selected pair remains unambiguous. + +Client implementations should validate refinement requests against the [request schema](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) before sending. + +## Error handling + +| Error Code | When | Resolution | +|------------|------|------------| +| `PRODUCT_NOT_FOUND` | One or more referenced product IDs are unknown, tombstones were evicted, or IDs belong to another account/lineage | Remove invalid IDs and retry, or re-discover with a `brief` request | +| `PRODUCT_EXPIRED` | One or more caller-authorized configured product IDs are still recognized and passed `expires_at` | Re-discover with a new `brief` or `wholesale` request; inaccessible IDs and IDs whose tombstones are no longer retained return `PRODUCT_NOT_FOUND` | +| `PROPOSAL_EXPIRED` | A referenced proposal ID has passed its `expires_at` | Re-discover with a new `brief` or `wholesale` request | +| `PROPOSAL_NOT_FOUND` | The referenced `proposal_id` is unknown to the seller (never issued, wrong tenant, or evicted from cache) | Re-issue `get_products` in `brief` or `wholesale` mode to obtain a fresh draft; finalize that recognized proposal before creating the media buy | +| `MULTI_FINALIZE_UNSUPPORTED` | `refine[]` carried multiple `action: 'finalize'` entries but the seller cannot guarantee atomic multi-proposal commit | Sequence single-proposal finalize calls (one finalize per `get_products` call) | +| `INVALID_REQUEST` | `refine` provided in `brief` or `wholesale` mode, empty `refine` array, or missing required fields | Check `buying_mode` and required fields | + +### Troubleshooting: "must NOT have additional properties" on `refine[].id` + +Each scope branch in `refine[]` is `additionalProperties: false`, which means a stray `id` field from the pre-3.0-rc refine shape is rejected — not silently ignored — with an error along the lines of: + +``` +/refine/0: must NOT have additional properties { additionalProperty: "id" } +/refine/0: must match oneOf schema { required: ["product_id"] } +``` + +If you see this, an orchestrator is still constructing product or proposal refine entries with the generic `id` field. Rename to `product_id` under `scope: "product"` and `proposal_id` under `scope: "proposal"`. See the [task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#refine-array) for the current shape. The same rename applies to `refinement_applied[]` if you're echoing on the seller side. + +### Seller migration + +Sellers returning `refinement_applied` have breaking work alongside buyers: + +- Each response entry MUST now carry `scope`, and for product/proposal scopes MUST echo `product_id` / `proposal_id`. Flat `{status, notes}` entries are rejected by the response schema. +- Missing `action` on an incoming `refine[]` entry MUST be treated as `action: "include"`, not parsed as an error. +- Seller conformance tests against the 3.0 request schema will reject any lingering orchestrator payloads that still use the generic `id` field — refresh your fixture corpus after upgrading. + +## Normative requirements + +The [Media Buy Specification](/dist/docs/3.2.0-beta.4/media-buy/specification#get_products) defines the following normative requirements for refinement: + +**Orchestrators:** +- MUST include `refine` when `buying_mode` is `"refine"` +- MUST NOT include `refine` when `buying_mode` is `"brief"` or `"wholesale"` +- MUST provide `scope` and `product_id` for each product entry, and `scope` and `proposal_id` for each proposal entry +- MAY omit `action` on product and proposal entries — sellers treat missing `action` as `"include"` +- MUST NOT include multiple entries for the same product ID or proposal ID in a single `refine` array + +**Sales agents:** +- MUST omit products with `action: "omit"` from the response +- MUST omit proposals with `action: "omit"` from the response +- MUST return products with `action: "include"`, with updated pricing +- SHOULD fulfill the `ask` on product entries with `action: "include"` +- SHOULD return additional products similar to those with `action: "more_like_this"`, plus the original product +- SHOULD consider request-level asks when composing the response — this MAY result in additional products beyond those explicitly referenced. Per-product actions take precedence over request-level direction. +- SHOULD fulfill the `ask` on proposal entries with `action: "include"` +- SHOULD include `refinement_applied` in the response when the buyer provides `refine`, with one entry per change request matched by position +- MAY return proposals even when the buyer did not include proposal entries + +## See also + +- [`get_products` task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#refinement) — API reference with request/response schemas +- [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) — product model and proposal structure +- [Media Buy Specification](/dist/docs/3.2.0-beta.4/media-buy/specification#get_products) — normative requirements +- [Orchestrator Design](/dist/docs/3.2.0-beta.4/building/operating/orchestrator-design) — building buyer-side agents diff --git a/dist/docs/3.2.0-beta.4/media-buy/specification.mdx b/dist/docs/3.2.0-beta.4/media-buy/specification.mdx new file mode 100644 index 0000000000..3a3bb00735 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/specification.mdx @@ -0,0 +1,689 @@ +--- +title: Media Buy Specification +description: "AdCP media buy specification — transport layer, task definitions, JSON schemas, authentication, and compliance requirements for agent-to-agent advertising." +"og:title": "AdCP — Media Buy Specification" +sidebarTitle: Specification +--- + +<Info> +**AdCP 3.0 Proposal** - This specification is under development for AdCP 3.0. Feedback welcome via [GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions). +</Info> + +**Status**: Request for Comments +**Last Updated**: February 2026 + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +## Abstract + +The Media Buy Protocol defines a standard interface for AI-powered advertising automation. This protocol enables AI agents to discover advertising inventory, create and manage campaigns, synchronize creative assets, and track performance through natural language interactions. + +## Protocol Overview + +The Media Buy Protocol provides: + +- Natural language inventory discovery based on campaign briefs +- Campaign creation with package-level budget and targeting +- Creative asset management and synchronization +- Performance tracking and optimization feedback +- Human-in-the-loop approval workflows + +## Transport Requirements + +Sales agents MUST support at least one of the following transports: + +| Transport | Protocol | Description | +|-----------|----------|-------------| +| MCP | Model Context Protocol | Tool-based interaction via JSON-RPC | +| A2A | Agent-to-Agent | Message-based interaction | + +Sales agents SHOULD support MCP as the preferred transport. + +Sales agents MUST declare Media Buy Protocol support via `get_adcp_capabilities`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [2], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + } +} +``` + +## Core Concepts + +### Request Roles + +Every media buy request involves three entities: + +- **Orchestrator**: The platform making the API request (e.g., DSP, trading desk) +- **Account**: The billing relationship—who gets billed and what rates apply (identified by `account_id`) +- **Agent**: The entity placing the buy (identified by authentication token) + +### Sales Agent Types + +**Publisher Sales Agents** — represent a single publisher's inventory: +- Sales agents MUST only return products for inventory they are authorized to sell +- Sales agents MUST validate authorization via `adagents.json` when applicable + +**Aggregator Sales Agents** — represent multiple publishers: +- Sales agents MUST clearly identify the source publisher for each product +- Sales agents MUST NOT misrepresent inventory provenance + +### Identifiers + +- **`product_id`**: Opaque identifier for a product returned by `get_products`. A non-custom wholesale ID remains stable for the same logical offer within the seller and declared `cache_scope`, including across reads and wholesale-feed webhooks; feed and pricing versions communicate temporal catalog mutation, while retirement or replacement may end the identity. Binding commercial terms are immutable under `pricing_option_id`, so changed price, floor, currency, model, or priced applicability receives a new option ID. An `is_custom: true` ID remains stable only in its issuing discovery/refinement lineage through its promised lifetime. Creating a package with the product and pricing-option IDs accepts the disclosed configuration and commercial option. A caller-authorized custom ID past `expires_at` returns `PRODUCT_EXPIRED`; after its tombstone is no longer retained or outside its account/lineage, `PRODUCT_NOT_FOUND` applies without disclosing cross-tenant existence. + +### Structured requirements and briefs + +Buyers SHOULD use a structured request field whenever one represents their +requirement. Structured input is compact, machine-validatable, and avoids lossy +natural-language inference. Briefs carry goals, context, semantic intent, +preferences, and requirements without a structured representation. + +An explicit hard requirement in a brief remains binding. Sellers MUST apply it +even when the buyer did not duplicate it in a structured field. When structured +hard targeting inferred from prose materially affects product eligibility, +pricing, or forecasting, sellers MUST confirm the resulting predicate once in +`request_proposals` or `get_products` response-root +`targeting_resolution.brief_targeting`, or in the corresponding +`refine_proposals.results[]` entry when the interpretation came from that +refinement's `ask`. Otherwise confirmation remains a best practice. Absence of +Product targeting resolution confirms exact acceptance of a structured overlay +for that product only; it does not confirm how the seller interpreted prose. + +`required_overlay_support` requests later-selectable capability, not concrete +values, value-specific availability, or a forecast for every possible value. A +requirement `true` matches support `true` or any valid support object; an object +requirement matches `true` or a support object containing every requested +boolean and array subset. Unrequested fields and numeric seller limits do not +participate. Forecasts without concrete values describe the product's +discovery/default scope; buyers rediscover with concrete `targeting_overlay` +values for value-specific forecasts. Fixed prices and floors remain binding +uniformly for supported selections, while price guidance remains non-binding. +Sellers with value-dependent rates return a concretely targeted configured +product, split rate tiers into products, or withhold binding prices until +concrete rediscovery; they never reuse a selected `pricing_option_id` at new +terms. + +Placement selection follows the same exact-outcome rule across discovery, +create, and update. A selected set exactly equal to the product's complete +`mode: "included"` set is an inherent restatement and does not require +`overlay_support.placement_selection`; partial selection does. + +- **`media_buy_id`**: Unique identifier for a media buy. Sales agents MUST return this on successful creation. Orchestrators MUST use this for all subsequent operations on the media buy. A `media_buy_id` is a stable handle to any order in the seller's ad server that the authenticated account owns — not only orders originally booked via AdCP. + +- **`package_id`**: Unique identifier for a package within a media buy. Sales agents MUST return this for each package created. + +- **`idempotency_key`**: Client-generated unique key for safe retries. Sales agents that receive a duplicate key for the same account MUST return the original response rather than re-executing. + +### Account Ownership vs. Creation Surface + +AdCP is a protocol onto the seller's ad operations, not a shadow ledger beside them. Account-scoped tasks (`get_media_buys`, `get_media_buy_delivery`, `update_media_buy`, creative sync where applicable) are scoped by **account ownership**, not by the surface through which a resource was created. A sales agent MUST NOT partition its own inventory into "AdCP-managed" and "non-AdCP" subsets for the purpose of these tasks. + +Concretely: + +- `get_media_buys` MUST return every media buy owned by the authenticated account — whether created via `create_media_buy`, via the seller's native APIs or UI, via manual trafficking, or via legacy/third-party systems — subject only to the declared `status_filter` and pagination. +- Any `media_buy_id` returned by `get_media_buys` MUST be a valid argument to `get_media_buy_delivery` and to `update_media_buy` for every action listed in its `valid_actions`. +- A sales agent MUST NOT mark a buy read-only, hide it, or return `MEDIA_BUY_NOT_FOUND` on the basis that it was not originally booked through AdCP. +- When a specific action is unavailable for business reasons (contractual obligations, platform constraints, policy), the sales agent expresses that by omitting the action from `valid_actions`, not by refusing the buy from account-scoped listings. +- **Creation surface is never a business reason.** Sales agents MUST NOT omit an action from `valid_actions` — or return `INVALID_STATE` on an otherwise-valid update — solely because the buy was created outside AdCP. `valid_actions` omissions are legitimate only when grounded in actual contractual, platform, or policy constraints that would apply equally to an AdCP-created buy in the same state. A seller that returns non-AdCP buys with a systematically empty `valid_actions` is non-conformant, because that behavior is indistinguishable from hiding the buy and defeats the normative intent of the rules above. + +#### Partitioning belongs at the account boundary + +When a seller has a legitimate reason to keep a set of buys outside a caller's operational reach — child-seller models, NDA-scoped PMP deals, sandbox-vs-production separation, tenant-level privacy partitions — the correct mechanism is **account partitioning**, not within-account filtering: + +- Expose the hidden subset as a separate account (or sub-account) the caller is not authorized to reference. +- Within any account the caller *is* authorized on, return the full set of buys that account owns per the rules above. + +The account boundary is the AdCP primitive for access partitioning; `get_agent_capabilities` is the introspection surface for the scope granted on a given account. Callers can see what they can see; what they cannot see lives behind an account reference they do not hold. Within-account filtering — returning only a subset of an account's buys to a caller who is authorized on that account — reintroduces the shadow-ledger problem this rule forbids. + +### Asynchronous Operations + +The Media Buy Protocol is asynchronous by design. Operations MAY return immediately or MAY require extended processing: + +- **Synchronous responses**: Sales agents MAY return completed results immediately +- **Asynchronous responses**: Sales agents MAY return `status: "submitted"` or `status: "working"` with a task reference +- **Human-in-the-loop**: Sales agents MAY require internal human review (e.g. IO signing) by keeping the task in `status: "submitted"` until the reviewer acts. Sales agents MAY also use `status: "input-required"` when the buyer must respond (e.g. confirm a budget). Human approval is modelled at the task layer — there is no `pending_approval` MediaBuy status (that value exists only on Account.status for account onboarding review) +- **Rejection**: Sales agents MAY reject a media buy in `pending_creatives` or `pending_start` status when platform setup reveals the order cannot be fulfilled (e.g., inventory sold out, policy issue discovered during ad server setup). Orchestrators MUST treat `rejected` as a terminal state. If the seller does not want to accept the order at create time, it SHOULD fail `create_media_buy` with an error rather than creating a media buy in `rejected` status. + +Orchestrators MUST handle all response types and MUST NOT assume synchronous completion. + +### Transaction boundaries across lifecycle surfaces + +`create_media_buy` and `update_media_buy` are compound 3.x compatibility +facades. Each request is one atomic mutation. Sellers MUST validate every +requested package, inline creative, creative assignment, catalog selection, and +cross-field relationship before committing any part of the request. If one +inline creative or assignment is invalid, the complete create or update fails; +the seller MUST NOT leave behind a MediaBuy, package, library write, assignment, +or partial update from that request. + +Request validation is not creative review. After valid creative input has been +committed, a later content-policy, brand-safety, or accessibility rejection +updates creative and assignment approval state but does not roll back the +MediaBuy or a successful update. Before activation, a buy without sufficient +approved coverage remains `pending_creatives` until the buyer supplies a +correction or replacement. Rejection affecting an active buy follows the +creative-impairment and serving rules instead of reversing commitment. + +The compact lifecycle separates commitment, operational control, and creative +traffic. `buy_products` or `accept_proposal` commits before `sync_creatives` can +assign against the returned package IDs. Each call is atomic, but the sequence +is a saga: failure of a later sync leaves the purchase committed. Likewise, a +legacy update split into proposal acceptance, `control_media_buy`, and +`sync_creatives` has multiple independent failure boundaries and is not an +atomic compatibility translation. Compensating cancellation, when allowed by +the accepted terms, is a new state transition rather than rollback. + +Callers use the compatibility facade whenever one transaction must combine +targeting with assignment replacement, or when an inline-only seller has no +creative library. A targeting change that would orphan an assignment MUST be +validated with its complete assignment replacement in the same facade update; +`control_media_buy` followed by `sync_creatives` cannot provide that guarantee. + +### Media Buy State Transitions + +Media buys progress through a defined set of states. Terminal states (`completed`, `rejected`, `canceled`) allow no further transitions. + +``` +create_media_buy ──┬──▶ pending_creatives ──▶ pending_start ──▶ active + ├──▶ active ──(pause)──▶ paused + └──▶ paused (when created with paused: true) + +paused ──(resume)──▶ active +active ─────────────▶ completed (terminal) +paused ─────────────▶ completed (terminal) + +pending_creatives ──▶ rejected (terminal) — seller rejects during setup +pending_start ──────▶ rejected (terminal) — seller rejects during setup + +Any non-terminal ──── update(canceled: true) ──▶ canceled (terminal) +``` + +**Rules:** + +- Sales agents MAY return `active`, `paused`, `pending_creatives`, or `pending_start` from `create_media_buy` (seller's choice based on platform setup time and the buyer's create-time `paused` request) +- Sales agents MUST transition media buys from `pending_start` to `active` when the flight date arrives. Sales agents SHOULD notify orchestrators via webhook when this transition occurs. +- A successful committed `create_media_buy` response constitutes **order confirmation**. Sales agents MUST include `confirmed_at` in create/get responses; the value is the seller commitment timestamp, or `null` for a provisional buy that exists but is still waiting for seller commitment. +- Sales agents MUST include `revision` in create, get, and update responses. The revision number MUST increment on every mutating state change or update. +- `active` ↔ `paused` transitions use `update_media_buy` with `paused: true` or `paused: false` +- `create_media_buy` with top-level `paused: true` creates a held media buy when it would otherwise be `active`. Setup blockers still take precedence: no creatives yields `pending_creatives`, and a future flight yields `pending_start` until the start condition is satisfied. The hold is latent while those blockers are visible; once creatives are present and the flight can start, the buy enters `paused` instead of `active`. +- `update_media_buy` with `paused: false` resumes a buy that is currently `paused` or clears a latent create-time hold while the visible state is still `pending_creatives` or `pending_start`. Clearing a latent hold does not bypass setup blockers; the visible status remains pending until creatives are supplied and the flight can start. +- `active` or `paused` → `completed` when the flight ends, goal is met, or budget is exhausted (seller-initiated) +- Buyer-initiated cancellation uses `update_media_buy` with `canceled: true` and optional `cancellation_reason` +- On the `update_media_buy` compatibility facade, root `canceled: true` takes precedence over package cancellation and every other requested mutation. The seller cancels the whole MediaBuy, releases all of its package assignments, ignores every other field except `cancellation_reason`, and SHOULD return a structured warning identifying the ignored fields. A package-only cancellation is evaluated only when root `canceled` is absent. Compact `control_media_buy` instead makes root cancellation mutually exclusive with package and other controls, so a mixed compact request is invalid rather than precedence-resolved. +- Seller-initiated cancellation (e.g., policy violation, inventory withdrawal) transitions the media buy to `canceled` with `cancellation.canceled_by: "seller"`; buyers recover the state through `get_media_buys`. A durable resource-scoped status webhook is reserved for the 4.0 notification model—operation-scoped `push_notification_config` is not a future lifecycle subscription. +- Seller-initiated rejection (from `pending_creatives` or `pending_start`) is likewise observable through `get_media_buys`; implementations MUST NOT synthesize an operation-completion webhook after the originating operation has already completed. +- Sales agents MUST include a `cancellation` object with `canceled_at` and `canceled_by` when transitioning a media buy or package to `canceled` +- Sales agents MAY reject buyer cancellation of a non-terminal media buy with error code `NOT_CANCELLABLE` (e.g., when the seller contractually refuses mid-flight cancellation) +- When a buyer attempts to cancel a media buy already in `canceled` (`canceled: true` on a `canceled` buy), sales agents MUST reject with `NOT_CANCELLABLE` +- All other updates to media buys in terminal states (`completed`, `rejected`, `canceled`) — including `canceled: true` attempts against `completed` or `rejected` buys — MUST be rejected with `INVALID_STATE` +- Rejection (`rejected` status) is only valid from `pending_creatives` or `pending_start`. Sales agents MUST NOT reject media buys that have already transitioned to `active`. +- The current 3.x wire does not define a durable seller-initiated MediaBuy status subscription. Sellers MUST preserve the transition in MediaBuy readback and history; buyers that need immediate push delivery should negotiate an implementation extension until the 4.0 resource-scoped notification contract lands. +- The `canceled` field on update requests uses `"const": true` — only `true` is valid. Sending `canceled: false` fails schema validation. Cancellation is irreversible; there is no "uncancel" operation. +- **Creative assignments are released on buy rejection or cancellation.** When a media buy transitions to `rejected` or `canceled`, all package-creative assignments on that media buy are released. For sellers that advertise `creative.has_creative_library: true`, the creatives persist in the creative library per [assignment state and creative state](/dist/docs/3.2.0-beta.4/creative/creative-libraries#creative-state-and-assignment-state-are-separate) and MAY be referenced by `creative_id` in a subsequent `create_media_buy` or `sync_creatives` call. Inline-only sellers that advertise `inline_creative_management` without a creative library MAY keep submitted creatives package-scoped; they do not advertise cross-buy reuse or `list_creatives` readback. +- **Creative review is independent of buy outcome.** Sales agents MUST NOT implicitly reject a creative because its containing buy was rejected; a creative rejection MUST be a deliberate review decision with its own `rejection_reason`. If the buy was rejected because a creative violated content policy, the sales agent MAY reject that creative — but only via the normal review path with its own `rejection_reason`; the buy's `rejected` status is not itself sufficient. +- **Observability of released assignments.** The media-buy-level `canceled` or `rejected` transition, preserved in `get_media_buys` status and history, IS the audit record for all its released assignments; buyers MUST NOT rely on per-assignment diff observability. A negotiated implementation webhook extension may accelerate discovery but is not required by 3.x. Released assignments no longer appear in `get_media_buys` responses for that buy. Buyers confirming library reusability SHOULD call `list_creatives` to verify the creative is still in the library and observe its current status. Inline-only buyers should retain their submitted creative bodies because `get_media_buys` surfaces package-level approval state, not full creative-body retrieval. Package-scoped deadlines (`creative_deadline`) on the prior package have no bearing on a library creative's eligibility for a new buy. +- **Retention.** Sales agents with creative libraries SHOULD retain released creatives in the library for at least 90 days after the last assignment is released. A normative retention floor is specified in the creative retention contract tracked under [#2260](https://github.com/adcontextprotocol/adcp/issues/2260); until that contract lands, buyers relying on long-horizon reuse SHOULD verify persistence via `list_creatives` before referencing a released creative on a new buy. + +#### Revision and confirmation semantics + +`revision` is the optimistic concurrency token for a media buy. The wire field on `update_media_buy` is named `revision`; implementations may call it `expected_revision` internally, but the semantics are the same: the caller is saying "apply this update only if the current stored media-buy revision still equals this value." + +Sellers MUST enforce the revision check atomically at the persistence boundary for every mutating update. A read-compare-write sequence in application memory can race with another writer and allow lost updates. The update and compare belong in one database transaction, conditional update, or equivalent atomic primitive. On mismatch, return `CONFLICT` and leave the media buy unchanged. + +Mutating updates increment `revision` and return the new value. This includes budget, flight date, targeting, status, package, creative-assignment, inline-creative, reporting-webhook, invoice-recipient, and committed-metric changes made through `update_media_buy`. Validation-only requests, exact idempotency replay of an already-applied operation, and reads via `get_media_buys` do not bump revision. + +`sync_creatives` has its own idempotency and atomicity boundary. Library uploads +and assignment operations performed there do not increment the MediaBuy +`revision`; there is no shared revision fence between creative sync and MediaBuy +control. Consequently, the same logical assignment change increments revision +when it is part of the `update_media_buy` compatibility mutation but does not +when it is performed through `sync_creatives`. Buyers MUST NOT use an unchanged +MediaBuy revision as proof that package-assignment state is unchanged. + +Buyers SHOULD pass the latest observed `revision` on every `update_media_buy` call intended to change state. The request field remains optional for backward compatibility. When `revision` is present, sellers MUST compare it atomically with the write and reject stale values with `CONFLICT`. On `CONFLICT`, reload the media buy with `get_media_buys`, reconcile against the current state, then retry with the new `revision` and a fresh `idempotency_key`. + +When a MediaBuy has `accepted_proposal` state and a successful +`update_media_buy` compatibility request changes the commercial envelope, the +seller MUST atomically materialize an accepted successor proposal snapshot and +advance `accepted_proposal_id`, `accepted_proposal_terms_digest`, and +`accepted_proposal` with the MediaBuy update. The successor records the prior +accepted proposal as its parent and the pre-update MediaBuy revision as its +base. This keeps a later compact amendment anchored to the terms that are +actually in force. An in-envelope operational change or creative-only change +does not create a commercial successor. A seller that cannot update the +MediaBuy and accepted snapshot together MUST reject the compound facade update; +it MUST NOT leave a stale accepted-proposal pointer. + +`confirmed_at` is the seller's commitment timestamp, not a delivery-status timestamp. Once populated, it remains stable through later pause, resume, cancellation, completion, and reporting transitions. Use the `submitted` response branch when no `media_buy_id` is being returned to the buyer. Sellers MAY instead return synchronous success with `media_buy_id`, `packages`, and `confirmed_at: null` for a provisional buy; such buys MUST be retrievable via `get_media_buys` and MUST transition by setting `confirmed_at` exactly once on commitment. A provisional buy with `confirmed_at: null` MUST NOT be `active` and MUST NOT include `packages[].committed_metrics`. + +**Package-level lifecycle:** + +Packages follow the same pause/cancel pattern as media buys. Additionally: +- Packages MAY have a `creative_deadline` — after this deadline, creative changes to the package are rejected with `CREATIVE_DEADLINE_EXCEEDED`. When absent, the media buy's `creative_deadline` applies. `CREATIVE_REJECTED` covers content-policy, brand-safety, and accessibility-review failures. +- Package cancellation (`canceled: true` in a package update) is irreversible and independent of the media buy's status — a single package can be canceled while the media buy remains active. Creative assignments on the canceled package are released per the media-buy-level rule above; creatives assigned to other active packages on the same media buy are unaffected. +- Sales agents MUST retain delivery data for canceled packages. When `include_snapshot` is true, sales agents SHOULD return a final snapshot reflecting delivery state at the time of cancellation. +- When all packages in a media buy are canceled, the media buy itself remains in its current status (`active` or `paused`). Sellers that support mid-flight package additions advertise `add_packages` in `valid_actions` — the buyer can add new packages via `new_packages` in `update_media_buy`. Otherwise, the buyer SHOULD explicitly cancel the media buy. Sales agents SHOULD notify orchestrators (via `context.notes` in the update response) when the last active package is canceled. Sales agents MAY auto-transition the media buy to `canceled` after a seller-defined grace period if no new activity occurs. + +### Creative Approval on Packages + +**Schema**: [`enums/creative-approval-status.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/creative-approval-status.json) + +Each package tracks per-creative approval status separately from the creative's library-level status. A creative may be `approved` in the library but `rejected` on a specific package (e.g., wrong format for the placement). + +| Status | Description | +|--------|-------------| +| `pending_review` | Creative submitted and awaiting platform review | +| `approved` | Creative approved for delivery on this package | +| `rejected` | Creative rejected for this package; see `rejection_reason` | + +Rejection is not terminal — the buyer fixes the creative and resubmits through the seller's advertised creative path, which resets the approval to `pending_review`. The resubmission path: + +1. Check `rejection_reason` on `get_media_buys` response +2. Fix the creative (update assets, adjust manifest) +3. Resubmit via `sync_creatives` for library-backed sellers, or via `packages[].creatives` on `update_media_buy` for inline-only sellers +4. Approval resets to `pending_review` + +**Interaction with `creative_deadline`:** If a creative is rejected after the package's `creative_deadline`, the buyer MAY still resubmit — sellers SHOULD accept resubmissions for rejected creatives even past the deadline, since the buyer is correcting a seller-identified issue. Sellers that cannot accept late resubmissions MUST return `CREATIVE_DEADLINE_EXCEEDED`. + +### Verification Tag Enforcement + +When a confirmed package's `performance_standards` includes any entry with a `vendor`, creatives assigned to that package MUST include at least one URL asset with `url_type: "tracker_script"` or `url_type: "tracker_pixel"` corresponding to each specified vendor. Sales agents SHOULD reject creative assignments that lack required verification tags with `CREATIVE_REJECTED` and a `details` message identifying the missing vendor tag. Buyer agents SHOULD proactively include vendor tags based on the agreed `measurement_terms` before submitting creatives. + +## Tasks + +The Media Buy Protocol defines the following tasks. See task reference pages for complete request/response schemas and examples. + +### get_products + +**Schema**: [`media-buy/get-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json) / [`media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-response.json) + +**Reference**: [`get_products` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) + +Discover advertising inventory using natural language briefs or explicit wholesale intent. + +**Requirements:** +- Orchestrators MUST set `buying_mode` to `"brief"`, `"wholesale"`, or `"refine"` +- Orchestrators MUST include `brief` when `buying_mode` is `"brief"` +- Orchestrators MUST NOT include `brief` when `buying_mode` is `"wholesale"` or `"refine"` +- Orchestrators MUST include `refine` when `buying_mode` is `"refine"` +- Orchestrators MUST NOT include `refine` when `buying_mode` is `"brief"` or `"wholesale"` +- Orchestrators MUST provide `scope` and `product_id` for each product entry in `refine`, and `scope` and `proposal_id` for each proposal entry +- Orchestrators MAY omit `action` on product and proposal entries (defaults to `"include"`) +- Orchestrators MUST NOT include multiple entries for the same product ID or proposal ID in a single `refine` array +- Sales agents MUST return products matching the brief criteria when a brief is provided +- Sales agents MUST include `product_id` and `pricing_options` for each product +- Sales agents SHOULD include relevance scoring when multiple products match +- Sales agents that understand a well-formed `brief` or `refine` request but deliberately decline to offer products for commercial, availability, or seller-policy reasons MUST return the `GetProductsRejected` arm with `status: "rejected"` and a buyer-facing `reason` +- Sales agents MUST NOT use `GetProductsRejected` for a completed search with no matching inventory, incomplete work, or a technical failure: use `status: "completed"` with `products: []`, a usable partial response with `incomplete[]` / an async task arm, or the error channel respectively +- `incomplete[]` describes missing scopes in an otherwise usable response; it does not classify the condition as retryable. A timeout or unavailable upstream that prevents a usable response MUST use the error channel, normally `SERVICE_UNAVAILABLE` with `error.recovery: "transient"` and optional `retry_after` +- Sales agents using `GetProductsRejected` MUST NOT also return `products`, `proposals`, `incomplete`, `filter_diagnostics`, `refinement_applied`, `cache_scope`, `errors`, or envelope-level `adcp_error`; the task completed successfully with a structured business outcome rather than a full or partial search result +- Orchestrators receiving `GetProductsRejected` MUST treat the transport call as successful, dispatch on `status: "rejected"`, and use `suggestions[]` when present to decide whether to revise and resubmit the brief + +**Refinement requirements:** + +Each `get_products` request with `buying_mode: "refine"` is self-contained — sales agents MUST NOT depend on transport-level session state. The `refine` array and `filters` on each request fully specify the refinement intent. Sellers maintain their own product and proposal registries; "stateless" means the protocol exchange carries no implicit state between calls. This enables stateless implementations and safe retries. + +- Sales agents MUST treat a missing `action` on product and proposal refine entries as `action: "include"` +- Sales agents MUST omit products with `action: "omit"` from the response +- Sales agents MUST omit proposals with `action: "omit"` from the response +- Sales agents MUST return products with `action: "include"`, with updated pricing +- Sales agents SHOULD fulfill the `ask` on product entries with `action: "include"` +- Sales agents SHOULD return additional products similar to those with `action: "more_like_this"`, plus the original product +- Sales agents SHOULD consider request-level asks (`scope: "request"`) when composing the response — this MAY result in additional products beyond those explicitly referenced. Per-product actions take precedence over request-level direction. +- Sales agents SHOULD fulfill the `ask` on proposal entries with `action: "include"` +- Sales agents SHOULD include `refinement_applied` in the response, with one entry per change request matched by position +- Sales agents that return `refinement_applied` MUST echo `scope` on each entry and MUST echo `product_id` / `proposal_id` for product and proposal scopes, so orchestrators can cross-validate alignment +- Sales agents MAY return proposals alongside products in refine mode, even when the orchestrator did not include proposal entries + +### Canonical creative-format discovery + +Sales-agent `list_creative_formats` is deprecated in AdCP 3.2. An agent-global list cannot represent product-, placement-, account-, or inventory-specific deliverability. + +Use these canonical sources instead: + +- Publisher acceptance: publisher `adagents.json.formats[]` +- Sales-agent deliverability: `get_products` `Product.format_options[]` +- Creative production/validation/preview: creative agent `get_adcp_capabilities.creative.supported_formats[]` + +**Requirements:** +- Sales agents MUST publish the closed sellable format set on every product's canonical `format_options[]` +- Placement-level declarations MAY narrow, but MUST NOT broaden, the product set +- Sales agents MUST NOT present publisher-catalog formats as if every declared format were deliverable by that agent +- Compatibility `list_creative_formats` responses MAY be projected from canonical declarations for older 3.x peers, but MUST NOT be independently authored + +### create_media_buy + +**Schema**: [`media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json) / [`media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-response.json) + +**Reference**: [`create_media_buy` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) + +Create a media buy from selected packages or execute a proposal. + +**Requirements:** +- Orchestrators MUST include either `packages` array or `proposal_id` +- Orchestrators MUST include `start_time` and `end_time` for the campaign +- Sales agents MUST return `media_buy_id` on successful creation +- Sales agents MUST return `confirmed_at` on successful creation. The value is the seller commitment timestamp, or `null` when the response creates a provisional buy that is not yet committed. +- Sales agents MUST return `revision` on successful creation +- Sales agents MUST return `creative_deadline` indicating when creatives must be uploaded +- Sales agents MUST validate budget against pricing options +- On validation failure, sales agents MUST return an `errors` array + +### update_media_buy + +**Schema**: [`media-buy/update-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-request.json) / [`media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-response.json) + +**Reference**: [`update_media_buy` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) + +Modify an existing media buy's budget, targeting, or settings. + +**Package operations** are structurally explicit — the operation type is determined by where the package appears in the request: + +| Operation | Request location | Description | +|-----------|-----------------|-------------| +| **New** | `new_packages[]` | Add a package to the media buy | +| **Changed** | `packages[]` | Modify an existing package (budget, targeting, dates, creatives) | +| **Canceled** | `packages[]` with `canceled: true` | Cancel an existing package (irreversible) | + +**Requirements:** +- Orchestrators MUST include `media_buy_id` +- Sales agents MUST accept any `media_buy_id` returned by `get_media_buys` for the authenticated account and MUST NOT refuse updates on the basis that the buy was originally created outside AdCP. Business constraints on specific operations are expressed by omitting them from `valid_actions`. See [Account Ownership vs. Creation Surface](#account-ownership-vs-creation-surface). +- Sales agents MUST apply PATCH semantics: only specified fields are updated; omitted fields remain unchanged +- When a buyer attempts to cancel a media buy already in `canceled` (`canceled: true` on a `canceled` buy), sales agents MUST reject with `NOT_CANCELLABLE` +- All other updates to media buys in terminal states (`completed`, `rejected`, `canceled`) — including `canceled: true` attempts against `completed` or `rejected` buys — MUST be rejected with `INVALID_STATE` +- Orchestrators MAY cancel a media buy by setting `canceled: true` with optional `cancellation_reason` +- Sales agents MUST transition the media buy to `canceled` status upon accepting cancellation +- Sales agents MAY reject cancellation of a non-terminal media buy with error code `NOT_CANCELLABLE` +- Orchestrators MAY cancel individual packages by setting `canceled: true` on a package update +- Sales agents MUST reject creative changes to packages past their `creative_deadline` with error code `CREATIVE_DEADLINE_EXCEEDED` +- Orchestrators MAY add new packages to an existing media buy via `new_packages`. Sales agents that support this MUST advertise `add_packages` in `valid_actions`. Sales agents that do not support adding packages MUST reject with `UNSUPPORTED_FEATURE`. +- When root `canceled: true` is present alongside other fields in an update request, including `packages[].canceled`, sales agents MUST cancel the whole MediaBuy and MUST ignore all other fields except `cancellation_reason`. Root cancellation takes precedence over package cancellation and other concurrent mutations. Sales agents SHOULD include a structured success `warnings[]` entry naming ignored fields; warnings no longer belong in opaque `context`. Package cancellation is evaluated independently only when root `canceled` is absent. Within a package update, `canceled: true` likewise takes precedence over that package's sibling fields: apply only its cancellation and reason and warn about ignored siblings. Root fields and other package entries still apply atomically unless root cancellation is present. +- Sales agents MUST return `affected_packages` containing the state of each directly modified package after the update is applied (or the proposed state if pending approval); an empty array is valid when only campaign-level fields (e.g., `paused`, `start_time`) are updated +- When manual approval is required, sales agents MUST persist the pending update request, MUST return `implementation_date: null`, and MUST NOT return empty `affected_packages` +- Sales agents SHOULD return the updated media buy state + +### sync_catalogs + +**Schema**: [`media-buy/sync-catalogs-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-catalogs-request.json) / [`media-buy/sync-catalogs-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-catalogs-response.json) + +**Reference**: [`sync_catalogs` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) + +Synchronize catalogs (products, inventory, stores, and vertical feeds) on a seller account. + +**Requirements:** +- Orchestrators MUST include `account_id` +- When `catalogs` is provided, it MUST contain at least one catalog +- When `catalogs` is omitted, the call is discovery-only and returns existing catalogs without modification +- Sales agents MUST return per-catalog outcomes, including what action was taken and any item-level issues +- Sales agents SHOULD support `dry_run` for validation without applying changes + +### list_creatives + +<Note> +`list_creatives` is defined in the [Creative Protocol](/dist/docs/3.2.0-beta.4/creative/specification#list_creatives). Sales agents that host creative libraries MAY implement `list_creatives` as part of the Creative Protocol. See the [`list_creatives` task reference](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives). +</Note> + +### sync_creatives + +<Note> +`sync_creatives` is defined in the [Creative Protocol](/dist/docs/3.2.0-beta.4/creative/specification#sync_creatives). Any agent that advertises `creative.has_creative_library: true` implements `sync_creatives` as part of the Creative Protocol. See the [`sync_creatives` task reference](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives). +</Note> + +### get_media_buys + +**Schema**: [`media-buy/get-media-buys-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buys-request.json) / [`media-buy/get-media-buys-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buys-response.json) + +**Reference**: [`get_media_buys` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) + +Retrieve operational media buy state, including package status, creative approvals, missing formats, and optional delivery snapshots. + +**Requirements:** +- Orchestrators MAY filter by `account_id`, `media_buy_ids`, and `status_filter` +- Orchestrators SHOULD use cursor pagination (`pagination.max_results` / `pagination.cursor`) for broad scope queries +- Sales agents MUST return every media buy owned by the authenticated account that matches the declared filter set, regardless of how the buy was created (AdCP, seller's native APIs/UI, manual trafficking, legacy systems). See [Account Ownership vs. Creation Surface](#account-ownership-vs-creation-surface). +- Sales agents MUST return current media buy status and package-level operational state for each matched media buy +- Sales agents SHOULD include `status_as_of` when the returned media-buy-level `status` is served from a cache or computed as a rolled-up status from upstream legs. For rolled-up statuses, `status_as_of` MUST NOT be later than the oldest upstream status observation that could affect the returned roll-up, so it never overstates freshness. Omit it or return `null` to make no freshness assertion; buyers MUST NOT infer that an omitted or null value means the status is live. Buyers use `status_as_of` to interpret list-status freshness; `updated_at` remains the media buy's last modification time. +- Sales agents SHOULD include `valid_actions` for each media buy, listing the actions the buyer can perform in the current state. This eliminates the need for agents to internalize the state machine. Expected mapping: + +| Status | Expected `valid_actions` | +|--------|------------------------| +| `pending_creatives` | `pause`, `cancel`, `sync_creatives` | +| `pending_start` | `pause`, `cancel`, `sync_creatives` | +| `active` | `pause`, `cancel`, `update_budget`, `update_dates`, `update_packages`, `add_packages`, `sync_creatives` | +| `paused` | `resume`, `cancel`, `update_budget`, `update_dates`, `update_packages`, `add_packages`, `sync_creatives` | +| `completed` / `rejected` / `canceled` | *(empty array)* | + +Sellers MAY omit actions based on business rules (e.g., omit `cancel` when contractual obligations prevent it, omit `add_packages` when the platform does not support mid-flight additions). + +When `pending_creatives` or `pending_start` is masking a create-time hold from `paused: true`, sellers SHOULD also include `resume` so buyers can clear the hold before the setup blocker clears. + +`valid_actions` contains only mutation operations — read-only operations (`get_media_buys`, `get_media_buy_delivery`) are always permitted regardless of state. Agents SHOULD use `valid_actions` as an optimization hint but MUST handle `INVALID_STATE` errors gracefully, since `valid_actions` may not reflect real-time state changes from concurrent operations. Absence of an action means "not declared by this seller," not necessarily "forbidden." + +For creative changes, `sync_creatives` in `valid_actions` is a legacy creative-change action label, not proof that the `sync_creatives` task exists. Buyers use the creative path the seller advertises: `sync_creatives` and `creative_assignments` for sellers with `creative.has_creative_library: true`, or `packages[].creatives` on `update_media_buy` for inline-only sellers that advertise `media_buy.features.inline_creative_management: true`. + +- Orchestrators MAY request revision history by setting `include_history` to the number of most-recent entries desired. Sales agents SHOULD return a `history` array per media buy when `include_history > 0`, containing revision number, timestamp, server-derived actor identity, action type, and optional summary. History entries MUST be ordered most-recent-first. +- Sales agents MUST include one media-buy currency for every AdCP-authored buy. `total_budget`, package budget/minimum constraints, and canonical BiddingPolicy monetary fields use that denomination, and every selected pricing option MUST declare it. Packages requiring another currency belong in a separate media buy. `package.currency` remains a legacy/external-buy readback field; `snapshot.currency` may identify an upstream reporting denomination but MUST NOT reinterpret authored budget or bidding values. +- Sales agents SHOULD include creative approval outcomes and pending format requirements when available +- If `include_snapshot` is true and snapshot data is omitted for a package, sales agents MUST return `snapshot_unavailable_reason` +- When `include_snapshot` is true and snapshots are returned, each snapshot MUST include `as_of` and `staleness_seconds` +- Default `status_filter: ["active"]` applies only when `media_buy_ids` is omitted + +### get_media_buy_delivery + +**Schema**: [`media-buy/get-media-buy-delivery-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-request.json) / [`media-buy/get-media-buy-delivery-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-response.json) + +**Reference**: [`get_media_buy_delivery` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) + +Track performance metrics and campaign delivery. + +**Requirements:** +- Orchestrators MUST include `media_buy_id` +- Sales agents MUST accept any `media_buy_id` returned by `get_media_buys` for the authenticated account, regardless of creation surface. See [Account Ownership vs. Creation Surface](#account-ownership-vs-creation-surface). +- Sales agents MUST return delivery metrics at the package level +- Sales agents SHOULD include dimensional breakdowns when requested +- Sales agents MUST include `as_of` timestamp indicating data freshness + +### provide_performance_feedback + +**Schema**: [`media-buy/provide-performance-feedback-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-request.json) / [`media-buy/provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-response.json) + +**Reference**: [`provide_performance_feedback` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) + +Submit performance signals to enable publisher optimization. + +**Requirements:** +- Orchestrators MUST include `media_buy_id` and performance metrics +- Sales agents MUST acknowledge receipt of feedback +- Sales agents SHOULD use feedback to optimize delivery within campaign constraints + +### sync_event_sources + +**Schema**: [`media-buy/sync-event-sources-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-request.json) / [`media-buy/sync-event-sources-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-response.json) + +**Reference**: [`sync_event_sources` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) + +Configure event sources on a seller account for conversion tracking with upsert semantics. + +**Requirements:** +- Orchestrators MUST include `account_id` +- When `event_sources` is provided, it MUST contain at least one event source +- When `event_sources` is omitted, the call is discovery-only and returns all event sources on the account without modification +- Sales agents MUST return per-source results with `action` indicating what happened +- Sales agents MUST include seller-managed event sources in the response when present +- Sales agents SHOULD return `setup` instructions for newly created event sources +- Sales agents MAY include `seller_id` for cross-referencing in the seller's platform + +### log_event + +**Schema**: [`media-buy/log-event-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/log-event-request.json) / [`media-buy/log-event-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/log-event-response.json) + +**Reference**: [`log_event` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) + +Send conversion or marketing events for attribution and optimization. + +**Requirements:** +- Orchestrators MUST include `event_source_id` referencing a configured event source +- Orchestrators MUST include at least one event with `event_id`, `event_type`, and `event_time` +- Sales agents MUST return `events_received` and `events_processed` counts +- Sales agents MUST deduplicate events by `event_id` + `event_type` + `event_source_id` +- Sales agents SHOULD report `partial_failures` for individually failed events +- Sales agents SHOULD return `match_quality` score when user matching is attempted + +### sync_audiences + +{/* Using latest because sync-audiences schemas are not yet released in any version. + Update to correct version alias after the next release. */} +**Schema**: [`media-buy/sync-audiences-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-audiences-request.json) / [`media-buy/sync-audiences-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-audiences-response.json) + +**Reference**: [`sync_audiences` task](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) + +Manage first-party CRM audiences on a seller account. Upload hashed customer lists, check matching status, and reference the resulting audiences in targeting overlays. + +**Requirements:** +- Orchestrators MUST include `account_id` +- Orchestrators MUST include at least one audience with hashed member data +- Sales agents MUST return per-audience outcomes with matching status +- Sales agents SHOULD support `push_notification_config` for async matching completion +- Sales agents MUST accept SHA-256 hashed identifiers and MUST reject cleartext email/phone in `hashed_email`/`hashed_phone` fields (PII minimization at the transport boundary; see [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations#unsalted-hashed-identifiers-are-pseudonymous-not-anonymous) for the retention/consent obligations that hashing does not satisfy) + +## Error Handling + +Sales agents MUST return errors using the [standard AdCP error schema](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). + +Common error codes: + +- `MEDIA_BUY_NOT_FOUND`: Referenced media buy does not exist +- `PACKAGE_NOT_FOUND`: Referenced package does not exist +- `PRODUCT_NOT_FOUND`: Referenced product does not exist +- `PRODUCT_EXPIRED`: Referenced configured product passed `expires_at`; re-run `get_products` +- `BUDGET_EXCEEDED`: Operation would exceed allocated budget +- `CREATIVE_REJECTED`: Creative failed content-policy, brand-safety, or accessibility review +- `CREATIVE_DEADLINE_EXCEEDED`: Creative change submitted after the package's `creative_deadline` +- `INVALID_STATE`: Operation is not permitted for the resource's current status (e.g., updating a completed or canceled media buy) +- `NOT_CANCELLABLE`: Media buy or package cannot be canceled in its current state +- `GOVERNANCE_DENIED`: A registered governance agent denied the transaction. Buyer may restructure the buy, escalate to human spending authority, or contact the governance agent. +- `TERMS_REJECTED`: Buyer-proposed `measurement_terms` were rejected by the seller. Error details SHOULD identify which term failed and the seller's acceptable range or supported vendors. Recovery: adjust the proposed terms and retry, or omit `measurement_terms` to accept the product's defaults. +- `BIDDING_PLACEMENT_CONFLICT`: Media-buy/package bidding scopes cannot be represented by the provider's native campaign, package, or shared-strategy placement. Sellers MUST reject before mutation and identify conflicting scopes where safe. +- `AMBIGUOUS_BIDDING_POLICY`: Canonical `bidding` and legacy bidding fields are both present on the same effective package. Sellers reject rather than choosing precedence. +- `REQUOTE_REQUIRED`: An `update_media_buy` request changes the parameter envelope (budget, flight dates, volume, targeting) the original quote was priced against. The `pricing_option` remains locked; the seller is declining the requested shape at that price. Distinct from `TERMS_REJECTED` (measurement) and `POLICY_VIOLATION` (content). Recovery in 3.1 is to adjust the update to fit the current quote, rediscover products/terms, add packages when `add_packages` is available, or create a separate media buy. AdCP 3.1 does not define an amendment-quote artifact that can be attached to `update_media_buy`. Sellers SHOULD populate `error.details.envelope_field` with the field path(s) that breached the envelope (e.g., `packages[0].budget`, `end_time`) so the buyer's agent can autonomously re-discover. +- `VALIDATION_ERROR`: Request format or parameter errors +- `AUTH_MISSING`: No credentials were presented. Recovery: correctable. +- `AUTH_INVALID`: Credentials were presented but rejected (expired / revoked / malformed). Recovery: terminal. + +## Security Considerations + +### Transport Security + +All Media Buy Protocol communications MUST use HTTPS with TLS 1.2 or higher. + +### Authentication + +- Orchestrators MUST authenticate with sales agents using valid credentials +- Sales agents MUST validate credentials before processing requests +- Sales agents MUST use account context to determine inventory access + +### Budget Authorization + +- Sales agents MUST validate that accounts are authorized for requested budget levels +- Sales agents MUST NOT exceed authorized budget limits without explicit approval + +### Creative Security + +- Sales agents MUST validate creative content for policy compliance +- Sales agents SHOULD scan creatives for malware and malicious content +- Sales agents MUST NOT serve creatives that fail security validation + +## Conformance + +### Sales Agent Conformance + +A conformant Media Buy Protocol sales agent MUST: + +1. Support at least one specified transport (MCP or A2A) +2. Implement all tasks per their schemas +3. Return required fields as defined in response schemas +4. Use specified error codes +5. Handle asynchronous operations appropriately +6. Enforce authentication and authorization +7. Apply `get_products.targeting_overlay` to product availability, pricing, and forecasts +8. Omit `targeting_resolution` for exact matches and disclose only modifications for configured alternatives +9. Treat placement, property, and collection selection as targeting and return complete effective package targeting on readback +10. Return dimension-specific execution details, including demographics, inside the generic package `targeting_resolution` envelope + +See [Required tasks by protocol](/dist/docs/3.2.0-beta.4/protocol/required-tasks) for a consolidated view of required and optional tasks across all AdCP protocols. + +### Orchestrator Conformance + +A conformant Media Buy Protocol orchestrator MUST: + +1. Authenticate with sales agents +2. Include required fields as defined in request schemas +3. Handle asynchronous task-level responses (`submitted`, `working`, `input-required`) including webhook delivery of completion artifacts +4. Use `media_buy_id` to reference media buys in subsequent operations +5. Respect `creative_deadline` for creative uploads +6. Treat a selected context-scoped `product_id` as acceptance of its disclosed `targeting_resolution` + +## Implementation Notes + +### Response Time Expectations + +Sales agents SHOULD target the following response times: + +| Operation Type | Target Latency | +|----------------|----------------| +| Capability/catalog lookups | < 1 second | +| Discovery with AI/LLM (get_products) | < 60 seconds | +| Reporting queries (get_media_buy_delivery) | < 60 seconds | +| Campaign operations (create, update, sync) | Async acceptable | + +### Idempotency + +Every state-mutating AdCP task request MUST carry an `idempotency_key`. In AdCP 3.2, product discovery uses explicit contracts: `request_proposals`, `refine_proposals`, and `decline_proposals` require a key; `list_products` and the legacy 3.x `get_products` facade leave it optional. Sales agents MUST apply the replay contract whenever a key is supplied: + +- The same key and equivalent canonical payload within the replay window MUST return the original response without re-executing the request. +- The same key with a different canonical payload MUST return `IDEMPOTENCY_CONFLICT`. +- Keys are scoped to the authenticated caller and account so retries cannot cross tenant boundaries. + +The compact tasks use the same product-discovery authorization policy as the legacy facade, but each stateful task has a distinct idempotency identity. A retry MUST use the same tool name and payload; changing names is a different logical request. Sellers retain `get_products` through 3.x for compatibility. See [Request safety — idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency) for the normative cache, replay, and concurrency rules. + +### Human-in-the-Loop + +Sales agents MAY require human approval for any operation. Approval is modelled at the **task layer**: + +- When the seller is waiting on an **internal** human (e.g. IO signing, traffic-manager review), sales agents MUST keep the task in `status: "submitted"` until the reviewer acts. On completion, the task transitions to `completed` with the final artifact carrying `media_buy_id` and the full success payload. +- When the seller needs the **buyer** to respond (e.g. confirm a budget that exceeds a pre-approved limit), sales agents MUST return `status: "input-required"` with a message describing what is needed. The buyer responds within the same A2A context. +- Sales agents SHOULD provide an estimated approval timeline in the task message. +- Orchestrators SHOULD implement webhook handlers (via `push_notification_config`) for completion notifications rather than polling. + +`pending_approval` is not a valid MediaBuy or Task status — that value exists only on `Account.status` (for account onboarding review). Do not repurpose it for media-buy or task-level approval. + +## Schema Reference + +| Schema | Description | +|--------|-------------| +| [`media-buy/get-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json) | get_products request | +| [`media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-response.json) | get_products response | +| [`media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json) | create_media_buy request | +| [`media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-response.json) | create_media_buy response | +| [`media-buy/update-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-request.json) | update_media_buy request | +| [`media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-response.json) | update_media_buy response | +| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/list-creative-formats-request.json) | Deprecated named-format compatibility request | +| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/list-creative-formats-response.json) | Deprecated named-format compatibility response | +| [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-creatives-request.json) | list_creatives request (Creative Protocol) | +| [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/list-creatives-response.json) | list_creatives response (Creative Protocol) | +| [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-request.json) | sync_creatives request (Creative Protocol) | +| [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/creative/sync-creatives-response.json) | sync_creatives response (Creative Protocol) | +| [`media-buy/get-media-buy-delivery-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-request.json) | get_media_buy_delivery request | +| [`media-buy/get-media-buy-delivery-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-response.json) | get_media_buy_delivery response | +| [`media-buy/provide-performance-feedback-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-request.json) | provide_performance_feedback request | +| [`media-buy/provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-response.json) | provide_performance_feedback response | diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal.mdx new file mode 100644 index 0000000000..49a369b78a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal.mdx @@ -0,0 +1,39 @@ +--- +title: accept_proposal +description: "Accept a committed proposal to create, amend, or cancel a MediaBuy." +"og:title": "AdCP accept_proposal Task" +testable: true +--- + +`accept_proposal` is the single terminal action for the compact proposal lifecycle. It accepts exactly one committed immutable proposal snapshot. + +`committed` retains the AdCP 3.1 reservation guarantee: the seller has locked the proposal's commercial terms and reserved its inventory until `expires_at`. Finalization creates that hold; acceptance consumes it and creates, amends, or cancels the MediaBuy. + +Depending on `proposal_kind`, acceptance: + +- creates a new MediaBuy; +- applies an amendment to an existing MediaBuy; or +- applies a negotiated cancellation. + +The proposal already carries the commercial terms, so the request does not repeat packages, dates, targeting, or creatives. + +**Request schema:** [`/schemas/3.2.0-beta.4/media-buy/accept-proposal-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/accept-proposal-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441011", + "account": { "account_id": "account_123" }, + "proposal_id": "proposal_committed_456", + "proposal_terms_digest": "sha256:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +} +``` + +For scalable proposals, include `total_budget`. Acceptance may also set a hard aggregate `daily_budget_cap` and optional shared `budget_cap_timezone`; these constrain execution without changing negotiated pricing. If the proposal carries a signature-required insertion order, include `io_acceptance`. + +If the proposal belongs to an `opportunity`, acceptance closes that planning cycle with `accepted_with_seller`; callers may repeat the matching opportunity ID explicitly, while the accepted proposal retains the association. + +Success returns the resulting MediaBuy identity, the proposal with `proposal_status: "accepted"`, and `purchase_bindings[]` mapping proposal purchase positions to package IDs for later creative assignment. Acceptance is idempotent. The seller atomically verifies `proposal_id`, `proposal_terms_digest`, expiry, and any `base_media_buy_revision`; stale or mismatched acceptance never applies different terms. + +A completed acceptance MAY include `warnings[]` for non-blocking observations at the commitment boundary. Each warning identifies its package through the returned `media_buy_id` and `purchase_bindings[].package_id`; a continuing condition is also readable as an indicator through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). The seller may instead return `input-required` before consuming the proposal. Warnings never appear on failed or submitted arms. + +An unexpired committed proposal cannot be rejected merely because its reserved inventory was sold elsewhere. Once `expires_at` passes, the hold lapses and the seller returns [`PROPOSAL_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-expired); the buyer must request and finalize a fresh proposal. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products.mdx new file mode 100644 index 0000000000..fe1e6a52d6 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products.mdx @@ -0,0 +1,44 @@ +--- +title: buy_products +description: "Buy published product offers directly without proposals or inline creatives." +"og:title": "AdCP buy_products Task" +testable: true +--- + +`buy_products` is the buyer-composed purchase path. It creates a MediaBuy from canonical product selections returned by [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products), accepting the published commercial terms as-is. + +Creative objects and assignments are deliberately absent. Use the creative lifecycle after the MediaBuy has been created. If the buyer needs different commercial terms, request or refine a proposal instead. + +Per-purchase flight dates, `measurement_terms`, and `performance_standards` may be omitted to inherit the published offer. The accepted snapshot resolves and preserves those terms. If this purchase ends a tracked planning cycle, `opportunity` closes it with `accepted_with_seller`. + +**Request schema:** [`/schemas/3.2.0-beta.4/media-buy/buy-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/buy-products-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441010", + "account": { "account_id": "account_123" }, + "brand": { "domain": "acmeoutdoor.example" }, + "feed_version": "products-2027-06-01T12:00:00Z", + "pricing_version": "pricing-42", + "daily_budget_cap": 5000, + "budget_cap_timezone": "America/New_York", + "purchases": [ + { + "product_id": "product_display_standard", + "pricing_option_id": "cpm_usd", + "budget": 50000, + "daily_budget_cap": 3000 + } + ], + "start_time": "asap", + "end_time": "2027-07-01T00:00:00Z" +} +``` + +The media-buy `daily_budget_cap` is a hard aggregate ceiling and does not allocate its value among purchases. A purchase-level cap is an optional subordinate ceiling, not a reservation. Every cap shares the accepted media-buy `budget_cap_timezone`; sellers reject undeclared scopes with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). + +Success returns the MediaBuy identity and an `accepted_proposal` snapshot. Its typed `commercial_terms` preserve the exact feed and pricing versions, product and format selections, catalogs, budgets, targeting, flight, billing, and reporting commitments; `terms_digest` binds that envelope for governance and audit. The separate `purchase_bindings[]` maps each zero-based purchase position to its seller-assigned `package_id`, which SDKs use for later creative assignment without placing execution IDs inside the immutable digest. The seller creates this snapshot even though the buyer did not negotiate first, giving every MediaBuy the same commercial history for later [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals). + +A completed purchase MAY include `warnings[]` for non-blocking observations at commitment, such as a material inventory shortfall forecast. Each warning identifies its package through the returned `media_buy_id` and `purchase_bindings[].package_id`; a continuing condition is also readable as an indicator through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). The seller may instead return `input-required` before commitment. Warnings never appear on failed or submitted arms. + +The accepted snapshot records the published terms the buyer purchased. It does not imply that every direct product is non-guaranteed: discovery mode, buyer composition, and delivery guarantee are independent dimensions. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy.mdx new file mode 100644 index 0000000000..381fac844c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy.mdx @@ -0,0 +1,88 @@ +--- +title: control_media_buy +description: "Apply operational delivery controls within accepted MediaBuy terms." +"og:title": "AdCP control_media_buy Task" +testable: true +--- + +`control_media_buy` applies operational changes that remain inside the immutable commercial envelope accepted for the MediaBuy. It requires the current `revision` for optimistic concurrency. + +Supported controls include: + +- pause, resume, and an already-permitted unilateral cancellation; +- total, aggregate-daily, and package budget controls; +- budget allocation, pacing, and bidding; +- package targeting, catalog references, keyword, impression, and optimization controls; +- MediaBuy display-name metadata; and +- reporting-webhook configuration. + +It does not accept creatives, creative assignments, new products/packages, flight-date changes, pricing changes, or billing-term changes. Those concerns use their dedicated lifecycle or a proposal refinement. + +## Transaction boundary + +One `control_media_buy` request is atomic under the supplied MediaBuy +`revision`. That fence covers only the operational fields in this request. +[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) has a separate idempotency and atomicity boundary, does not +increment MediaBuy revision for assignment changes, and cannot join this +transaction. There is no shared fence between control and assignment state. + +`name` is revision-checked non-commercial metadata. Changing it updates the +shared trafficking display label and increments MediaBuy revision, but does not +change the accepted commercial terms or create an accepted-proposal successor. + +Consequently, a targeting replacement that removes a placement used by an +existing creative assignment cannot be performed as control followed by sync +without a race window. Use the [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) compatibility facade to send +the complete targeting and assignment replacements in one transaction. The +same facade is required for inline-only sellers, because they do not advertise +`sync_creatives` as a later creative path. + +Commercial amendment followed by operational control is also a saga, not one +transaction. If [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) applies the amendment and a subsequent +control fails, the amended commercial snapshot remains accepted. Re-read the +MediaBuy and its new revision before retrying control. A compatibility request +that requires commercial and operational fields to succeed together must be +handled atomically through `update_media_buy`, not silently decomposed. + +Root `canceled: true` is mutually exclusive with every package and other +control; a mixed compact request is invalid before mutation. Within a package, +`canceled: true` is likewise mutually exclusive with that package's other +fields. This differs from the compatibility facade, where root cancellation +takes precedence and other fields are ignored with a warning. + +Catalog controls accept only IDs previously managed through [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs). +They cannot atomically ingest an inline catalog body, and a catalog synchronized +before a later failed control remains on the account. This task also cannot add +the compatibility facade's `artifact_webhook`, recreate a per-package initial +pause atomically with purchase, or author an exact initial +`committed_metrics` set. + +**Request schema:** [`/schemas/3.2.0-beta.4/media-buy/control-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/control-media-buy-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441012", + "account": { "account_id": "account_123" }, + "media_buy_id": "media_buy_789", + "revision": 4, + "daily_budget_cap": 5000, + "pacing": "even", + "packages": [ + { + "package_id": "package_video", + "daily_budget_cap": 3000, + "paused": true + } + ] +} +``` + +Daily-cap changes apply immediately and atomically with spend already incurred in the current cap day counted. Lowering a cap below current-day spend pauses further applicable delivery without reversing prior spend. `null` removes an aggregate or package cap. A media-buy `budget_cap_timezone` change starts at the next boundary under the previously effective timezone; package controls never carry their own timezone. + +When an otherwise valid control would exceed the accepted budget, targeting, or delivery envelope, the seller returns [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required). The buyer reads `accepted_proposal_id` from [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), passes it to [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) to create a draft amendment, finalizes that draft into a committed hold, and applies it through [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). This pointer survives SDK restart and moves atomically after each accepted amendment. + +A completed in-envelope control MAY include `warnings[]` for non-blocking observations, such as a material inventory shortfall forecast observed after the applied control. A continuing condition is also readable as an indicator through `get_media_buys`. Failed and submitted controls never carry this warning surface. Flight-date changes are not controls; a `flight_change_creates_pacing_risk` warning belongs on the completed `accept_proposal` response that applies the amendment. + +`canceled: true` is direct only when the accepted cancellation policy already grants the caller that right. A cancellation requiring counterparty agreement uses `refine_proposals` with `change_kind: "cancellation"`. + +Seller-initiated cancellation does not call a buyer tool. The seller advances the MediaBuy revision and records `cancellation.canceled_by: "seller"`; `get_media_buys` is the normative recovery surface. A durable compact-lifecycle status-change webhook is intentionally not inferred from the per-operation async callback and remains 4.0 work. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy.mdx new file mode 100644 index 0000000000..cff72ae62a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy.mdx @@ -0,0 +1,1846 @@ +--- +title: create_media_buy +description: "create_media_buy task — create advertising campaigns in AdCP from discovered products. Handles packages, budgets, flight dates, governance rules, and approval workflows." +"og:title": "AdCP — create_media_buy" +testable: true +--- + + +Create a media buy from selected packages or execute a proposal. Handles validation, approval if needed, and campaign creation. + +<Warning> +`create_media_buy` is the AdCP 3.x compatibility facade as of 3.2. New integrations use [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) for direct purchases or [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) for proposal execution. Existing payloads remain supported throughout 3.x. +</Warning> + +Supports three execution shapes: +- **Fixed packages**: Provide `packages` with independent package budgets (legacy default) +- **Seller-optimized packages**: Provide `packages`, `total_budget`, and `budget_allocation.mode: "seller_optimized"` so the seller allocates a shared budget across packages +- **Proposal execution**: Provide `proposal_id` and `total_budget`; the committed proposal determines whether allocation is fixed or seller-optimized + +## Compatibility transaction boundary + +The compatibility facade is one atomic mutation, including package trafficking +that appears inline. Before creating a MediaBuy, package, library creative, or +assignment, the seller MUST validate the complete request. An invalid inline +creative or `creative_assignments` entry—including an invalid creative ID, +format, locale, placement route, or package relationship—fails the entire +`create_media_buy` request. The seller returns the terminal error shape and +MUST NOT leave a MediaBuy or any other mutation from that request behind. + +This pre-commit validation boundary is separate from creative review. A +structurally and operationally valid creative may enter `processing` or +`pending_review` after the buy is created. A later content-policy, brand-safety, +or accessibility rejection changes the creative or package-approval state; it +does not roll back the confirmed MediaBuy. Before activation, a buy with no +approved creative coverage remains `pending_creatives` until the buyer corrects +or replaces the asset. A rejection affecting an active buy follows the normal +creative-impairment and serving rules rather than reversing creation. + +The compact lifecycle deliberately has a different boundary. [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) or +[`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) commits first and returns the seller-assigned package IDs; +[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) then uploads and assigns library creatives. That sequence is a +saga, not one atomic transaction. A later sync or assignment failure leaves the +MediaBuy committed. `dry_run` can validate a library upload, but it cannot fully +validate package-specific assignment against package IDs that do not exist yet. +Setting `paused: true` where supported reduces activation risk, and a later +cancellation may compensate for a trafficking failure, but neither action is a +rollback. + +Use this facade when all-or-none purchase and trafficking is required, or when +the seller supports only inline creative management. Compact purchase has no +inline-only creative continuation. It also has no lossless direct-purchase +equivalent for `artifact_webhook`, per-package initial `paused`, inline catalog +bodies or filters, or a buyer-authored exact `committed_metrics` set. Catalogs +must be synchronized before compact purchase and can remain on the account when +the purchase fails; direct compact purchase lets the seller derive reporting +commitments, while an exact negotiated set must already be present in an +accepted proposal. Callers MUST treat these as explicit compatibility risks, +not silently drop or approximate them. + +**Response Time**: Instant to days (returns `completed`, `working` < 120s, or `submitted` for hours/days) + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/create-media-buy-response.json) + +## Quick Start + +Create a simple media buy with two packages: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +// Calculate dates dynamically - start tomorrow, end in 90 days +const tomorrow = new Date(); +tomorrow.setDate(tomorrow.getDate() + 1); +tomorrow.setHours(0, 0, 0, 0); +const endDate = new Date(tomorrow); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + brand: { + domain: 'acmecorp.com' + }, + packages: [ + { + product_id: 'prod_d979b543', + pricing_option_id: 'cpm_usd_auction', + format_option_refs: [{ scope: 'product', format_option_id: 'display_300x250_image' }], + budget: 2500, + bidding: { bid_amount: 5.00 } + }, + { + product_id: 'prod_e8fd6012', + pricing_option_id: 'cpm_usd_auction', + format_option_refs: [{ scope: 'product', format_option_id: 'display_300x250_html' }], + budget: 2500, + bidding: { bid_amount: 4.50 } + } + ], + start_time: tomorrow.toISOString(), + end_time: endDate.toISOString() +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = CreateMediaBuyResponseSchema.parse(result.data); + +// Check for errors (discriminated union response) +if ('errors' in validated && validated.errors) { + throw new Error(`Failed to create media buy: ${JSON.stringify(validated.errors)}`); +} + +if ('media_buy_id' in validated) { + console.log(`Created media buy ${validated.media_buy_id}`); + console.log(`Upload creatives by: ${validated.creative_deadline}`); + console.log(`Packages created: ${validated.packages.length}`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def create_campaign(): + # Calculate dates dynamically - start tomorrow, end in 90 days + tomorrow = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0) + timedelta(days=1) + end_date = tomorrow + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + brand={ + 'domain': 'acmecorp.com' + }, + packages=[ + { + 'product_id': 'prod_d979b543', + 'pricing_option_id': 'cpm_usd_auction', + 'format_kind': 'image', + 'params': {'width': 300, 'height': 250}, + 'budget': 2500, + 'bidding': {'bid_amount': 5.00} + }, + { + 'product_id': 'prod_e8fd6012', + 'pricing_option_id': 'cpm_usd_auction', + 'format_kind': 'html5', + 'params': {'width': 300, 'height': 250}, + 'budget': 2500, + 'bidding': {'bid_amount': 4.50} + } + ], + start_time=tomorrow.isoformat().replace('+00:00', 'Z'), + end_time=end_date.isoformat().replace('+00:00', 'Z') + ) + + # Check for errors (discriminated union response) + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed to create media buy: {result.errors}") + + print(f"Created media buy {result.media_buy_id}") + print(f"Upload creatives by: {result.creative_deadline}") + print(f"Packages created: {len(result.packages)}") + +asyncio.run(create_campaign()) +``` + +```bash CLI test=false +npx @adcp/sdk@latest \ + https://test-agent.adcontextprotocol.org/sales/mcp \ + create_media_buy \ + '{"brand":{"domain":"acmecorp.com"},"packages":[{"product_id":"prod_d979b543","pricing_option_id":"cpm_usd_auction","format_option_refs":[{"scope":"product","format_option_id":"display_300x250_image"}],"budget":30000,"bidding":{"bid_amount":5.00}},{"product_id":"prod_e8fd6012","pricing_option_id":"cpm_usd_auction","format_option_refs":[{"scope":"product","format_option_id":"display_300x250_html"}],"budget":20000,"bidding":{"bid_amount":4.50}}],"start_time":"2025-06-01T00:00:00Z","end_time":"2025-08-31T23:59:59Z"}' \ + --auth $ADCP_AUTH_TOKEN +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. Required for billing and policy evaluation. | +| `proposal_id` | string | No* | ID of the exact committed proposal snapshot produced by [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) with `action: "finalize"`, or by the legacy [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) finalize action. Drafts fail with [`PROPOSAL_NOT_COMMITTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-not-committed); declined or already executed proposals fail with [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state). Exact retries reuse the original idempotency key and replay success. | +| `opportunity` | OpportunityContext | No | Proposal-mode planning-cycle closure shared with [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) and [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals); requires `proposal_id`. Omitting status is the create-specific signal to infer closed with `accepted_with_seller`; if status is sent, it must explicitly carry that closure. | +| `total_budget` | TotalBudget | No* | Hard aggregate lifetime budget. Its currency is the single media-buy denomination for package constraints and canonical bidding. Required for proposals and seller-optimized explicit packages. Optional in fixed explicit-package mode; when supplied there, it must equal the sum of package budgets. | +| `daily_budget_cap` | number | No | Hard aggregate ceiling per calendar day in the media-buy currency. It limits total buy spend without allocating or reserving amounts for packages. Requires `media_buy` in `budget_capping.supported_scopes`. | +| `budget_cap_timezone` | string | No | Shared IANA calendar-day boundary override for aggregate and package daily caps. Accepted only when `budget_capping.buyer_timezone_override` is true; otherwise `timezone_basis` selects `Account.timezone` or the advertised `fixed_timezone`. | +| `budget_allocation` | BudgetAllocation | No | Cross-package allocation mode. Omit for fixed allocation. Use `seller_optimized` with media-buy optimization goals to delegate allocation to the seller. Must be omitted when executing a proposal because the committed proposal supplies it. | +| `packages` | Package[] | No* | Array of package configurations (see below). Required when not using proposal_id. | +| `brand` | BrandRef | Yes | Brand reference — resolved to full identity at execution time. See [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) | +| `start_time` | string | Yes | `"asap"` or ISO 8601 date-time. For new media buys, concrete date-times must not be in the past. | +| `end_time` | string | Yes | ISO 8601 date-time (UTC unless timezone specified) | +| `pacing` | string | No | Aggregate pacing for the media-buy budget: `even`, `asap`, or `front_loaded`. Defaults to `even` when `total_budget` is present. For proposal execution, omit it or match the committed proposal's pacing; conflicting overrides are rejected. | +| `bidding` | BiddingPolicy | No | Complete media-buy bidding default inherited by packages that omit `packages[].bidding`. In shared-budget mode its goal-bound controls bind to the allocation primary goal; in fixed mode inherited cost controls require compatible package result units. | +| `paused` | boolean | No | Create the media buy with delivery held. When true and the buy would otherwise be active, `media_buy_status` is `paused`. Setup blockers still take precedence: missing creatives yield `pending_creatives`, and future flights yield `pending_start`; the hold becomes visible as `paused` after those blockers clear. | +| `invoice_recipient` | [BusinessEntity](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#billing-entity-and-invoice-recipient) | No | Override the account's default billing entity for this buy. The seller MUST validate the recipient is authorized and include it in [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) when governance agents are configured. | +| `po_number` | string | No | Purchase order number | +| `name` | string | No | Human-readable shared label for trafficking UI display and buyer-seller communication (maximum 255 characters). Sellers persist and echo it unchanged; it is not a purchase-order, reconciliation, or identity key. | +| `idempotency_key` | string | No | Unique key for safe retries. If a request with the same key and account has already been processed, the seller returns the existing media buy. MUST be unique per (seller, request) pair. Min 16 chars. | +| `context` | object | No | Opaque correlation data echoed unchanged in the response. Use for internal tracking, trace IDs, or other caller-specific identifiers. | +| `reporting_webhook` | ReportingWebhook | No | Automated reporting delivery configuration | +| `artifact_webhook` | object | No | Content-artifact delivery configuration established with the buy. This compatibility field has no compact purchase or later control equivalent; adapters MUST NOT silently discard it. | + +\* Either `packages` OR (`proposal_id` + `total_budget`) must be provided. + +When executing a proposal through this 3.x compatibility facade, `proposal_status` determines whether `create_media_buy` is valid. The split 3.2 request and revise operations return drafts; `refine_proposals` with `action: "finalize"` returns the `committed` snapshot that can be accepted before `expires_at`. New callers use [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). Legacy [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) drafts require its finalize form, which remains supported throughout 3.x. + +An unexpired `committed` proposal carries an inventory hold and cannot be rejected merely because the seller sold that reserved inventory elsewhere. After `expires_at`, the hold lapses and the seller returns [`PROPOSAL_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-expired). + +### TotalBudget Object + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `amount` | number | Yes | Total budget amount | +| `currency` | string | Yes | ISO 4217 currency code | + +### Package Object + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `product_id` | string | Yes | Opaque product ID from `get_products`. Non-custom wholesale IDs are stable for the same logical offer within seller and declared cache scope; custom IDs are stable only in their issuing discovery/refinement lineage. Selecting it accepts any `targeting_resolution` disclosed on that product. Sellers MUST echo it on every response package object representing the request. | +| `pricing_option_id` | string | Yes | Pricing option ID from product's `pricing_options` array | +| `format_option_refs` | FormatOptionRef[] | No | Canonical 3.2 selector into the product's `format_options[]`: publisher-scoped or product-scoped. New buyers use it as their only selector route. | +| `format_kind` | CanonicalFormatKind | No | Direct canonical selector. Pair with enough `params` to satisfy the product declaration and omit `format_option_refs`. | +| `format_ids` | FormatID[] | Deprecated | Named-format compatibility selector accepted from older 3.x peers. New buyers MUST NOT emit it. Receivers normalize it and equivalence-check it against every co-present canonical route. | +| `params` | object | No | Parameters for the direct canonical selector in `format_kind`. Follows the selected canonical's parameter vocabulary. Requires `format_kind`; `params` alone is schema-invalid. For fixed-size image selectors, `width` and `height` must co-occur. A broad selector such as `{format_kind: "image"}` does not satisfy a product whose `format_options[]` fixes both dimensions; sellers reject under-specified direct selectors with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). | +| `budget` | number | Conditional | Hard lifetime package spend cap in the media-buy currency. Required in fixed mode. Optional in seller-optimized mode; it remains a ceiling, not a current or reserved allocation. | +| `min_spend_target` | number | No | Soft lifetime package spend target in the media-buy currency for seller-optimized allocation. The seller should attempt to reach it, but it is not a billing or delivery guarantee. | +| `impressions` | number | No | Impression goal for this package | +| `paused` | boolean | No | Create package in paused state (default: `false`) | +| `pacing` | string | No | `"even"` (default), `"asap"`, or `"front_loaded"` | +| `daily_budget_cap` | number | No | Optional hard package-level spend ceiling per calendar day, subordinate to any aggregate media-buy `daily_budget_cap`. It is a package constraint, not a reserved daily allocation; seller-optimized packages may omit it. All daily caps on the buy use the media-buy cap timezone. | +| `bidding` | BiddingPolicy | No | Complete package-authored bidding override. Use `{automatic: true}` to explicitly override a media-buy policy with provider automatic bidding. Omit to inherit. This is replacement inheritance, not a field-by-field merge. | +| `bid_price` | number | No | **Deprecated in 3.2.** Use `bidding.bid_amount` or `bidding.max_bid`. A package cannot supply both representations. | +| `optimization_goals` | [OptimizationGoal[]](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#optimization-goals) | No | Objective functions for this package: what to optimize and in what priority. Currency controls belong in `bidding`; legacy `target.cost_per` and `target.per_ad_spend` remain accepted only for migration. | +| `targeting_overlay` | TargetingOverlay | No | Additional constraints intersected with the configured targeting represented by `product_id` (see [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting)). The resulting package echoes the complete effective overlay. Direct create-time additions must compile exactly or be rejected. Fields require product `overlay_support` unless already accepted during discovery. The narrow exception is a placement set equal to the product's complete, explicitly enumerated `mode: "included"` set; it needs no selectable placement support, while a partial set does. Opaque property and collection list refs have no equivalent fixed-restatement exception. For `demographics`, inspect the selected product's `demographic_targeting` declaration first. Creative assignment placement refs only route creatives. A supported selection with no current inventory returns [`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable), never silent substitution or repricing. | +| `audience_evidence_requirements` | AudienceEvidenceRequirements | No | Package-level suitability policy. Sellers reject an unsatisfied required policy rather than dropping it, and return every snapshot used to satisfy it in the confirmed package's `audience_evidence_selections` with `decision_use: "package_construction"`. This is not a targeting instruction. | +| `audience_evidence_pins` | AudienceEvidencePin[] | No | Exact discovery snapshots the buyer requires, each pinned by `evidence_id`, `snapshot_id`, `version`, and `content_digest`. Sellers reject missing, substituted, or mutated snapshots. Every accepted pin is returned in the confirmed package's `audience_evidence_selections` and retained on package readback. | +| `start_time` | string | No | ISO 8601 date-time for this package's flight start. When omitted, inherits the media buy's `start_time`. Must fall within the media buy's date range. Does not support `"asap"`. | +| `end_time` | string | No | ISO 8601 date-time for this package's flight end. When omitted, inherits the media buy's `end_time`. Must fall within the media buy's date range. | +| `creative_assignments` | CreativeAssignment[] | No | Assign existing library creatives with optional weights and placement targeting. Every reference and route is validated as part of the atomic create; one invalid entry fails the whole request. | +| `creatives` | CreativeAsset[] | No | Upload new creative assets inline and assign. Requires `media_buy.features.inline_creative_management: true`; when the seller also advertises `creative.has_creative_library: true`, `creative_id` must not already exist in the library. Pre-commit validation failure blocks the entire create; later review rejection does not roll it back. | +| `catalogs` | Catalog[] | No | Catalog bodies, references, or filtered selections promoted by this package. Compact purchase accepts previously synchronized catalog IDs only, so translating an inline body requires a separate, non-atomic [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) mutation. | +| `context` | object | No | Opaque correlation data echoed unchanged in the package response, webhooks, and read surfaces. Use to map seller-assigned `package_id` back to your internal line items, campaign structure, or tracking state. Buyers targeting mixed seller populations SHOULD include a per-package correlation value here, commonly `context.buyer_ref`, for legacy sellers that do not echo `product_id`. | +| `measurement_terms` | [MeasurementTerms](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#measurement-terms-and-performance-standards) | No | Buyer's proposed billing measurement and makegood terms. Overrides product defaults. Seller accepts (echoed on confirmed package), rejects with [`TERMS_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-terms-rejected), or adjusts. When omitted, product's `measurement_terms` apply. | +| `performance_standards` | [PerformanceStandard[]](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#measurement-terms-and-performance-standards) | No | Buyer's proposed performance standards (viewability, IVT, completion rate, brand safety, attention score). Overrides product defaults. Seller accepts, rejects with `TERMS_REJECTED`, or adjusts. When omitted, product's `performance_standards` apply. | +| `committed_metrics` | object[] | No | Buyer's proposed reporting contract — metrics the buyer wants the seller to commit to populating in delivery reports. Same negotiation pattern as `measurement_terms`/`performance_standards`: each entry tags `scope: "standard"` (with `metric_id` from the closed enum) or `scope: "vendor"` (with `vendor` BrandRef + vendor's `metric_id`). Request-side entries do NOT carry `committed_at` — that timestamp is stamped by the seller on accept. Seller accepts (echoes on response with `committed_at`), rejects with `TERMS_REJECTED`, or normalizes (echoes a different but compatible list). When omitted, the seller decides what to commit based on the product's `available_metrics` plus any `required_metrics` filter the buyer passed at discovery. | + +For `targeting_overlay.geo_places` and `geo_places_exclude`, create-time values +must be within the selected Product's corresponding `overlay_support` tuple. +Unsupported dimensions, systems, countries, place types, or combinations return +`UNSUPPORTED_FEATURE`. A supported tuple with an invalid, unknown, or deprecated +ID—or an unsupported explicit catalog version—returns [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) with +`error.field` on the offending field. A supported selection with no current +inventory returns `PRODUCT_UNAVAILABLE`, without silent substitution or +repricing. An accepted create confirms the selected terms for the complete +effective targeting. + +### BiddingPolicy Object + +`optimization_goals` select the objective; `bidding` constrains how the seller executes against it. Every monetary amount is in the media-buy currency, which is not repeated in the block. The pricing option contributes only the auction unit, never a second currency. Every package's selected pricing option must declare the media-buy currency; split packages requiring another currency into a separate media buy. + +| Field | Meaning | +|-------|---------| +| `automatic: true` | Explicit provider automatic bidding. At package scope this overrides, rather than inherits, media-buy bidding. | +| `bid_amount` | Manual auction bid in media-buy currency per the selected pricing option's auction unit. It is not a promise that the clearing price equals the bid. | +| `max_bid` | Hard per-auction ceiling in media-buy currency per the selected pricing option's auction unit. It is the only canonical hard auction ceiling. | +| `cost_per: { amount, strength }` | Average cost in media-buy currency per scope-bound primary-goal result. `strength` is `cap` or `target`; neither is a per-result guarantee. | +| `roas: { value, strength }` | Dimensionless return per unit of ad spend. `strength` is `floor` or `target`; value-bearing event sources must declare `value_currencies` containing the media-buy currency. Each buy consumes only exact-currency value records; no conversion is permitted. | + +`automatic`, `bid_amount`, `cost_per`, and `roas` are mutually exclusive primary modes. `max_bid` can stand alone or supplement `cost_per`/`roas` only where the relevant scope capability advertises the combination; `bid_amount` and `max_bid` cannot coexist. + +Goal binding is determined by authored scope: + +1. A seller-optimized media-buy `cost_per` or `roas` binds to the primary goal in `budget_allocation.optimization_goals`. +2. A package-authored override binds to that package's primary `optimization_goals` goal. +3. A fixed-allocation media-buy `cost_per` binds separately to every inheriting package and is valid only when their primary-goal result units are compatible. Metric goals must identify the same metric and result-defining qualifier; vendor metrics must identify the same vendor and metric; event goals must identify the same event-type/custom-name set and resolved attribution window. A fixed media-buy `roas` may span different event identities, but every inheriting primary goal must be value-bearing. + +The primary goal is the earliest array entry among goals tied for the lowest explicit numeric priority. Unprioritized goals follow explicitly prioritized goals; when every priority is omitted, the first entry is primary. `bid_amount` and `max_bid` use the selected pricing option's auction unit, which permits a package conversion-cost target plus a max-CPC ceiling while keeping both monetary amounts in one currency. Auction-unit identity is the pricing model plus all billing-event qualifiers after defaults: for example CPV view threshold, CPP demographic, time unit, or flat-rate/DOOH parameters. A media-buy `bid_amount` or `max_bid` may be inherited only by packages with the same auction-unit identity; other packages need package overrides. + +Precedence is complete-block inheritance: + +1. Package `bidding` replaces media-buy `bidding` for that package. +2. An omitted package block inherits the complete media-buy block. +3. `{automatic: true}` is an explicit package override that disables inherited buyer controls for that package. +4. If both scopes are absent, provider automatic delivery applies. +5. Sellers preserve authored scope on readback and never copy an inherited media-buy policy into every package. + +In seller-optimized/shared-budget mode, media-buy bidding is authoritative for any strategy the provider requires at campaign level. Package overrides are permitted only for controls that provider supports under the shared strategy. Sellers validate all effective policies before mutation and reject incompatible placement with [`BIDDING_PLACEMENT_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-bidding-placement-conflict); they never choose one conflicting package policy based on package order. + +In independent-package budget mode, sellers normally write each effective policy to the package-native object. When a provider requires one campaign strategy and all effective package policies are identical, a seller may lift that policy to the native campaign, but readback still preserves whether the buyer authored it at media-buy or package scope. + +Capability discovery is structured. Sellers advertise only the scopes, modes, strengths, and supplements they preserve, for example a package-only cost-cap implementation: + +```json +{ + "media_buy": { + "features": { + "bidding_policy": { + "package": { + "fixed": { + "modes": ["cost_per", "automatic"], + "cost_per_strengths": ["cap"] + } + } + } + } + } +} +``` + +Each scope is partitioned into `fixed` and `seller_optimized` profiles so support in one allocation context makes no claim about the other. `supported_combinations` entries use `kind: "max_bid_with_cost_per"` or `kind: "max_bid_with_roas"` and list the exact cost/ROAS strengths supported in that combination. Presence of `bidding_policy` alone is not a blanket claim, and the former boolean form is invalid in 3.2. + +During 3.2, sellers accept either canonical `bidding` or one legacy representation on an effective package, never both. Mixed input is rejected with [`AMBIGUOUS_BIDDING_POLICY`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-ambiguous-bidding-policy). Legacy normalization is deterministic: `bid_price` plus pricing-option `max_bid: true` becomes `bidding.max_bid`; other `bid_price` becomes `bidding.bid_amount`; goal `target.cost_per` becomes `bidding.cost_per` with `strength: "target"`; and goal `target.per_ad_spend` becomes `bidding.roas` with `strength: "target"`. + +A provider portfolio bidding strategy illustrates the current abstraction boundary. This contract represents the numeric policy but does not model a provider portfolio resource or shared identity above a media buy. A seller may create and own a single-buy provider strategy to honor a portfolio-only ceiling. Selecting an existing strategy, sharing learning across media buys, or updating several buys atomically requires a future provider-neutral bidding-policy resource/reference; provider identity may be returned under `ext` until then. + +## Response + +### Success Response + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Seller's unique identifier | +| `name` | Persisted human-readable media-buy label. When supplied in the request, the seller MUST echo it unchanged. | +| `account` | Resolved account billed for this media buy, echoed as a full [Account](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) object (includes `account_id`, `name`, `status`, and the resolved `brand`/`operator`). When the request used implicit resolution (`brand` + `operator`), this confirms the account the seller resolved. Optional. | +| `confirmed_at` | ISO 8601 timestamp when the seller committed to the media buy. Stable after it is set. May be `null` in deferred/manual approval flows until seller commitment occurs. | +| `creative_deadline` | ISO 8601 timestamp for creative upload deadline | +| `revision` | Initial media-buy revision. Use this value as the `revision` token on the next [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) call intended to change state. | +| `packages` | Array of created packages with complete state. Packages MAY include a per-package `creative_deadline` and SHOULD echo canonical selectors supplied on create so read surfaces are lossless. When additional creative coverage is required, each package carries `formats_to_provide[]`: full canonical ProductFormatDeclaration snapshots normalized from the selected product contract. When the request included audience-evidence pins or requirements, each package MUST return matching `audience_evidence_selections` with `decision_use: "package_construction"`. | +| `warnings` | Structured non-blocking observations. The buy was still created. A continuing condition also appears on [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys); see [Indicators and Warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators). | + +Treat `packages[].formats_to_provide[]` as the stable creative checklist established at booking time. Each full declaration can be matched against a creative agent's live `creative.supported_formats[].format`, even when the product option has no `format_option_id`. After uploads or assignments, call [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys): `packages[].formats_pending[]` contains the declarations that still lack creative coverage. The deprecated `format_ids_to_provide` / `format_ids_pending` projections exist only for older 3.x peers. + +`confirmed_at` is seller commitment time, not a delivery-status timestamp. Do not update it when a buy later pauses, resumes, starts delivery, completes, or reports performance. A committed synchronous create stamps it immediately. Use the `submitted` response branch when no `media_buy_id` is being returned to the buyer. Sellers MAY instead return synchronous success with `media_buy_id`, `packages`, and `confirmed_at: null` for a provisional buy; such buys MUST be retrievable via `get_media_buys` and MUST transition by setting `confirmed_at` exactly once on commitment. A provisional buy with `confirmed_at: null` MUST NOT be `active` and MUST NOT include `packages[].committed_metrics`. + +#### Reporting contract on confirmed packages + +Each package in the response MAY carry `committed_metrics` — the binding reporting contract the seller has agreed to populate in delivery reports for this package. The field is a unified array carrying both standard metrics (from the closed `available-metric.json` enum) and vendor-defined metrics (anchored on a BrandRef), with each entry tagged by an explicit `scope` discriminator and timestamped via `committed_at`: + +When `confirmed_at` is `null`, sellers MUST omit `packages[].committed_metrics`. The first response that sets `confirmed_at` MAY include the initial committed-metrics set, and each such entry's `committed_at` MUST equal `confirmed_at`. + +```json +{ + "package_id": "pkg_001", + "committed_metrics": [ + { "scope": "standard", "metric_id": "impressions", "committed_at": "2026-04-29T10:53:00Z" }, + { "scope": "standard", "metric_id": "completed_views", "committed_at": "2026-04-29T10:53:00Z" }, + { "scope": "vendor", "vendor": { "domain": "attentionvendor.example" }, + "metric_id": "attention_units", "committed_at": "2026-04-29T10:53:00Z" }, + { "scope": "standard", "metric_id": "viewable_rate", + "qualifier": { "viewability_standard": "mrc" }, + "committed_at": "2026-05-30T14:22:00Z" } + ] +} +``` + +**How the contract works:** + +- **Day-1 entries** share `committed_at = confirmed_at`. The seller stamps the day-1 set on the `create_media_buy` response based on what they're prepared to deliver from the product's `reporting_capabilities`. +- **Mid-flight additions** are appended via `update_media_buy` — append-only with their own `committed_at` timestamps. This lets a seller honestly say "Adelaide attention is now part of the contract from day 30 onward" without having to cancel and reissue the buy. +- **Existing entries are immutable.** Sellers MUST reject `update_media_buy` requests that attempt to modify or remove existing entries with a `validation_error` (suggested code: `IMMUTABLE_FIELD`). New entries can be appended. +- **Qualifiers on standard metrics.** Some metrics have multiple incompatible measurement paths and need disambiguation: + - **`viewability_standard`** — when `metric_id` is one of `viewable_impressions`, `viewable_rate`, `measurable_impressions` and the seller commits to a specific viewability standard (MRC and GroupM are materially different thresholds — see the `viewability-standard` enum), the entry MUST carry `qualifier.viewability_standard`. Symmetric on `missing_metrics`: a buyer expecting MRC viewability flags a GroupM-only delivery report as missing the MRC commitment. + - **`completion_source`** — when `metric_id` is `completion_rate` and the seller commits to a specific source (the player/ad server's own completion event vs. a third-party measurement vendor anchored on `performance_standard.vendor`), the entry MUST carry `qualifier.completion_source` (`seller_attested` or `vendor_attested`). The two paths can yield materially different rates, particularly in SSAI environments. Symmetric on `missing_metrics`. + - **`attribution_methodology`** — when `metric_id` is an outcome metric (`conversions`, `conversion_value`, `roas`, `cost_per_acquisition`, `incremental_sales_lift`, `brand_lift`, `foot_traffic`, `conversion_lift`, `brand_search_lift`, `units_sold`, `new_to_brand_rate`, `new_to_brand_units`, `leads`) and the seller commits to a specific attribution methodology, the entry SHOULD carry `qualifier.attribution_methodology` (`deterministic_purchase` for retail-media closed-loop; `probabilistic`, `panel_based`, or `modeled` for other paths). Two outcome rows under different methodologies are not interchangeable; symmetric on `missing_metrics`. + - **`attribution_window`** — when `metric_id` is an outcome metric and the seller commits to a specific lookback window, the entry SHOULD carry `qualifier.attribution_window` as a structured duration (`{ interval: 14, unit: "days" }`). Two outcome rows over different windows are reported as separate rows so buyers don't accidentally aggregate across periods. + + Without the qualifier, the contract is ambiguous and reconciliation falls back to whatever the delivery report happens to carry. The qualifier vocabulary is closed (`additionalProperties: false`); new keys ship explicitly in subsequent minors. +- **Reconciliation:** `missing_metrics` on [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) filters `committed_metrics` to entries where `committed_at < reporting_period.end`, then flags any that aren't populated in the report. A metric committed mid-flight is only audited from its commitment timestamp forward. Qualifiers are matched verbatim — a committed `{viewable_rate, mrc}` is not satisfied by a delivered `viewable_rate` carrying `viewability.standard: groupm`. +- **Optional in v1.** Sellers without per-package snapshot infrastructure can adopt incrementally. Absence is conformant but carries a known audit gap: without the snapshot, `missing_metrics` reconciles against the product's live `available_metrics` at report time, which may not reflect what was committed at create time. Sellers that omit `committed_metrics` accept this risk; buyers SHOULD treat absence as "no audit-grade contract" rather than "clean delivery." Expected to become required at the next major. + +### Error Response + +| Field | Description | +|-------|-------------| +| `errors` | Array of error objects explaining failure | + +Terminal and submitted responses never include `warnings`. Each success warning carries typed `affected_resource` identity; codes follow the negotiated AdCP release. + +### Submitted Response + +Returned when the buy cannot be confirmed synchronously — e.g., guaranteed buys awaiting IO signing, governance review queued, or batched processing. The completion artifact (delivered through AdCP polling or a push-notification webhook) carries `media_buy_id` and `packages`. A2A profile callers poll with [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json); MCP sellers may also expose the legacy AdCP `tasks/get` name. + +There is no proposal-specific acceptance webhook. Proposal execution that needs human approval, IO signing, or asynchronous processing uses this same submitted task envelope and the standard task/webhook completion path. + +| Field | Description | +|-------|-------------| +| `status` | Literal `"submitted"` — discriminates this shape from the sync success branch, which uses `media_buy_status` for lifecycle state. | +| `task_id` | Handle the buyer polls with `get_task_status` on the A2A profile (or the advertised AdCP polling task on MCP), or receives on webhook callbacks. | +| `message` | Optional human-readable explanation (e.g., "Awaiting IO signature from sales team"). | +| `errors` | Optional advisory warnings (non-blocking). Terminal failures belong in the Error Response. | + +**Note**: Responses are mutually exclusive across these three shapes. Dispatch on `status` first: `"submitted"` → async envelope, otherwise check `errors` before accessing success fields. + +### When to return Submitted vs synchronous Success (normative) + +The choice between `submitted` and synchronous success is **per-call**, driven by per-product attributes and the seller's policy on each specific create — not a uniform per-seller rule. A sales-guaranteed seller may legitimately return synchronous success on some `create_media_buy` calls and `submitted` on others within the same session; conformant SDK skills MUST NOT instruct agents to return `submitted` for every `create_media_buy` regardless of input. Sellers that uniformly return `submitted` fail the non-IO-approval paths in the `sales-guaranteed` compliance storyboard. + +Sellers MUST return `submitted` when: + +- The request references one or more products with `delivery_type: "guaranteed"` **and** the seller declares the `requires_io_approval` capability — the human-approval handshake cannot complete inside the response. The completion artifact is delivered through AdCP polling (`get_task_status` on the A2A profile) or webhook once IO signing finishes. +- The request triggers a seller-side governance review that cannot complete synchronously (e.g., manual brand-safety review for a regulated vertical). +- The request enters a batched-processing queue the seller cannot drain inside the response timeout. + +Sellers MUST return synchronous success when: + +- All referenced products have `delivery_type: "non_guaranteed"`. The buy is created and acknowledged in-line; `media_buy_id` and `packages` are issued immediately. This applies regardless of the seller's specialism — a sales-guaranteed seller serving a non-guaranteed product returns synchronous success. +- The request references guaranteed products and the seller does NOT declare `requires_io_approval` (rare; typically retail-SKU or quoted-rate guaranteed flows where the seller has pre-cleared approval). +- The buy enters a known non-terminal state immediately observable to the buyer (`pending_creatives` / `pending_start` / `active` / `paused`). + +The compliance grader observes both paths against the same seller via separate storyboard scenarios: the `create_buy_submitted` scenario seeds a guaranteed product with `requires_io_approval`; four shared scenarios (`measurement_terms_rejected`, `pending_creatives_to_start`, `inventory_list_targeting`, `invalid_transitions`) seed non-guaranteed products and expect synchronous `media_buy_id` returns. Sellers that return `submitted` on the synchronous-expected scenarios fail compliance — see [`sales-guaranteed` specialism](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/specialisms/sales-guaranteed) for the fixture pattern (non-guaranteed products listed first so open-brief [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) calls resolve to a synchronous-create path). + +This rule resolves the skill ↔ storyboard contradiction tracked at [#3822](https://github.com/adcontextprotocol/adcp/issues/3822): an SDK skill that instructs agents to "return a task envelope for every `create_media_buy`" is non-conformant; the correct skill instructs agents to dispatch on per-product `delivery_type` and the seller's `requires_io_approval` capability. + +## Common Scenarios + +### Campaign with Targeting + +Add geographic restrictions and frequency capping: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +// Calculate end date dynamically - 90 days from now +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + brand: { + domain: 'acmecorp.com' + }, + packages: [{ + product_id: 'prod_d979b543', + pricing_option_id: 'cpm_usd_auction', + format_option_refs: [{ + scope: 'product', + format_option_id: 'display_300x250_image' + }], + budget: 2500, + bidding: { bid_amount: 5.00 }, + targeting_overlay: { + geo_countries: ['US'], + geo_regions: ['US-CA', 'US-NY'], + frequency_cap: { + suppress: { interval: 60, unit: 'minutes' } + } + } + }], + start_time: 'asap', + end_time: endDate.toISOString() +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = CreateMediaBuyResponseSchema.parse(result.data); +if ('errors' in validated && validated.errors) { + throw new Error(`Creation failed: ${JSON.stringify(validated.errors)}`); +} + +if ('media_buy_id' in validated) { + console.log(`Campaign ${validated.media_buy_id} created with targeting`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def create_targeted_campaign(): + # Calculate end date dynamically - 90 days from now + end_date = datetime.now(timezone.utc) + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + brand={ + 'domain': 'acmecorp.com' + }, + packages=[{ + 'product_id': 'prod_d979b543', + 'pricing_option_id': 'cpm_usd_auction', + 'format_kind': 'image', + 'params': {'width': 300, 'height': 250}, + 'budget': 2500, + 'bidding': {'bid_amount': 5.00}, + 'targeting_overlay': { + 'geo_countries': ['US'], + 'geo_regions': ['US-CA', 'US-NY'], + 'frequency_cap': { + 'suppress': {'interval': 60, 'unit': 'minutes'} + } + } + }], + start_time='asap', + end_time=end_date.isoformat().replace('+00:00', 'Z') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Creation failed: {result.errors}") + + print(f"Campaign {result.media_buy_id} created with targeting") + +asyncio.run(create_targeted_campaign()) +``` + +</CodeGroup> + +### Campaign with Conversion Optimization + +Keep the purchase event as the objective, then express target ROAS and the max-CPC auction ceiling separately in `bidding`. You must have an event source configured via [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources): + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + brand: { + domain: 'acmecorp.com' + }, + packages: [{ + product_id: 'prod_retail_sp', + pricing_option_id: 'cpc_usd_auction', + budget: 10000, + bidding: { + roas: { value: 4.0, strength: 'target' }, + max_bid: 1.20 + }, + optimization_goals: [{ + kind: 'event', + event_sources: [ + { event_source_id: 'retailer_sales', event_type: 'purchase', value_field: 'value' } + ], + priority: 1 + }] + }], + start_time: 'asap', + end_time: endDate.toISOString() +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = CreateMediaBuyResponseSchema.parse(result.data); +if ('errors' in validated && validated.errors) { + throw new Error(`Creation failed: ${JSON.stringify(validated.errors)}`); +} + +if ('media_buy_id' in validated) { + console.log(`Campaign ${validated.media_buy_id} created with target ROAS`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def create_optimized_campaign(): + end_date = datetime.now(timezone.utc) + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + brand={ + 'domain': 'acmecorp.com' + }, + packages=[{ + 'product_id': 'prod_retail_sp', + 'pricing_option_id': 'cpc_usd_auction', + 'budget': 10000, + 'bidding': { + 'roas': {'value': 4.0, 'strength': 'target'}, + 'max_bid': 1.20 + }, + 'optimization_goals': [{ + 'kind': 'event', + 'event_sources': [ + { 'event_source_id': 'retailer_sales', 'event_type': 'purchase', 'value_field': 'value' } + ], + 'priority': 1 + }] + }], + start_time='asap', + end_time=end_date.isoformat().replace('+00:00', 'Z') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Creation failed: {result.errors}") + + print(f"Campaign {result.media_buy_id} created with target ROAS") + +asyncio.run(create_optimized_campaign()) +``` + +</CodeGroup> + +### Catalog-driven packages + +A catalog-driven package allocates a single budget envelope to an entire catalog of items. Instead of creating separate packages per item, the platform optimizes delivery across all catalog items based on performance. This is the AdCP equivalent of catalog-based campaign types such as Google Performance Max or Meta Dynamic Product Ads. + +Include the `catalogs` field in a package to make it catalog-driven. Each catalog should have a distinct type (e.g., one product catalog, one store catalog). The referenced catalogs must already be synced via [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs). + +**Job campaign with synced job catalog:** + +```json test=false +{ + "brand": { "domain": "acme-restaurants.com" }, + "packages": [{ + "product_id": "prod_job_board", + "pricing_option_id": "cpc_eur_auction", + "budget": 5000, + "bidding": { "bid_amount": 2.50 }, + "catalogs": [{ + "catalog_id": "chef-vacancies", + "type": "job" + }] + }], + "start_time": "asap", + "end_time": "2026-06-30T23:59:59Z" +} +``` + +**Retail media with product catalog and store catchment targeting:** + +```json test=false +{ + "brand": { "domain": "acmecorp.com" }, + "packages": [{ + "product_id": "prod_retail_sp", + "pricing_option_id": "cpc_usd_auction", + "budget": 10000, + "bidding": { "bid_amount": 1.20 }, + "catalogs": [{ + "catalog_id": "gmc-primary", + "type": "product", + "tags": ["summer"] + }], + "targeting_overlay": { + "store_catchments": [{ + "catalog_id": "retail-locations", + "catchment_ids": ["drive"] + }] + } + }], + "start_time": "asap", + "end_time": "2026-09-30T23:59:59Z" +} +``` + +The platform distributes budget across catalog items based on performance. For per-item reporting, use [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) which returns `by_catalog_item` breakdowns. Creative variants for catalog-driven packages represent individual catalog items rendered as ads. + +**Package with explicit signal targeting:** + +Use `targeting_overlay.signal_targeting_groups` when the buyer wants seller-offered signals applied to a specific package. The selected product must set `signal_targeting_allowed: true` and make the signal eligible through inline `signal_targeting_options` when present, through [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) for wholesale products that omit inline options, and through `signal_targeting_rules`. The grouped expression shape is always used: top-level `operator: "all"` with child groups using `operator: "any"` for include groups and `operator: "none"` for exclusion groups. For simple include-only targeting, send one `any` group. For binary signals, send `value: true` in both include and exclusion groups; exclusion is expressed by the parent `none` group, not by `value: false`. Signals are referenced with `signal_ref`: use `scope: "product"` for a product-local signal option, `scope: "data_provider"` with `data_provider_domain` for a signal defined in a data provider's published adagents.json `signals[]`, or `scope: "signal_source"` with `signal_source_url` for a source-native signal. This is distinct from `audience_include` / `audience_exclude`, which only reference first-party audiences registered through [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences). Send `signal_agent_segment_id` only when the selected product option or `get_signals` result exposed it as a separate execution handle required by the seller. + +When a creative carries a build-time `signal_condition` (from [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative)'s `signal_conditions` fan-out, [#5240](https://github.com/adcontextprotocol/adcp/issues/5240)), assigning it to a package whose signal targeting is incompatible — e.g. a sun creative to a rain-targeted package — is rejected with [`SIGNAL_TARGETING_INCOMPATIBLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-signal-targeting-incompatible). Compatibility is matched on the same shared `signal_ref` identity used here. See the [signals specification](/dist/docs/3.2.0-beta.4/signals/specification#creative-signal-fan-out-and-trafficking-compatibility) for the normative trafficking-compatibility contract. + +```json test=false +{ + "brand": { "domain": "acmecorp.com" }, + "packages": [{ + "product_id": "retail_video_premium", + "pricing_option_id": "media_cpm_usd", + "budget": 25000, + "targeting_overlay": { + "signal_targeting_groups": { + "operator": "all", + "groups": [{ + "operator": "any", + "signals": [{ + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "auto_intenders" + }, + "value_type": "binary", + "value": true, + "pricing_option_id": "signal_cpm_usd_250", + "signal_agent_segment_id": "seller_sig_auto_intenders" + }] + }] + } + } + }], + "start_time": "asap", + "end_time": "2026-09-30T23:59:59Z" +} +``` + +Include plus exclusion example: + +```json test=false +{ + "brand": { "domain": "acmecorp.com" }, + "packages": [{ + "product_id": "retail_video_premium", + "pricing_option_id": "media_cpm_usd", + "budget": 25000, + "targeting_overlay": { + "signal_targeting_groups": { + "operator": "all", + "groups": [ + { + "operator": "any", + "signals": [ + { + "signal_ref": { "scope": "product", "signal_id": "high_intent_shoppers" }, + "value_type": "binary", + "value": true + }, + { + "signal_ref": { "scope": "product", "signal_id": "loyalty_members" }, + "value_type": "binary", + "value": true + } + ] + }, + { + "operator": "none", + "signals": [ + { + "signal_ref": { "scope": "product", "signal_id": "recent_purchasers" }, + "value_type": "binary", + "value": true + } + ] + } + ] + } + } + }], + "start_time": "asap", + "end_time": "2026-09-30T23:59:59Z" +} +``` + +### Campaign with Inline Creatives + +Upload creatives at the same time as creating the campaign: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +// Calculate end date dynamically - 90 days from now +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + brand: { + domain: 'acmecorp.com' + }, + packages: [{ + product_id: 'prod_d979b543', + pricing_option_id: 'cpm_usd_auction', + format_option_refs: [{ scope: 'product', format_option_id: 'display_300x250_image' }], + budget: 2500, + bidding: { bid_amount: 5.00 }, + creatives: [{ + creative_id: 'hero_video_30s', + name: 'Hero Video', + format_kind: 'image', + format_option_ref: { scope: 'product', format_option_id: 'display_300x250_image' }, + assets: { + image: { + asset_type: 'image', + url: 'https://cdn.example.com/hero-banner.jpg', + width: 300, + height: 250 + } + } + }] + }], + start_time: 'asap', + end_time: endDate.toISOString() +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = CreateMediaBuyResponseSchema.parse(result.data); +if ('errors' in validated && validated.errors) { + throw new Error(`Creation failed: ${JSON.stringify(validated.errors)}`); +} + +if ('packages' in validated) { + console.log(`Campaign created with ${validated.packages[0].creative_assignments.length} creatives`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def create_with_creatives(): + # Calculate end date dynamically - 90 days from now + end_date = datetime.now(timezone.utc) + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + brand={ + 'domain': 'acmecorp.com' + }, + packages=[{ + 'product_id': 'prod_d979b543', + 'pricing_option_id': 'cpm_usd_auction', + 'format_kind': 'image', + 'params': {'width': 300, 'height': 250}, + 'budget': 2500, + 'bidding': {'bid_amount': 5.00}, + 'creatives': [{ + 'creative_id': 'hero_video_30s', + 'name': 'Hero Video', + 'format_kind': 'image', + 'assets': { + 'image_main': { + 'asset_type': 'image', + 'url': 'https://cdn.example.com/hero-banner.jpg', + 'width': 300, + 'height': 250 + } + } + }] + }], + start_time='asap', + end_time=end_date.isoformat().replace('+00:00', 'Z') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Creation failed: {result.errors}") + + print(f"Campaign created with {len(result.packages[0].creative_assignments)} creatives") + +asyncio.run(create_with_creatives()) +``` + +</CodeGroup> + +### Campaign with Reporting Webhook + +Receive automated reporting notifications: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +// Calculate end date dynamically - 90 days from now +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + brand: { + domain: 'acmecorp.com' + }, + packages: [{ + product_id: 'prod_d979b543', + pricing_option_id: 'cpm_usd_auction', + format_option_refs: [{ scope: 'product', format_option_id: 'display_300x250_image' }], + budget: 2500, + bidding: { bid_amount: 5.00 } + }], + start_time: 'asap', + end_time: endDate.toISOString(), + reporting_webhook: { + url: 'https://buyer.example.com/webhooks/reporting', + authentication: { + schemes: ['Bearer'], + credentials: 'secret_token_xyz_minimum_32_chars' + }, + reporting_frequency: 'daily', + requested_metrics: ['impressions', 'spend', 'completed_views'] + } +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = CreateMediaBuyResponseSchema.parse(result.data); +if ('errors' in validated && validated.errors) { + throw new Error(`Creation failed: ${JSON.stringify(validated.errors)}`); +} + +if ('media_buy_id' in validated) { + console.log(`Campaign created - daily reports will be sent to webhook`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def create_with_reporting(): + # Calculate end date dynamically - 90 days from now + end_date = datetime.now(timezone.utc) + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + brand={ + 'domain': 'acmecorp.com' + }, + packages=[{ + 'product_id': 'prod_d979b543', + 'pricing_option_id': 'cpm_usd_auction', + 'format_kind': 'image', + 'params': {'width': 300, 'height': 250}, + 'budget': 2500, + 'bidding': {'bid_amount': 5.00} + }], + start_time='asap', + end_time=end_date.isoformat().replace('+00:00', 'Z'), + reporting_webhook={ + 'url': 'https://buyer.example.com/webhooks/reporting', + 'authentication': { + 'schemes': ['Bearer'], + 'credentials': 'secret_token_xyz_minimum_32_chars' + }, + 'reporting_frequency': 'daily', + 'requested_metrics': ['impressions', 'spend', 'completed_views'] + } + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Creation failed: {result.errors}") + + print('Campaign created - daily reports will be sent to webhook') + +asyncio.run(create_with_reporting()) +``` + +</CodeGroup> + +### Executing a Proposal + +Execute a committed proposal finalized through [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) without manually constructing packages: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/sdk'; + +// Calculate end date dynamically - 90 days from now +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 90); + +const result = await testAgent.createMediaBuy({ + proposal_id: 'swiss_balanced_v1', // From refine_proposals action: "finalize" + total_budget: { + amount: 50000, + currency: 'USD' + }, + brand: { + domain: 'acmecorp.com' + }, + start_time: 'asap', + end_time: endDate.toISOString() +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = CreateMediaBuyResponseSchema.parse(result.data); +if ('errors' in validated && validated.errors) { + throw new Error(`Creation failed: ${JSON.stringify(validated.errors)}`); +} + +if ('media_buy_id' in validated) { + // Publisher converted proposal allocations to packages + console.log(`Created media buy ${validated.media_buy_id}`); + console.log(`Packages created: ${validated.packages.length}`); +} +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta, timezone +from adcp.testing import test_agent + +async def execute_proposal(): + # Calculate end date dynamically - 90 days from now + end_date = datetime.now(timezone.utc) + timedelta(days=90) + + result = await test_agent.simple.create_media_buy( + proposal_id='swiss_balanced_v1', # From refine_proposals action: "finalize" + total_budget={ + 'amount': 50000, + 'currency': 'USD' + }, + brand={ + 'domain': 'acmecorp.com' + }, + start_time='asap', + end_time=end_date.isoformat().replace('+00:00', 'Z') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Creation failed: {result.errors}") + + # Publisher converted proposal allocations to packages + print(f"Created media buy {result.media_buy_id}") + print(f"Packages created: {len(result.packages)}") + +asyncio.run(execute_proposal()) +``` + +</CodeGroup> + +When executing a proposal: +- For fixed allocation, the publisher converts exact allocation percentages to package budgets using `total_budget` +- For seller-optimized allocation, the publisher preserves the shared allocation goals and converts minimum/maximum percentage constraints to package targets/caps +- Allocation-level pacing becomes subordinate package pacing; aggregate proposal pacing becomes media-buy pacing +- Packages are created automatically based on the proposal's allocations +- All other fields (brand, start_time, end_time, etc.) work the same as manual mode + +See [Proposals](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#proposals) for the complete workflow. + +### Context for Correlation + +The `context` field is an opaque object that sellers echo unchanged in responses and webhooks. Use it to map seller-assigned IDs back to your internal systems without needing to maintain a separate lookup table. + +Context works at two levels: +- **Media buy level** — echoed in the `create_media_buy` response +- **Package level** — echoed in each package's response, webhooks, and read surfaces, useful for mapping `package_id` back to your internal line items. For explicit package requests, sellers MUST also echo `product_id`. + +When targeting mixed seller populations, include package context such as `context.buyer_ref` as a legacy-safe fallback for older sellers that may not echo `product_id`. + +**Mapping to internal campaign and line item IDs:** + +```json test=false +{ + "brand": { "domain": "acmecorp.com" }, + "context": { + "campaign_id": "camp-2026-q3-awareness", + "planner": "media-team-west", + "trace_id": "req-8f3a-4b2c" + }, + "packages": [ + { + "product_id": "prod_d979b543", + "pricing_option_id": "cpm_usd_auction", + "budget": 15000, + "bidding": { "bid_amount": 5.00 }, + "context": { + "line_item_id": "li-001", + "flight": "june-awareness" + } + }, + { + "product_id": "prod_e8fd6012", + "pricing_option_id": "cpm_usd_auction", + "budget": 10000, + "bidding": { "bid_amount": 4.50 }, + "context": { + "line_item_id": "li-002", + "flight": "june-retargeting" + } + } + ], + "start_time": "2026-06-01T00:00:00Z", + "end_time": "2026-08-31T23:59:59Z" +} +``` + +The seller's response echoes your context back alongside the seller-assigned IDs: + +```json test=false +{ + "media_buy_id": "mb_12345", + "context": { + "campaign_id": "camp-2026-q3-awareness", + "planner": "media-team-west", + "trace_id": "req-8f3a-4b2c" + }, + "packages": [ + { + "package_id": "pkg_001", + "product_id": "prod_d979b543", + "context": { + "line_item_id": "li-001", + "flight": "june-awareness" + } + }, + { + "package_id": "pkg_002", + "product_id": "prod_e8fd6012", + "context": { + "line_item_id": "li-002", + "flight": "june-retargeting" + } + } + ] +} +``` + +Sellers must never parse or act on context data — it exists purely for the buyer's internal use. + +## Error Handling + +Common errors and resolutions: + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) | Invalid product_id | Verify product exists via [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | +| [`PRODUCT_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-expired) | Configured product passed `expires_at` and remains recognizable to the seller | Re-run [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) and select a current configuration | +| [`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable) | The product or a supported targeting selection has no current inventory | Re-run [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with the concrete targeting values or choose another product; the seller does not silently substitute values or reprice | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Canonical or legacy compatibility selector does not resolve or satisfy the product's closed accepted set | Re-author against the product's `format_options[]`, include required canonical parameters, or select a published `format_option_id`. | +| [`CONFLICTING_SELECTORS`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflicting-selectors) | Co-present, resolvable package format selector routes select different product format contracts | Emit one canonical selector route, or correct the required legacy projection so it selects the same contract under the canonical v2-narrows-v1 comparison. | +| [`BUDGET_TOO_LOW`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-too-low) | Budget below product minimum | Increase budget or choose different product | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | Targeting constraints or a submitted `creative_id` violate seller/product business rules | Follow `error.field` and `error.message`; broaden targeting criteria or use a different package-scoped `creative_id` as indicated | +| [`POLICY_VIOLATION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-policy-violation) | Brand/product violates policy | Review publisher's content policies | +| [`INVALID_PRICING_OPTION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-pricing-option) | pricing_option_id not found | Use ID from product's `pricing_options` | +| [`CREATIVE_LOCALE_NOT_ACCEPTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-locale-not-accepted) | An assigned library creative has no materialized locale variant accepted by an in-scope format option, or its `serve_default` points outside that option's eligible set | Read `format_options[].locale_policy`, supply a matching source/target variant, narrow placement scope, choose another option, or change the default policy | + +Example error response: + +```json +{ + "errors": [{ + "code": "UNSUPPORTED_FEATURE", + "message": "Product 'prod_d979b543' does not accept image creatives at 728×90", + "field": "packages[0].params", + "details": { "supported_sizes": [{ "width": 300, "height": 250 }] } + }] +} +``` + +## Key Concepts + +### Format Specification + +Each package SHOULD specify the formats it will use via `format_option_refs[]` or a direct canonical selector (`format_kind` plus optional `params`). Omitting selectors defaults to all product options. + +- Publish placeholder creatives in ad servers +- Pin exactly what creative assets are needed +- Validate that the product supports the requested formats +- Track which assets are missing + +New 3.2 buyers author one canonical route: `format_option_refs[]`, or direct +`format_kind` with optional `params`. They MUST NOT combine those routes and +MUST NOT newly emit deprecated `format_ids[]`. Omitting all selectors defaults +to all product options; legacy-only `format_ids[]` remains valid throughout the +3.x compatibility window. + +Receivers also accept multi-route requests from older 3.x peers, but precedence +is applied only after resolution and equivalence checking. The seller first +resolves every present route independently through the canonical mapping path. +An unresolved option reference or unprojectable legacy ID returns +[`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) +before equivalence is evaluated. Once all routes resolve, the seller derives +the product `format_options[]` entries selected by each route using directional +product satisfaction and requires those sets to match. Legacy parameter +compatibility follows the asymmetric [v2 narrows v1](/dist/docs/3.2.0-beta.4/creative/canonical-formats#narrows-formal-definition-normative) +relation rather than raw object equality. Equivalent routes use +`format_option_refs[]` as authoritative, then direct `format_kind`/`params`, +then `format_ids[]`. Any disagreement is rejected with +[`CONFLICTING_SELECTORS`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflicting-selectors); +a canonical selector never silently hides a conflicting legacy projection. For +fixed-size images, width and height travel together and both dimensions must +match in any permitted dual projection. + +Before purchase, buyers SHOULD also inspect the selected declaration's optional +`locale_policy.accepted_language_ranges`. These seller ranges use RFC 4647 +Basic Filtering and let the buyer determine whether a planned or existing +creative has at least one eligible materialized locale variant. A constrained +option is canonical-only and must use a format-options-aware canonical path: +`format_option_refs` when published or needed for disambiguation, otherwise +direct `format_kind` with satisfying `params`. Legacy `format_ids` cannot +preserve the policy. Media buys may be created +before creatives exist, so discovery prevents incompatible planning while hard +enforcement occurs when a creative is assigned. When one assignment can serve +across several placements, the creative must satisfy each effective placement +locale policy independently or the buyer must narrow its placement scope. + +3.1+ format-option example (buyer authoring against a publisher-scoped `Product.format_options[]` entry): + +```json test=false +{ + "packages": [ + { + "product_id": "prod_d979b543", + "pricing_option_id": "cpm_usd_auction", + "format_option_refs": [ + { + "scope": "publisher", + "publisher_domain": "daily-pulse.example", + "format_option_id": "daily_pulse_homepage_image" + } + ], + "budget": 2500, + "bidding": { "bid_amount": 5.00 } + } + ] +} +``` + +See [Format Workflow](#format-workflow) below for complete details. + +### Brand reference + +The `brand` field identifies the advertiser for policy compliance and business purposes. + +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +Full brand identity data (colors, fonts, product catalog) is resolved from brand.json at execution time. See [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json). + +### Pricing & Currency + +Each package specifies its `pricing_option_id`, which determines: +- Pricing model (CPM, CPCV, CPP, etc.) +- Rate and whether it's fixed or auction-based + +The media buy has one currency. Every selected pricing option MUST declare that currency; the option does not introduce a package-specific denomination. Split products requiring another currency into a separate media buy. See [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models). + +### Budget & Pacing Controls + +AdCP supports fixed package budgets and media-buy-level shared budgets. `budget_allocation.mode` makes the interpretation explicit; omission preserves the legacy fixed behavior. + +| Field | Level | Type | Controls | +|-------|-------|------|----------| +| `total_budget.amount` + `total_budget.currency` | Media buy | TotalBudget | Hard aggregate lifetime spend cap. Required for proposals and seller-optimized allocation. | +| `budget_allocation` | Media buy | BudgetAllocation | `fixed` keeps package budgets independent; `seller_optimized` delegates cross-package allocation against shared goals. | +| `budget` | Package | number | Hard package spend cap. Required in fixed mode; optional ceiling in seller-optimized mode. | +| `min_spend_target` | Package | number | Soft minimum-spend target in seller-optimized mode. Not a guarantee. | +| `impressions` | Package | number | Impression goal for the package. An alternative volume target to `budget`; a seller may pace to whichever binds first. | +| `pacing` | Media buy | enum | How the seller spreads aggregate spend across the media-buy flight. | +| `packages[].pacing` | Package | enum | Subordinate temporal preference affecting which package receives the aggregate spend. | +| `daily_budget_cap` | Media buy | number | Optional hard aggregate ceiling per calendar day. It limits total buy spend without allocating that amount among packages. | +| `packages[].daily_budget_cap` | Package | number | Optional subordinate package ceiling per calendar day. It is not a reservation or current allocation. | +| `bidding` | Media buy or package | BiddingPolicy | Buyer execution policy. Media-buy is the inherited default; package is a complete override. | +| `bid_price` | Package | number | Deprecated legacy representation normalized to `bidding.bid_amount` or `bidding.max_bid`. | +| `start_time` / `end_time` | Package | string | The flight window the budget is spread across. When omitted, the package inherits the media buy's flight dates. | + +**Pacing modes** (from [`/schemas/3.2.0-beta.4/enums/pacing.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/pacing.json)): + +| Mode | Behavior | +|------|----------| +| `even` | Allocate remaining budget evenly over the remaining flight (default). | +| `asap` | Spend remaining budget as quickly as possible. | +| `front_loaded` | Allocate more of the remaining budget earlier in the remaining flight. | + +Example package with an even-paced budget over a fixed flight: + +```json +{ + "product_id": "prod_ctv_sports", + "pricing_option_id": "po_cpm_fixed", + "budget": 50000, + "pacing": "even", + "start_time": "2099-08-01T00:00:00Z", + "end_time": "2099-08-31T23:59:59Z" +} +``` + +With `even` pacing over the 31-day flight above, the seller spreads the $50,000 budget across the month — roughly $1,613/day — subject to the seller's own pacing engine and available inventory. + +#### Seller-optimized allocation + +Seller-optimized allocation is a nested optimization: + +1. Hard aggregate and package caps, flight windows, pauses, and policy restrictions always apply. +2. Media-buy pacing controls how much the buy spends over time. +3. Package pacing influences which eligible package receives that spend and MUST NOT cause aggregate delivery to exceed the media-buy pacing plan. +4. `budget_allocation.optimization_goals` choose allocation across packages; `packages[].optimization_goals` optimize delivery within one package. +5. Media-buy `bidding.cost_per`/`roas` bind to the primary cross-package allocation goal; package overrides bind to package goals and are allowed only when the provider can preserve their authored semantics under the shared strategy. + +All package constraints and canonical bidding amounts in a seller-optimized buy use `total_budget.currency`, and every selected pricing option MUST declare that currency. This one-currency rule also applies to fixed AdCP-authored buys; packages requiring another denomination belong in a separate media buy. Every participating product MUST support the primary cross-package optimization goal. Sellers reject incompatible product combinations, currencies, pricing terms, or delivery constraints with [`TERMS_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-terms-rejected) or [`BIDDING_PLACEMENT_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-bidding-placement-conflict) and identify the incompatible package. + +Package caps may sum above the media-buy total; that headroom is what permits dynamic allocation. Minimum-spend targets must sum to no more than the total; sellers MUST reject over-subscribed aggregate minimums with [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) before any provider mutation. If package caps cannot collectively spend the total, the seller rejects the request as infeasible. Sellers advertising this behavior declare `media_buy.features.seller_optimized_budget: true` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). + +Continuous allocation decisions inside an accepted seller-optimized buy are delivery behavior. They do not mutate package caps, increment the media-buy revision, create history entries, or constitute separate `reallocate_budget` actions. + +```json +{ + "idempotency_key": "0c491eb7-fdf7-47de-b3c3-7284f2c56a41", + "account": { "account_id": "acc_performance_001" }, + "brand": { "domain": "acmecorp.com" }, + "total_budget": { "amount": 100000, "currency": "USD" }, + "budget_allocation": { + "mode": "seller_optimized", + "optimization_goals": [ + { + "kind": "event", + "event_sources": [ + { "event_source_id": "checkout_events", "event_type": "purchase" } + ] + } + ] + }, + "pacing": "even", + "bidding": { + "cost_per": { "amount": 25, "strength": "cap" }, + "max_bid": 8 + }, + "packages": [ + { + "product_id": "prospecting", + "pricing_option_id": "cpm_auction", + "budget": 70000, + "min_spend_target": 20000 + }, + { + "product_id": "retargeting", + "pricing_option_id": "cpm_auction", + "budget": 60000, + "pacing": "front_loaded" + } + ], + "start_time": "2099-08-01T00:00:00Z", + "end_time": "2099-08-31T23:59:59Z" +} +``` + +The package caps total $130,000, creating room for the seller to allocate the $100,000 shared total toward the better-performing package. The first package has a soft $20,000 minimum-spend target; neither package has a reserved allocation. + +#### Daily budget cap + +An optional media-buy `daily_budget_cap` sets a hard ceiling on aggregate spend per calendar day without creating package allocations. Optional package `daily_budget_cap` values add subordinate per-package ceilings. In seller-optimized mode, package caps may be omitted so the seller can allocate the aggregate daily allowance dynamically; a package cap is always a ceiling, never a reservation. + +Daily caps are **orthogonal to `pacing`**. The media-buy cap bounds aggregate daily spend, package caps bound individual package spend, and pacing governs distribution within those limits. `pacing: "asap"` plus a cap is valid. Every cap on one media buy uses its accepted `budget_cap_timezone`. Without a buyer override, `budget_capping.timezone_basis` selects either the account's operational timezone or the advertised feature-specific `fixed_timezone`; aggregate and package accounting then share that one boundary. + +`daily_budget_cap` requires seller support: sellers advertise `media_buy.budget_capping` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), including supported scopes and the default timezone basis. A cap is always hard. Sellers MUST reject an undeclared scope with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) rather than silently dropping or softening it, and echo accepted caps plus the resolved shared timezone on read surfaces. + +When a seller does not support `daily_budget_cap`, approximate a daily rate with `pacing: "even"` and a `budget ÷ flight_days` calculation, or split a long flight into shorter packages each with its own `budget` — both are best-effort, not a guaranteed ceiling. + +### Targeting Overlays + +**Use sparingly** - most targeting should be in your brief and handled through product selection. + +Use overlays only for: +- Geographic restrictions (RCT testing, regulatory compliance) +- Frequency capping +- AXE segment inclusion/exclusion (legacy — new integrations use [TMP](/dist/docs/3.2.0-beta.4/trusted-match)) + +See [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) for details. + +## Format Workflow + +### Why Format Specification Matters + +When creating a media buy, format specification enables: + +1. **Placeholder Creation** - Publisher creates placeholders in ad server with correct specs +2. **Validation** - System validates products support requested formats +3. **Clear Expectations** - Both parties know exactly what's needed +4. **Progress Tracking** - Track which assets are missing vs. required +5. **Technical Setup** - Ad server configured before creatives arrive + +### Complete Workflow + +``` +1. get_products → Find products and read canonical format_options[] +2. Validate compatibility → Ensure products support desired formats +3. create_media_buy → Specify formats via format_option_refs[] or + format_kind/params (direct canonical); + omit for all-formats default + └── Publisher creates placeholders + └── Response snapshots canonical requirements in packages[].formats_to_provide[] +4. Creative supply → Upload matching files via `sync_creatives` for library-backed sellers, or inline `packages[].creatives` for inline-only sellers + └── Poll get_media_buys; remaining coverage appears in packages[].formats_pending[] +5. Campaign activation → Replace placeholders with real creatives +``` + +### Format Validation + +Publishers MUST validate: +- All formats are supported by the product +- Package selections match the product's canonical `format_options[]` +- Creative requirements can be fulfilled within timeline + +Invalid canonical format-option example: + +```json +{ + "errors": [{ + "code": "UNSUPPORTED_FEATURE", + "message": "Product 'ctv_sports_premium' has no format_options[] entry for format option 'audio_standard'", + "field": "packages[0].format_option_refs[0]", + "supported_format_option_refs": [ + { "scope": "publisher", "publisher_domain": "streamhaus.example", "format_option_id": "ctv_video_30s_premium" }, + { "scope": "publisher", "publisher_domain": "streamhaus.example", "format_option_id": "ctv_video_15s_premium" } + ] + }] +} +``` + +### Flight date validation + +For new media buys, the top-level `start_time` MUST be either `"asap"` or a +date-time that is not in the past. A past concrete `start_time` MUST return an +[`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) error. + +When a package specifies `start_time` or `end_time`, sellers SHOULD validate that: +- Both dates fall within the media buy's date range +- `start_time` is before `end_time` + +Out-of-range or inverted dates SHOULD return an `INVALID_REQUEST` error: + +```json +{ + "errors": [{ + "code": "INVALID_REQUEST", + "message": "Package 'week_5' end_time 2026-04-05T23:59:59Z is after media buy end_time 2026-03-31T23:59:59Z", + "field": "packages[3].end_time" + }] +} +``` + +## Asynchronous Operations + +This task can complete instantly or take days depending on complexity and approval requirements. The response includes a `status` field that tells you what happened and what to do next. + +| Status | Meaning | Your Action | +|--------|---------|-------------| +| `completed` | Done immediately | Process the result | +| `working` | Processing (~2 min) | Poll frequently or wait for webhook | +| `submitted` | Long-running (hours/days) | Use webhooks or poll infrequently | +| `input-required` | Needs your input | Read message, respond with info | +| `failed` | Error occurred | Handle the error | + +**Note:** For the complete status list see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +<Tabs> + <Tab title="MCP"> + +### Immediate Success (`completed`) + +The task completed synchronously. No async handling needed. + +**Request:** +```javascript test=false +const response = await session.call('create_media_buy', { + brand: { domain: 'acmecorp.com' }, + packages: [ + { + product_id: 'prod_ctv_sports', + pricing_option_id: 'cpm_fixed', + budget: 50000 + } + ] +}); +``` + +**Response:** +```json +{ + "status": "completed", + "media_buy_id": "mb_12345", + "account": { + "account_id": "acc_acme_direct", + "name": "Acme", + "status": "active", + "brand": { "domain": "acmecorp.com" }, + "operator": "acmecorp.com" + }, + "media_buy_status": "active", + "confirmed_at": "2025-06-01T10:00:00Z", + "creative_deadline": "2025-06-15T23:59:59Z", + "revision": 1, + "packages": [ + { + "package_id": "pkg_001", + "product_id": "prod_ctv_sports" + } + ] +} +``` + +The top-level `status` is the envelope task-status (TaskStatus) — `completed` on synchronous success. The body-level `media_buy_status` carries the buy's lifecycle state (`pending_creatives`, `pending_start`, `active`, or `paused`). The AdCP 3.2 source schema no longer permits the legacy top-level `status: MediaBuyStatus` form; see [Media-buy status field migration](#media-buy-status-field-migration) below. + +### Long-Running (`submitted`) + +The task is queued for manual approval. Configure a webhook to receive updates. + +**Request with webhook:** +```javascript test=false +const response = await session.call('create_media_buy', + { + brand: { domain: 'acmecorp.com' }, + packages: [ + { + product_id: 'prod_premium_ctv', + pricing_option_id: 'cpm_fixed', + budget: 500000 // Large budget triggers approval + } + ] + }, + { + pushNotificationConfig: { + url: 'https://your-app.com/webhooks/adcp', + authentication: { + schemes: ['bearer'], + credentials: 'your_webhook_secret' + } + } + } +); +``` + +**Initial response:** +```json +{ + "status": "submitted", + "task_id": "task_abc123", + "message": "Budget exceeds auto-approval limit. Sales review required (2-4 hours)." +} +``` + +**Webhook POST when approved:** +```json +{ + "task_id": "task_abc123", + "task_type": "create_media_buy", + "status": "completed", + "timestamp": "2025-01-22T14:30:00Z", + "message": "Media buy approved and created", + "result": { + "media_buy_id": "mb_67890", + "account": { + "account_id": "acc_acme_direct", + "name": "Acme", + "status": "active", + "brand": { "domain": "acmecorp.com" }, + "operator": "acmecorp.com" + }, + "confirmed_at": "2025-01-22T14:30:00Z", + "creative_deadline": "2025-06-20T23:59:59Z", + "revision": 1, + "packages": [ + { + "package_id": "pkg_002", + } + ] + } +} +``` + +### Error (`failed`) + +**Response:** +```json +{ + "status": "failed", + "errors": [ + { + "code": "INSUFFICIENT_INVENTORY", + "message": "Requested targeting yields no available impressions", + "field": "packages[0].targeting", + "suggestion": "Expand geographic targeting or increase CPM bid" + } + ] +} +``` + + </Tab> + <Tab title="A2A"> + +### Immediate Success (`completed`) + +**Request:** +```javascript test=false +const response = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: 'ROLE_USER', + parts: [{ + data: { + skill: 'create_media_buy', + input: { + idempotency_key: '550e8400-e29b-41d4-a716-446655440010', + account: { account_id: 'acc_demo_001' }, + brand: { domain: 'brand.example' }, + proposal_id: 'proposal_001', + total_budget: { amount: 100000, currency: 'USD' }, + start_time: 'asap', + end_time: '2027-06-30T23:59:59Z' + } + } + }] + } +}); +``` + +**Response:** +```json +{ + "task": { + "id": "task_123", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "media-buy-result", + "parts": [ + { "text": "Media buy created successfully" }, + { + "data": { + "status": "completed", + "media_buy_id": "mb_12345", + "confirmed_at": "2025-06-01T10:00:00Z", + "creative_deadline": "2025-06-15T23:59:59Z", + "revision": 1, + "packages": [{ "package_id": "pkg_001" }] + } + } + ] + }] + } +} +``` + +### Processing (`working`) + +To receive transport progress while the AdCP handler is running, use A2A 1.0 +`SendStreamingMessage` or `SubscribeToTask` and consume `StreamResponse` SSE +frames. The non-streaming helper shown here uses ordinary `SendMessage`, which +waits for a terminal or interrupted A2A state unless +`configuration.returnImmediately` is explicitly enabled. + +### Long-Running AdCP Operation (`submitted`) + +**Profile request:** +```javascript test=false +const response = await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: 'ROLE_USER', + parts: [{ + data: { + skill: 'create_media_buy', + input: { + idempotency_key: '550e8400-e29b-41d4-a716-446655440011', + account: { account_id: 'acc_demo_001' }, + brand: { domain: 'brand.example' }, + proposal_id: 'proposal_requires_approval_001', + total_budget: { amount: 500000, currency: 'USD' }, + start_time: 'asap', + end_time: '2027-06-30T23:59:59Z' + } + } + }] + } +}); +``` + +**Completed A2A invocation containing the AdCP Submitted response:** +```json +{ + "task": { + "id": "a2a-task-abc", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [{ + "data": { + "status": "submitted", + "task_id": "adcp-task-abc", + "message": "Awaiting budget approval" + } + }] + }] + } +} +``` + +Poll the durable operation with a new activated invocation of [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) using `adcp-task-abc`. Do not poll `a2a-task-abc`; that A2A transport invocation is already complete. The AdCP handle is not duplicated in artifact metadata. + +### Input Required (`input-required`) + +Task is paused waiting for clarification or approval. + +**Response:** +```json +{ + "task": { + "id": "task_def", + "contextId": "ctx_456", + "status": { + "state": "TASK_STATE_INPUT_REQUIRED", + "message": { + "messageId": "msg-approval-001", + "taskId": "task_def", + "contextId": "ctx_456", + "role": "ROLE_AGENT", + "parts": [ + { "text": "The requested budget exceeds your pre-approved limit. Please confirm you want to proceed with $500K spend." }, + { "data": { "reason": "APPROVAL_REQUIRED" } } + ] + } + } + } +} +``` + +**Follow-up to approve:** +```javascript test=false +await a2a.send({ + message: { + messageId: crypto.randomUUID(), + taskId: 'task_def', + contextId: 'ctx_456', + role: 'ROLE_USER', + parts: [{ + data: { + skill: 'create_media_buy', + input: { + idempotency_key: '550e8400-e29b-41d4-a716-446655440011', + account: { account_id: 'acc_demo_001' }, + brand: { domain: 'brand.example' }, + proposal_id: 'proposal_requires_approval_001', + total_budget: { amount: 500000, currency: 'USD' }, + start_time: 'asap', + end_time: '2027-06-30T23:59:59Z', + ext: { 'buyer.example': { approval_confirmed: true } } + } + } + }] + } +}); +``` + +### Error (`failed`) + +**Response:** +```json +{ + "task": { + "id": "task_xyz", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_FAILED" }, + "artifacts": [{ + "artifactId": "adcp-error", + "parts": [ + { "text": "Failed to create media buy" }, + { + "data": { + "adcp_error": { + "code": "INSUFFICIENT_INVENTORY", + "message": "Requested targeting yields no available impressions", + "suggestion": "Expand geographic targeting" + } + } + } + ] + }] + } +} +``` + + </Tab> +</Tabs> + +For complete async handling patterns, see [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations). + +## Usage Notes + +- Total budget is distributed across packages based on individual `budget` values +- Creative assets must be uploaded before deadline for campaign activation +- Impression-time targeting (audience, frequency, suitability) is handled by [TMP](/dist/docs/3.2.0-beta.4/trusted-match) +- Pending states (`working`, `submitted`) are normal, not errors +- Orchestrators MUST handle pending states as part of normal workflow +- **Inline creatives**: The `creatives` array creates or supplies package creatives inline. If the seller advertises `creative.has_creative_library: true`, inline creatives enter the library; use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) to update existing library creatives and `creative_assignments` to assign existing library creatives. If the seller advertises `inline_creative_management: true` without a creative library, use `packages[].creatives` on `create_media_buy` and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy); do not call `sync_creatives`. +- **Inline validation and review**: Library-backed inline creatives enter the library with the same review lifecycle as `sync_creatives` uploads, while inline-only sellers may keep them package-scoped. Invalid request-time creative or assignment input fails the whole atomic create. Once valid input is committed, later policy review is independent: rejection does not undo the buy, and sellers MUST NOT skip review solely because the buy did not activate. Retention of unassigned library creatives is seller-defined in 3.0. See [Inline creatives on the package](/dist/docs/3.2.0-beta.4/creative/creative-libraries#path-2-inline-creatives-on-the-package). + +## Content Standards + +When a media buy includes content standards (via the `governance.content_standards` field on [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) responses or the media buy request), the buyer is requesting brand suitability enforcement during delivery. + +<Note> +Content standards are created by calling [`create_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards) on a verification agent (e.g., IAS, DoubleVerify). Standards MUST be [calibrated](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content) with each seller before use in production to ensure the seller's local evaluation model aligns with the verification agent's interpretation. See the [Content Standards overview](/dist/docs/3.2.0-beta.4/governance/content-standards/index) for the full setup workflow: create → calibrate → activate → validate. +</Note> + +## Policy Compliance + +Brand and products are validated during creation. Policy violations return errors: + +```json +{ + "errors": [{ + "code": "POLICY_VIOLATION", + "message": "Brand or product category not permitted on this publisher", + "field": "brand", + "suggestion": "Contact publisher for category approval process" + }] +} +``` + +Publishers should ensure: +- Brand/products align with selected packages +- Creatives match declared brand/products +- Campaign complies with all advertising policies + +## Next Steps + +After creating a media buy: + +1. **Supply creatives**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) for inline-only sellers +2. **Monitor Status**: Use [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) +3. **Optimize**: Use [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) +4. **Update**: Use [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) to modify campaign + +## Media-buy status field migration + +3.1 split two enums that 3.0 collided at the same root key — envelope `status` (TaskStatus) at the top of every response, and body `media_buy_status` (MediaBuyStatus, **new in 3.1**) carrying the buy's lifecycle state alongside. The legacy top-level `status: MediaBuyStatus` form was `deprecated: true` only in the 3.1 schema and is removed from the 3.2 source schema ([#4906](https://github.com/adcontextprotocol/adcp/issues/4906)); nested `status` on [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery), and `core/media-buy.json` follow in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)). + +During the 3.1 migration window, buyers MUST prefer `media_buy_status` when present. The 3.1 compliance storyboards assert `path: "media_buy_status"` — a 3.1 seller emitting only the legacy `status` is schema-valid but fails certification. In 3.2, sellers MUST stop emitting the legacy lifecycle value; root `status` is reserved for TaskStatus. + +Full migration: [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status). + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/) - Complete campaign workflow +- [get_products](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) - Discover inventory +- [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) - Targeting strategies +- [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models) - Currency and pricing diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals.mdx new file mode 100644 index 0000000000..0936025a56 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals.mdx @@ -0,0 +1,36 @@ +--- +title: decline_proposals +description: "Terminally decline one or more immutable proposals." +"og:title": "AdCP decline_proposals Task" +testable: true +--- + +`decline_proposals` records that the buyer evaluated one or more proposals and will not pursue them. The operation is terminal: a seller must reject later [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), canonical [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), or new logical calls through the deprecated 3.x [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) compatibility facade for a declined proposal with [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state). Exact retries of an earlier successful call still follow the shared idempotency replay contract. A proposal that was already executed cannot subsequently be declined and returns `unable`. + +{/* Using latest because this schema is not yet released in any version. + Update to the correct version alias after the next release. */} +**Request schema:** [`/schemas/3.2.0-beta.0/media-buy/decline-proposals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/decline-proposals-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441004", + "declines": [ + { + "proposal_id": "proposal_123", + "reason": "inventory_fit", + "detail": "The available placement mix does not fit this campaign." + } + ], + "opportunity": { + "opportunity_id": "opp_spring_launch_2027", + "status": "closed", + "close_reason": "not_pursued" + } +} +``` + +Each result has an explicit `declined` or `unable` outcome and preserves request order. Retrying with the same idempotency key replays the original response. Declining the same proposal again under a new key also returns `declined` while preserving the first recorded reason and detail, making the terminal state semantically idempotent. + +When `opportunity` is present, every proposal must belong to its `opportunity_id`. Proposal outcomes are independent, but the opportunity update is applied only if every result is `declined`; any `unable` result leaves the opportunity unchanged. + +The request does not carry `proposal_version`. Each `proposal_id` identifies one immutable commercial snapshot; [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) mints a new ID whenever terms change. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery.mdx new file mode 100644 index 0000000000..9e9beaef3a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery.mdx @@ -0,0 +1,996 @@ +--- +title: get_media_buy_delivery +description: "get_media_buy_delivery task — retrieve impressions, spend, pacing, and dimensional breakdowns for active AdCP campaigns. Supports custom date ranges and metric filtering." +"og:title": "AdCP — get_media_buy_delivery" +testable: true +--- + + +Retrieve comprehensive delivery metrics and performance data for media buy reporting. + +**Response Time**: ~60 seconds (reporting query) + +## Scope + +`get_media_buy_delivery` works on any `media_buy_id` returned by [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), regardless of how the underlying campaign was created. Sales agents MUST NOT refuse delivery reporting — or narrow its coverage — on the basis that the buy originated outside AdCP. If delivery data for a buy is genuinely unavailable (e.g., the ad server has not yet reported a flight), the seller returns the buy in `media_buy_deliveries` with zero or partial metrics; the seller does not omit it and does not return [`MEDIA_BUY_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-media-buy-not-found) for an account-owned buy. + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. Only returns media buys belonging to this account. When omitted, returns data across all accessible accounts. | +| `media_buy_ids` | string[] | No* | Array of media buy IDs to retrieve | +| `status_filter` | string \| string[] | No | Status filter: `"pending_creatives"`, `"pending_start"`, `"active"`, `"paused"`, `"completed"`. Defaults to `["active"]` when omitted. | +| `start_date` | string | No | Report start date (YYYY-MM-DD), inclusive. Omit for campaign lifetime data. Only accepted when product supports `date_range`. | +| `end_date` | string | No | Report end date (YYYY-MM-DD), **exclusive**. Omit for campaign lifetime data. Only accepted when product supports `date_range`. | +| `reporting_dimensions` | object | No | Request dimensional breakdowns within `by_package`. Include a key as an empty object (e.g., `"device_type": {}`) to activate with defaults. Keys: `geo`, `device_type`, `device_platform`, `audience`, `demographic`, `placement`, `spot`. Most accept optional `limit` and `sort_by`. Demographic also accepts canonical `age_ranges`, each of which must match the product's independent demographic reporting capability exactly. `spot` accepts only `limit`, returns rows by `aired_at` ascending, and defaults to the complete log for the reporting period. Geo requires `geo_level`; include `system` for metro/postal levels. Unsupported dimensions are silently omitted; unsupported requested demographic ranges return [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature); malformed requests return a validation error. | +| `time_granularity` | string | No | Per-window slice granularity for pull recovery, matching `reporting_webhook.reporting_frequency` vocabulary (`hourly`, `daily`, `weekly`, `monthly`, `quarterly`, `post_campaign`). When set, the response includes `windows[]` slices shape-aligned with webhook fires at the same granularity. Capability-scoped — value MUST be in the product's `reporting_capabilities.windowed_pull_granularities`. See [Windowed pull recovery](#windowed-pull-recovery). | +| `include_window_breakdown` | boolean | No | When `true` (and `time_granularity` is set), include the `windows[]` array on each media buy. Defaults to `false`. Ignored when `time_granularity` is omitted. | + +> **Date Range Behavior**: The date range is **start-inclusive, end-exclusive**. For example, `start_date: "2026-01-01"` and `end_date: "2026-01-02"` returns delivery data for January 1st only (from `2026-01-01 00:00:00` up to, but not including, `2026-01-02 00:00:00`). To get a full week of data (Jan 1-7), use `end_date: "2026-01-08"`. + +### Deterministic filter contract + +`media_buy_ids` and accepted date bounds MUST observably scope the response. +Every `media_buy_deliveries[]` row MUST have a `media_buy_id` in +`media_buy_ids` when that filter is present. A seller MUST NOT accept the filter +and return delivery rows for other buys. + +For an accepted `start_date` and `end_date`, `reporting_period.start` and +`reporting_period.end` MUST represent those exact UTC day boundaries, and all +aggregates, per-buy totals, daily rows, and requested window slices MUST be +computed only from delivery in the start-inclusive, end-exclusive interval. +Delivery outside that interval MUST NOT contribute to the response. + +A filtered request can legitimately return the same rows and values as a less +restrictive request when all underlying delivery already matches. Conformance is +therefore established from returned membership, status, and date boundaries—not +by requiring two response payloads to differ. + +**Date Range Examples**: + +| start_date | end_date | Data Returned | +|------------|----------|---------------| +| `2026-01-01` | `2026-01-02` | January 1st only (1 day) | +| `2026-01-01` | `2026-01-08` | January 1st through 7th (7 days) | +| `2026-01-01` | `2026-02-01` | Full month of January (31 days) | +| `2026-01-15` | `2026-01-16` | January 15th only (1 day) | + +*`media_buy_ids` filters results to specific media buys. If neither provided, returns all media buys in current session context. + +## Response + +Returns delivery report with aggregated totals and per-media-buy breakdowns: + +| Field | Description | +|-------|-------------| +| `reporting_period` | Date range for report (start/end timestamps) | +| `currency` | ISO 4217 currency code (USD, EUR, GBP, etc.) | +| `attribution_window` | Attribution methodology: `post_click` and `post_view` (duration objects), and `model` (last_touch, first_touch, linear, time_decay, data_driven) | +| `aggregated_totals` | Combined metrics across all media buys (impressions, spend, clicks, views, completed_views, conversions, conversion_value, roas, new_to_brand_rate, cost_per_acquisition, completion_rate, reach, reach_unit, frequency, media_buy_count, metric_aggregates) | +| `media_buy_deliveries` | Array of delivery data per media buy | + +### Media Buy Delivery Object + +<Note> +**3.1 vocabulary note.** `get_media_buy_delivery` returns the lifecycle state on a nested `media_buy_deliveries[].status` field (no envelope collision — nested at depth 1). [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) success responses return the same lifecycle state on a top-level **`media_buy_status`** field (added in 3.1 to avoid colliding with the envelope task-status `status`). Same enum, two field names in 3.1 — the cascade unifies in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)). See [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status) for the full picture. +</Note> + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Media buy identifier | +| `status` | Current status (`pending_creatives`, `pending_start`, `active`, `paused`, `completed`). In webhook context, may also be `reporting_delayed` or `failed`. Maps to `media_buy_status` on `create_media_buy` / `update_media_buy` success responses (3.1 vocabulary note above). | +| `totals` | Aggregate metrics (impressions, spend, clicks, ctr, conversions, conversion_value, roas, new_to_brand_rate) | +| `by_package` | Package-level breakdowns with delivery_status, paused state, and pacing_index | +| `daily_breakdown` | Day-by-day delivery (date, impressions, spend, conversions, conversion_value, roas, new_to_brand_rate) | + +See [schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buy-delivery-response.json) for complete field list. + +### Final vs provisional numbers + +A delivery row is either **final for its measurement window** or it isn't. Final means the seller considers these numbers closed for the period — no further revision — and is willing to invoice on them, subject to whatever `measurement_terms.billing_measurement` the buy was created with. Anything else is provisional: still settling as measurement matures (broadcast C3 → C7 DVR accumulation, post-IVT scrubbing, conversion dedup) and **not** an invoicing source of truth. + +Per-row signals: + +- `media_buy_deliveries[*].is_final` and `media_buy_deliveries[*].finalized_at` — row-level finality, true iff every package in the row is final for the same measurement window. +- `media_buy_deliveries[*].by_package[*].is_final` and `.finalized_at` — package-level finality with the exact timestamp. +- `media_buy_deliveries[*].by_package[*].measurement_window` — which maturation stage the numbers represent (`c3`, `c7`, `post_sivt`, `downloads_30d`, …). + +Callers using rows where `is_final` is false (or absent) for pacing and reporting are safe; callers using them for reconciliation, accruals, or finance close are not. + +### Who is authoritative for billing + +Whose number invoices the buy is a **contract term**, declared in the buy's [`measurement_terms.billing_measurement`](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority): + +- **Seller-attested** (the default when `billing_measurement` is absent or names the seller's own ad server): invoice off final rows on `get_media_buy_delivery`. +- **Vendor-attested** (third-party measurement vendor named in the buy — e.g., Nielsen, IAS, DV, MOAT): invoice off the named vendor's authoritative numbers. Operationally this is most often the seller pulling from the vendor and publishing on `get_media_buy_delivery` with `is_final: true`; when the buyer holds the vendor relationship instead, the buyer pushes via [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) with `final: true` and `finalized_at` set. +- **Buyer-attested** (buyer's 3PAS or MMP named in the buy — e.g., CM360, Flashtalking): invoice off the buyer's final records pushed via `report_usage`. + +When the authoritative party doesn't publish final numbers within `measurement_terms.billing_measurement.finalization_deadline_hours`, the counterparty MAY fall back to its own attestation; the breach is handled under `makegood_policy`. The deadline applies symmetrically to whichever party is named in `vendor`. When variance between parties exceeds `max_variance_percent`, parties resolve via the buy's [`makegood_policy.available_remedies`](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) and out-of-band negotiation. + +See [Billing authority](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority) for the end-to-end flow. A structured dispute task — opening, transitioning, and resolving a delivery dispute on the wire — is targeted for AdCP 3.2. + +### Aggregated metric partitions (`metric_aggregates`) + +Cross-buy delivery values that vary by **qualifier** (measurement standard, transparency disclosure) are reported as a partitioned array on `aggregated_totals.metric_aggregates` rather than as flat scalars. This solves the apples-to-oranges sum problem at the aggregate layer: MRC and GroupM viewability define materially different thresholds and must never be combined into a single rate. + +Each row carries the same atomic unit as `package.committed_metrics` and `by_package[].missing_metrics`: + +``` +committed_metrics row : { scope, metric_id, qualifier, committed_at } +missing_metrics row : { scope, metric_id, qualifier } +metric_aggregates row : { scope, metric_id, qualifier, value, ...components } +``` + +**Reconciliation is a row-level join on `(scope, metric_id, qualifier)`.** For each `committed_metrics` row, find the matching `metric_aggregates` row; absent matches surface as `missing_metrics`. No per-metric reconciliation logic, no traversal asymmetry between contract and delivery. + +**Granularity rule.** One row per `(metric_id, full-qualifier-set)`, reported at the finest available granularity. Buyers re-aggregate up if they want a coarser view. This eliminates rollup ambiguity and prevents accidental double-counting. + +**Unqualified metrics stay top-level.** `impressions`, `spend`, `media_buy_count`, and other metrics with no qualifier remain at the top of `aggregated_totals`. `metric_aggregates` is only used for metrics with non-empty qualifier sets. + +**Mutual exclusion (MUST).** For any `metric_id` appearing in `metric_aggregates`, the corresponding top-level scalar in `aggregated_totals` MUST be omitted — not zeroed. Sellers MUST NOT emit both. Avoids duplicate sources of truth. + +**Qualifier vocabulary** is closed today on both `committed_metrics` and `metric_aggregates` (`additionalProperties: false`). Five keys exist: `viewability_standard` (MRC vs GroupM viewability), `completion_source` (seller- vs vendor-attested completion), `attribution_methodology` (deterministic_purchase / probabilistic / panel_based / modeled — for outcome metrics), `attribution_window` (structured duration — for outcome metrics), and `lift_dimension` (awareness / consideration / favorability / purchase_intent / ad_recall — for `brand_lift`). The delivery vocabulary is **expected to diverge from contract** in future minors as transparency disclosures buyers don't commit to ship delivery-only (e.g., `tracker_firing` pending #3832). New qualifier keys ship explicitly in subsequent minors on either surface. **Heterogeneous value types**: qualifier values are mostly string enums but `attribution_window` is an object-valued duration; consumers MUST dispatch on key name to know value shape, and structured-value qualifiers join on canonical (key-sorted) deep equality. + +**Qualifier-set drift across reports.** When a campaign gains a new qualifier mid-flight (e.g., adds `tracker_firing` partitioning in week 2 after only client-side firing in week 1), prior periods' rows remain valid at their original granularity. Buyers SHOULD NOT retroactively repartition; report supersession via `supersedes_window` is the documented path for window-level revisions. + +**Per-buy `totals` shape stays flat.** Each individual buy is single-qualifier by definition; only the cross-buy aggregate spans qualifiers and needs the partitioned shape. Per-buy `totals.viewability` continues to be a flat object with its own `standard` field. + +Example: + +```json +{ + "aggregated_totals": { + "impressions": 1000000, + "spend": 5000.00, + "media_buy_count": 3, + "metric_aggregates": [ + { + "scope": "standard", + "metric_id": "viewable_rate", + "qualifier": { "viewability_standard": "mrc" }, + "value": 0.7286, + "measurable_impressions": 700000, + "viewable_impressions": 510000 + }, + { + "scope": "standard", + "metric_id": "viewable_rate", + "qualifier": { "viewability_standard": "groupm" }, + "value": 0.55, + "measurable_impressions": 180000, + "viewable_impressions": 99000 + } + ] + } +} +``` + +**Value typing dispatch.** Buyer agents MUST inspect `metric_id` before doing arithmetic. Rate metrics (`viewable_rate`, `completion_rate`) are 0.0–1.0; cost-per metrics are currency; count metrics are non-negative numbers; ROAS is a ratio. Same dispatch convention as `committed_metrics` — `metric_id` is the type tag. + +## Common Scenarios + +### Single Media Buy + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Get single media buy delivery report +const result = await testAgent.getMediaBuyDelivery({ + media_buy_ids: ['mb_12345'], + start_date: '2024-02-01', + end_date: '2024-02-07' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +// Check for errors (discriminated union response) +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +console.log(`Delivered ${validated.aggregated_totals.impressions.toLocaleString()} impressions`); +console.log(`Spend: $${validated.aggregated_totals.spend.toFixed(2)}`); +if (validated.media_buy_deliveries.length > 0) { + console.log(`CTR: ${(validated.media_buy_deliveries[0].totals.ctr * 100).toFixed(2)}%`); +} +``` + +```python Python integration=true +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest + +async def main(): + # Get single media buy delivery report + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + media_buy_ids=['mb_12345'], + start_date='2024-02-01', + end_date='2024-02-07' + ) + ) + + # Check for errors (discriminated union response) + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + print(f"Delivered {result.aggregated_totals.impressions:,} impressions") + print(f"Spend: ${result.aggregated_totals.spend:.2f}") + if result.media_buy_deliveries: + print(f"CTR: {result.media_buy_deliveries[0].totals.ctr * 100:.2f}%") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Multiple Media Buys + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Get all active media buys from context +const result = await testAgent.getMediaBuyDelivery({ + status_filter: 'active', + start_date: '2024-02-01', + end_date: '2024-02-07' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +console.log(`${validated.aggregated_totals.media_buy_count} active campaigns`); +console.log(`Total impressions: ${validated.aggregated_totals.impressions.toLocaleString()}`); +console.log(`Total spend: $${validated.aggregated_totals.spend.toFixed(2)}`); + +// Review each campaign +validated.media_buy_deliveries.forEach(delivery => { + console.log(`${delivery.media_buy_id}: ${delivery.totals.impressions.toLocaleString()} impressions, CTR ${(delivery.totals.ctr * 100).toFixed(2)}%`); +}); +``` + +```python Python test=false +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest + +async def main(): + # Get all active media buys from context + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + status_filter='active', + start_date='2024-02-01', + end_date='2024-02-07' + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + print(f"{result.aggregated_totals.media_buy_count} active campaigns") + print(f"Total impressions: {result.aggregated_totals.impressions:,}") + print(f"Total spend: ${result.aggregated_totals.spend:.2f}") + + # Review each campaign + for delivery in result.media_buy_deliveries: + print(f"{delivery.media_buy_id}: {delivery.totals.impressions:,} impressions, CTR {delivery.totals.ctr * 100:.2f}%") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Date Range Reporting + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Get month-to-date performance +const now = new Date(); +const monthStart = new Date(now.getFullYear(), now.getMonth(), 1); +const dateFormat = date => date.toISOString().split('T')[0]; + +const result = await testAgent.getMediaBuyDelivery({ + media_buy_ids: ['mb_12345'], + start_date: dateFormat(monthStart), + end_date: dateFormat(now) +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +if (validated.media_buy_deliveries.length > 0) { + // Analyze daily breakdown + const dailyBreakdown = validated.media_buy_deliveries[0].daily_breakdown; + if (dailyBreakdown && dailyBreakdown.length > 0) { + console.log(`Daily average: ${Math.round(validated.aggregated_totals.impressions / dailyBreakdown.length).toLocaleString()} impressions`); + + // Find peak day + const peakDay = dailyBreakdown.reduce((max, day) => + day.impressions > max.impressions ? day : max + ); + console.log(`Peak day: ${peakDay.date} with ${peakDay.impressions.toLocaleString()} impressions`); + } +} +``` + +```python Python test=false +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest +from datetime import date + +async def main(): + # Get month-to-date performance + today = date.today() + month_start = date(today.year, today.month, 1) + + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + media_buy_ids=['mb_12345'], + start_date=str(month_start), + end_date=str(today) + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + if result.media_buy_deliveries: + # Analyze daily breakdown + daily_breakdown = result.media_buy_deliveries[0].daily_breakdown + if daily_breakdown: + daily_avg = result.aggregated_totals.impressions // len(daily_breakdown) + print(f"Daily average: {daily_avg:,} impressions") + + # Find peak day + peak_day = max(daily_breakdown, key=lambda d: d.impressions) + print(f"Peak day: {peak_day.date} with {peak_day.impressions:,} impressions") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Multi-Status Query + +<CodeGroup> + +```javascript JavaScript integration=true +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Get both active and paused campaigns +const result = await testAgent.getMediaBuyDelivery({ + status_filter: ['active', 'paused'], + start_date: '2024-02-01', + end_date: '2024-02-07' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +// Group by status +const byStatus = validated.media_buy_deliveries.reduce((acc, delivery) => { + if (!acc[delivery.status]) acc[delivery.status] = []; + acc[delivery.status].push(delivery); + return acc; +}, {}); + +console.log(`Active campaigns: ${byStatus.active?.length || 0}`); +console.log(`Paused campaigns: ${byStatus.paused?.length || 0}`); + +// Identify underperforming campaigns +byStatus.paused?.forEach(delivery => { + if (delivery.by_package && delivery.by_package.length > 0) { + const avgPacing = delivery.by_package.reduce((sum, pkg) => sum + pkg.pacing_index, 0) / delivery.by_package.length; + console.log(`${delivery.media_buy_id}: paused with ${(avgPacing * 100).toFixed(0)}% pacing`); + } +}); +``` + +```python Python integration=true +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest +from collections import defaultdict + +async def main(): + # Get both active and paused campaigns + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + status_filter=['active', 'paused'], + start_date='2024-02-01', + end_date='2024-02-07' + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + # Group by status + by_status = defaultdict(list) + for delivery in result.media_buy_deliveries: + by_status[delivery.status].append(delivery) + + print(f"Active campaigns: {len(by_status['active'])}") + print(f"Paused campaigns: {len(by_status['paused'])}") + + # Identify underperforming campaigns + for delivery in by_status['paused']: + if delivery.by_package: + avg_pacing = sum(pkg.pacing_index for pkg in delivery.by_package) / len(delivery.by_package) + print(f"{delivery.media_buy_id}: paused with {avg_pacing * 100:.0f}% pacing") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Correlating Your Own Reference + +<Note> +**`media_buy_ids` are seller-assigned.** They are the `media_buy_id` values returned by [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) — not buyer-side identifiers. AdCP has no buyer-reference lookup key: the top-level `buyer_ref` field was removed in 3.0.0, making seller-assigned `media_buy_id`/`package_id` canonical. If you hold only your own identifier, include it in the opaque `context` object (commonly `context.buyer_ref`) when you call `create_media_buy`; the seller echoes `context` back on `create_media_buy` and [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), so you can reconcile your reference to the seller's `media_buy_id` before requesting delivery. +</Note> + +<CodeGroup> + +```javascript JavaScript integration=true +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Compare several media buys by their seller-assigned IDs (from create_media_buy / get_media_buys) +const result = await testAgent.getMediaBuyDelivery({ + media_buy_ids: ['mb_q1_campaign_2024', 'mb_q1_retargeting_2024'] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +// Lifetime delivery data (no date range specified) +console.log(`Total lifetime impressions: ${validated.aggregated_totals.impressions.toLocaleString()}`); +console.log(`Total lifetime spend: $${validated.aggregated_totals.spend.toFixed(2)}`); + +// Compare campaigns +validated.media_buy_deliveries.forEach(delivery => { + if (delivery.totals.impressions > 0) { + const cpm = (delivery.totals.spend / delivery.totals.impressions) * 1000; + console.log(`${delivery.media_buy_id}: CPM $${cpm.toFixed(2)}, CTR ${(delivery.totals.ctr * 100).toFixed(2)}%`); + } +}); +``` + +```python Python integration=true +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest + +async def main(): + # Compare several media buys by their seller-assigned IDs (from create_media_buy / get_media_buys) + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + media_buy_ids=['mb_q1_campaign_2024', 'mb_q1_retargeting_2024'] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + # Lifetime delivery data (no date range specified) + print(f"Total lifetime impressions: {result.aggregated_totals.impressions:,}") + print(f"Total lifetime spend: ${result.aggregated_totals.spend:.2f}") + + # Compare campaigns + for delivery in result.media_buy_deliveries: + if delivery.totals.impressions > 0: + cpm = (delivery.totals.spend / delivery.totals.impressions) * 1000 + print(f"{delivery.media_buy_id}: CPM ${cpm:.2f}, CTR {delivery.totals.ctr * 100:.2f}%") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Account-Scoped Query + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/sdk'; + +// Get delivery for a specific advertiser account +const result = await testAgent.getMediaBuyDelivery({ + account: { account_id: 'acc_acme_pinnacle' }, + status_filter: 'active', + start_date: '2024-02-01', + end_date: '2024-02-07' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuyDeliveryResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +console.log(`${validated.aggregated_totals.media_buy_count} campaigns for account`); +console.log(`Total spend: $${validated.aggregated_totals.spend.toFixed(2)}`); +``` + +```python Python test=false +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest + +async def main(): + # Get delivery for a specific advertiser account + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + account={'account_id': 'acc_acme_pinnacle'}, + status_filter='active', + start_date='2024-02-01', + end_date='2024-02-07' + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Query failed: {result.errors}") + + print(f"{result.aggregated_totals.media_buy_count} campaigns for account") + print(f"Total spend: ${result.aggregated_totals.spend:.2f}") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Metrics Definitions + +| Metric | Definition | +|--------|------------| +| **Impressions** | Number of times ads were displayed | +| **Spend** | Amount spent in specified currency | +| **Clicks** | Number of ad clicks (if available) | +| **CTR** | Click-through rate (clicks/impressions) | +| **Views** | Content engagements at the billable view threshold — video views, audio/podcast stream starts, or format-specific view events | +| **Completed Views** | Audio/video completions (at threshold or 100%) | +| **Completion Rate** | Completion rate (completed_views/impressions) | +| **Conversions** | Attributed conversions (purchases, new listeners, app installs, etc.) | +| **Conversion Value** | Total monetary value of attributed conversions | +| **ROAS** | Return on ad spend (conversion_value / spend) | +| **New-to-Brand Rate** | Fraction of conversions from first-time brand buyers (0-1) | +| **Cost per Acquisition** | Cost per conversion (spend / conversions) | +| **Reach** | Unique users reached (see `reach_unit` for measurement unit: individuals, households, devices, accounts, cookies). Measurement window declared via `reach_window`; without it, buyers must not sum reach across rows. | +| **Reach Unit** | Unit of measurement for reach — required when reach is present | +| **Reach Window** | Window semantics for reported reach/frequency: `cumulative` (uniques since campaign start), `period` (uniques within a single non-overlapping reporting period — e.g., daily snapshot), or `rolling` (uniques within a trailing window — e.g., trailing-7-day). Never sum across rows. Optional but strongly recommended when reach is present. | +| **Frequency** | Average ad exposures per reach unit, measured over `reach_window` | +| **Viewability** | Object with `vendor`, `measurable_impressions` (denominator), `viewable_impressions`, `viewable_rate`, `viewed_seconds` (average in-view duration per measurable impression — pairs with the `viewed_seconds` optimization goal), and `standard` | +| **Follows** | New followers, page likes, or free channel/feed subscribes attributed to delivery | +| **Pacing Index** | Actual vs. expected delivery rate (1.0 = on track, &lt;1.0 = behind, &gt;1.0 = ahead) | +| **CPM** | Cost per thousand impressions (spend/impressions * 1000) | + +## Query Behavior + +### Context-Based Queries +- If no `media_buy_ids` provided, returns all media buys from current session context +- Context established by previous operations (e.g., [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy)) + +### Status Filtering +- Defaults to `["active"]` if not specified +- Can be single string (`"active"`) or array (`["active", "paused"]`) +- Valid filter values are media-buy lifecycle statuses: `pending_creatives`, `pending_start`, `active`, `paused`, `completed` +- `reporting_delayed` and `failed` are delivery/reporting statuses returned in webhook contexts, not request filter values +- Some legacy integrations may emit `pending`; treat it as equivalent to `pending_start` + +### Date Ranges +- If dates not specified, returns campaign lifetime delivery data +- Both `start_date` and `end_date` must be provided together — partial date ranges are invalid +- Date format: `YYYY-MM-DD` +- **Start-inclusive, end-exclusive**: `start_date` is included, `end_date` is excluded. For example, `start_date: "2026-01-01"` and `end_date: "2026-01-02"` returns data for January 1st only. +- Products declare date range support in `reporting_capabilities.date_range_support` +- Products with `date_range_support: "lifetime_only"` reject requests that include `start_date`/`end_date` with an [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) error +- Products with `date_range_support: "date_range"` accept date parameters and filter delivery data accordingly +- Daily breakdown may be truncated for long date ranges to reduce response size + +### Metric Availability +- **Universal**: Impressions, spend (available on all platforms) +- **Format-dependent**: Clicks, completed_views, completion_rate (depends on inventory type and platform capabilities) +- **Audience**: Reach, frequency (available on platforms with deduplicated measurement) +- **Commerce attribution**: Conversions, conversion_value, roas, new_to_brand_rate (available on commerce media and streaming platforms) +- **Engagement**: Follows, saves, engagements, profile_visits (available on social and streaming platforms) +- **Attribution window**: `attribution_window` describes the lookback windows and model used for conversion attribution (e.g., 14-day click, 1-day view, last_touch) +- **Package-level**: All metrics broken down by package with pacing_index + +## Data Freshness + +- Reporting data typically has 2-4 hour delay +- Real-time impression counts not available +- Use for periodic reporting and optimization decisions, not live monitoring + +**Phased-maturation channels**: Data freshness differs for channels where billing-grade data is produced in phases rather than arriving final on day one — broadcast TV (Live → C3 → C7 DVR accumulation, final C7 ~15–22 days after broadcast), DOOH (tentative plays → post-IVT/fraud-check final), digital with IVT filtering (raw → post-GIVT → post-SIVT), and podcast (7-day → 30-day downloads). Products with `reporting_capabilities.measurement_windows` declare these timelines. Buyers reconcile against the `measurement_window` specified in `billing_measurement` on the agreed terms. See [Accountability](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability) for measurement terms and [Optimization and reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) for the full lifecycle. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) | No credentials presented | Provide credentials via auth header | +| [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) | Credentials rejected (expired / revoked) | Human credential rotation required; do not auto-retry | +| [`MEDIA_BUY_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-media-buy-not-found) | Media buy doesn't exist | Verify `media_buy_id`; for legacy correlation use [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) + `context.internal_campaign_id` | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | A date string or filter violates its schema constraints | Use YYYY-MM-DD dates and a documented status value | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | Only one date is present, or `end_date` is not after `start_date` | Supply both dates with `start_date < end_date`, or omit both for lifetime delivery | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Product only supports lifetime reporting | Omit `start_date` and `end_date`. Check `reporting_capabilities.date_range_support` on the product. | +| [`UNSUPPORTED_GRANULARITY`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-granularity) | Requested `time_granularity` is not in the product's `windowed_pull_granularities` | Re-issue with a granularity from `error.details.supported_granularities`, or omit `time_granularity` to fall back to cumulative date-range pulls. See [Windowed pull recovery](#windowed-pull-recovery). | + +A valid query with no matching media buys succeeds with an empty `media_buy_deliveries` array. + +## Package-Level Metrics + +The `by_package` array provides per-package delivery details with these key fields: + +**Buyer Control**: +- **`paused`**: Whether the package is currently paused by the buyer (true/false) + +**System State**: +- **`delivery_status`**: System-reported operational state: + - `delivering` - Package is actively delivering impressions + - `not_delivering` - Package recorded zero impressions for the entire reporting window while it was in-flight. Sellers should only report this for a final window; a provisional zero may reflect measurement lag. + - `completed` - Package finished successfully + - `budget_exhausted` - Package ran out of budget + - `flight_ended` - Package reached its end date + - `goal_met` - Package achieved its impression/conversion goal + +**Performance**: +- **`pacing_index`**: Delivery pace (1.0 = on track, below 1.0 = behind, above 1.0 = ahead) +- **`rate`**: Effective pricing rate (e.g., CPM) +- **`pricing_model`**: How the package is billed (cpm, cpcv, cpp, revenue_share, etc.) +- **`commissionable_value`**: For `revenue_share`, the settled attributed value to which the selected `commission_rate` applies. Verify `spend = round_currency(commissionable_value × commission_rate)`. + +**Accountability**: +- **`missing_metrics`**: Metrics the binding reporting contract advertised but that are not populated in this report. Each entry uses an explicit `scope` discriminator: `{ "scope": "standard", "metric_id": "completed_views" }` for entries from the closed `available-metric.json` enum, `{ "scope": "vendor", "vendor": { "domain": "..." }, "metric_id": "attention_units" }` for vendor-defined metrics. Standard entries MAY carry a `qualifier` mirroring the `committed_metrics` qualifier (e.g., `{ "scope": "standard", "metric_id": "viewable_rate", "qualifier": { "viewability_standard": "mrc" } }` flags a missing MRC commitment even when GroupM viewability was reported, or `{ "scope": "standard", "metric_id": "completion_rate", "qualifier": { "completion_source": "vendor_attested" } }` flags a missing vendor-attested commitment even when seller-attested completion was reported — the paths are not interchangeable). Reconciled against `package.committed_metrics` (filtered to entries where `committed_at < reporting_period.end`) when present; falls back to the product's current `reporting_capabilities.available_metrics` and `vendor_metrics` when absent. Empty array (or absent) indicates clean delivery against the contract; non-empty signals an accountability breach. Sellers MUST exclude metrics that are not yet measurable for the current `measurement_window` (e.g., post-IVT counts during the live window) — those will appear (or not) when a wider window supersedes this report via `supersedes_window`. +- **`vendor_metric_values`**: Reported values for vendor-defined metrics that the product's `reporting_capabilities.vendor_metrics` declared (proprietary attention, emissions, panel demographics, brand-lift surveys, etc.). Each entry carries `{ vendor, metric_id, value, unit?, measurable_impressions?, breakdown? }`. The `measurable_impressions` field is the coverage denominator — vendor measurement is rarely 100% of delivery, since vendors only score impressions where their SDK fires or their panel matches. Buyers compute coverage as `measurable_impressions / impressions`. When `measurable_impressions` is absent, coverage is unspecified — buyers MUST NOT compute a coverage rate or assume full coverage. When a declared vendor metric is omitted entirely from this array, infer no measurement happened (no integration). JIC or panel-based co-viewing adjustments, claim reconciliation, confidence intervals, and panel sizes belong here, usually in `breakdown`, rather than in buy-time signal targeting definitions. + +**Key Distinction**: `paused` reflects buyer control, while `delivery_status` reflects system reality. A package can be not paused but have `delivery_status: "budget_exhausted"`. + +## Creative-Level Metrics + +When the seller supports creative-level reporting (`supports_creative_breakdown` in reporting capabilities), each package includes a `by_creative` array with per-creative delivery metrics. + +Each creative entry includes: +- **`creative_id`**: Creative identifier matching the creative assignment +- **`weight`**: Delivery weight for this creative during the reporting period (0-100) +- All standard delivery metrics (impressions, spend, clicks, ctr, etc.) + +```json +{ + "by_package": [ + { + "package_id": "pkg_001", + "spend": 5000, + "impressions": 100000, + "pricing_model": "cpm", + "rate": 50, + "currency": "USD", + "delivery_status": "delivering", + "by_creative": [ + { + "creative_id": "hero_video_30s", + "weight": 60, + "impressions": 60000, + "spend": 3000, + "clicks": 3000, + "ctr": 0.05, + "completion_rate": 0.72 + }, + { + "creative_id": "hero_video_15s", + "weight": 40, + "impressions": 40000, + "spend": 2000, + "clicks": 1200, + "ctr": 0.03, + "completion_rate": 0.85 + } + ] + } + ] +} +``` + +For deeper creative analytics including variant-level delivery data (asset combination optimization, generative creative), use [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery). This is a Creative Protocol task — call it on any agent that implements the Creative Protocol, which may be the same sales agent if it declares `"creative"` in `supported_protocols`. See [Creative capabilities on sales agents](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities). + +## Catalog-item reporting + +For catalog-driven packages (packages with a `catalog` field), the seller can return per-catalog-item delivery in the `by_catalog_item` array within each package. + +Each entry identifies the catalog item and includes standard delivery metrics: + +| Field | Description | +|-------|-------------| +| `content_id` | The item identifier (SKU, GTIN, job ID, etc.) | +| `content_id_type` | Identifier type (`sku`, `gtin`, `job_id`, etc.) matching the catalog's `content_id_type` | +| Standard metrics | `impressions`, `spend`, `clicks`, `ctr`, `conversions`, `roas`, and other delivery metrics | + +This is optional. Sellers that support item-level reporting populate `by_catalog_item`; sellers that do not simply omit it. + +```json +{ + "by_package": [ + { + "package_id": "pkg_001", + "spend": 5000, + "impressions": 100000, + "pricing_model": "cpc", + "rate": 1.20, + "currency": "USD", + "delivery_status": "delivering", + "by_catalog_item": [ + { + "content_id": "SKU-12345", + "content_id_type": "sku", + "impressions": 45000, + "spend": 2250, + "clicks": 1800, + "ctr": 0.04, + "conversions": 90, + "roas": 4.2 + }, + { + "content_id": "SKU-67890", + "content_id_type": "sku", + "impressions": 55000, + "spend": 2750, + "clicks": 2200, + "ctr": 0.04, + "conversions": 110, + "roas": 3.8 + } + ] + } + ] +} +``` + +## Windowed pull recovery + +`reporting_webhook` fires at the buyer's chosen `reporting_frequency` (hourly through post_campaign). When a receiver is offline long enough for transport retries to expire, the buyer loses per-window detail unless GET can reproduce the same slices. `time_granularity` + `include_window_breakdown` close that gap. + +### Capability check + +Sellers declare which granularities they honor for pull recovery via `reporting_capabilities.windowed_pull_granularities`. Buyers MUST check the capability before requesting `time_granularity`: + +```json test=false +{ + "reporting_capabilities": { + "available_reporting_frequencies": ["hourly", "daily"], + "windowed_pull_granularities": ["daily"] + } +} +``` + +The seller in this example emits hourly webhooks but only honors daily pulls — common in stream-tap architectures where the webhook is a Kafka tap and historical pulls go through a warehouse. Two-paths-parity holds at the **declared** set; for hourly recovery, the webhook is primary. Sellers that want full parity declare every frequency they fire. + +### Requesting windowed slices + +```json test=false +{ + "media_buy_ids": ["mb_12345"], + "start_date": "2026-06-01", + "end_date": "2026-06-02", + "time_granularity": "hourly", + "include_window_breakdown": true +} +``` + +### Response shape + +Each media buy gains a `windows[]` array on the response: + +```json test=false +{ + "media_buy_deliveries": [ + { + "media_buy_id": "mb_12345", + "status": "active", + "totals": { "impressions": 12345678, "spend": 5432.10 }, + "by_package": [ /* cumulative per-package — unchanged */ ], + "windows": [ + { + "window_start": "2026-06-01T00:00:00Z", + "window_end": "2026-06-01T01:00:00Z", + "totals": { "impressions": 510234, "spend": 226.05 }, + "by_package": [ + { "package_id": "pkg_001", "impressions": 510234, "spend": 226.05 } + ], + "is_final": true + }, + { + "window_start": "2026-06-01T01:00:00Z", + "window_end": "2026-06-01T02:00:00Z", + "totals": { "impressions": 488112, "spend": 215.83 }, + "is_final": true + } + ] + } + ] +} +``` + +Slices are ordered by `window_start` ascending; consecutive rows are contiguous (each row's `window_end` equals the next row's `window_start`). Each slice payload is shape-aligned with what `reporting_webhook` would have delivered for the same window — a buyer reconciling a missed webhook joins on `(media_buy_id, window_start)`. + +### Spec contract + +- **Capability-scoped MUST** — sellers MUST honor `time_granularity` requests for any value in `windowed_pull_granularities`. Pulls outside the declared set return [`UNSUPPORTED_GRANULARITY`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-granularity). +- **Asymmetric is honest** — sellers MAY emit higher-frequency webhooks than they expose for pull. Declaring `available_reporting_frequencies: ["hourly", "daily"]` with `windowed_pull_granularities: ["daily"]` is valid; the buyer treats the hourly webhook as primary at that frequency. +- **Same-shape recovery** — slice payloads mirror webhook fire payloads at the same granularity so a buyer's reconciliation pipeline does not branch on transport path. + +This surface anchors [snapshot-and-log](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log) Rule 4 (either path is complete) for data-bearing events. See that page for the broader contract. + +## Dimension Breakdowns + +When you include `reporting_dimensions` in the request, the response includes dimensional breakdown arrays within each `by_package` entry. Each breakdown entry inherits all fields from `delivery-metrics` plus dimension-specific identifiers. + +### Requesting breakdowns + +```json test=false +{ + "media_buy_ids": ["mb_123"], + "reporting_dimensions": { + "geo": { "geo_level": "metro", "system": "nielsen_dma", "limit": 10 }, + "device_type": {}, + "demographic": { + "age_ranges": [{ "min": 26, "max": 30, "include_unknown": false }] + }, + "placement": { "limit": 5, "sort_by": "roas" }, + "spot": {} + } +} +``` + +Geo, device, audience, demographic, and placement dimensions accept optional `limit` and `sort_by` (any value from the `sort-metric` enum; defaults to `spend`). Geo requires `geo_level` (`country`, `region`, `metro`, `postal_area`). Demographic accepts optional canonical `age_ranges`. Each requested range must be supported by the product's `supports_demographic_breakdown.age`: `exact_predicates` accepts ranges within its declared bounds, while `enumerated_intervals` accepts only exact declared intervals. Unsupported ranges return [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature); the seller never substitutes a wider or narrower bucket. Omitting `age_ranges` requests the product's native declared breakdown. The spot log accepts only `limit`; its canonical order is `aired_at` ascending. Breakdowns are per-dimension only — cross-dimensional intersections are not supported. + +### Available dimensions + +| Dimension | Breakdown field | Required fields | Additional fields | Capability declaration | +|-----------|----------------|-----------------|-------------------|------------------------| +| Geography | `by_geo` | `geo_level`, `geo_code`, `impressions`, `spend` | `system`, `country`, `geo_name` | `supports_geo_breakdown` | +| Device type | `by_device_type` | `device_type`, `impressions`, `spend` | — | `supports_device_type_breakdown` | +| Device platform | `by_device_platform` | `device_platform`, `impressions`, `spend` | — | `supports_device_platform_breakdown` | +| Audience | `by_audience` | `audience_id`, `audience_source`, `impressions`, `spend` | `audience_name` | `supports_audience_breakdown` | +| Demographic | `by_demographic` | `demographic`, `demographic_system`, `impressions`, `spend` | `age`, other delivery metrics | `supports_demographic_breakdown` | +| Placement | `by_placement` | `placement_id`, `impressions`, `spend` | `publisher_domain`, `placement_name` | `supports_placement_breakdown` | +| Spot/as-run | `by_spot` | `spot_id`, `aired_at` | `impressions`, `network`, `station`, `daypart`, other delivery metrics | `supports_spot_breakdown` | + +Check `reporting_capabilities` on the product to discover which dimensions are available. Product-level capabilities are authoritative since different products from the same seller may support different breakdowns. + +`demographic_targeting` declares what the product can execute; `supports_demographic_breakdown` separately declares what it can measure and report. A product can therefore target 26–30 but disclose fixed 25–34 reporting. Buyers MUST NOT infer exact reporting from targeting capability or parse equivalence from a native label. `demographic` uses the notation of its accompanying `demographic_system`; canonical `age`, when present, is the authoritative machine-comparable interval. + +`supports_geo_breakdown`, `supports_demographic_breakdown`, and `supports_spot_breakdown` are structured capability objects; the other declarations in this table are boolean flags. Demographic capability declares exact predicates versus fixed intervals, available measurement systems, and whether small cells may be suppressed. `supports_spot_breakdown.available_metrics` lists metrics available at spot grain; an empty array means the product supplies as-run airing evidence but no per-spot delivery metrics. + +Placement identity is publisher-scoped. Placement rows MAY carry `publisher_domain` — the publisher namespace from the product's `placements[]` entry — so buyers can treat `{publisher_domain, placement_id}` as the stable placement identity for multi-publisher products when it is present. Sellers SHOULD emit `publisher_domain` whenever the product placement carries it (always true for `kind: "publisher_ref"`); sellers MAY omit it only for `kind: "seller_inline"` placements in a legacy single-publisher context where the seller agent's own domain is the namespace. When `publisher_domain` is omitted, buyers MAY interpret `placement_id` relative to the seller agent's own publisher domain only in that legacy single-publisher context; otherwise buyers should not infer a cross-publisher placement key. `publisher_domain` is single-valued because each placement belongs to exactly one publisher namespace. + +Spot rows are channel-neutral as-run records. Linear TV commonly supplies `network`, radio commonly supplies `station`, and sellers MAY populate both; neither is required. `spot_id` identifies the scheduled occurrence and remains stable when the same airing is re-reported across Live, C3, C7, or another measurement-window progression. `aired_at` proves that it aired. Sellers MUST order rows by `aired_at` ascending. When `reporting_dimensions.spot.limit` is omitted, sellers SHOULD return the complete log for the requested reporting period. `by_spot_truncated` tells the buyer whether the returned log is complete. + +Delivery metrics on a spot row are optional. Omission means the metric is not yet available in the package's current `measurement_window`, or the product did not declare it in `supports_spot_breakdown.available_metrics`. A later window may return the same `spot_id` with impressions populated. An explicit `impressions: 0` is a measured zero; it does not mean pending or unavailable, and `null` is invalid. + +### Truncation + +Each breakdown array has a sibling boolean flag (e.g., `by_geo_truncated`). When `true`, additional rows exist beyond the returned set. When `false`, the list is complete. Sellers MUST return the truncated flag whenever the corresponding breakdown array is present. Metric dimensions are sorted by the requested `sort_by` value descending; spot rows always use `aired_at` ascending. + +Demographic reporting also returns `by_demographic_suppressed`. `true` means privacy, policy, or measurement thresholds omitted otherwise reportable rows, so the visible rows may not reconcile to package totals. This is distinct from truncation caused by a row limit. + +### Audience sources + +The `audience_source` field indicates where the audience segment originated: + +| Source | Description | Targetable? | +|--------|-------------|-------------| +| `synced` | Buyer's first-party data via [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) | Yes — use `audience_include`/`audience_exclude` | +| `platform` | Seller's native segments (interest, behavioral) | No — informational | +| `third_party` | External data provider segments | No — informational | +| `lookalike` | Platform-generated expansion from a seed | No — informational | +| `retargeting` | Prior engagement via seller's pixel/tag | No — informational | +| `unknown` | Unclassified or unrecognized audience source | No — informational | + +## Best Practices + +**1. Check Date Range Support** +Before requesting date-filtered delivery, check `reporting_capabilities.date_range_support` on the product. Products with `lifetime_only` support reject date range requests — omit `start_date` and `end_date` to get campaign lifetime data instead. + +**2. Use Date Ranges for Analysis** +For products that support date ranges, specify dates for period-over-period comparisons and trend analysis. + +**3. Monitor Pacing Index** +Aim for 0.95-1.05 pacing index. Values outside this range indicate delivery issues. + +**4. Check Daily Breakdown** +Identify delivery patterns and weekend/weekday performance differences. + +**5. Compare Package Performance** +Use `by_package` breakdowns to identify best-performing inventory. Check both `paused` state and `delivery_status` to understand why packages aren't delivering. + +**6. Track Status Changes** +Use multi-status queries to understand why campaigns were paused or completed. + +## Post-Delivery Governance Validation + +Delivery reporting is not the final step. When campaign governance is active, delivery data feeds into governance validation to detect unauthorized supply paths, geo drift, and pacing violations. + +The governance feedback loop: + +1. Pull delivery data via `get_media_buy_delivery` +2. Report outcomes to the governance agent via [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) +3. The governance agent compares actual delivery against planned parameters (drift detection) +4. Validate property delivery via [`validate_property_delivery`](/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery) to catch unauthorized supply paths + +| Governance task | Purpose | +|----------------|---------| +| [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) | Feed delivery data to the governance agent for budget tracking and drift detection | +| [`validate_property_delivery`](/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery) | Validate delivery records against property lists — catches ads running on unauthorized properties | +| [`validate_content_delivery`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery) | Validate content artifacts against brand suitability standards | +| [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) | View the full plan state and audit trail | + +Without this feedback loop, delivery data is reported but never validated. Budget overruns, pacing divergence, geo drift, and unauthorized supply paths go undetected. + +## Next Steps + +After retrieving delivery data: + +1. **Optimize Campaigns**: Use [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) to adjust budgets, pacing, or targeting +2. **Provide Feedback**: Use [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) to share results with seller +3. **Update Creatives**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or inline `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) for inline-only sellers +4. **Create Follow-Up Campaigns**: Use [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) based on insights + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/) - Complete campaign workflow +- [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) - Async patterns and status handling +- [Performance Optimization](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) - Using delivery data for optimization diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys.mdx new file mode 100644 index 0000000000..5b3c7075eb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys.mdx @@ -0,0 +1,676 @@ +--- +title: get_media_buys +description: "get_media_buys task — retrieve media buy status in AdCP including creative approvals, missing assets, configuration, and optional near-real-time delivery snapshots." +"og:title": "AdCP — get_media_buys" +testable: false +--- + + +Retrieve the current operational state of media buys: configuration, creative approval status, missing assets, and optional near-real-time delivery snapshots. + +**Response Time**: ~1 second + +## Scope of Results + +Sales agents MUST return every media buy owned by the authenticated account, regardless of how the buy was created — via AdCP [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy), via the seller's own APIs, via manual trafficking, via legacy or third-party systems. Scope is **account ownership**, not creation surface. A `media_buy_id` returned here identifies any order in the seller's ad server accessible to the authenticated caller. + +Any media buy returned by `get_media_buys` MUST be reachable by every task in its `valid_actions`. Sales agents MUST NOT mark a buy read-only, hide it, or refuse updates on the basis that it was not originally created via AdCP. When an action is unavailable for business reasons (contractual obligations, platform constraints, policy), the seller MUST omit only that action from `valid_actions` — never the whole set, and never merely because the buy was created outside AdCP. A seller that returns non-AdCP buys with a systematically empty `valid_actions` is non-conformant; that pattern is indistinguishable from hiding the buy. + +Sellers that need to partition inventory away from a caller MUST do so at the **account boundary**, not within-account. See [Account Ownership vs. Creation Surface](/dist/docs/3.2.0-beta.4/media-buy/specification#account-ownership-vs-creation-surface). + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-media-buys-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buys-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-media-buys-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-media-buys-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. When omitted, returns data across all accessible accounts. | +| `media_buy_ids` | string[] | No* | Array of media buy IDs to retrieve | +| `status_filter` | string \| string[] | No | Status filter: `"pending_creatives"`, `"pending_start"`, `"active"`, `"paused"`, `"completed"`, `"rejected"`, `"canceled"`. Defaults to `["active"]` only when `media_buy_ids` is omitted. | +| `indicator_types` | string[] | No | Return buys with at least one requested current indicator on the buy, a package, or a package–creative assignment. Buyers MUST request only advertised types; sellers MAY reject unsupported filtering with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). | +| `include_snapshot` | boolean | No | When true, include near-real-time delivery snapshots for each package. Defaults to `false`. | +| `include_history` | integer | No | Include the last N revision history entries per media buy (returns min(N, available)). 0 or omit to exclude. Max 1000. | +| `include_webhook_activity` | boolean | No | When true, each media buy includes a `webhook_activity` array with recent delivery-report webhook fires for the calling principal. Defaults to `false`. See [Webhook activity](#webhook-activity). | +| `webhook_activity_limit` | integer | No | Per-buy cap on returned webhook records (most-recent first). Range 1–200, default 50. Ignored when `include_webhook_activity` is false. | +| `pagination` | object | No | Cursor-based pagination controls (`max_results`, `cursor`) for broad queries. | + +*`media_buy_ids` filters results to specific media buys. If neither is provided, the query is scope-based and uses `status_filter` + `pagination`. + +When `media_buy_ids` are provided, no implicit status filtering is applied. Pass `status_filter` explicitly if you want to filter identified buys by status. + +### Deterministic filter contract + +Every returned `media_buys[]` row MUST have a `media_buy_id` in +`media_buy_ids` when that filter is present and a `status` in `status_filter` +when that filter is present. When both are supplied, both predicates apply to +every row, across every page. A seller MUST NOT accept a schema-valid filter and +return unfiltered account results. + +A filter can validly leave the result unchanged when every accessible buy +already matches. Conformance is established from the returned rows' ID and +status membership—not by requiring filtered and unfiltered response payloads to +differ. + +## Response + +Returns an array of media buys with current status, creative approval state, and optionally delivery snapshots: + +| Field | Description | +|-------|-------------| +| `media_buys` | Array of media buy objects | +| `pagination` | Cursor pagination metadata (`has_more`, `cursor`, optional `total_count`) | +| `errors` | Task-specific errors (e.g., media buy not found) | + +### Media Buy Object + +<Note> +**3.1 vocabulary note.** `get_media_buys` returns the lifecycle state on a nested `media_buys[].status` field (no envelope collision — nested at depth 1). [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) success responses return the same state on a top-level **`media_buy_status`** field (added in 3.1 to avoid colliding with the envelope task-status `status`). Same enum, two field names in 3.1 — the cascade unifies in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)). Buyers maintaining cross-call state should treat the two as the same logical value. See [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status) for the full picture. +</Note> + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Seller's media buy identifier | +| `name` | Persisted human-readable label for trafficking UI display and buyer-seller communication. Sellers MUST return it for AdCP-created buys that supplied `name`; it may be absent for external buys or buys created without one. It is not an identifier or financial reference. | +| `accepted_proposal_id` | Current immutable commercial snapshot used to begin [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals); present for compact-lifecycle buys. | +| `accepted_proposal_terms_digest` | Digest binding the current accepted proposal terms for recovery and governance verification. | +| `accepted_proposal` | Complete accepted canonical proposal for compact-lifecycle buys. Together with the ID and digest, this lets a restarted client refine the current commercial envelope without reconstructing historical offers. | +| `invoice_recipient` | Per-buy invoice recipient when provided at creation. Confirms the seller accepted the billing override. Bank details are omitted (write-only). | +| `status` | Current status (`pending_creatives`, `pending_start`, `active`, `paused`, `completed`, `rejected`, `canceled`). Maps to `media_buy_status` on `create_media_buy` / `update_media_buy` success responses (3.1 vocabulary note above). | +| `status_as_of` | ISO 8601 timestamp when the seller last refreshed the returned media-buy-level `status` from its source of truth. For rolled-up statuses, this MUST NOT be later than the oldest upstream status observation that could affect the returned roll-up. Optional; omitted or `null` makes no freshness assertion, and buyers MUST NOT infer live status from absence. Use this to interpret cached or rolled-up statuses separately from `updated_at`, which means the media buy's last modification time. | +| `currency` | ISO 4217 currency for media-buy-level monetary values | +| `total_budget` | Hard aggregate lifetime budget (in `currency`) | +| `daily_budget_cap` | Current hard aggregate spend ceiling per calendar day. It limits total buy spend without allocating package amounts. | +| `budget_cap_timezone` | Shared IANA calendar-day boundary for every aggregate and package daily cap. Present whenever any daily cap is set. | +| `budget_allocation` | Fixed or seller-optimized cross-package allocation configuration. Omission means fixed for legacy buys. | +| `pacing` | Aggregate media-buy pacing strategy | +| `bidding` | Media-buy-authored bidding policy. Packages that inherit it omit their own `bidding` block. | +| `creative_deadline` | Creative upload deadline (ISO 8601) | +| `confirmed_at` | ISO 8601 timestamp when the seller committed to this media buy. May be `null` until seller commitment occurs in deferred/manual approval flows; stable after it is set. | +| `cancellation` | Cancellation metadata (present only when `status` is `canceled`). Object with `canceled_at` (ISO 8601), `canceled_by` (`"buyer"` or `"seller"`), and optional `reason`. | +| `revision` | Current revision number. Pass in [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) or the 3.x `update_media_buy` facade for optimistic concurrency. | +| `valid_actions` | Actions the buyer can perform in the current state (e.g., `["pause", "cancel", "update_budget"]`). See [valid actions mapping](#valid-actions-mapping). | +| `available_actions` | Canonical routed actions for compact-lifecycle buys, including whether each action uses [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy), proposal refinement, or another task. Required whenever `accepted_proposal` is present. | +| `indicators` | Current buy-level seller indicators. In 3.2, `budget_constrained` is valid here. Sibling evaluation fields define exact type coverage and freshness. | +| `history` | Revision history entries, most recent first. Only present when `include_history > 0`. Append-only — entries are never modified or deleted. | +| `webhook_activity` | Recent delivery, health, `indicators.changed`, and `creative.assignment_changed` attempts relevant to this buy. Only present when requested and supported. | +| `context` | Opaque media-buy-level correlation data echoed unchanged from `create_media_buy`. Sellers MUST include persisted context when the media buy was created through AdCP with context, and MAY omit it for media buys created outside AdCP or without context. Use it to reconcile `media_buy_id` with buyer tracking state. | +| `packages` | Array of packages with creative status and optional snapshots | + +### Package Object + +| Field | Description | +|-------|-------------| +| `package_id` | Seller's package identifier | +| `product_id` | Product identifier this package is purchased from. For packages created from an explicit `create_media_buy` package request, sellers MUST echo the request package's `product_id` on every response package object that represents that requested package. | +| `budget` | Hard lifetime package spend cap in `media_buy.currency`. In seller-optimized mode this is not a current allocation and may be absent. | +| `daily_budget_cap` | Optional subordinate hard package ceiling per shared media-buy cap day. It is not a reserved allocation. | +| `min_spend_target` | Soft lifetime package spend target in `media_buy.currency` accepted for seller-optimized allocation. | +| `pacing` | Package pacing preference. It is subordinate to media-buy aggregate `pacing` and cannot cause aggregate delivery to exceed that strategy. | +| `currency` | Legacy/external-buy package denomination. For AdCP-authored buys this equals `media_buy.currency`; it does not reinterpret canonical budget or bidding amounts. | +| `bidding` | Package-authored bidding override. `{automatic: true}` explicitly overrides media-buy controls; omission inherits media-buy `bidding`. | +| `bid_price` | Deprecated legacy bid representation; 3.2 sellers should normalize and echo `bidding`. | +| `optimization_goals` | Current package objective functions, separate from currency-bearing `bidding` policy. | +| `format_ids` | Legacy named-format IDs supplied on `create_media_buy`, echoed whenever the original request included them, including dual-emission cases where another selector won precedence. | +| `format_option_refs` | Structured 3.1+ format option references supplied on `create_media_buy`, echoed whenever the original request included them. | +| `format_kind` | Direct canonical selector supplied on `create_media_buy`, echoed whenever the original request included it, including informational-echo cases where another selector won precedence. | +| `params` | Parameters for the direct canonical selector in `format_kind`, echoed whenever the original request included them; requires `format_kind`. | +| `targeting_overlay` | Complete effective targeting currently applied to the package, including configured-product constraints and later buyer additions. Property, collection, and placement selection are represented here alongside audience and geography. | +| `targeting_resolution` | Generic targeting execution readback. When demographics were requested or applied, `targeting_resolution.demographics` contains the exact-only `equivalent: true` predicate, execution mechanism, and effective determination bases. Other targeting dimensions can evolve inside the same envelope. | +| `start_time` | Flight start time (ISO 8601). Check this before interpreting delivery status. | +| `end_time` | Flight end time (ISO 8601) | +| `paused` | Whether buyer has paused this package | +| `canceled` | Whether this package has been canceled (irreversible) | +| `cancellation` | Cancellation metadata (present only when `canceled` is true). Object with `canceled_at` (ISO 8601), `canceled_by` (`"buyer"` or `"seller"`), and optional `reason`. | +| `creative_deadline` | Per-package creative deadline (ISO 8601). When absent, the media buy's `creative_deadline` applies. | +| `context` | Opaque package-level correlation data echoed unchanged from the `create_media_buy` package request. Sellers MUST include persisted context when the package was created through AdCP with context, and MAY omit it for packages created outside AdCP or without context. Buyers targeting mixed seller populations can use the per-package correlation value they included on create, commonly `context.buyer_ref`, to map `package_id` back to their line items when a legacy create response did not echo `product_id`. | +| `creative_approvals` | Array of creative approval states (see below) | +| `indicators` | Current package-level seller indicators such as diversity, audience saturation, inventory forecast, pacing, or budget constraint | +| `formats_pending` | Canonical package-time format declarations from `formats_to_provide` that do not yet have creative coverage. Full declarations let buyers select a compatible creative agent even when no option ID exists. | +| `format_ids_pending` | **Deprecated in 3.2.** Legacy named-format projection of `formats_pending` for older 3.x peers. | +| `snapshot_unavailable_reason` | Reason code when `include_snapshot: true` but no snapshot is returned for this package | +| `snapshot` | Near-real-time delivery snapshot (when `include_snapshot: true`) | + +### Creative Approval Object + +| Field | Description | +|-------|-------------| +| `creative_id` | Creative identifier | +| `approval_status` | `pending_review`, `approved`, `partially_approved`, or `rejected` | +| `rejection_reason` | Explanation of rejection (when `approval_status` is `rejected`) | +| `approval_scopes` | Complete publisher/placement outcomes when `approval_status` is `partially_approved` | +| `indicators` | Current seller indicators scoped to this package–creative relationship | +| `indicator_types_evaluated` | Exact indicator types covered by this snapshot; omitted types remain unknown | +| `indicators_as_of` | When the seller completed the evaluation represented by `indicators` | +| `indicators_evaluated_scope` | Optional publisher or placement coverage; omission means the whole assignment was evaluated | + +Indicators are deliberately attached here rather than to the creative globally. A creative may be fatigued in one package or publisher context while remaining effective elsewhere. + +```json +{ + "creative_id": "acme_summer_video", + "approval_status": "approved", + "indicator_types_evaluated": ["creative_fatigue"], + "indicators_as_of": "2026-08-04T12:00:00Z", + "indicators": [ + { + "type": "creative_fatigue", + "detected_at": "2026-08-03T09:00:00Z" + } + ] +} +``` + +The media buy itself may also carry `budget_constrained`; packages may carry `creative_diversity_low`, `audience_saturation`, `inventory_shortfall_forecast`, `pacing_risk`, or `budget_constrained`. Assignment types remain nested under `creative_approvals[]`. Omitted `indicators` is unknown; empty is evaluated-clear only for `indicator_types_evaluated` and declared coverage. See [Indicators and Warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators). + +For sellers that advertise `inline_creative_management` without a creative library, `creative_approvals` is the only standardized approval-state readback surface for the package's currently assigned inline creatives. It reports `creative_id`, aggregate `approval_status`, optional `rejection_reason`, and `approval_scopes` for mixed publisher outcomes, but it does not include the full `CreativeAsset` payload, placement routing, weights, or prior revisions submitted on `create_media_buy` or `update_media_buy`. Buyers should retain their own submitted creative bodies when integrating with inline-only sellers. + +Creative revisions are represented as `approval_status: "rejected"` with a specific `rejection_reason`. There is no package-level `input-required` status for creative edits; upload corrected library assets via [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives), or corrected inline-only package assets via `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy). + +### History Entry Object + +| Field | Required | Description | +|-------|----------|-------------| +| `revision` | Yes | Revision number after this change was applied | +| `timestamp` | Yes | ISO 8601 timestamp when this change occurred | +| `action` | Yes | What happened: `created`, `activated`, `paused`, `resumed`, `canceled`, `rejected`, `completed`, `updated_budget`, `updated_dates`, `updated_packages`, `package_canceled`, `package_paused`, `package_resumed` | +| `actor` | No | Identity of who made the change (server-derived from auth context, not caller-provided) | +| `summary` | No | Human-readable description (e.g., "Budget changed from $5,000 to $7,500 on pkg_abc") | +| `package_id` | No | Package affected, when the change targeted a specific package | + +History entries are **append-only** — sellers MUST NOT modify or delete previously emitted entries. Callers MAY cache entries by revision number. + +`revision` increments only when the seller applies a mutating state change or update. Reads, validation-only calls, and exact idempotency replays do not create history entries or bump revision. Buyers should treat the returned revision as the token for their next `update_media_buy` call intended to change state. + +`confirmed_at` is not a delivery status timestamp. It records seller commitment and remains stable through later pause/resume, activation, completion, cancellation, and reporting changes. + +### Snapshot Object + +| Field | Description | +|-------|-------------| +| `as_of` | ISO 8601 timestamp when the platform captured this snapshot | +| `staleness_seconds` | Maximum data age in seconds. Use this to interpret zero delivery: 900 (15 min) means zero is likely real; 14400 (4 hr) means reporting may still be catching up. | +| `impressions` | Total impressions delivered since package start | +| `spend` | Total spend since package start | +| `currency` | Optional snapshot currency override for `spend` | +| `clicks` | Total clicks since package start (when available) | +| `pacing_index` | Delivery pace (1.0 = on track, \<1.0 = behind, \>1.0 = ahead) | +| `delivery_status` | `delivering`, `not_delivering`, `completed`, `budget_exhausted`, `flight_ended`, `goal_met` | +| `ext` | Optional extension object for seller-specific operational fields | + +**`not_delivering`** means the package is within its scheduled flight but has delivered zero impressions for at least one full staleness cycle. Implementers must not return `not_delivering` until `staleness_seconds` have elapsed since package activation — a new package with no impressions in its first minutes is expected, not a problem. Check `start_time` to confirm the package is within its flight before acting on this status. + +For AdCP-authored buys, budget constraints and canonical bidding always use `media_buy.currency`. `snapshot.currency` identifies the reporting denomination for snapshot spend, and legacy/external buys may still carry `package.currency`; neither changes the denomination of buyer-authored 3.2 controls. + +### Webhook Activity + +When `include_webhook_activity: true`, each returned media buy MAY carry a `webhook_activity` array describing recent webhook fires relevant to that buy. It covers both per-buy reporting/health events and account-level `indicators.changed` or `creative.assignment_changed` invalidations whose payload names the buy. This is the buyer-side debug surface for the [persistent-channel webhook contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#persistent-channel-contract). + +The record shape, request-field names, scoping, retention floor, three-state presence, and cardinality rules are uniform across AdCP resources that adopt this surface. See [Webhook activity log pattern](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log#webhook-activity-log-pattern) on the snapshot/log contract page for the cross-resource normative section — the rules below restate it for the media-buy call site and add the media-buy-specific capability gate. + +Per-buy delivery events (`scheduled`, `final`, `delayed`, `adjusted`, `window_update`) and health events (`impairment`) use the buy's `push_notification_config`; their `subscriber_id` may be absent in a single-subscriber setup. Indicator and assignment invalidations use account `notification_configs[]`; their `subscriber_id` is required. Support for the latter is declared by `media_buy.relationship_notifications`, including whether this activity log is available. All share the same webhook delivery contract and buyer-side debug need. + +| Field | Description | +|-------|-------------| +| `idempotency_key` | Equals the `idempotency_key` carried in the webhook payload itself ([§ Dedup by `idempotency_key`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#dedup-by-idempotency_key)). Stable across retries of the same logical fire — buyers correlate this surface with their own endpoint logs via this exact field. Reference it when filing support tickets. | +| `notification_id` | Optional event-layer id copied from the webhook payload when the notification type defines one. Sellers SHOULD populate it on newly recorded attempts and MUST preserve the payload value when they do. It may be absent on retained records created before 3.2; point-in-time delivery-report fires do not define it. | +| `subscriber_id` | Identifies which registered webhook subscriber received this fire. Required for account-level indicator/assignment invalidations; may be absent for a single per-buy subscriber. Per-buy channels populate it once they support multiple subscribers (4.0+, see [#3009](https://github.com/adcontextprotocol/adcp/issues/3009)). | +| `fired_at` | ISO 8601 timestamp when the seller initiated this attempt. | +| `completed_at` | ISO 8601 timestamp when the response was observed (or terminal failure). Null while `status` is `pending`. | +| `notification_type` | Verbatim from the webhook payload: `scheduled`, `final`, `delayed`, `adjusted`, `window_update`, `impairment`, `indicators.changed`, or `creative.assignment_changed`. | +| `sequence_number` | Sequence number from the webhook payload — useful for spotting stale-sequence drops or gaps. Absent when the notification type does not carry one. | +| `attempt` | 1-indexed retry counter for this logical fire. Initial fire is `attempt: 1`. | +| `status` | `success`, `failed`, `timeout`, `connection_error`, or `pending`. See semantics below. | +| `url` | Target URL with **query string and fragment stripped**, and high-entropy / token-shaped path segments redacted. Match this against your registered URL by origin + path, not full URL. | +| `http_status_code` | HTTP status from the buyer's endpoint. Null when no HTTP response was received (`timeout`, `connection_error`, `pending`). | +| `response_time_ms` | Wall-clock latency between request send and response receipt. Null for non-completed attempts. | +| `payload_size_bytes` | Size of the request body the seller sent — useful for diagnosing oversized-payload rejections. | +| `error_message` | Short human-readable server-side classification of failure. Null for `success`. Sellers MUST NOT include request / response bodies or headers here. | + +**Status semantics:** + +- `success` — response received with a 2xx status. `http_status_code` populated. +- `failed` — response received with a non-2xx status. `http_status_code` populated; `error_message` describes the response. +- `timeout` — no response within the seller's configured timeout. `http_status_code` null. Operationally: the buyer's endpoint is reachable but slow / overloaded. +- `connection_error` — DNS, TLS, or socket failure before any HTTP response. `http_status_code` null. Operationally: the buyer's endpoint is unreachable or misconfigured. +- `pending` — attempt is in flight or queued for retry. `completed_at` is null; subsequent attempts appear with the same `idempotency_key` and incremented `attempt`. + +**Record cardinality:** one record per attempt. A successful first-attempt fire appears as a single record with `attempt: 1`. A 3-attempt retry trail (e.g., two failures then a success) appears as three records sharing `idempotency_key`. + +**Scoping (normative):** + +- `webhook_activity` MUST be scoped to the **calling principal**. When multiple buyer principals share visibility into the same media buy via account-level access, each principal sees only fires targeting its own endpoint. +- Sellers that surface this field **MUST** retain records for at least 30 days from each record's `completed_at` — uniformly across `success`, `failed`, `timeout`, and `connection_error` outcomes (all of which populate `completed_at`). For records still in `pending` status, the clock runs from `fired_at` until the attempt terminates and then transitions to 30 days from `completed_at` — retry trails do not age out mid-flight. Sellers that cannot honor this floor MUST omit the field entirely rather than return a shorter window; the three-state presence semantics give them a clean opt-out and buyers a single guarantee they can build against. +- This surface is a debug aid, not a full audit log. There is no cursor for older fires beyond `webhook_activity_limit` — buyers needing full history must persist webhook records on their own side. + +**Three-state presence semantics:** + +| State | Meaning | +|-------|---------| +| Field **omitted** | Seller does not surface an applicable activity log for this buy. Neither a declared per-buy webhook surface nor `media_buy.relationship_notifications.supports_webhook_activity` provides one, no relevant subscriber is registered, or the seller does not persist fire history. | +| Empty array `[]` | Seller persists fire history but has fired nothing recent for this principal. | +| Non-empty array | Actual fire records, most-recent first. | + +For per-buy events, sellers whose declared `propagation_surfaces` excludes `webhook` omit those records. That does not suppress account-level indicator/assignment records when `media_buy.relationship_notifications.supports_webhook_activity` is true. + +**Diagnosing an unexpected omission.** For a per-buy event, check the buy's `push_notification_config` and the seller's `capabilities.media_buy.propagation_surfaces` via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). For an indicator or assignment event, check the account's `notification_configs[]` and `media_buy.relationship_notifications.supports_webhook_activity`. If the relevant registration and capability both check out, omission is a seller-side persistence gap and warrants an operator ticket. + +**Privacy:** + +- The `url` field has its query string and fragment **stripped**, and sellers SHOULD redact path segments resembling shared secrets (high-entropy random material, UUID / token shapes). +- Request and response bodies are **not surfaced** by this field. A future `include_webhook_payloads` extension may add them under stricter authorization controls — out of scope here. +- `error_message` is a server-side classification string only — never request headers, never response bodies, never buyer-endpoint stack traces. + +#### Diagnose a webhook delivery problem + +<CodeGroup> + +```typescript TypeScript +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuysResponseSchema, type WebhookActivityRecord } from '@adcp/sdk'; + +// The WebhookActivityRecord type is regenerated by the SDK from +// /schemas/core/webhook-activity-record.json — once the SDK rebuilds against this +// branch's schemas the import resolves. The same type appears on every AdCP resource +// that surfaces webhook_activity[], so debug helpers can be written once and reused. +function latestAttempt(trail: WebhookActivityRecord[]): WebhookActivityRecord { + return trail.reduce((a, b) => (a.attempt >= b.attempt ? a : b)); +} + +const result = await testAgent.getMediaBuys({ + media_buy_ids: ['mb_12345'], + include_webhook_activity: true, + webhook_activity_limit: 20, +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuysResponseSchema.parse(result.data); + +for (const mediaBuy of validated.media_buys) { + // Three-state semantics — distinguish "seller does not surface" from "no recent fires". + if (mediaBuy.webhook_activity === undefined) { + console.log(`${mediaBuy.media_buy_id}: seller does not surface webhook activity for this buy`); + continue; + } + + const fires = mediaBuy.webhook_activity; + if (fires.length === 0) { + console.log(`${mediaBuy.media_buy_id}: no recent fires for this principal`); + continue; + } + + // Group attempts by idempotency_key so we can see the retry trail per logical fire. + const trails = new Map(); + for (const fire of fires) { + const trail = trails.get(fire.idempotency_key) ?? []; + trail.push(fire); + trails.set(fire.idempotency_key, trail); + } + + for (const [idempotencyKey, trail] of trails) { + // Pick the latest attempt by `attempt` number — robust against any iteration order. + const latest = latestAttempt(trail); + if (latest.status === 'success') continue; + + const detail = latest.error_message ?? latest.http_status_code ?? '—'; + console.log( + `${mediaBuy.media_buy_id} ${idempotencyKey} ` + + `(${latest.notification_type} seq=${latest.sequence_number}): ` + + `${latest.status} after ${trail.length} attempt(s) — ${detail}` + ); + } +} +``` + +```python Python +import asyncio +from collections import defaultdict +from adcp.testing import test_agent +from adcp.types import GetMediaBuysRequest, WebhookActivityRecord + +# WebhookActivityRecord is regenerated by the SDK from +# /schemas/core/webhook-activity-record.json — once the SDK rebuilds against this +# branch's schemas the import resolves. The same type appears on every AdCP resource +# that surfaces webhook_activity[]. +def latest_attempt(trail: list[WebhookActivityRecord]) -> WebhookActivityRecord: + return max(trail, key=lambda f: f.attempt) + +async def main(): + result = await test_agent.get_media_buys( + GetMediaBuysRequest( + media_buy_ids=['mb_12345'], + include_webhook_activity=True, + webhook_activity_limit=20, + ) + ) + + for media_buy in result.media_buys: + # Three-state semantics: distinguish "seller does not surface" from "no recent fires". + if media_buy.webhook_activity is None: + print(f"{media_buy.media_buy_id}: seller does not surface webhook activity for this buy") + continue + + fires = media_buy.webhook_activity + if not fires: + print(f"{media_buy.media_buy_id}: no recent fires for this principal") + continue + + trails = defaultdict(list) + for fire in fires: + trails[fire.idempotency_key].append(fire) + + for idempotency_key, trail in trails.items(): + latest = latest_attempt(trail) + if latest.status == 'success': + continue + + detail = latest.error_message or latest.http_status_code or '—' + print(f"{media_buy.media_buy_id} {idempotency_key} " + f"({latest.notification_type} seq={latest.sequence_number}): " + f"{latest.status} after {len(trail)} attempt(s) — {detail}") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Valid Actions Mapping + +The `valid_actions` array tells agents what operations are permitted on a media buy in its current state. Sellers SHOULD include this field. Expected values by status: + +| Status | Expected `valid_actions` | +|--------|------------------------| +| `pending_creatives` | `pause`, `cancel`, [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) | +| `pending_start` | `pause`, `cancel`, `sync_creatives` | +| `active` | `pause`, `cancel`, `update_budget`, `update_dates`, `update_packages`, `add_packages`, `sync_creatives` | +| `paused` | `resume`, `cancel`, `update_budget`, `update_dates`, `update_packages`, `add_packages`, `sync_creatives` | +| `completed` | *(empty array)* | +| `rejected` | *(empty array)* | +| `canceled` | *(empty array)* | + +Sellers MAY omit actions based on business rules (e.g., omit `cancel` when the media buy has contractual obligations that prevent cancellation). + +For creative changes, `sync_creatives` in `valid_actions` is a legacy creative-change action label, not proof that the `sync_creatives` task exists. Use the creative path the seller advertises: `sync_creatives` and `creative_assignments` for sellers with `creative.has_creative_library: true`, or `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) for inline-only sellers. + +## Common Scenarios + +### Check creative approval status + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.getMediaBuys({ + media_buy_ids: ['mb_12345'] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuysResponseSchema.parse(result.data); + +if (validated.errors?.length > 0) { + throw new Error(`Query failed: ${JSON.stringify(validated.errors)}`); +} + +for (const mediaBuy of validated.media_buys) { + for (const pkg of mediaBuy.packages) { + // Check for missing creatives + if (pkg.formats_pending?.length > 0) { + const labels = pkg.formats_pending.map(f => f.format_option_id ?? f.format_kind); + console.log(`Package ${pkg.package_id}: missing formats ${labels.join(', ')}`); + } + + // Check approval states + for (const approval of pkg.creative_approvals ?? []) { + if (approval.approval_status === 'rejected') { + console.log(`Creative ${approval.creative_id} rejected: ${approval.rejection_reason}`); + } else if (approval.approval_status === 'partially_approved') { + console.log(`Creative ${approval.creative_id} has mixed publisher approval`, approval.approval_scopes); + } else if (approval.approval_status === 'pending_review') { + console.log(`Creative ${approval.creative_id} pending review`); + } + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuysRequest + +async def main(): + result = await test_agent.get_media_buys( + GetMediaBuysRequest(media_buy_ids=['mb_12345']) + ) + + if result.errors: + raise Exception(f"Query failed: {result.errors}") + + for media_buy in result.media_buys: + for pkg in media_buy.packages: + # Check for missing creatives + if pkg.formats_pending: + labels = [f.format_option_id or f.format_kind for f in pkg.formats_pending] + print(f"Package {pkg.package_id}: missing formats {', '.join(labels)}") + + # Check approval states + for approval in pkg.creative_approvals or []: + if approval.approval_status == 'rejected': + print(f"Creative {approval.creative_id} rejected: {approval.rejection_reason}") + elif approval.approval_status == 'partially_approved': + print(f"Creative {approval.creative_id} has mixed publisher approval: {approval.approval_scopes}") + elif approval.approval_status == 'pending_review': + print(f"Creative {approval.creative_id} pending review") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Monitor delivery with snapshots + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.getMediaBuys({ + status_filter: 'active', + include_snapshot: true +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuysResponseSchema.parse(result.data); + +for (const mediaBuy of validated.media_buys) { + for (const pkg of mediaBuy.packages) { + const snap = pkg.snapshot; + if (!snap) continue; + + if (snap.delivery_status === 'not_delivering') { + console.log(`Package ${pkg.package_id}: zero delivery (data up to ${snap.staleness_seconds}s old)`); + } else if (snap.pacing_index !== undefined && snap.pacing_index < 0.8) { + console.log(`Package ${pkg.package_id}: underpacing at ${(snap.pacing_index * 100).toFixed(0)}%`); + } else { + console.log(`Package ${pkg.package_id}: ${snap.impressions.toLocaleString()} impressions, pacing ${snap.pacing_index?.toFixed(2)}`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuysRequest + +async def main(): + result = await test_agent.get_media_buys( + GetMediaBuysRequest( + status_filter='active', + include_snapshot=True + ) + ) + + if result.errors: + raise Exception(f"Query failed: {result.errors}") + + for media_buy in result.media_buys: + for pkg in media_buy.packages: + snap = pkg.snapshot + if not snap: + continue + + if snap.delivery_status == 'not_delivering': + print(f"Package {pkg.package_id}: zero delivery (data up to {snap.staleness_seconds}s old)") + elif snap.pacing_index is not None and snap.pacing_index < 0.8: + print(f"Package {pkg.package_id}: underpacing at {snap.pacing_index * 100:.0f}%") + else: + print(f"Package {pkg.package_id}: {snap.impressions:,} impressions, pacing {snap.pacing_index:.2f}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Campaign readiness check + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.getMediaBuys({ + media_buy_ids: ['mb_12345'] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = GetMediaBuysResponseSchema.parse(result.data); +const [mediaBuy] = validated.media_buys; +const issues = []; + +for (const pkg of mediaBuy.packages) { + if (pkg.formats_pending?.length > 0) { + issues.push(`Package ${pkg.package_id}: ${pkg.formats_pending.length} format(s) not yet uploaded`); + } + + const rejected = (pkg.creative_approvals ?? []).filter(a => a.approval_status === 'rejected'); + if (rejected.length > 0) { + issues.push(`Package ${pkg.package_id}: ${rejected.length} creative(s) rejected`); + } +} + +if (issues.length === 0) { + console.log('Campaign ready to launch'); +} else { + console.log('Campaign has blocking issues:'); + issues.forEach(issue => console.log(` - ${issue}`)); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuysRequest + +async def main(): + result = await test_agent.get_media_buys( + GetMediaBuysRequest(media_buy_ids=['mb_12345']) + ) + + media_buy = result.media_buys[0] + issues = [] + + for pkg in media_buy.packages: + if pkg.formats_pending: + issues.append(f"Package {pkg.package_id}: {len(pkg.formats_pending)} format(s) not yet uploaded") + + rejected = [a for a in (pkg.creative_approvals or []) if a.approval_status == 'rejected'] + if rejected: + issues.append(f"Package {pkg.package_id}: {len(rejected)} creative(s) rejected") + + if not issues: + print("Campaign ready to launch") + else: + print("Campaign has blocking issues:") + for issue in issues: + print(f" - {issue}") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Snapshot vs. `get_media_buy_delivery` + +| | `get_media_buys` (with snapshot) | [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | +|---|---|---| +| **Purpose** | Operational monitoring | Reporting and reconciliation | +| **Freshness** | Minutes (entity-level stats) | Hours (batch report jobs) | +| **Accuracy** | Best-effort | Authoritative, billing-grade | +| **Date range** | Always "since campaign start" | Configurable period | +| **Daily breakdown** | No | Yes | +| **Creative status** | Yes | No | +| **Missing assets** | Yes | No | + +Use `get_media_buys` to answer "what is the current state of my campaigns?" and `get_media_buy_delivery` for "how did my campaigns perform over a period?" + +Status taxonomy is shared for lifecycle filters across both tasks (`pending_creatives`, `pending_start`, `active`, `paused`, `completed`). `get_media_buy_delivery` may additionally return reporting-only statuses (`reporting_delayed`, `failed`) in webhook contexts. + +## Data Freshness + +Snapshot `staleness_seconds` varies by platform: + +| Platform type | Typical `staleness_seconds` | +|---|---| +| Entity-level stats (e.g., GAM LineItemService) | 900 (15 min) | +| Near-real-time insights API | 60–300 | +| Batch-only reporting | 14400 (4 hr) | + +When the platform only has batch reporting, the seller agent should return the most recent cached data with the appropriate `staleness_seconds`. + +If `include_snapshot: true` and `snapshot` is omitted for a package, check `snapshot_unavailable_reason`: + +- `SNAPSHOT_UNSUPPORTED`: the seller does not support package snapshots for this integration +- `SNAPSHOT_TEMPORARILY_UNAVAILABLE`: snapshot pipeline is delayed or degraded; retry later +- `SNAPSHOT_PERMISSION_DENIED`: caller lacks permission to view snapshot metrics for that package + +## Pagination + +Use cursor pagination for broad status queries to avoid large payloads: + +- Request: set `pagination.max_results` (1-100, default 50) and optional `pagination.cursor` +- Response: read `pagination.has_more`; when true, pass `pagination.cursor` into the next request +- ID-targeted queries (`media_buy_ids`) can omit pagination unless the ID set is very large + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`MEDIA_BUY_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-media-buy-not-found) | Media buy ID does not exist | Verify `media_buy_id` | +| [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) | No credentials presented | Provide credentials via auth header | +| [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) | Credentials rejected (expired / revoked) | Human credential rotation required; do not auto-retry | + +A valid query with no matching media buys succeeds with an empty `media_buys` array. + +## Next Steps + +- **Upload missing creatives**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or `packages[].creatives` on [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) for inline-only sellers +- **Investigate zero delivery**: Check `delivery_status: "not_delivering"` and `start_time` to confirm the flight is active, then use [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) to adjust pricing or targeting +- **Detailed reporting**: Use [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) for date-range reporting and daily breakdowns +- **Optimize campaigns**: Use [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) to share results with the seller diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products.mdx new file mode 100644 index 0000000000..7ff03c844a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products.mdx @@ -0,0 +1,2059 @@ +--- +title: get_products +description: "get_products task — discover advertising inventory in AdCP using natural language campaign briefs or structured filters. Returns matched products with pricing and formats." +"og:title": "AdCP — get_products" +testable: true +--- + +Discover available advertising products based on campaign requirements using natural language briefs or structured filters. + +<Warning> +`get_products` is deprecated for new integrations in AdCP 3.2, but remains fully supported throughout 3.x. Use [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products), [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), or [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals). Its `idempotency_key` remains optional. Split-task retries keep the same tool name; they are not cross-name replays of this compatibility facade. +</Warning> + +<Info> +**Why this shape.** Targeting, pricing, and curation are folded into one round-trip — the brief drives discovery, the publisher curates against it, and `pricing_options` carry firm prices the buyer commits against via `pricing_option_id`. We rejected a separate `get_price_quote` step between products and buy creation: it splits one expert decision into two underspecified ones and breaks the brief→curation contract. Iteration is `buying_mode: "refine"` with a typed change array — not a new task. → [Design principle: the brief drives discovery](/dist/docs/3.2.0-beta.4/protocol/design-principles#3-the-brief-drives-discovery-targeting-is-an-input-not-a-step). +</Info> + +**Authentication**: Optional (returns limited results without credentials) + +**Response Time**: ~60 seconds (AI inference with back-end systems) + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-response.json) + +## Quick Start + +Discover products with a natural language brief: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { GetProductsResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441000', + buying_mode: 'brief', + brief: 'Premium athletic footwear with innovative cushioning', + brand: { + domain: 'acmecorp.com' + } +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = GetProductsResponseSchema.parse(result.data); +if (validated.status === 'rejected') { + console.log(`Seller declined the brief: ${validated.reason}`); + for (const suggestion of validated.suggestions ?? []) { + console.log(`- ${suggestion}`); + } +} else { + console.log(`Found ${validated.products.length} products`); + + // Access validated product fields + for (const product of validated.products) { + console.log(`- ${product.name} (${product.delivery_type})`); + console.log(` Formats: ${product.format_options.map(option => option.format_kind).join(', ')}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_products(): + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441001', + buying_mode='brief', + brief='Premium athletic footwear with innovative cushioning', + brand={ + 'domain': 'acmecorp.com' + } + ) + if result.status == 'rejected': + print(f"Seller declined the brief: {result.reason}") + for suggestion in result.suggestions or []: + print(f"- {suggestion}") + else: + print(f"Found {len(result.products)} products") + +asyncio.run(discover_products()) +``` + +```bash CLI requires-env=ADCP_AUTH_TOKEN +uvx adcp \ + https://test-agent.adcontextprotocol.org/sales/mcp \ + get_products \ + '{"idempotency_key":"550e8400-e29b-41d4-a716-446655441002","buying_mode":"brief","brief":"Premium athletic footwear with innovative cushioning","brand":{"domain":"acmecorp.com"}}' \ + --auth $ADCP_AUTH_TOKEN +``` + +</CodeGroup> + +### Using Structured Filters + +Use structured filters for hard product requirements such as channel, delivery type, format, currency, and reporting support. Filters are valid and have the same exclusion semantics in `brief`, `wholesale`, and `refine` modes; the mode changes curation and lifecycle behavior, not whether filters apply. Concrete delivery targeting belongs in `targeting_overlay`; future selectable targeting belongs in `required_overlay_support`. + +For every deterministic predicate in `filters`, every returned product MUST +satisfy that predicate according to the field's documented match semantics. +Sellers MUST exclude non-matching products in all three buying modes; they MUST +NOT accept a schema-valid filter and return the unfiltered curated set, wholesale +feed, or refinement result. A filter can validly produce the same result as an +unfiltered request, so conformance is established from the returned products' +membership and field values—not merely by requiring two responses to differ. +Natural-language relevance to a `brief` remains a curation judgment and is not +part of this deterministic filter rule. + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +const result = await testAgent.getProducts({ + buying_mode: 'brief', + brief: 'Premium connected-TV inventory for a national launch', + brand: { + domain: 'acmecorp.com' + }, + filters: { + channels: ['ctv'], + delivery_type: 'guaranteed', + standard_formats_only: true + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} guaranteed CTV products`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_with_filters(): + result = await test_agent.simple.get_products( + buying_mode='brief', + brief='Premium connected-TV inventory for a national launch', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'channels': ['ctv'], + 'delivery_type': 'guaranteed', + 'standard_formats_only': True + } + ) + print(f"Found {len(result.products)} guaranteed CTV products") + +asyncio.run(discover_with_filters()) +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `idempotency_key` | string | No | Optional key for retry-safe use of the 3.x compatibility facade (16–255 characters; letters, digits, `_`, `.`, `:`, and `-`). When supplied, reuse the same key only when retrying the exact initial request. Poll the resulting task through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) or MCP task APIs; each new polling request carries its own fresh key. Use a new key whenever any request parameter changes. | +| `buying_mode` | string | Yes | `"brief"`, `"wholesale"`, or `"refine"`. `"brief"`: publisher curates products from the brief. `"wholesale"`: raw product feed access for buyer-directed targeting, `brief` must not be provided. `"refine"`: iterate on products and proposals from a previous response using the `refine` array of change requests. v3 clients MUST include `buying_mode`. Sellers receiving requests from pre-v3 clients without `buying_mode` SHOULD default to `"brief"`. **Timing semantics:** `"wholesale"` is a wholesale product feed read — sellers SHOULD return a synchronous response and MUST NOT route a `"wholesale"` request through the async/Submitted arm. Partial completion is signalled via [`incomplete[]`](#incomplete-array), not a task handoff. `"brief"` and `"refine"` MAY complete synchronously OR MAY return a `Submitted` envelope when curation requires upstream-system queries or HITL review the seller cannot complete inside `time_budget`. Buyers needing predictable fast wholesale product feed access MUST use `"wholesale"`. | +| `brief` | string | Conditional | Natural-language campaign goals, context, preferences, and requirements without a structured representation. Required when `buying_mode` is `"brief"`. Must not be provided when `buying_mode` is `"wholesale"` or `"refine"`. Explicit hard requirements remain binding, but buyers SHOULD use an available structured field instead. When a seller's structured interpretation of hard prose materially affects eligibility, pricing, or forecasting, the response MUST confirm it in `targeting_resolution.brief_targeting`. | +| `refine` | [Refine[]](#refine-array) | Conditional | Array of change requests for iterating on products and proposals. Required when `buying_mode` is `"refine"`. Must not be provided when `buying_mode` is `"brief"` or `"wholesale"`. See [Refine array](#refine-array) below. | +| `brand` | BrandRef | No | Brand reference (domain + optional brand_id). Resolved to full identity at execution time. | +| `account` | AccountRef | No | Account reference for account-specific pricing. Returns products with pricing from this account's rate card. | +| `catalog` | [Catalog](/dist/docs/3.2.0-beta.4/creative/catalogs) | No | Catalog of items the buyer wants to promote. The seller matches catalog items against its inventory and returns products where matches exist. Requires `brand`. See [Catalog discovery](#catalog-discovery) below. | +| `filters` | Filters | No | Offer filters such as channel, format, delivery type, dates, budget, currency, and reporting support. They decide which products may be returned but do not become package delivery targeting. Valid in `brief`, `wholesale`, and `refine`; non-matching products are excluded in every mode. Legacy targeting-like fields remain accepted during migration but are deprecated. | +| `targeting_overlay` | TargetingOverlay | No | Concrete delivery constraints the buyer expects to carry into [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). Prefer this over equivalent brief prose: it is compact, deterministic, and avoids lossy extraction. Returned products, pricing, and forecasts MUST account for the effective targeting. A product that cannot honor the request exactly is omitted or returned with sparse Product `targeting_resolution.modifications`; absence of Product resolution confirms exact acceptance of the structured overlay for that product. | +| `required_overlay_support` | TargetingOverlayRequirements | No | Buyer minimums for targeting dimensions whose values will be supplied on packages later. This requests selectable capability, not current values, value-specific availability or forecasts, and not one product per value. Requirement `true` matches support `true` or any valid support object; an object requirement matches `true` or a containing support object. Unrequested fields and numeric seller limits do not participate. Missing or unknown requirements exclude the product. | +| `fields` | string[] | No | Specific product fields to include for lightweight discovery. `product_id` and `name` are always included. Request `audience_evidence` for the full evidence payload. Projection never suppresses required decision readback: modified products include `targeting_resolution` and `expires_at`; a request with `required_overlay_support` receives `overlay_support`; and when an audience-evidence policy affects inclusion or ranking, the seller returns `audience_evidence_selections`. When requesting signal metadata, buyers SHOULD request `included_signals` for bundled/planned signals and the `signal_targeting_*` fields for package-level selection. | +| `property_list` | PropertyListRef | No | Deprecated discovery-only property filter. Use `targeting_overlay.property_list` for a concrete delivery constraint or `required_overlay_support.property_list` when the list will be selected later. | +| `pagination` | PaginationRequest | No | Cursor-based pagination to cap returned `products[]` in curated/refined responses or walk wholesale product feeds (see below) | +| `if_wholesale_feed_version` | string | No | Opaque `wholesale_feed_version` token from a prior wholesale-mode `get_products` response from this agent. Only valid with `buying_mode: "wholesale"`. Version scope excludes `pagination.cursor`: `public` is keyed by (agent, `buying_mode`, `filters`, `targeting_overlay`, `required_overlay_support`, deprecated `property_list`, `catalog`); `account` adds account identity. See [Wholesale feed versioning](#wholesale-feed-versioning). | +| `if_pricing_version` | string | No | Opaque `pricing_version` token from a prior response. MUST only be sent together with `if_wholesale_feed_version`. Evaluation order: `if_wholesale_feed_version` mismatch → full payload; `if_wholesale_feed_version` matches but `if_pricing_version` mismatches → full payload (so the buyer sees updated `pricing_options`); both match → seller MAY return `unchanged: true`. Sellers that don't track pricing separately ignore this. | +| `time_budget` | Duration | No | Maximum time the buyer will commit to this request. The seller returns the best results achievable within this budget and does not start processes (human approvals, expensive external queries) that cannot complete in time. When omitted, the seller decides timing. Example: `{"interval": 30, "unit": "seconds"}`. | +| `push_notification_config` | PushNotificationConfig | No | Optional webhook channel for async terminal completion/failure notifications on `brief` / `refine` curated discovery. `submitted` responses with a `task_id` remain pollable through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) (legacy `tasks/get`) whether or not this field is present. If the request includes this field and the seller returns `submitted`, the seller MUST deliver at least the terminal completion/failure notification to the configured webhook; intermediate progress notifications are MAY. If the seller cannot honor the webhook channel, it MUST reject the request with a structured error instead of silently accepting. Ignored for `wholesale`; sellers MUST NOT route wholesale reads through the Submitted arm because this field is present. | + +<Note> +### Targeting-aware discovery + +#### Brief versus structured targeting + +Anything that can be expressed in a structured request field SHOULD be. For +example, put “US only” and “ages 18–44” in `targeting_overlay`, not just in the +brief. Structured values use fewer tokens, can be validated by code, and do not +lose meaning through natural-language extraction. Keep the brief for campaign +goals, semantic audience descriptions, preferences, and requirements for which +AdCP has no structured field. + +Hard requirements remain hard wherever they appear. A seller MUST apply an +explicit hard targeting requirement stated only in a brief. When the seller's +structured interpretation materially affects product eligibility, pricing, or +forecasting, it MUST confirm that shared interpretation once on the response; +otherwise confirmation remains a best practice: + +```json +{ + "targeting_resolution": { + "brief_targeting": { + "geo_countries": ["US"], + "demographics": { + "age": { "min": 18, "max": 44, "include_unknown": false } + } + } + } +} +``` + +This is a confirmation of brief-derived targeting, not a reason to echo a +structured overlay. When `targeting_overlay` already contains those values and +the seller accepts them exactly, the response omits them. Selecting any product +from the response accepts the confirmed request-level brief interpretation; +product-specific alternatives remain sparse Product targeting modifications. + +Only predicates supported by the structured targeting vocabulary can appear in +`brief_targeting`. Other hard prose requirements remain binding but must be +confirmed in the seller's natural-language response until AdCP defines a typed +representation. + +Provide exact targeting once during discovery so product availability, pricing, +and forecasts already reflect the constraints that will be booked: + +```json +{ + "buying_mode": "brief", + "brief": "Premium national video for outdoor enthusiasts", + "filters": { + "channels": ["ctv"], + "delivery_type": "guaranteed", + "pricing_currencies": ["USD"] + }, + "targeting_overlay": { + "geo_countries": ["US"] + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] }, + "placement_selection": true + } +} +``` + +`targeting_overlay` is real targeting. The seller resolves it through inherent +product scope or selectable execution, and every returned forecast is scoped to +the resulting inventory. `required_overlay_support` says that the buyer needs to +choose DMA and placement values on packages later; it does not request products +or packages broken out by DMA or placement. + +Request requirements and product support deliberately use different schemas. +The buyer request contains dimensions and required systems, never seller maxima. +A requirement value of `true` matches product support `true` or any valid +support object. An object requirement matches support `true` or a support object +where every requested boolean is true and every requested array is a subset of +the corresponding product array. For `geo_places` and `geo_places_exclude`, +every requested identifier system and country key must exist, and requested +place-type and catalog-version arrays must be subsets of the corresponding +product support arrays. Unrequested object fields and numeric seller limits do +not participate. Missing or unknown requirements do not match. + +For country inclusion, country exclusion, and proximity targeting, Product +support may disclose `max_values_per_package`. Country support uses either +legacy `true` or `{ "max_values_per_package": N }`; proximity support places +the limit alongside its supported methods and transport modes. The numeric +limit never belongs in `required_overlay_support`. It applies independently to +one targeting field on one package and is not a value allowlist, +media-buy-wide constraint, or inventory promise. A create or update that +exceeds the limit fails atomically with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) and identifies +the overflowing targeting field. + +Although numeric limits do not participate in requirement matching, every +returned Product's accepted effective targeting must satisfy the limits it +discloses. A candidate whose concrete `targeting_overlay` exceeds a maximum is +excluded unless the seller returns a distinct configured Product with a +disclosed, compliant targeting modification. + +Support guarantees the ability to select a value subject to disclosed limits; +it does not guarantee inventory or forecast every possible value. Forecasts +returned when only future support was requested describe the product's +discovery/default scope. Rediscover with concrete `targeting_overlay` values for +a value-specific forecast. Fixed prices and floors remain binding uniformly +for supported selections; price guidance remains non-binding. Sellers with +value-dependent rates must return a concretely targeted configured product, +split the rate tiers into products, or withhold binding pricing until concrete +rediscovery. They cannot reinterpret a selected `pricing_option_id` at a new +price. If a supported selection has no current inventory, creation returns +[`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable) +rather than silently substituting or repricing it. + +For ISO subdivisions, known values belong in +`targeting_overlay.geo_regions` / `geo_regions_exclude` and therefore scope the +configured product's price and aggregate forecast. Values intentionally chosen +later use structured `required_overlay_support` independently for inclusion and +exclusion. Each country requirement uses either `all_values: true` or an exact +candidate `values` set. A matching Product `overlay_support` must contain every +requested country and value; product support with `all_values: true` satisfies +any finite requirement for that country. `all_values` is evaluated against the +seller's support snapshot when the declaration is issued and does not +automatically include values introduced by a later catalog revision. +Configured discovery or refinement +with the exact overlay is the authoritative value-level preflight—there is no +separate region resolver task. + +If the seller can honor a structured overlay exactly, the returned product +omits Product `targeting_resolution`. Request-level brief confirmation appears +once on the response, not on each product. Every request-specific configured +product issued through targeting-aware discovery carries `is_custom: true` and +`expires_at`, including exact products without a resolution echo. The generic +Product schema still accepts legacy custom products without an expiry. If a +product offers a different executable structured +constraint, it contains only the changed paths. Selecting that request-scoped +`product_id` accepts the disclosed resolution. + +</Note> + +<Note> +**Property governance** + +`targeting_overlay.property_list` references a property list created via [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list) on a property governance agent. Property lists define which publisher properties meet compliance requirements — COPPA-certified sites, sustainability-scored inventory, brand-safe publishers, etc. The legacy top-level `property_list` discovery filter is deprecated. + +To use property list filtering: +1. Call [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) on a property governance agent to discover available `property_features` +2. Create a property list via `create_property_list` with your feature requirements +3. Pass the resulting list reference in `targeting_overlay.property_list` so returned products and forecasts reflect the constrained inventory + +The seller-wide `media_buy.execution.targeting.property_list` capability is a +routing rollup; each returned product must also make the requested constraint +executable through inherent scope or selectable property targeting. The legacy +`features.property_list_filtering` capability applies only to the deprecated +top-level discovery filter. See the [Property Governance overview](/dist/docs/3.2.0-beta.4/governance/property/index) for the full workflow. +</Note> + +### Filters Object + +Filters decide which offers may be returned; they do not become package +delivery targeting. Exact +audience or inventory eligibility belongs in `targeting_overlay`. When the +buyer needs a targeting dimension but does not know its values yet, use +`required_overlay_support`. + +During the compatibility window, sellers may translate a deprecated +targeting-like filter into its overlay equivalent. If both legacy and new forms +are present, they MUST be semantically identical; otherwise the seller rejects +the request with [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request). This rule applies to every deprecated +targeting filter and the legacy top-level `property_list`. + +| Parameter | Type | Description | +|-----------|------|-------------| +| `delivery_type` | string | Filter by `"guaranteed"` or `"non_guaranteed"` | +| `is_fixed_price` | boolean | Legacy filter for fixed-price vs auction products. `true` returns options with `fixed_price`; `false` returns options established through `bid_price`. Contingent options such as `revenue_share` match neither value and are omitted whenever this filter is present. | +| `pricing_structures` | string[] | Filter by how the payable price is determined: `fixed`, `auction`, or `contingent`. Sellers return only matching `pricing_options`. Use `contingent` to discover `revenue_share`. When combined with `is_fixed_price`, both filters apply. | +| `pricing_currencies` | string[] | Filter by ISO 4217 currencies the buyer can use for the media product transaction (e.g., `["USD"]`). Products match when they offer at least one product-level `pricing_options` entry in one of the requested currencies and any seller-applied or otherwise mandatory product-scoped signal charges are satisfiable in one of those currencies or have no incremental price. Sellers MUST return only matching product `pricing_options` so buyers can select deterministically from discovery. Optional signal or vendor add-on pricing is not pruned by this filter. | +| `format_kinds` | string[] | Filter by canonical format kinds | +| `format_option_refs` | FormatOptionRef[] | Filter by exact publisher- or product-scoped canonical format options | +| `format_ids` | FormatID[] | Deprecated 3.x named-format compatibility filter | +| `standard_formats_only` | boolean | Only return products accepting IAB standard formats | +| `min_exposures` | integer | Minimum exposures needed for measurement validity | +| `start_date` | string | Campaign start date in ISO 8601 format (YYYY-MM-DD) for availability checks | +| `end_date` | string | Campaign end date in ISO 8601 format (YYYY-MM-DD) for availability checks | +| `budget_range` | object | Budget range to filter appropriate products (see Budget Range Object below) | +| `countries` | string[] | Deprecated. Use `targeting_overlay.geo_countries`. | +| `regions` | string[] | Deprecated. Use `targeting_overlay.geo_regions`. | +| `metros` | object[] | Deprecated. Use `targeting_overlay.geo_metros` for known values or `required_overlay_support.geo_metros` for future selection. | +| `channels` | string[] | Filter by advertising channels (e.g., `["display", "ctv", "social", "streaming_audio"]`). See [Media Channel Taxonomy](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy) | +| `video_placement_types` | string[] | Match product metadata when the declared video placement types intersect `instream`, `accompanying_content`, `interstitial`, or `standalone`. Classification only; it does not promise exclusive delivery on a requested type. | +| `audio_distribution_types` | string[] | Match product metadata when declared audio distribution types intersect the requested values. Classification only; it does not promise exclusive delivery on a requested type. | +| `sponsored_placement_types` | string[] | Match retail-media product metadata when declared sponsored-placement types intersect the requested values. Classification only. | +| `social_placement_surfaces` | string[] | Match social-product metadata when declared surfaces intersect `feed`, `stories`, `short_video`, `explore`, or `search`. Classification only; exact public-placement inventory uses `targeting_overlay.placement_selection`. | +| `postal_areas` | object[] | Deprecated. Use `targeting_overlay.geo_postal_areas` or `required_overlay_support.geo_postal_areas`. | +| `geo_proximity` | object[] | Deprecated. Use `targeting_overlay.geo_proximity`. | +| `keywords` | object[] | Deprecated. Use `targeting_overlay.keyword_targets`; broad thematic intent remains in `brief`. | +| `signal_targeting` | SignalTargeting[] | Deprecated. Use `targeting_overlay.signal_targeting_groups` for known selections or `required_overlay_support.signal_targeting_groups` for later selection. | +| `required_performance_standards` | [PerformanceStandard[]](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#measurement-terms-and-performance-standards) | Filter to products that can meet the buyer's performance standard requirements. Each entry specifies a metric, threshold, and vendor (e.g., "DoubleVerify for viewability at 70% MRC"). Products that cannot meet these thresholds or do not support the specified vendors are excluded. | +| `required_metrics` | string[] ([metric vocabulary](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting)) | Filter to products whose `reporting_capabilities.available_metrics` is a superset of these metrics — i.e., products that commit to reporting all listed metrics in delivery. Use for capability discovery (e.g., `["completed_views"]` for a CTV CPCV buy). Sellers MUST silently exclude products that cannot meet the list — filter-not-fail; do not return an error. The product's declared `available_metrics` becomes the binding reporting contract carried into the resulting media buy. | +| `required_vendor_metrics` | object[] | Filter to products whose `reporting_capabilities.vendor_metrics` covers vendor-defined metrics (proprietary attention, emissions, panel demographics, brand-lift surveys, etc.). Each entry pins `vendor` (BrandRef) and/or `metric_id` — at least one. Cross-vendor discovery (e.g., "any attention measurement") is the buyer agent's responsibility: resolve which vendors offer a category via the vendors' `brand.json` records, then enumerate them as filter entries. Same filter-not-fail semantics as `required_metrics`. | +| `audience_evidence_requirements` | AudienceEvidenceRequirements | Apply buyer-authored admissibility or ranking policy to `Product.audience_evidence`. `requirement_mode` distinguishes hard filtering from preference; `evidence_presence` distinguishes evidence-must-exist from apply-when-published. | + +### Audience evidence requirements + +The reusable `audience_evidence_requirements` object attaches under `filters`, so the same contract applies to natural-language brief curation, wholesale feeds, and refine requests. + +```json +{ + "filters": { + "audience_evidence_requirements": { + "requirement_mode": "required", + "evidence_presence": "required", + "accepted_methodologies": ["observed", "declared", "derived", "projected"], + "excluded_methodologies": ["inferred", "modeled"], + "accepted_evidence_types": ["measured"], + "accepted_subject_types": ["individual", "household"], + "minimum_confidence": 0.8, + "maximum_age": { "interval": 90, "unit": "days" }, + "methodology_documentation_required": true, + "independent_attestation_required": true + } + } +} +``` + +Seller behavior is normative: + +- `requirement_mode: "required"` excludes a product when it publishes evidence but no item satisfies every constraint. With `evidence_presence: "required"`, a product that publishes no evidence is also excluded. With `when_available`, a product with no evidence remains eligible. +- `requirement_mode: "preferred"` never turns a mismatch into a hard exclusion. Sellers rank products with matching evidence higher and explain the selected evidence when returning or constructing a package. +- When evidence affects product inclusion or rank, the returned product MUST carry the exact matching snapshots in `audience_evidence_selections[]`, with `decision_use` set to `eligibility` or `recommendation`, even if the request's `fields` projection omitted that field. A product admitted because `when_available` found no published evidence has no selection to report. +- Sellers evaluate freshness from `last_updated` at request evaluation time. They do not synthesize missing provider, confidence, methodology, documentation, or attestation data. +- Accepted lists and excluded lists are evaluated together; `excluded_methodologies` and `excluded_providers` always win when the same value appears in both lists. +- `independent_attestation_required` requires `accepted_attestation_issuers` and is satisfied only by one exact reference/evaluation pair. The reference must be published on the evidence, its issuer and claim type must match the buyer allowlists and seller's shared `adcp.attestations` policy, its subject digest must equal the evidence digest, the evaluation must cover that same reference with outcome `verified`, and its action-binding digest must equal the evidence digest. Buyer issuer and claim-type constraints narrow seller policy; they never broaden it. +- Buyers inspect `media_buy.audience_evidence` capabilities first. Sellers MUST NOT silently ignore unsupported hard requirement or presence modes; they return a structured unsupported/invalid-request error. A preferred mode the seller does not support may be omitted by the buyer or explicitly rejected by the seller, but is never misrepresented as applied. + +Audience evidence does not populate `targeting_overlay`, `demographic_targeting`, or an age-verification field. If the buyer also needs exact execution, it requests that independently through the corresponding product and package targeting surfaces. + +Known place IDs belong in `targeting_overlay`, so the returned product's +availability, pricing, and forecast are scoped to the effective place +constraint. If the buyer will choose IDs later, `required_overlay_support` +asks for the country, identifier system, place type, and optional catalog +version that the product must let the buyer select: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "buying_mode": "brief", + "brief": "Local video inventory for a municipal services campaign", + "targeting_overlay": { + "geo_places": [{ + "country": "NL", + "system": "geonames", + "system_version": "2026-05", + "place_type": "city", + "values": ["2759794"] + }] + }, + "required_overlay_support": { + "geo_places": { + "systems": { + "geonames": { + "countries": { "NL": ["city"] }, + "system_versions": ["2026-05"] + } + } + } + } +} +``` + +The returned Product `overlay_support.geo_places` is binding permission to +supply matching place IDs on packages later, subject to disclosed limits. It +does not guarantee value-specific inventory or preserve an earlier forecast +before the IDs are provided. Fixed prices and floors retain their binding +semantics for every value within declared support; price guidance remains +non-binding. If the eventual values have no current inventory, create returns +[`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable) +without silent substitution or repricing. Inclusion and exclusion permission +are independent; request `geo_places_exclude` separately when exclusions will +be chosen later. + +### Placement fields + +`get_products` returns product placement data when the seller includes `placements` or the buyer asks for it through `fields`. Placement IDs are publisher-scoped. Product placements should reference the publisher's public `adagents.json` placement declarations with `{publisher_domain, placement_id}` when a publisher declaration exists. Seller-private placement IDs, source/origin details, and delivery-system mappings must stay out of the response. + +Each returned placement may carry: + +| Field | Meaning | +|-------|---------| +| `placement_id` | Placement identifier in the publisher namespace. Buyers reference this with `publisher_domain` in `creative_assignments[].placement_refs`; legacy `placement_ids` strings are only unambiguous in single-publisher contexts. | +| `publisher_domain` | Domain whose `adagents.json` defines the publisher-referenced placement. New multi-publisher products SHOULD include it. When omitted on legacy products, buyers may interpret `placement_id` relative to the seller agent's own publisher domain. | +| `mode` | `targetable` means the buyer may purchase the publisher-scoped placement through `targeting_overlay.placement_selection`. `included` means fixed/default product inventory that cannot be independently selected. Creative routing is permitted only after the placement is purchased. | +| `video_placement_types` | Declared video placement types for OLV and other video inventory, using the IAB Tech Lab/OpenRTB 2.6 `video.plcmt` definitions with AdCP-native names. Concrete placements usually declare one value; aggregate placements may declare multiple. | +| `audio_distribution_types` | Declared audio distribution types for radio, streaming-audio, podcast, gaming, and other audio inventory, using the IAB Tech Lab/OpenRTB 2.6 `audio.feed` definitions with AdCP-native names. Concrete placements usually declare one value; aggregate placements may declare multiple. | +| `sponsored_placement_types` | Declared sponsored-placement types for catalog-driven retail-media inventory. Concrete placements usually declare one value; aggregate placements may declare multiple. | +| `social_placement_surfaces` | Declared social-placement surfaces for social inventory. Concrete placements usually declare one value; aggregate placements may declare multiple. | +| `format_options` | Placement-specific canonical creative support. Product-level formats are the upper bound; placement-level formats narrow the effective accepted set for that placement and must not add formats or `locale_policy` language ranges the product does not accept. Deprecated `format_ids` may appear only on the 3.x compatibility path. | + +Publishers can authorize sales agents for specific publisher placements using `authorized_agents[].placement_ids` or `authorized_agents[].placement_tags` in `adagents.json`. Sellers should only return publisher-referenced placements they are authorized to sell. + +`mode: "targetable"` means the placement may be selected through +`packages[].targeting_overlay.placement_selection`. A placement with +`mode: "included"` is part of the fixed/default product and cannot be selected +independently. A request whose complete selected set exactly equals the +product's complete included set is satisfied inherently and may be echoed on +the booked package. That exact-equality rule applies during discovery, create, +and update and does not require `overlay_support.placement_selection`; partial +selection does. Because `placement_selection` represents the complete purchased +set, a product with any included placement does not declare selectable placement +overlay support; sellers expose a separate selectable product when needed. +`creative_assignments[].placement_refs` only route different creatives across +placements already selected for the package; they do not purchase inventory. + +Signal-targeting filter example: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655441005", + "buying_mode": "wholesale", + "filters": { + "signal_targeting": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "auto_intenders" + }, + "value_type": "binary", + "value": true, + "targeting_mode": "include" + } + ] + }, + "fields": [ + "product_id", + "name", + "included_signals", + "signal_targeting_allowed", + "signal_targeting_options", + "signal_targeting_rules", + "pricing_options" + ] +} +``` + +### Currency filtering + +Use `filters.pricing_currencies` when the buyer's constraint is "only show products whose media price I can transact in." Use `budget_range.currency` when the buyer is also providing a budget amount or range. + +Buyers MAY send both. Sellers apply them conjunctively: `budget_range.currency` denominates the budget amounts, while `pricing_currencies` narrows which returned product `pricing_options` are eligible. If the two fields conflict, sellers SHOULD return zero matching products rather than reject the request solely because of the conflict. Because product-scoped signal pricing is a separate add-on surface, this filter only gates mandatory seller-applied signal charges; optional signal or vendor add-ons may still advertise other currencies, and buyers should not select unsupported add-on prices. + +When combined with `is_fixed_price` or `pricing_structures`, returned product `pricing_options` MUST satisfy every filter: each retained option must have a requested pricing structure and its `currency` must be in `pricing_currencies`. + +Currency-only filter example: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655441006", + "buying_mode": "wholesale", + "filters": { + "pricing_currencies": ["USD"] + }, + "fields": ["product_id", "name", "pricing_options"] +} +``` + +If a product has both USD and EUR media pricing and the buyer sends `pricing_currencies: ["USD"]`, the seller returns the product with only its USD product-level `pricing_options`. If the product also has a fixed or otherwise mandatory product-scoped signal charge, that mandatory charge must either be priced in USD or have no incremental price; otherwise the product does not match the filter. A mandatory `custom` signal price without `currency` is not satisfiable for this filter unless the seller can truthfully treat it as having no incremental price. Optional signal add-ons do not affect product matching. + +### Budget Range Object + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `currency` | string | Yes | ISO 4217 currency code (e.g., `"USD"`, `"EUR"`, `"GBP"`) | +| `min` | number | No* | Minimum budget amount | +| `max` | number | No* | Maximum budget amount | + +*At least one of `min` or `max` must be specified. + +### Refine array + +The `refine` array is a list of change requests. Each entry declares a `scope` and what the buyer is asking for. At least one entry is required. The seller considers all entries together when composing the response, and replies to each via `refinement_applied`. + +Each entry is a discriminated union on `scope`: + +#### scope: "request" + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | `"request"` | +| `ask` | string | Yes | Direction for the selection as a whole (e.g., `"more video options"`, `"suggest how to combine these products"`). | + +#### scope: "product" + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | `"product"` | +| `product_id` | string | Yes | Product ID from a previous `get_products` response | +| `action` | string | No | `"include"` (default): return this product with updated pricing and data. `"omit"`: exclude from the response. `"more_like_this"`: find similar products (the original is also returned). When omitted, the seller treats the entry as `"include"`. | +| `ask` | string | No | What the buyer is asking for. For `"include"`: specific changes (e.g., `"add 16:9 format"`). For `"more_like_this"`: what "similar" means (e.g., `"same audience but video format"`). Ignored when `action` is `"omit"`. | + +#### scope: "proposal" + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | `"proposal"` | +| `proposal_id` | string | Yes | Proposal ID from a previous `get_products` response | +| `action` | string | No | `"include"` (default): return with updated allocations and pricing. `"omit"`: exclude from the response. `"finalize"`: request firm pricing and inventory hold (transitions a draft proposal to committed). When omitted, the seller treats the entry as `"include"`. | +| `ask` | string | No | What the buyer is asking for (e.g., `"shift more budget toward video"`, `"reduce total by 10%"`). Ignored when `action` is `"omit"`. | + +### refinement_applied (response) + +When the seller receives a `refine` array, the response includes `refinement_applied` — an array matched by position. Each entry reports whether the ask was fulfilled: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | Echoes the scope (`"request"` / `"product"` / `"proposal"`) from the corresponding `refine` entry. | +| `product_id` | string | Yes when `scope` is `"product"` | Echoes `product_id` from the corresponding refine entry. | +| `proposal_id` | string | Yes when `scope` is `"proposal"` | Echoes `proposal_id` from the corresponding refine entry. | +| `status` | string | Yes | `"applied"`: ask fulfilled. `"partial"`: partially fulfilled. `"unable"`: could not fulfill. | +| `notes` | string | No | Seller explanation. Recommended when status is `"partial"` or `"unable"`. | + +### Catalog discovery + +Pass a `catalog` to find advertising products that can promote your catalog items. The seller matches your catalog items against its inventory and returns products where matches exist. Supports all catalog types — a product catalog finds sponsored product slots, a job catalog finds job ad products, a flight catalog finds dynamic travel ads. + +The `catalog` field uses the same [Catalog](/dist/docs/3.2.0-beta.4/creative/catalogs) object used throughout AdCP. You can reference a synced catalog by `catalog_id`, provide inline items, or use selectors to filter: + +| Field | Type | Description | +|-------|------|-------------| +| `type` | CatalogType | Catalog type (required) — `product`, `job`, `hotel`, `flight`, `offering`, etc. | +| `catalog_id` | string | Reference a synced catalog by ID | +| `ids` | string[] | Filter to specific item IDs | +| `gtins` | string[] | Filter by GTIN for cross-retailer matching (product type only) | +| `tags` | string[] | Filter by tags (OR logic) | +| `category` | string | Filter by category | +| `query` | string | Natural language filter | + +Products in the response include `catalog_types` (what catalog types they support) and `catalog_match` (which items matched). + +## Response + +Returns an array of `products` and optionally `proposals`. When the seller's +structured interpretation of hard brief targeting materially affects product +eligibility, pricing, or forecasting, it MUST include one response-level +`targeting_resolution.brief_targeting` confirmation shared by the curated +result set. Otherwise confirmation remains a best practice. + +### Products Array + +| Field | Type | Description | +|-------|------|-------------| +| `product_id` | string | Opaque buyable identifier. A non-custom wholesale ID remains stable for the same logical offer within the seller and declared `cache_scope`, including across reads and webhooks. A custom ID is stable only in its issuing discovery/refinement lineage. Selecting it accepts any disclosed `targeting_resolution`. | +| `is_custom` | boolean | `true` for a request-specific configured offer. Products issued through targeting-aware discovery include `expires_at`, including exact targeting configurations with no Product resolution echo. Legacy custom products remain schema-valid when expiry is absent. | +| `name` | string | Human-readable product name | +| `description` | string | Detailed product description | +| `publisher_properties` | PublisherProperty[] | Array of publisher entries, each with `publisher_domain` and either `property_ids` or `property_tags` | +| `format_options` | ProductFormatDeclaration[] | Closed canonical creative contracts this product can deliver, including optional seller-enforced `locale_policy.accepted_language_ranges` that buyers use to preflight planned creative languages before purchase. | +| `format_ids` | FormatID[] | Deprecated 3.x compatibility projection, when emitted. Locale-constrained options cannot be represented on this path. | +| `delivery_type` | string | `"guaranteed"` or `"non_guaranteed"` | +| `delivery_measurement` | DeliveryMeasurement | (Optional) How delivery is measured (impressions, views, etc.) | +| `pricing_options` | PricingOption[] | Available pricing models (CPM, CPCV, etc.). Auction options may include `floor_price` and optional `price_guidance`. Bid-based auction models (CPM, vCPM, CPC, CPCV, CPV) may also include optional `max_bid` (boolean). | +| `shows` | CollectionSelector[] | (Optional) Collections available in this product. Each entry has `publisher_domain` and `collection_ids`. Buyers resolve full collection objects from the referenced `adagents.json`. See [Collections and installments](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments). | +| `collection_targeting_allowed` | boolean | (Optional, default: false) Whether buyers can target a subset of this product's shows. When false, the product is a bundle. | +| `overlay_support` | TargetingOverlaySupport | Product-scoped targeting dimensions that may be selected later. Required when the discovery request includes `required_overlay_support`. This guarantees selectable capability subject to disclosed limits, not inventory or a value-specific forecast for every possible selection. | +| `targeting_resolution` | ProductTargetingResolution | Sparse product-specific modifications between requested and executable structured targeting. Omitted when the product accepts the structured overlay exactly. When present, `expires_at` is also required. | +| `expires_at` | string | Expiration of this request-scoped configured product or quote. A recognized expired ID issued to the authenticated account and lineage returns [`PRODUCT_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-expired); after the seller no longer retains its tombstone, or when the ID belongs to another account/lineage, [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) applies. The error choice never reveals cross-tenant existence. Buyers rediscover in either case. | +| `data_provider_signals` | DataProviderSignalSelector[] | (Optional, deprecated) Legacy/non-selectable metadata for data-provider signals already bundled into or associated with this product. New implementations should use `included_signals`. | +| `included_signals` | SignalListing[] | (Optional) Non-selectable signal metadata for signals already included in, bundled with, or planned into this product. These describe what the product is; buyers do not select them in package `signal_targeting_groups`. Data-provider and signal-source refs may be reference-only; product-local refs include inline `name` and `value_type`. | +| `signal_targeting_allowed` | boolean | (Optional, default: false) Whether this product has a package-level signal targeting surface. Editability is controlled by `signal_targeting_rules`; fixed/default-only products still set this to true when applied signal groups are echoed. | +| `signal_targeting_options` | ProductSignalTargetingOption[] | (Optional) Inline product-scoped signal options the buyer may select, or the seller may apply when fixed/default, through `packages[].targeting_overlay.signal_targeting_groups`. May include per-signal `pricing_options`; product-scoped prices are authoritative for this product. Data-provider and signal-source refs may be reference-only; product-local refs include inline `name` and `value_type`. | +| `signal_targeting_rules` | SignalTargetingRules | (Optional) Product-scoped composition rules for selectable signals, such as direct vs seller-planned resolution, optional, required, maximum, mutually exclusive, fixed selections, and group size limits. These limits belong on the product, not seller-wide [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), because products may be backed by different ad servers or seller planning layers. Fixed/default selections are applied by the seller and echoed on the resulting package state. | +| `demographic_targeting` | DemographicTargetingCapability | (Optional) Product-scoped exact execution for canonical demographic intent. `age.execution_modes` declares continuous bounds, enumerated seller intervals, and/or signal-backed resolution; continuous mode explicitly declares `supports_unbounded_min` and `supports_unbounded_max`, while `unknown_handling` states whether unknown age is selectable, always excluded, or always included. Buyers must inspect this field before sending `targeting_overlay.demographics`. | +| `brief_relevance` | string | Why this product matches the brief (when brief provided) | +| `measurement_readiness` | [MeasurementReadiness](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#measurement-readiness) | (Optional) Whether the buyer's event setup is sufficient for this product's optimization. Only present when the seller can evaluate the buyer's account context. | +| `measurement_terms` | [MeasurementTerms](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#measurement-terms-and-performance-standards) | (Optional) Seller's default billing measurement and makegood terms. Buyers may propose different terms at [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). | +| `performance_standards` | [PerformanceStandard[]](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#measurement-terms-and-performance-standards) | (Optional) Seller's default performance standards (viewability, IVT, completion rate, brand safety, attention score). Buyers may propose different standards at `create_media_buy`. | +| `cancellation_policy` | [CancellationPolicy](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#cancellation-policy) | (Optional) Cancellation notice period and penalties for guaranteed products. Buyers accept these terms by creating a media buy against the product. | + +### Publisher properties for non-URL inventory + +`publisher_properties[].publisher_domain` is the domain that anchors the publisher's `adagents.json` namespace. It is not required to be the URL where an ad is displayed, and it is not a placeholder for a physical venue, publication, station, screen network, or print title. + +Use the same selector shape for digital and non-digital products: + +- **Digital properties**: `publisher_domain` is usually the publisher domain whose `adagents.json` declares the website, app, channel, or CTV property. +- **Print, static OOH, radio, cinema, and local TV**: `publisher_domain` is the operating publisher or network domain that publishes the authoritative property catalog. The actual inventory is identified by `property_ids`, `property_tags`, placements, collections, product metadata, and channel fields. +- **Aggregated networks**: use `property_tags` when the product spans many properties, such as a tagged set of venues, publications, screens, stations, or local markets. + +Do not invent values like `"print"` or `"ooh"` for `publisher_domain`. Put channel meaning in `channels`, property meaning in the referenced property declarations, and sellable-package meaning in the product itself. + +For example, a product that spans tagged metro properties can use this selector inside its `publisher_properties` array: + +```json +[ + { + "selection_type": "by_tag", + "property_tags": ["metro", "station"] + } +] +``` + +### Proposals Array (Optional) + +Publishers may return proposals alongside products - structured media plans with budget allocations. See [Proposals](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#proposals) for details. + +| Field | Type | Description | +|-------|------|-------------| +| `proposal_id` | string | Unique identifier for finalizing this proposal and, once committed, executing it via `create_media_buy` | +| `proposal_status` | string | Lifecycle state. `draft` means the proposal must be finalized via `get_products` refine action `finalize` before create. `committed` means the proposal can be executed via `create_media_buy` before `expires_at`. When absent, treat the proposal as ready to buy for backward compatibility. | +| `name` | string | Human-readable name for the media plan | +| `budget_allocation` | BudgetAllocation | Optional cross-product allocation configuration. Omission means a fixed proposal; `seller_optimized` delegates continuous allocation to the seller. | +| `pacing` | string | Optional aggregate media-buy pacing recommendation. On a committed proposal this is part of the firm delivery terms. | +| `allocations` | ProductAllocation[] | Fixed proposals use exact `allocation_percentage` values summing to 100. Seller-optimized proposals omit exact percentages and may use `min_spend_target_percentage` and `max_spend_percentage`. Each allocation may include optional flight dates and subordinate `pacing`, which becomes package pacing on execution. | +| `forecast` | DeliveryForecast | Aggregate delivery forecast for the proposal. Contains forecast points with metric ranges. See [Delivery Forecasts](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#delivery-forecasts) | +| `total_budget_guidance` | object | Optional min/recommended/max budget guidance | +| `brief_alignment` | string | How this proposal addresses the campaign brief | +| `expires_at` | string | ISO 8601 timestamp when this proposal expires. For committed proposals, this is the inventory-hold deadline for `create_media_buy`. | + +Each `ForecastPoint` is one forecast row. Composite slices are encoded by multiple `dimensions[]` items on the same point, such as placement x country. Sibling points are parallel rows, not nested children. Dimension order has no meaning; buyers normalize row identity from `(forecast_range_unit, budget if present, product_id if present, dimensions sorted by kind)`. Buyers may compare rows at the same grain, but MUST NOT sum them unless the seller documents that the returned rows form a complete, non-overlapping partition. Standard delivery reporting verifies one-dimensional marginals, not exact cross-dimensional intersections. + +### Pagination + +`pagination` is valid in all `get_products` modes, but its meaning follows the +buying mode: + +- In `brief` mode, pagination bounds the seller's curated answer to the brief. + A page is not a promise that every product matching the words in the brief has + been enumerated. +- In `refine` mode, pagination bounds the refined `products[]` result implied by + the `refine` array and current filters. Proposals may accompany the page as + plan metadata, but `pagination.max_results`, `has_more`, `cursor`, and + `total_count` are scoped to the product result set, not to a separate + proposal list or a combined product/proposal count. +- In `wholesale` mode, pagination walks the wholesale product feed. This is the + exhaustive/feed-style read and is the mode that pairs with wholesale feed + versioning. + +Use cursor-based pagination to cap returned products in curated/refined +responses or walk wholesale product feeds: + +| Request Parameter | Type | Description | +|---|---|---| +| `pagination.max_results` | integer | Maximum products per page (1-100, default: 50) | +| `pagination.cursor` | string | Cursor from previous response for next page | + +| Response Field | Type | Description | +|---|---|---| +| `pagination.has_more` | boolean | Whether more products are available | +| `pagination.cursor` | string | Cursor to pass for the next page | +| `pagination.total_count` | integer | Total products in this paginated result set (optional, not all backends support this). In `brief` / `refine`, this is the curated/refined product set, not the full seller catalog. | + +Pagination is optional. When omitted, the server returns the complete result set +or a server-chosen default page. When the response includes +`pagination.has_more: true`, pass `pagination.cursor` in the next request to get +the next page using the same result-defining request context, except for the +updated `pagination.cursor`. + +### Response Metadata + +| Field | Type | Description | +|-------|------|-------------| +| `property_list_applied` | boolean | [AdCP 3.0] `true` if the agent filtered products based on the provided `property_list`. Absent or `false` if not provided or not supported. | +| `catalog_applied` | boolean | `true` if the seller filtered results based on the provided `catalog`. Absent or `false` if no catalog was provided or the seller does not support catalog matching. | +| `refinement_applied` | [RefinementResult[]](#refinement_applied-response) | Seller acknowledgment of each `refine` entry, matched by position. Only present when `buying_mode` is `"refine"`. See [refinement_applied](#refinement_applied-response) above. | +| `incomplete` | [IncompleteEntry[]](#incomplete-array) | Declares what the seller could not finish within the `time_budget` or due to internal limits. Each entry identifies a scope with a human-readable explanation. Absent when the response is fully complete. See [incomplete array](#incomplete-array) below. | +| `filter_diagnostics` | object | Optional non-fatal observability block describing how `filters` narrowed the candidate set — `total_candidates` plus per-filter `excluded_by` counts (keyed by filter name). Disambiguates "no inventory" from "your filter excluded everything" when the result list is empty or unexpectedly small. Counts only — never product names — to avoid leaking competitive intelligence. See [filter_diagnostics](#filter_diagnostics) below. | +| `wholesale_feed_version` | string | Opaque token representing the version of the wholesale product feed state used to compose this response. Sellers implementing conditional-fetch (`if_wholesale_feed_version`) MUST return this on every wholesale-mode response so buyers can cache and probe later. Treat as opaque — no format, no ordering, no inspection. See [Wholesale feed versioning](#wholesale-feed-versioning). | +| `pricing_version` | string | Optional opaque token representing the version of the pricing layer, including product `pricing_options` and nested `signal_targeting_options[].pricing_options`. When the seller supports independent pricing versioning, `pricing_version` changes when prices move but `wholesale_feed_version` changes only when structure/metadata moves. Sellers not separating these MAY omit `pricing_version` and use `wholesale_feed_version` for both. | +| `cache_scope` | string | `"public"` or `"account"`. **REQUIRED on every response** (schema-enforced — the safety property of the two-layer cache depends on it). When the request had no `account`, MUST be `"public"`. When the request had `account`, the seller declares either `"public"` (account prices off the rate card — buyer dedupes) or `"account"` (account-specific overrides). See [Cache layering](#cache-layering). | +| `unchanged` | boolean | Present and `true` ONLY when the request carried `if_wholesale_feed_version` (and/or `if_pricing_version`) matching the seller's current version for the buyer's `cache_scope`, in which case `products[]` MUST be omitted; `wholesale_feed_version`, `cache_scope`, and `pricing_version` (when used) MUST still be echoed. Sellers MUST NOT emit `unchanged: false` — absence of the field IS the "response carries products" signal (one shape per state). Buyers receiving `unchanged: true` MUST NOT mutate their local wholesale product mirror. | + +### filter_diagnostics + +When the seller can attribute exclusions to specific filters, the response MAY include a `filter_diagnostics` block. This is observability — not error reporting; sellers still silently exclude unmatched products per the filter-not-fail convention. Buyers use this to triage empty/small results without depending on its presence. `total_candidates` and `excluded_by` are independently optional — sellers whose baseline candidate set size is sensitive MAY emit `excluded_by` without `total_candidates`. + +| Field | Type | Description | +|-------|------|-------------| +| `semantics` | string | `"only"` (deterministic; counts products that would have been included if not for *this* filter alone — recommended for triage), `"any"` (counts products excluded by any filter; counts may overlap), or `"approximate"` (seller can't cleanly attribute exclusions to a single filter). Buyers SHOULD inspect `semantics` before doing arithmetic on counts. | +| `total_candidates` | integer | Number of products considered before filters were applied. May be sampled or capped when the candidate pool is large. Optional. | +| `excluded_by` | object | Keys are filter property names from the request (`pricing_currencies`, `required_metrics`, `required_geo_targeting`, `budget_range`, etc.). Each value is `{ count, values?, notes? }`. Only filters that meaningfully narrowed the set need appear. | +| `excluded_by.<filter>.count` | integer | Count of products excluded by this filter, interpreted per the parent `semantics` field. | +| `excluded_by.<filter>.values` | array | Optional list of the specific filter values that contributed to exclusions (e.g., `["completed_views"]` for `required_metrics`). Items are strings or objects depending on filter shape; opaque without filter-specific knowledge. | +| `excluded_by.<filter>.notes` | string | Optional human-readable note about the narrowing. | + +```json +{ + "products": [], + "filter_diagnostics": { + "semantics": "only", + "total_candidates": 47, + "excluded_by": { + "required_metrics": { "count": 31, "values": ["completed_views"] }, + "required_geo_targeting": { "count": 9 }, + "pricing_currencies": { "count": 3, "values": ["USD"] }, + "budget_range": { "count": 7 } + } + } +} +``` + +### incomplete array + +When the seller returns usable results but cannot complete all work within the `time_budget` (or due to its own internal limits), the response includes `incomplete` — an array declaring what is missing. `incomplete` is a completeness statement, not a retry classification: buyers MUST NOT infer that retrying the same request will succeed. `estimated_wait`, when present, lets a buyer decide whether to make a new attempt with a larger time budget. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | `"products"`: not all inventory sources were searched. `"pricing"`: products returned but pricing is absent or unconfirmed. `"forecast"`: products returned but forecast data is absent. `"proposals"`: proposals were not generated or are incomplete. `"wholesale_feed"`: in wholesale mode, full feed enumeration could not complete. | +| `description` | string | Yes | Human-readable explanation of what is missing and why. | +| `estimated_wait` | Duration | No | Additional time expected to help resolve this scope. This is planning guidance, not a retry instruction or guarantee. | + +### Wholesale feed versioning + +A buyer that just synced a seller's wholesale product feed can ask "has anything changed since version X?" in one cheap call, regardless of feed size. Sellers return an opaque `wholesale_feed_version` on every wholesale-mode response; buyers pass it back via `if_wholesale_feed_version` on the next call and the seller MAY short-circuit with `unchanged: true` — no products payload, no per-page diff. Patterned on HTTP `ETag` / `If-None-Match`. + +This is the seller-side wholesale product feed returned by `get_products`. It is not a [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) feed; `sync_catalogs` manages buyer-provided campaign input feeds on the seller account. + +**Unchanged response example:** + +Request: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655441007", + "buying_mode": "wholesale", + "if_wholesale_feed_version": "v2026-05-18T08:00:00Z-acme-rev412" +} +``` + +Response (wholesale product feed unchanged): + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/media-buy/get-products-response.json", + "status": "completed", + "message": "Wholesale product feed unchanged since v2026-05-18T08:00:00Z-acme-rev412.", + "context_id": "ctx-abc-789", + "unchanged": true, + "wholesale_feed_version": "v2026-05-18T08:00:00Z-acme-rev412", + "pricing_version": "v2026-05-18T08:00:00Z-acme-rev412", + "cache_scope": "public" +} +``` + +Response (wholesale product feed changed — full payload returned, abbreviated): + +```json test=false +{ + "message": "Returning 50 of 312 products (wholesale feed version advanced).", + "context_id": "ctx-abc-790", + "wholesale_feed_version": "v2026-05-18T10:15:00Z-acme-rev415", + "pricing_version": "v2026-05-18T10:15:00Z-acme-rev415", + "cache_scope": "public", + "products": [ + { + "product_id": "prod_premium_ctv_us", + "name": "Premium CTV — US", + "description": "Run-of-network CTV inventory across premium publishers.", + "publisher_properties": [{ "publisher_domain": "streamhaus.example.com", "property_ids": ["primetime_ctv"] }], + "format_options": [{ "format_option_id": "video_ctv_1080p_30s", "format_kind": "video_hosted", "params": { "width": 1920, "height": 1080, "duration_ms_exact": 30000 } }], + "delivery_type": "guaranteed", + "pricing_options": [ + { "pricing_option_id": "po_cpm_v2", "pricing_model": "cpm", "currency": "USD", "fixed_price": 18.50 } + ] + } + ], + "pagination": { "has_more": true, "cursor": "eyJvIjo1MH0=", "total_count": 312 } +} +``` + +**Rules** + +- Tokens are **opaque**. No format, no ordering, no inspection. +- A returned `wholesale_feed_version` is scoped to the request parameters that produced it. Buyers MUST cache the version alongside the `(account, buying_mode, filters, targeting_overlay, required_overlay_support, deprecated property_list, catalog)` tuple used. +- `pricing_version` is an optional finer-grained token: when present, it changes when prices move but `wholesale_feed_version` changes only when structure/metadata moves. Common for rate-card sweeps that don't change product metadata. +- **`if_pricing_version` requires `if_wholesale_feed_version`.** Pricing has no structural baseline of its own. Sending `if_pricing_version` without `if_wholesale_feed_version` is a schema-level error. The seller's evaluation is two-stage: wholesale feed mismatch returns the full payload (pricing is implicitly stale); wholesale feed match with pricing mismatch also returns the full payload (so the buyer sees updated `pricing_options`); both match → `unchanged: true`. +- **`filters` canonicalization.** Sellers MUST treat the `filters` object as canonicalized before hashing into the `wholesale_feed_version` keyspace: keys MUST be sorted lexicographically, omitted-and-default values MUST be treated identically (a missing `delivery_type` key is the same scope as `delivery_type: null`), array values MUST be sorted where the filter has set semantics (e.g., `channels`, `format_kinds`, `format_option_refs`, `required_metrics`) and preserved-order where the filter has sequence semantics (e.g., `preferred_delivery_types`). Buyers that pass equivalent-but-differently-shaped filter objects MUST receive the same `wholesale_feed_version` from the seller. This rule prevents silent stale-mirror bugs from key-order or default-elision differences between buyer SDKs. **Forward-compat default:** new filter fields added in 3.x minor versions MUST declare set-vs-sequence semantics in their schema (via `x-canonicalization: set | sequence` or equivalent prose); absent an explicit declaration, the rule defaults to **set-semantics** (sort before hashing). Sellers and SDKs that drift on this default produce cache misses that consumers can't explain. +- **Pagination interaction.** `wholesale_feed_version` describes the wholesale product feed as a whole, not individual pages. Sellers MUST return `wholesale_feed_version` on every paginated page (not only the first) when they declare `wholesale_feed_versioning.supported: true`; sellers that do not declare versioning SHOULD do the same. When the wholesale feed mutates between pages, the new version surfaces on the next page and the buyer MUST restart pagination from `cursor: null` — the partial pages they've already received describe a stale version. Sellers MAY alternatively snapshot the feed at the start of pagination and serve all pages from that snapshot under the original version; either implementation is conformant as long as `wholesale_feed_version` on a given page is the version that page belongs to. +- **`unchanged: true` and in-progress pagination.** A buyer that is mid-pagination on `cursor: X` MAY send `if_wholesale_feed_version` matching the version their pages so far were drawn from. If the seller confirms `unchanged: true`, the response omits `products[]` and pagination envelope entirely; the buyer abandons their in-progress walk under that version with confidence that no further pages would have produced new data. Sellers MAY NOT use the conditional-fetch short-circuit to skip individual pages within an active pagination — `unchanged` is feed-versus-cached-version, not per-page. +- Pre-v3.1 sellers that ignore `if_wholesale_feed_version` simply return the full payload — semantically correct, just inefficient (same as the unchanged-server path in HTTP). + +For pushed change tracking beyond conditional fetch, see `specs/wholesale-feed-webhooks.md`. Wholesale feed webhooks carry the changed product payload, pricing payload, removal tombstone, or bulk-change summary; `get_products` remains the repair and reconciliation read. + +### Cache layering + +Sellers publish two notional layers: a **public layer** (the rate-card / structural view) and **per-account overlays** (custom deals, account-specific rate cards). The conditional-fetch path is layer-aware via `cache_scope`. + +**Why this matters.** A buyer mirroring wholesale products across N accounts at one seller doesn't want to hold N copies of inventory that's actually identical for every buyer. The public layer is the seller's published rate card; most accounts at most sellers price off it directly. Premium custom deals are the exception. + +**Two-layer cache.** + +| Layer | Cache key | What's stored | +|---|---|---| +| Public | `(agent, buying_mode, filters, targeting_overlay, required_overlay_support, deprecated property_list, catalog)` | `wholesale_feed_version_public`, the wholesale product feed payload as seen without an account ref | +| Account overlay | `(agent, buying_mode, filters, targeting_overlay, required_overlay_support, deprecated property_list, catalog, account_id)` | `wholesale_feed_version_account`, the wholesale product feed payload as seen WITH this account ref, when `cache_scope: "account"` was returned | + +**Behavior.** + +- Requests without `account` always return `cache_scope: "public"`. Buyers cache under the public key. +- Requests with `account` return `cache_scope: "public"` OR `"account"` (seller MUST declare; no default). + - `"public"`: this account prices off the rate card. Buyer MAY dedupe — the version and payload are the same as the unauthenticated view. The buyer can serve subsequent requests for any account in `"public"` cache_scope from a single public-layer entry. + - `"account"`: this response carries account-specific overrides. Buyer caches under the account overlay key. +- Sellers MAY downgrade an account from `"account"` back to `"public"` by returning `cache_scope: "public"` on a request that previously got `"account"` — buyers SHOULD interpret this as "this account no longer has overrides" and drop their account overlay. + +**Conditional fetch with `if_wholesale_feed_version`.** Send the token paired with whichever scope it was returned in. The seller compares against the current version for that scope. If the buyer's token belongs to an `"account"` scope but the seller responds with `cache_scope: "public"`, that's the downgrade signal — buyer drops the overlay. + +**Webhook invalidation.** Wholesale feed webhook events declare `applies_to.scope` on `*.priced` and `*.updated` payloads. Sellers MUST apply the same account/caller authorization predicate used by `get_products buying_mode: "wholesale"` when deciding which subscribers receive product webhooks: + +- `applies_to: { scope: "public" }` → invalidate the public-layer cache for the entity. All account overlays referencing that public version are also stale and SHOULD be refetched. +- `applies_to: { scope: "account", account_ids: [...] }` → invalidate only the named accounts' overlays. The public layer is unaffected. +- `applies_to: { scope: "account" }` without `account_ids` → the seller is withholding the affected set; the per-subscriber scope filter routes the event only to subscribers whose principal is in the affected set. Receiving the event means "your overlay is stale." + +See `specs/wholesale-feed-webhooks.md` §"Cache layering and event scoping" for the full webhook-side spec. + +**See schema for complete field list**: [`get-products-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-response.json) + +## Common Scenarios + +### Time-budgeted discovery + +Declare a time budget when you need fast results and can accept partial data. The seller returns what it can within the budget and declares what is incomplete: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441008', + buying_mode: 'brief', + brief: 'CTV and display for brand awareness', + brand: { + domain: 'acmecorp.com' + }, + time_budget: { + interval: 10, + unit: 'seconds' + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} products`); + + if (result.data.incomplete) { + for (const entry of result.data.incomplete) { + console.log(`Incomplete: ${entry.scope} — ${entry.description}`); + if (entry.estimated_wait) { + console.log(` Seller estimates more time may help: ${entry.estimated_wait.interval} ${entry.estimated_wait.unit}`); + } + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_with_time_budget(): + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441009', + buying_mode='brief', + brief='CTV and display for brand awareness', + brand={ + 'domain': 'acmecorp.com' + }, + time_budget={ + 'interval': 10, + 'unit': 'seconds' + } + ) + print(f"Found {len(result.products)} products") + + for entry in result.get('incomplete', []): + print(f"Incomplete: {entry['scope']} — {entry['description']}") + if 'estimated_wait' in entry: + wait = entry['estimated_wait'] + print(f" Seller estimates more time may help: {wait['interval']} {wait['unit']}") + +asyncio.run(discover_with_time_budget()) +``` + +</CodeGroup> + +A response with incomplete data — products are returned but some scopes are missing: + +```json test=false +{ + "products": [ + { + "product_id": "prog-display-ros", + "name": "Programmatic Display — Run of Site", + "delivery_type": "non_guaranteed", + "pricing_options": [{ "pricing_option_id": "cpm-ros", "pricing_model": "cpm", "currency": "USD", "fixed_price": 12.00 }] + } + ], + "incomplete": [ + { + "scope": "products", + "description": "Premium inventory not searched — requires publisher approval", + "estimated_wait": { "interval": 60, "unit": "minutes" } + }, + { + "scope": "forecast", + "description": "Forecast model did not complete within budget", + "estimated_wait": { "interval": 45, "unit": "seconds" } + } + ] +} +``` + +### Wholesale Product Discovery + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// wholesale mode: buyer applies their own audiences, no publisher curation +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441010', + buying_mode: 'wholesale', + brand: { + domain: 'acmecorp.com' + }, + filters: { + delivery_type: 'non_guaranteed' + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} standard wholesale products`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_standard_wholesale_products(): + # wholesale mode: buyer applies their own audiences, no publisher curation + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441011', + buying_mode='wholesale', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'delivery_type': 'non_guaranteed' + } + ) + print(f"Found {len(result.products)} standard wholesale products") + +asyncio.run(discover_standard_wholesale_products()) +``` + +</CodeGroup> + +### Multi-Format Discovery + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Find products supporting both video and display +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441012', + buying_mode: 'brief', + brief: 'Brand awareness campaign with video and display', + brand: { + domain: 'acmecorp.com' + }, + filters: { + channels: ['display', 'ctv'] + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} products supporting video and display`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_multi_format(): + # Find products supporting both video and display + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441013', + buying_mode='brief', + brief='Brand awareness campaign with video and display', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'channels': ['display', 'ctv'] + } + ) + print(f"Found {len(result.products)} products supporting video and display") + +asyncio.run(discover_multi_format()) +``` + +</CodeGroup> + +### Budget and Date Filtering + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Find products within budget and date range for specific countries and channels +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441014', + buying_mode: 'brief', + brief: 'Q2 campaign for athletic footwear in North America', + brand: { + domain: 'acmecorp.com' + }, + filters: { + start_date: '2025-04-01', + end_date: '2025-06-30', + budget_range: { + min: 50000, + max: 100000, + currency: 'USD' + }, + countries: ['US', 'CA'], + channels: ['display', 'ctv', 'podcast'], + delivery_type: 'guaranteed' + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} products for Q2 within budget`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_with_budget_and_dates(): + # Find products within budget and date range for specific countries and channels + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441015', + buying_mode='brief', + brief='Q2 campaign for athletic footwear in North America', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'start_date': '2025-04-01', + 'end_date': '2025-06-30', + 'budget_range': { + 'min': 50000, + 'max': 100000, + 'currency': 'USD' + }, + 'countries': ['US', 'CA'], + 'channels': ['display', 'ctv', 'podcast'], + 'delivery_type': 'guaranteed' + } + ) + print(f"Found {len(result.products)} products for Q2 within budget") + +asyncio.run(discover_with_budget_and_dates()) +``` + +</CodeGroup> + +### Property Tag Resolution + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Get products with property tags +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441016', + buying_mode: 'brief', + brief: 'Sports content', + brand: { + domain: 'acmecorp.com' + } +}); + +if (result.success && result.data) { + // Products with property_tags in publisher_properties represent large networks + // Use get_adcp_capabilities to discover the agent's portfolio + const productsWithTags = result.data.products.filter(p => + p.publisher_properties?.some(pub => pub.property_tags && pub.property_tags.length > 0) + ); + console.log(`${productsWithTags.length} products use property tags (large networks)`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_property_tags(): + # Get products with property tags + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441017', + buying_mode='brief', + brief='Sports content', + brand={ + 'domain': 'acmecorp.com' + } + ) + + # Products with property_tags in publisher_properties represent large networks + # Use get_adcp_capabilities to discover the agent's portfolio + products_with_tags = [p for p in result.products + if any(pub.get('property_tags') for pub in p.get('publisher_properties', []))] + print(f"{len(products_with_tags)} products use property tags (large networks)") + +asyncio.run(discover_property_tags()) +``` + +</CodeGroup> + +### Guaranteed Delivery Products + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Find guaranteed delivery products for measurement +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441018', + buying_mode: 'brief', + brief: 'Guaranteed delivery for lift study', + brand: { + domain: 'acmecorp.com' + }, + filters: { + delivery_type: 'guaranteed', + min_exposures: 100000 + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} guaranteed products with 100k+ exposures`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_guaranteed(): + # Find guaranteed delivery products for measurement + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441019', + buying_mode='brief', + brief='Guaranteed delivery for lift study', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'delivery_type': 'guaranteed', + 'min_exposures': 100000 + } + ) + print(f"Found {len(result.products)} guaranteed products with 100k+ exposures") + +asyncio.run(discover_guaranteed()) +``` + +</CodeGroup> + +### Standard Formats Only + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Find products that only accept IAB standard formats +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441020', + buying_mode: 'wholesale', + brand: { + domain: 'acmecorp.com' + }, + filters: { + standard_formats_only: true + } +}); + +if (result.success && result.data) { + console.log(`Found ${result.data.products.length} products with standard formats only`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_standard_formats(): + # Find products that only accept IAB standard formats + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441021', + buying_mode='wholesale', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'standard_formats_only': True + } + ) + print(f"Found {len(result.products)} products with standard formats only") + +asyncio.run(discover_standard_formats()) +``` + +</CodeGroup> + +### Catalog-driven discovery + +Use `catalog` with a brand to discover advertising products that can promote your catalog items. The seller matches your items against its inventory and returns products where matches exist: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Discover retail media products for specific catalog items +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441022', + buying_mode: 'wholesale', + brand: { + domain: 'acmecorp.com' + }, + catalog: { + type: 'product', + tags: ['ketchup', 'organic'], + category: 'food/condiments' + }, + filters: { + channels: ['retail_media'] + } +}); + +if (result.success && result.data) { + if (result.data.catalog_applied) { + console.log(`Found ${result.data.products.length} products with catalog matches`); + } else { + console.log('Seller does not support catalog matching'); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_commerce_products(): + # Discover retail media products for specific catalog items + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441023', + buying_mode='wholesale', + brand={ + 'domain': 'acmecorp.com' + }, + catalog={ + 'type': 'product', + 'tags': ['ketchup', 'organic'], + 'category': 'food/condiments' + }, + filters={ + 'channels': ['retail_media'] + } + ) + if result.get('catalog_applied'): + print(f"Found {len(result.products)} products with catalog matches") + else: + print("Seller does not support catalog matching") + +asyncio.run(discover_commerce_products()) +``` + +```bash CLI requires-env=ADCP_AUTH_TOKEN +uvx adcp \ + https://test-agent.adcontextprotocol.org/sales/mcp \ + get_products \ + '{"idempotency_key":"550e8400-e29b-41d4-a716-446655441024","buying_mode":"wholesale","brand":{"domain":"acmecorp.com"},"catalog":{"type":"product","tags":["ketchup","organic"],"category":"food/condiments"},"filters":{"channels":["retail_media"]}}' \ + --auth $ADCP_AUTH_TOKEN +``` + +</CodeGroup> + +You can also use GTIN matching, reference a synced catalog, or discover products for other catalog types: + +```json +{ + "catalog": { + "type": "product", + "gtins": ["00013000006040", "00013000006057"] + } +} +``` + +```json +{ + "catalog": { + "catalog_id": "gmc-primary", + "type": "product" + } +} +``` + +```json +{ + "catalog": { + "type": "job", + "catalog_id": "chef-vacancies" + } +} +``` + +### Property List Filtering + +<Info> +**AdCP 3.0** - Property list filtering requires governance agent support. +</Info> + +Filter products to only those available on properties in your approved list: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/sdk/testing'; + +// Filter products by property list from governance agent +const result = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441025', + buying_mode: 'brief', + brief: 'Brand-safe inventory for family brand', + brand: { + domain: 'acmecorp.com' + }, + property_list: { + agent_url: 'https://governance.example.com', + list_id: 'pl_brand_safe_2024' + } +}); + +if (result.success && result.data) { + // Check if filtering was actually applied + if (result.data.property_list_applied) { + console.log(`Found ${result.data.products.length} products on approved properties`); + } else { + console.log('Agent does not support property list filtering'); + console.log(`Found ${result.data.products.length} products (unfiltered)`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_with_property_list(): + # Filter products by property list from governance agent + result = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441026', + buying_mode='brief', + brief='Brand-safe inventory for family brand', + brand={ + 'domain': 'acmecorp.com' + }, + property_list={ + 'agent_url': 'https://governance.example.com', + 'list_id': 'pl_brand_safe_2024' + } + ) + + # Check if filtering was actually applied + if result.get('property_list_applied'): + print(f"Found {len(result['products'])} products on approved properties") + else: + print("Agent does not support property list filtering") + print(f"Found {len(result['products'])} products (unfiltered)") + +asyncio.run(discover_with_property_list()) +``` + +</CodeGroup> + +**Note**: If `property_list_applied` is absent or `false`, the sales agent did not filter products. This can happen if: +- The agent doesn't support property governance features +- The agent couldn't access the property list +- The property list had no effect on the available inventory + +#### Property Targeting Behavior + +Products have a `property_targeting_allowed` flag that affects filtering: + +- **`property_targeting_allowed: false` (default)**: Product is "all or nothing" - excluded unless your list contains all of its properties +- **`property_targeting_allowed: true`**: Product is included if there's any intersection between its properties and your list + +This allows publishers to offer run-of-network products that can't be cherry-picked alongside flexible inventory that buyers can filter. + +See [Property Targeting](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#property-targeting) for more details and [Property Governance](/dist/docs/3.2.0-beta.4/governance/property/specification) for more on property lists. + +## Refinement + +After initial discovery, use `buying_mode: "refine"` to iterate on specific products and proposals. The `refine` array is a list of change requests — each entry declares a scope and what the buyer is asking for. The seller returns updated products with revised pricing and configurations, plus `refinement_applied` acknowledging each ask. + +See the [Refinement guide](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement) for the full walkthrough: scope types, action semantics, seller responses, and common patterns. The parameter shape is defined in the [Refine array](#refine-array) section above. + +Minimal example: + +```json test=false +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441027", + "buying_mode": "refine", + "refine": [ + { "scope": "request", "ask": "more video, less display" }, + { "scope": "product", "product_id": "prod_premium_video", "ask": "add 16:9 format option" }, + { "scope": "product", "product_id": "prod_display_run_of_site", "action": "omit" }, + { "scope": "proposal", "proposal_id": "prop_awareness_q2", "ask": "reallocate display budget to video" } + ], + "filters": { + "start_date": "2026-04-01", + "end_date": "2026-04-30", + "budget_range": { "min": 200000, "max": 200000, "currency": "USD" } + } +} +``` + +Key rules to know before sending: + +- **`refine` is only valid in `refine` mode.** Requests that include this field in `brief` or `wholesale` mode are rejected with [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request). +- **Filters are absolute**, not deltas. Always send the full filter set you want applied. +- **Proposals are actionable through status.** `proposal_status: "draft"` requires finalization before create; `proposal_status: "committed"` can be executed with `create_media_buy(proposal_id)` before `expires_at`; absent status is legacy ready-to-buy. +- **Proposals are ephemeral.** Proposals typically include an `expires_at` timestamp. After expiration, the seller returns [`PROPOSAL_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-expired). +- **Wholesale product IDs are scoped stable identifiers.** A non-custom product keeps the same ID for the same logical offer within the seller and declared `cache_scope`, including across reads and webhooks. Feed and pricing versions communicate mutation; retirement or replacement may end that identity. +- **Targeting-aware custom product IDs are ephemeral configurations.** A request-specific product issued by this flow sets `is_custom: true`, is usable only in the authenticated account and discovery/refinement lineage that issued it, and includes `expires_at`. The generic Product schema remains compatible with earlier custom products that omitted expiry. After expiration, a seller that still recognizes the caller-authorized ID returns [`PRODUCT_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-expired); after the seller no longer retains a tombstone—or when the ID is outside the caller's account/lineage—it returns [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) without revealing whether another tenant has that ID. + +## Seller Declines + +A seller that understands a well-formed `brief` or `refine` request but deliberately declines to offer products returns the `GetProductsRejected` arm. This is a successful business outcome, not a malformed request or technical failure: + +```json +{ + "status": "rejected", + "reason": "The requested budget is below the minimum for this inventory.", + "suggestions": [ + "Increase the campaign budget.", + "Consider display inventory for this flight." + ] +} +``` + +| Situation | Response | +|-----------|----------| +| Search completed and no inventory matched; seller takes no position | `status: "completed"`, `products: []` | +| Structured request filters excluded candidates | Completed response, optionally with `filter_diagnostics` | +| Seller understood the request and deliberately declines it | `status: "rejected"`, `reason`, optional `suggestions[]` | +| Seller needs clarification | `status: "input-required"` | +| Seller accepted work that will finish later | `status: "submitted"` / `"working"` | +| Seller could not produce a usable answer because a dependency timed out or was unavailable | [`SERVICE_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-service-unavailable), normally with `recovery: "transient"` and optional `retry_after` | + +`reason` and `suggestions[]` MAY be sanitized to protect confidential merchandising, inventory, policy, and partner rules. Sellers MUST NOT include internal rule text, candidate product identifiers, stack traces, credentials, or private upstream details. Buyers MUST treat these values as untrusted seller-authored plain text: escape them before rendering and sanitize or isolate them before including them in an LLM prompt context. + +Retry behavior belongs to the error channel, not this arm or `incomplete[]`. In particular, an upstream outage that leaves no usable product result is a technical failure, normally `SERVICE_UNAVAILABLE` with `error.recovery: "transient"`; buyers then follow `retry_after` or exponential backoff. A rejection without `suggestions[]` is final for that brief, and a rejection with suggestions invites a changed brief rather than an unchanged automatic retry. + +The rejection arm carries no `products`, `proposals`, `incomplete`, `filter_diagnostics`, `refinement_applied`, `cache_scope`, `errors`, or envelope-level `adcp_error`. HTTP and MCP keep success markers (`200`, `isError: false`). A2A maps the transport task to `completed`; the AdCP artifact payload carries `status: "rejected"`: + +```json +{ + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [ + { + "parts": [ + { + "data": { + "status": "rejected", + "reason": "The requested budget is below the minimum for this inventory." + } + } + ] + } + ] +} +``` + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) | No credentials presented | Provide credentials via auth header | +| [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) | Credentials rejected (expired / revoked) | Human credential rotation required; do not auto-retry | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | Brief too long or malformed filters | Check request parameters | +| [`PRODUCT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-not-found) | One or more referenced product IDs are unknown | Remove invalid IDs and retry, or re-discover with a `brief` request | +| [`PRODUCT_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-expired) | One or more recognized configured products passed `expires_at` | Re-discover with a new `brief` or `wholesale` request | +| [`PROPOSAL_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-expired) | A referenced proposal ID has passed its `expires_at` timestamp | Re-discover with a new `brief` or `wholesale` request | +| [`PROPOSAL_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-proposal-not-found) | The referenced `proposal_id` is unknown to the seller (never issued, wrong tenant, or evicted from cache) | Re-issue `get_products` in `brief` or `wholesale` mode to obtain a fresh draft; finalize that recognized proposal before creating the media buy | +| [`MULTI_FINALIZE_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-multi-finalize-unsupported) | `refine[]` carried multiple `action: 'finalize'` entries but the seller cannot guarantee atomic multi-proposal commit | Sequence single-proposal finalize calls — one finalize entry per `get_products` call | +| [`POLICY_VIOLATION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-policy-violation) | The request itself violates an applicable policy and must be corrected | Review the structured policy details and revise the request. A seller making a deliberate business decision to decline an otherwise well-formed brief uses `status: "rejected"` instead. | + +### Authentication Comparison + +See the difference between authenticated and unauthenticated access: + +<CodeGroup> + +```javascript JavaScript +import { testAgent, testAgentNoAuth } from '@adcp/sdk/testing'; + +// WITH authentication - full product results with pricing +const fullProducts = await testAgent.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441028', + buying_mode: 'brief', + brief: 'Premium CTV inventory for brand awareness', + brand: { + domain: 'acmecorp.com' + } +}); + +if (!fullProducts.success) { + throw new Error(`Failed to get products: ${fullProducts.error}`); +} + +console.log(`With auth: ${fullProducts.data.products.length} products`); +console.log(`First product pricing: ${fullProducts.data.products[0].pricing_options.length} options`); + +// WITHOUT authentication - limited public product results +const publicProducts = await testAgentNoAuth.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655441029', + buying_mode: 'brief', + brief: 'Premium CTV inventory for brand awareness', + brand: { + domain: 'acmecorp.com' + } +}); + +if (!publicProducts.success) { + throw new Error(`Failed to get products: ${publicProducts.error}`); +} + +console.log(`Without auth: ${publicProducts.data.products.length} products`); +console.log(`First product pricing: ${publicProducts.data.products[0].pricing_options?.length || 0} options`); +``` + +```python Python +import asyncio +from adcp.testing import test_agent, test_agent_no_auth + +async def compare_auth(): + # WITH authentication - full product results with pricing + full_products = await test_agent.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441030', + buying_mode='brief', + brief='Premium CTV inventory for brand awareness', + brand={ + 'domain': 'acmecorp.com' + } + ) + + print(f"With auth: {len(full_products['products'])} products") + print(f"First product pricing: {len(full_products['products'][0]['pricing_options'])} options") + + # WITHOUT authentication - limited public product results + public_products = await test_agent_no_auth.simple.get_products( + idempotency_key='550e8400-e29b-41d4-a716-446655441031', + buying_mode='brief', + brief='Premium CTV inventory for brand awareness', + brand={ + 'domain': 'acmecorp.com' + } + ) + + print(f"Without auth: {len(public_products['products'])} products") + print(f"First product pricing: {len(public_products['products'][0].get('pricing_options', []))} options") + +asyncio.run(compare_auth()) +``` + +</CodeGroup> + +**Key Differences:** +- **Product Count**: Authenticated access returns more products, including private/custom offerings +- **Pricing Information**: Only authenticated requests receive detailed pricing options (CPM, CPCV, etc.) +- **Targeting Details**: Custom targeting capabilities may be restricted to authenticated users +- **Rate Limits**: Unauthenticated requests have lower rate limits + +## Authentication Behavior + +- **Without credentials**: Returns limited public product results, no pricing, no custom offerings +- **With credentials**: Returns complete product results with pricing and custom products + +See [Authentication Guide](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication) for details. + +## Asynchronous Operations + +Most product searches complete immediately, but some scenarios require asynchronous processing. When this happens, you'll receive a status other than `completed`. A `submitted` response with `task_id` is always pollable through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) (legacy `tasks/get`); `push_notification_config` adds webhook notification for background workflows. + +#### SDK Status Handling + +```typescript +import { randomUUID } from 'node:crypto'; + +const params = { + idempotency_key: randomUUID(), + buying_mode: 'brief', + brief: 'Premium CTV inventory for brand awareness', +}; + +const initial = await agent.getProducts(params); +const final = + initial.status === 'submitted' + ? await initial.submitted!.waitForCompletion(30000) + : initial; + +if (final.status === 'failed') { + throw new Error(final.error?.message ?? 'get_products failed'); +} else if (final.status === 'rejected') { + console.log(`Seller declined the brief: ${final.reason}`); + console.log(final.suggestions ?? []); +} else if (final.status !== 'completed') { + throw new Error(`Unhandled get_products status: ${final.status}`); +} else { + for (const product of final.products) { + console.log(product.name); + } +} +``` + +### When Search Runs Asynchronously + +Product search may require async processing in these situations: + +- **Complex searches**: Searching across multiple inventory sources or custom curation +- **Needs clarification**: Your brief is vague and the system needs more information +- **Custom products**: Bespoke product packages that require human review + +### Async Status Flow + +<Tabs> +<Tab title="MCP"> + +#### Immediate Completion (Most Common) + +```json +POST /api/mcp/call_tool + +{ + "name": "get_products", + "arguments": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655441032", + "buying_mode": "brief", + "brief": "CTV inventory for sports audience", + "brand": { "domain": "acmecorp.com" } + } +} + +Response (200 OK): +{ + "status": "completed", + "message": "Found 3 products matching your requirements", + "products": [...] +} +``` + +#### Needs Clarification + +When the brief is unclear, the system asks for more details: + +```json +Response (200 OK): +{ + "status": "input-required", + "message": "I need a bit more information. What's your budget range and campaign duration?", + "task_id": "task_789", + "context_id": "ctx_123", + "reason": "CLARIFICATION_NEEDED", + "partial_results": [], + "suggestions": ["$50K-$100K", "1 month", "Q1 2024"] +} +``` + +Continue the conversation with the same `context_id`: + +```json +POST /api/mcp/continue + +{ + "context_id": "ctx_123", + "message": "Budget is $75K for a 3-week campaign in March" +} + +Response (200 OK): +{ + "status": "completed", + "message": "Perfect! Found 5 products within your budget", + "products": [...] +} +``` + +#### Complex Search (With Webhook and Polling) + +For searches requiring deep inventory analysis, configure a webhook for terminal completion/failure notification. The returned `task_id` remains valid for polling via `get_task_status` (legacy `tasks/get`). + +```json +POST /api/mcp/call_tool + +{ + "name": "get_products", + "arguments": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655441033", + "buying_mode": "brief", + "brief": "Premium inventory across all formats for luxury automotive brand", + "brand": { "domain": "acmecorp.com" }, + "push_notification_config": { + "url": "https://buyer.com/webhooks/adcp/get_products", + "authentication": { + "schemes": ["Bearer"], + "credentials": "secret_token_32_chars" + } + } + } +} + +Response (200 OK): +{ + "status": "submitted", + "message": "Custom curation queued; typical turnaround 10-30 minutes", + "task_id": "task_456", + "context_id": "ctx_123", + "estimated_completion": "2025-01-22T10:30:00Z" +} + +// Later, poll get_task_status/tasks/get with task_id, or receive webhook POST to https://buyer.com/webhooks/adcp/get_products +{ + "task_id": "task_456", + "task_type": "get_products", + "status": "completed", + "timestamp": "2025-01-22T10:30:00Z", + "message": "Found 12 premium products across all formats", + "result": { + "products": [...] + } +} +``` + +</Tab> +<Tab title="A2A"> + +#### Immediate Completion (Most Common) + +Send the profile URI in `A2A-Extensions` and use the structured invocation body: + +```json +{ + "message": { + "messageId": "msg-get-products-001", + "role": "ROLE_USER", + "parts": [{ + "data": { + "skill": "get_products", + "input": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655441034", + "buying_mode": "brief", + "brief": "CTV inventory for sports audience", + "brand": { "domain": "acmecorp.com" } + } + } + }] + } +} +``` + +The non-streaming `SendMessage` response selects its `task` branch. The Task is +completed and carries the direct AdCP response in its artifact: + +```json +{ + "task": { + "id": "a2a-task-123", + "contextId": "ctx_456", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [ + { "text": "Found 3 products matching your requirements" }, + { "data": { "status": "completed", "cache_scope": "account", "products": [] } } + ] + }] + } +} +``` + +#### Needs Clarification + +Real-time updates via SSE when clarification is needed: + +```json +{ + "task": { + "id": "task_789", + "contextId": "ctx_123", + "status": { + "state": "TASK_STATE_INPUT_REQUIRED", + "message": { + "messageId": "msg-clarification-001", + "taskId": "task_789", + "contextId": "ctx_123", + "role": "ROLE_AGENT", + "parts": [ + { "text": "I need a bit more information. What's your budget range and campaign duration?" }, + { + "data": { + "reason": "CLARIFICATION_NEEDED", + "suggestions": ["$50K-$100K", "1 month", "Q1 2024"] + } + } + ] + } + } + } +} +``` + +Send a new activated profile invocation in the same context, with the refined typed request: + +```json +{ + "message": { + "messageId": "msg-get-products-002", + "taskId": "task_789", + "contextId": "ctx_123", + "role": "ROLE_USER", + "parts": [{ + "data": { + "skill": "get_products", + "input": { + "buying_mode": "brief", + "brief": "CTV sports inventory with a $75K budget for three weeks in March" + } + } + }] + } +} +``` + +The resulting Task uses the same completed-artifact mapping as the immediate response: + +```json +{ + "task": { + "id": "task_789", + "contextId": "ctx_123", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [ + { "text": "Found 5 products within your budget" }, + { "data": { "status": "completed", "cache_scope": "account", "products": [] } } + ] + }] + } +} +``` + +#### Complex Search (AdCP Submitted and Polling) + +Activate the [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension) on the request: + +```http +POST /api/a2a HTTP/1.1 +A2A-Version: 1.0 +A2A-Extensions: https://adcontextprotocol.org/extensions/adcp/v3 +Content-Type: application/json +``` + +```json +{ + "message": { + "messageId": "msg-get-products-003", + "role": "ROLE_USER", + "parts": [{ + "data": { + "skill": "get_products", + "input": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655441035", + "buying_mode": "brief", + "brief": "Premium inventory across all formats for a luxury automotive brand", + "brand": { "domain": "acmecorp.com" } + } + } + }] + } +} +``` + +If custom curation is queued, the A2A invocation is still complete. The AdCP Submitted response and its durable handle are inside the artifact DataPart: + +```json +{ + "task": { + "id": "a2a-task-456", + "contextId": "ctx_789", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "adcp-result", + "parts": [{ + "data": { + "status": "submitted", + "task_id": "adcp-task-789", + "message": "Custom curation queued; typical turnaround 10-30 minutes" + } + }] + }] + } +} +``` + +Later, send a fresh activated invocation of `get_task_status`. Do not poll `a2a-task-456`; it identifies the already-completed transport invocation. + +```json +{ + "message": { + "messageId": "msg-get-products-poll-001", + "role": "ROLE_USER", + "parts": [{ + "data": { + "skill": "get_task_status", + "input": { + "task_id": "adcp-task-789", + "include_result": true + } + } + }] + } +} +``` + +</Tab> +</Tabs> + +### Status Overview + +| Status | When It Happens | What You Do | +|--------|----------------|-------------| +| `completed` | Search finished successfully | Process the product results | +| `input-required` | Need clarification on the brief | Answer the question and continue | +| `working` | Searching across multiple sources | Wait on the open connection / transport progress stream | +| `submitted` | Custom curation queued | Poll `get_task_status` with the AdCP `task_id`; on MCP, the seller may advertise the legacy AdCP `tasks/get` alias | +| `rejected` | Seller understood the brief but deliberately declined it | Read the sanitized reason; revise and resubmit only when `suggestions[]` offers a recovery path | +| `failed` | Search couldn't complete | Check error message, adjust brief | + +**Note:** For the complete status list see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +**Most searches complete immediately.** Async processing is only needed for complex scenarios or when the system needs your input. + +## Next Steps + +After discovering products: + +1. **Review Options**: Compare products, pricing, and targeting capabilities +2. **Create Media Buy**: Use [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) to execute campaign +3. **Prepare Creatives**: Use each returned product's canonical `format_options[]` to see format requirements +4. **Supply Assets**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or inline `packages[].creatives` for inline-only sellers + +## Learn More + +- [Product Discovery Guide](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/) - Understanding briefs and products +- [Pricing Models](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models) - CPM, CPCV, CPP explained +- [Brief Expectations](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations) - How to write effective briefs +- [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) - Product structure and fields diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/index.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/index.mdx new file mode 100644 index 0000000000..8e6482cdcf --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/index.mdx @@ -0,0 +1,183 @@ +--- +title: Task Reference +sidebarTitle: Overview +description: "AdCP media buy task reference — all tasks for product discovery, campaign creation, delivery reporting, creatives, audiences, and conversion tracking with schemas and examples." +"og:title": "AdCP — Media buy task reference" +--- + + +Complete reference for all AdCP Media Buy tasks. Each task is designed for AI agents to automate specific parts of the advertising workflow. + +## All Tasks Overview + +| Task | Purpose | Response Time | Phase | +|------|---------|---------------|-------| +| [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) | Enumerate structured product offers | ~1s | Discovery | +| [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) | Request seller-authored plans | ~60s | Planning | +| [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) | Revise proposals or finalize inventory holds | ~60s | Planning | +| [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals) | Record terminal proposal feedback | ~1s | Planning | +| [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) | Buy published offers directly | Minutes-Days | Media Buys | +| [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) | Accept new-buy, amendment, or cancellation terms | Minutes-Days | Media Buys | +| [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) | Apply operational delivery controls | Minutes-Days | Media Buys | +| [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | 3.x compatibility discovery and refinement facade | ~60s | Compatibility | +| [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) | 3.x compatibility creation facade | Minutes-Days | Compatibility | +| [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) | 3.x compatibility update facade | Minutes-Days | Compatibility | +| [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | View endpoint capabilities, including creative operations | ~1s | Capability | +| [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) | Sync catalog feeds (products, stores, inventory) | Minutes-Days | Catalogs | +| [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) | Upload and manage creative assets | Minutes-Days | Creatives | +| [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) | Query creative library with filtering | ~1s | Creatives | +| [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) | Retrieve media buy status, creative approvals, and delivery snapshots | ~1s | Monitoring | +| [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | Retrieve performance and delivery data | ~60s | Reporting | +| [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) | Submit performance signals for optimization | ~1s | Optimization | +| [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) | Configure event sources for conversion tracking | ~1s | Conversion Tracking | +| [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) | Send marketing events for attribution | ~1s | Conversion Tracking | +| [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) | Upload and manage first-party CRM audiences | Minutes-Days | Audiences | + +## Response Time Categories + +AdCP tasks fall into four response time categories: + +### 🟢 Instant (~1 second) +**Simple lookups and event ingestion** +- [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) - Published offers and canonical `Product.format_options[]` +- [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) - Creative library queries +- [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) - Media buy status and creative approvals +- [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) - Performance signal submission +- [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) - Event source configuration +- [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) - Event ingestion + +### 🟡 Processing (~60 seconds) +**AI/LLM inference with backend systems** +- [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) - Seller planning from a natural-language brief and structured criteria +- [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) - Typed proposal revision and finalization +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) - Performance data aggregation + +### 🟠 Asynchronous (Minutes to Days) +**Complex operations with potential human approval** +- [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) - Direct published-offer commitment +- [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) - Negotiated commitment, amendment, or cancellation +- [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) - Revision-checked operational control +- [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) - Catalog feed processing and review +- [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) - Creative asset processing +- [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) - Audience matching and processing + +## Task Categories by Workflow + +### Account Management +Before placing media buys, establish a commercial relationship with the seller. These tasks are shared across all vendor protocols and live in the Commerce Protocol section: + +- **[`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts)** - Declare brand/operator pairs and billing; seller provisions accounts +- **[`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts)** - Check account status and retrieve active `account_id` values + +### Discovery & Planning +Start here to understand what's available and plan your campaign. + +- **[`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)** - Discover agent capabilities, portfolio, and supported features (protocol-level task) +- **[`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products)** - Read published offers or bootstrap and repair a wholesale mirror +- **[`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals)**, **[`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals)**, and **[`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals)** - Request seller-authored plans, create immutable successors, finalize holds, or record terminal feedback +- **[Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats)** - Understand creative requirements and authority + +### Media Buy Management +Create and manage your advertising campaigns. + +- **[`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products)** - Directly buy published product offers +- **[`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal)** - Apply negotiated new-buy, amendment, or cancellation terms +- **[`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy)** - Modify delivery controls inside accepted terms + +### 3.x Compatibility +Use these only when capability discovery does not expose the compact lifecycle: + +- **[`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy)** and **[`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy)** - Deprecated 3.x compatibility facades +- **[`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products)** - 3.x compatibility discovery facade; new integrations choose `list_products` or `request_proposals` + +### Catalog Management +Sync product feeds, inventory, and store data to seller accounts. + +- **[`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs)** - Push catalog feeds with platform review and approval + +### Creative Management +Handle creative assets throughout their lifecycle. + +- **[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives)** - Upload assets to an agent-hosted creative library +- **[`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives)** - Search and manage your creative library (creative protocol) +- **`assignment_operations`** - Explicitly assign, unassign, or replace package creatives after compact commitment + +### Performance & Optimization +Monitor and optimize campaign performance. + +- **[`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys)** - Check campaign status, creative approvals, and near-real-time delivery snapshots +- **[`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery)** - Track delivery and performance metrics for reporting +- **[`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback)** - Submit performance signals for publisher optimization + +### Conversion Tracking +Configure event sources and send marketing events for attribution. + +- **[`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources)** - Configure event sources on seller accounts +- **[`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event)** - Send marketing events for attribution + +### Audience Management +Upload and manage first-party CRM audiences for targeting. + +- **[`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences)** - Upload hashed customer lists and check matching status + +## Schema Reference + +All tasks include JSON schema definitions for requests and responses: + +- **Request Schemas**: `/schemas/3.2.0-beta.4/media-buy/[task-name]-request.json` +- **Response Schemas**: `/schemas/3.2.0-beta.4/media-buy/[task-name]-response.json` + +**Task Management**: For tracking async operations across all AdCP domains, see [Task Lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle). + +Schemas are accessible at runtime via the documentation server for validation and tooling. + +## Common Patterns + +### Task Naming Conventions +Task names use snake_case and follow verb-first semantics consistently across Media Buy: +- `get_*`: Retrieve current state or scoped datasets (for example [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) and [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery)) +- `list_*`: Enumerate collections with optional filtering (for example [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) and [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives)) +- `request_*`, `refine_*`, and `decline_*`: Explicit lifecycle transitions over immutable resources; finalized proposals flow into [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) +- `buy_*` and `accept_*`: Create or change a commercial commitment from versioned terms +- `control_*`: Apply revision-checked operational changes inside accepted terms +- `sync_*`: Reconcile external state into seller systems with upsert-like behavior ([`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs), [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives), [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources)) +- `log_*`: Ingest append-only event records ([`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event)) +- `provide_*`: Submit optimization or feedback signals ([`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback)) + +### Error Handling +All tasks follow consistent error patterns with: +- HTTP status codes for different error types +- Structured error messages with context +- Retry guidance for transient failures + +### Authentication +Tasks require proper authentication via: +- API keys for service-to-service calls +- Authenticated agent and account scope for multi-tenant operations +- Permission validation for resource access + +### Asynchronous Operations +Long-running tasks provide: +- Immediate response with operation ID +- Status polling endpoints for progress +- Webhook notifications for completion + +## Getting Started + +1. **Discover capabilities**: Read `media_buy.lifecycle_tools` through [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). +2. **Choose a commercial path**: Use [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) for published offers and wholesale mirrors, or [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) for seller planning. +3. **Understand formats**: Check each selected product's canonical `format_options[]` before commitment. +4. **Commit**: Call [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products), or revise and finalize a proposal before [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). +5. **Supply creatives**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) and explicit assignment operations after compact commitment. +6. **Read operational state**: Use [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) for status, revision, accepted terms, approvals, and missing formats. +7. **Control delivery**: Use [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) for in-envelope changes; start a proposal amendment when the seller returns [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required). +8. **Monitor performance**: Track billing-grade reporting with [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery). + +For reporting and reconciliation, treat [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) as the authoritative, billing-grade source. Use [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) snapshots for operational monitoring only. + +## Related Documentation + +- **[Product Discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/)** - Natural language inventory discovery +- **[Media Buys](/dist/docs/3.2.0-beta.4/media-buy/media-buys/)** - Campaign lifecycle management +- **[Creatives](/dist/docs/3.2.0-beta.4/media-buy/creatives/)** - Creative asset management +- **[Advanced Topics](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/)** - Targeting, security, and architecture diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products.mdx new file mode 100644 index 0000000000..9bb0af83d6 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products.mdx @@ -0,0 +1,119 @@ +--- +title: list_products +description: "Read seller product offers with structured discovery criteria." +"og:title": "AdCP list_products Task" +testable: true +--- + +`list_products` is the side-effect-free entry point to the compact product lifecycle. Each invocation completes synchronously, while account-level wholesale feed webhooks keep long-lived buyer mirrors current without polling. It returns products only—never proposals. Buyers can purchase listed products through [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) or pass returned `product_id` values to [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals) for seller planning. + +{/* Using latest because this schema is not yet released in any version. + Update to the correct version alias after the next release. */} +**Request schema:** [`/schemas/3.2.0-beta.0/media-buy/list-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/list-products-request.json) + +```json +{ + "brand": { "domain": "acmeoutdoor.example" }, + "criteria": { + "offer_filters": { + "channels": ["olv"], + "pricing_currencies": ["USD"] + }, + "targeting_overlay": { + "geo_countries": ["US"] + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] } + } + }, + "max_results": 25 +} +``` + +`brand` is an identity-only key. Sellers resolve its canonical manifest from the domain; callers do not send logos, colors, or governance overrides in this request. Catalog ingestion belongs to [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs); discovery accepts only a compact catalog selection under `criteria.catalog`. + +`offer_filters` select commercial offers. `targeting_overlay` instead constrains the inventory or impressions that may deliver, so every returned price and forecast must account for the effective overlay. `required_overlay_support` asks for targeting dimensions the buyer can select independently on packages later; it does not request one product per metro or guarantee availability for every future value. + +When a product can honor the overlay exactly, it does not echo the request. A product that proposes a different executable overlay returns sparse `targeting_resolution.modifications`; selecting that configured product accepts those disclosed changes. + +## Response + +Every response has an explicit `outcome`: + +| Field | Type | Description | +|-------|------|-------------| +| `outcome` | string | `listed` when the response contains a product page; `unchanged` when a conditional request matches the current feed. | +| `products` | Product[] | Product offers for this page. Required for `listed`, even when the array is empty; omitted for `unchanged`. | +| `next_cursor` | string | Cursor for the next page. Omitted on the final page. Pass it as `cursor` in the next request. | +| `feed_version` | string | Opaque version of the selected offer feed. Pass it as `if_feed_version` on a later request to avoid downloading an unchanged feed. | +| `pricing_version` | string | Opaque version of the selected pricing layer. Pass it as `if_pricing_version` together with `if_feed_version` when checking both versions. | +| `cache_scope` | string | Whether the version applies to the seller's `public` feed or an `account`-specific overlay. | +| `incomplete` | object[] | Optional details about portions of the response the seller could not complete. | + +A product page can include continuation and cache state: + +```json +{ + "outcome": "listed", + "products": [], + "next_cursor": "page_2", + "feed_version": "feed_2026_08_10_1", + "pricing_version": "pricing_42", + "cache_scope": "account" +} +``` + +To check whether the same selection has changed, repeat the request with `if_feed_version`. Include `if_pricing_version` only when `if_feed_version` is also present: + +```json +{ + "brand": { "domain": "acmeoutdoor.example" }, + "criteria": { + "offer_filters": { + "channels": ["olv"], + "pricing_currencies": ["USD"] + }, + "targeting_overlay": { + "geo_countries": ["US"] + } + }, + "if_feed_version": "feed_2026_08_10_1", + "if_pricing_version": "pricing_42" +} +``` + +If the selected feed and pricing layer still match, the seller can omit `products`: + +```json +{ + "outcome": "unchanged", + "feed_version": "feed_2026_08_10_1", + "pricing_version": "pricing_42", + "cache_scope": "account" +} +``` + +## Availability forecasts are a per-read overlay + +For calendar-shaped guaranteed inventory (homepage takeovers, sponsorships), `list_products` can answer "which dates are open?" directly: pass `criteria.offer_filters.availability_horizon` and request `forecast` in `fields`, and each product's forecast comes back partitioned into `time`-dimensioned points carrying `availability_status`. See [Flexible Availability Windows](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#flexible-availability-windows) for window semantics. + +Availability is volatile — every booking changes it — so it is never part of the versioned feed content: + +- `feed_version` covers the durable offer definition only. Forecast data (including availability windows) does not participate in feed-version scoping and carries its own freshness via the forecast's `generated_at` and `valid_until`. +- A request whose `fields` includes `forecast` MUST NOT be answered with `outcome: "unchanged"` — that arm omits `products`, so it cannot carry the volatile data the buyer explicitly asked for. Sellers return a full `listed` response even when the feed token matches. +- Wholesale feed webhooks fire on definition and pricing changes, not on booking-state changes. Broadcasting window closures to all subscribers would leak demand signals; buyers who need current availability read it on demand, and buyers who need a guarantee take an inventory hold by finalizing a proposal. + +In practice these are two different reads: mirror maintenance (conditional, no `forecast` in `fields`) and availability checks (`forecast` requested, never conditional). Any `availability_status` returned is a snapshot bounded by `valid_until`, never a hold — the buy itself remains the authoritative availability check and fails with [`PRODUCT_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-product-unavailable) when a window has since closed. + +## Wholesale feed webhooks + +Buyers maintaining a wholesale product mirror register `product.*` and `wholesale_feed.bulk_change` subscribers through `sync_accounts.accounts[].notification_configs[]`. Registration is account-level and durable; `push_notification_config` on an individual `list_products` request does not create that subscription. + +The normal mirror flow is: + +1. Call `list_products` to bootstrap the mirror and store `feed_version` plus `cache_scope`. +2. Register the durable account subscriber through [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts). +3. Apply the webhook's `canonical_product` or `canonical_pricing_options` replacement payload directly. +4. On a gap, call `list_products` with the mirror's last successfully applied `feed_version`. On an uncertain or bulk-change repair, omit the conditional token and replace the mirror from a complete read. + +The webhook version describes post-change state; it is not the conditional token for a stale mirror. Conditional reads are a repair path, not a requirement to poll while webhooks are healthy. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event.mdx new file mode 100644 index 0000000000..0fd1282e4a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event.mdx @@ -0,0 +1,566 @@ +--- +title: log_event +description: "log_event task — send conversion and marketing events to AdCP sellers in batches. Supports attribution, campaign optimization, ROAS measurement, and test events." +"og:title": "AdCP — log_event" +testable: false +--- + + +Send conversion or marketing events for attribution and optimization. Supports batch submissions, test events, and partial failure reporting. + +**Response Time**: ~1s (events are queued for processing) + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/log-event-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/log-event-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/log-event-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/log-event-response.json) + +## Quick Start + +Log a purchase event: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { LogEventResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.logEvent({ + event_source_id: "website_pixel", + events: [ + { + event_id: "evt_purchase_12345", + event_type: "purchase", + event_time: "2026-01-15T14:30:00Z", + action_source: "website", + event_source_url: "https://www.example.com/checkout/confirm", + user_match: { + click_id: "abc123def456", + click_id_type: "gclid", + }, + custom_data: { + value: 149.99, + currency: "USD", + order_id: "order_98765", + num_items: 3, + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = LogEventResponseSchema.parse(result.data); + +// Check for operation-level errors first (discriminated union) +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("events_received" in validated) { + console.log(`Received: ${validated.events_received}, Processed: ${validated.events_processed}`); + if (validated.match_quality !== undefined) { + console.log(`Match quality: ${(validated.match_quality * 100).toFixed(0)}%`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.log_event( + event_source_id='website_pixel', + events=[{ + 'event_id': 'evt_purchase_12345', + 'event_type': 'purchase', + 'event_time': '2026-01-15T14:30:00Z', + 'action_source': 'website', + 'event_source_url': 'https://www.example.com/checkout/confirm', + 'user_match': { + 'click_id': 'abc123def456', + 'click_id_type': 'gclid' + }, + 'custom_data': { + 'value': 149.99, + 'currency': 'USD', + 'order_id': 'order_98765', + 'num_items': 3 + } + }] + ) + + # Check for operation-level errors first + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"Received: {result.events_received}, Processed: {result.events_processed}") + if hasattr(result, 'match_quality') and result.match_quality is not None: + print(f"Match quality: {result.match_quality * 100:.0f}%") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `event_source_id` | string | Yes | Event source configured on the account via [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) | +| `events` | [Event](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event)[] | Yes | Events to log (min 1, max 10,000) | +| `test_event_code` | string | No | Test event code for validation without affecting production data | + +### Event Object + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `event_id` | string | Yes | Unique identifier for deduplication (scoped to event_type + event_source_id). Max 256 chars. | +| `event_type` | [EventType](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event-types) | Yes | Standard event type (e.g. `purchase`, `lead`, `add_to_cart`) | +| `event_time` | date-time | Yes | ISO 8601 timestamp when the event occurred | +| `user_match` | [UserMatch](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#user-match) | No | User identifiers for attribution matching | +| `custom_data` | [CustomData](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#custom-data) | No | Event-specific data (value, currency, items) | +| `action_source` | [ActionSource](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#action-sources) | No | Where the event occurred (`website`, `app`, `in_store`, etc.) | +| `surface` | [EventSurface](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event-surfaces) | No | Structured surface context for the event, such as an owned channel, profile, feed, podcast, newsletter list, website, app, or store | +| `event_source_url` | uri | No | URL where the event occurred (required when action_source is `website`) | +| `custom_event_name` | string | No | Name for custom events (used when event_type is `custom`) | + +### User Match Object + +At least one of `uids`, `hashed_email`, `hashed_phone`, `click_id`, or `client_ip` + `client_user_agent` is required: + +| Field | Type | Description | +|-------|------|-------------| +| `uids` | UID[] | Universal ID values (`rampid`, `id5`, `uid2`, `euid`, `pairid`, `maid`) | +| `hashed_email` | string | SHA-256 hash of lowercase, trimmed email address (64-char hex) | +| `hashed_phone` | string | SHA-256 hash of E.164-formatted phone number (64-char hex) | +| `click_id` | string | Platform click identifier (fbclid, gclid, ttclid, etc.) | +| `click_id_type` | string | Type of click identifier | +| `client_ip` | string | Client IP address for probabilistic matching | +| `client_user_agent` | string | Client user agent string for probabilistic matching | + +**Hashing:** Hashed identifiers must be SHA-256 hex strings (64 characters, lowercase). Normalize before hashing: emails to lowercase with whitespace trimmed, phone numbers to E.164 format (e.g. `+12065551234`). + +### Custom Data Object + +| Field | Type | Description | +|-------|------|-------------| +| `value` | number | Monetary value of the event. Requires `currency` when the source declares `value_currencies`; legacy sources remain compatible but cannot feed canonical ROAS. | +| `currency` | string | ISO 4217 code declared in the event source's `value_currencies` when that contract is present (e.g. `USD`, `EUR`, `GBP`) | +| `order_id` | string | Unique order or transaction identifier | +| `content_ids` | string[] | Product or content identifiers. For catalog-driven campaigns, these match the catalog's `content_id_type` (e.g., SKUs, GTINs, job IDs). See [catalog-item attribution](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking#catalog-item-attribution). | +| `content_type` | string | Category of content (product, service, etc.) | +| `num_items` | integer | Number of items in the event | +| `progress_percent` | number | Content progress percentage reached, primarily for `watch_milestone` events | +| `progress_seconds` | number | Content progress duration reached in seconds, primarily for time-based `watch_milestone` events | +| `contents` | Content[] | Per-item details (id, quantity, price, brand) | + +## Response + +**Success Response:** + +- `events_received` - Number of events received +- `events_processed` - Number of events successfully queued +- `partial_failures` - Events that failed validation (with event_id, code, message) +- `warnings` - Non-fatal issues (low match quality, missing fields) +- `match_quality` - Overall match quality score (0.0 to 1.0) + +**Error Response:** + +- `errors` - Array of operation-level errors (invalid event source, auth failure) + +**Note:** Responses use discriminated unions - you get either success fields OR errors, never both. Partial failures are reported per-event within the success response. + +## Common Scenarios + +### Creator Engagement Events + +Log creator or content engagement events against the configured owned-property source. Use `surface` to identify the property and put watch thresholds in `custom_data.progress_percent` or `custom_data.progress_seconds`. + +```json test=false +{ + "event_source_id": "creator_channel", + "events": [ + { + "event_id": "evt_watch_001", + "event_type": "watch_milestone", + "event_time": "2026-01-16T11:05:00Z", + "action_source": "system_generated", + "surface": { + "category": "owned_property", + "property_type": "channel", + "namespace": "video_platform", + "property_id": "channel_123" + }, + "user_match": { + "uids": [{ "type": "uid2", "value": "CreatorViewer456" }] + }, + "custom_data": { + "content_ids": ["episode_001"], + "progress_percent": 75 + } + } + ] +} +``` + +For free durable opt-ins, use `event_type: "follow"`. Reserve `event_type: "subscribe"` for paid subscriptions or paid memberships. + +### Batch Events + +Send multiple events in a single request: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { LogEventResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.logEvent({ + event_source_id: "website_pixel", + events: [ + { + event_id: "evt_purchase_001", + event_type: "purchase", + event_time: "2026-01-15T10:00:00Z", + action_source: "website", + user_match: { + hashed_email: "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2", + uids: [{ type: "uid2", value: "AbC123XyZ..." }], + }, + custom_data: { + value: 89.99, + currency: "USD", + order_id: "order_001", + }, + }, + { + event_id: "evt_lead_002", + event_type: "lead", + event_time: "2026-01-15T11:30:00Z", + action_source: "website", + user_match: { + hashed_email: "f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5", + click_id: "abc123def456", + click_id_type: "fbclid", + }, + }, + { + event_id: "evt_cart_003", + event_type: "add_to_cart", + event_time: "2026-01-15T12:15:00Z", + action_source: "app", + user_match: { + uids: [{ type: "rampid", value: "Def456Ghi..." }], + }, + custom_data: { + content_ids: ["SKU-1234", "SKU-5678"], + num_items: 2, + value: 45.00, + currency: "USD", + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = LogEventResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("events_received" in validated) { + console.log(`${validated.events_processed}/${validated.events_received} events processed`); + if (validated.partial_failures?.length) { + for (const failure of validated.partial_failures) { + console.log(` Failed: ${failure.event_id} - ${failure.message}`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.log_event( + event_source_id='website_pixel', + events=[ + { + 'event_id': 'evt_purchase_001', + 'event_type': 'purchase', + 'event_time': '2026-01-15T10:00:00Z', + 'action_source': 'website', + 'user_match': { + 'uids': [{'type': 'uid2', 'value': 'AbC123XyZ...'}] + }, + 'custom_data': { + 'value': 89.99, + 'currency': 'USD', + 'order_id': 'order_001' + } + }, + { + 'event_id': 'evt_lead_002', + 'event_type': 'lead', + 'event_time': '2026-01-15T11:30:00Z', + 'action_source': 'website', + 'user_match': { + 'click_id': 'abc123def456', + 'click_id_type': 'fbclid' + } + }, + { + 'event_id': 'evt_cart_003', + 'event_type': 'add_to_cart', + 'event_time': '2026-01-15T12:15:00Z', + 'action_source': 'app', + 'user_match': { + 'uids': [{'type': 'rampid', 'value': 'Def456Ghi...'}] + }, + 'custom_data': { + 'content_ids': ['SKU-1234', 'SKU-5678'], + 'num_items': 2, + 'value': 45.00, + 'currency': 'USD' + } + } + ] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"{result.events_processed}/{result.events_received} events processed") + if hasattr(result, 'partial_failures') and result.partial_failures: + for failure in result.partial_failures: + print(f" Failed: {failure.event_id} - {failure.message}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Test Events + +Validate event integration without affecting production data: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { LogEventResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.logEvent({ + event_source_id: "website_pixel", + test_event_code: "TEST_12345", + events: [ + { + event_id: "test_evt_001", + event_type: "purchase", + event_time: new Date().toISOString(), + action_source: "website", + event_source_url: "https://www.example.com/checkout", + user_match: { + click_id: "test_click_abc", + click_id_type: "gclid", + }, + custom_data: { + value: 99.99, + currency: "USD", + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = LogEventResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("events_received" in validated) { + console.log("Test event sent successfully"); + if (validated.warnings?.length) { + console.log("Warnings:", validated.warnings); + } +} +``` + +```python Python +import asyncio +from datetime import datetime, timezone +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.log_event( + event_source_id='website_pixel', + test_event_code='TEST_12345', + events=[{ + 'event_id': 'test_evt_001', + 'event_type': 'purchase', + 'event_time': datetime.now(timezone.utc).isoformat(), + 'action_source': 'website', + 'event_source_url': 'https://www.example.com/checkout', + 'user_match': { + 'click_id': 'test_click_abc', + 'click_id_type': 'gclid' + }, + 'custom_data': { + 'value': 99.99, + 'currency': 'USD' + } + }] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print('Test event sent successfully') + if hasattr(result, 'warnings') and result.warnings: + print(f"Warnings: {result.warnings}") + +asyncio.run(main()) +``` + +</CodeGroup> + +Test events appear in the seller's test events UI but do not affect production attribution or reporting. + +### In-Store Conversions + +Report offline conversions using CRM data: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { LogEventResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.logEvent({ + event_source_id: "crm_import", + events: [ + { + event_id: "store_txn_20260115_001", + event_type: "purchase", + event_time: "2026-01-15T16:45:00Z", + action_source: "in_store", + user_match: { + uids: [{ type: "rampid", value: "XyZ789AbC..." }], + }, + custom_data: { + value: 250.0, + currency: "USD", + order_id: "POS-2026-0115-001", + contents: [ + { id: "SKU-JACKET-L", quantity: 1, price: 189.0 }, + { id: "SKU-SCARF-01", quantity: 1, price: 61.0 }, + ], + }, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = LogEventResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("events_received" in validated) { + console.log(`In-store events processed: ${validated.events_processed}`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.log_event( + event_source_id='crm_import', + events=[{ + 'event_id': 'store_txn_20260115_001', + 'event_type': 'purchase', + 'event_time': '2026-01-15T16:45:00Z', + 'action_source': 'in_store', + 'user_match': { + 'uids': [{'type': 'rampid', 'value': 'XyZ789AbC...'}] + }, + 'custom_data': { + 'value': 250.00, + 'currency': 'USD', + 'order_id': 'POS-2026-0115-001', + 'contents': [ + {'id': 'SKU-JACKET-L', 'quantity': 1, 'price': 189.00}, + {'id': 'SKU-SCARF-01', 'quantity': 1, 'price': 61.00} + ] + } + }] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + print(f"In-store events processed: {result.events_processed}") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Event Deduplication + +Events are deduplicated by the combination of `event_id` + `event_type` + `event_source_id`. Sending the same event multiple times is safe - duplicates are silently ignored. + +Choose `event_id` values that are stable across retries: +- Transaction IDs: `"order_98765"` +- Composite keys: `"purchase_user123_20260115"` +- UUIDs: `"550e8400-e29b-41d4-a716-446655440000"` + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | Event source not configured or not accessible (`error.field` = `event_source_id`) | Run [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) first | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | An event field violates its schema, or the batch contains more than 10,000 events | Correct the field identified by `error.field` or split the request | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | The event type is disallowed for the configured source, the timestamp is outside the attribution window, or no usable user match is present | Check the event source configuration and correct the event values | +| [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited) | Too many requests | Wait and retry with exponential backoff | + +## Best Practices + +1. **Configure sources first** - Always run [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) before sending events. Events sent to unconfigured sources are rejected. + +2. **Include user_match** - Events without user identifiers cannot be attributed. Provide the strongest identifiers available: hashed email/phone > UIDs > click IDs > IP/UA. Send multiple identifier types when available to maximize match rates. + +3. **Use test events first** - Set `test_event_code` during integration to validate events appear correctly without affecting production data. + +4. **Batch when possible** - Send up to 10,000 events per request to reduce API calls. Events within a batch are processed independently. + +5. **Include contracted value and currency for ROAS** - A source used for canonical ROAS declares `value_currencies` through `sync_event_sources`; its monetary records require `custom_data.currency` from that list. Each ROAS buy consumes only records matching its media-buy currency. Legacy sources without this contract remain valid for non-ROAS events. + +6. **Stable event IDs** - Use deterministic event IDs (order numbers, transaction IDs) rather than random UUIDs. This ensures safe retries without duplicate counting. + +7. **Send events promptly** - Log events as close to real-time as possible. Events outside the seller's attribution window may not be matched. + +## Next Steps + +- [Conversion Tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/) - Data model, optimization goals, and the end-to-end flow +- [sync_event_sources](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) - Configure event sources before logging events +- [create_media_buy](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization) - Set optimization goals on packages +- [get_media_buy_delivery](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) - Monitor conversion metrics in delivery reports diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback.mdx new file mode 100644 index 0000000000..b9530a6267 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback.mdx @@ -0,0 +1,246 @@ +--- +title: provide_performance_feedback +description: "Submit a compact buyer- or measurement-provider performance assertion that a seller can use for optimization." +"og:title": "AdCP — provide_performance_feedback" +--- + +`provide_performance_feedback` sends one optimizer-ready assertion across either hop of a buyer-controlled feedback path. A measurement provider submits to the orchestrator's gateway; the orchestrator validates and normalizes the assertion before forwarding appropriate feedback to each media-buy seller. The payload carries the decision signal and enough provenance to interpret it, not raw exposure logs, attribution models, or a complete measurement study. + +The caller is therefore either: + +- an authenticated measurement agent calling the buyer orchestrator; or +- the buyer orchestrator calling a seller. + +Measurement agents do not receive seller credentials. In the first experimental gateway tier, the provider reads buyer-approved cross-seller delivery from the orchestrator's [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) task and returns compact assertions through its `provide_performance_feedback` task. + +**Request schema:** [`provide-performance-feedback-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-request.json) + +**Response schema:** [`provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/provide-performance-feedback-response.json) + +## Compact contract + +```json +{ + "idempotency_key": "d8e9f0a1-b2c3-4456-d789-456789012345", + "media_buy_id": "mb_123", + "package_id": "pkg_streaming_video", + "measurement_period": { + "start": "2026-07-01T00:00:00Z", + "end": "2026-07-31T23:59:59Z" + }, + "metric": { + "scope": "standard", + "metric_id": "conversion_value", + "qualifier": { + "attribution_methodology": "modeled" + } + }, + "performance_index": 1.35, + "baseline": "control_group", + "producer": { + "domain": "measurement.example" + }, + "methodology": "geo_incrementality", + "methodology_version": "2026-07", + "study_ref": "study_42", + "evidence": { + "sample_size": 14820, + "confidence_interval": { + "lower": 1.18, + "upper": 1.49, + "level": 0.95 + } + }, + "evidence_ref": "https://measurement.example/results/study_42", + "as_of": "2026-08-04T12:00:00Z", + "final": true +} +``` + +### Required fields + +| Field | Meaning | +| -------------------- | --------------------------------------------------------------------------------------------------------------- | +| `idempotency_key` | Unique key for this logical assertion. MUST be unique per receiving agent to prevent cross-agent correlation; use a fresh UUID v4 for each new assertion. Retries use the same key and payload. | +| `media_buy_id` | Receiver-scoped buy identifier: orchestrator-issued on the provider hop, seller-issued on the seller hop. | +| `measurement_period` | Period summarized by the assertion. | +| `performance_index` | Normalized decision signal: `1.0` equals the named baseline, lower underperforms it, and higher outperforms it. | + +`baseline` is optional in the JSON Schema so legacy 3.x requests remain valid. Producers using the compact contract MUST populate it. + +### Scope + +| Field | Meaning | +| ------------- | -------------------------------------- | +| `package_id` | Narrows the assertion to one package. | +| `creative_id` | Narrows the assertion to one creative. | + +Omit both for media-buy-level feedback. `media_buy_id`, `package_id`, and `creative_id` are scoped to the receiver: the gateway exposes measurement-facing identifiers to the provider and maps them to each seller's local identifiers during fan-out. The initial compact contract deliberately does not enumerate every delivery dimension. A later revision can add an opaque receiver-issued delivery key without copying the entire reporting-dimension taxonomy into this task. + +### Metric identity + +`metric` reuses the standard/vendor discriminator used by `committed_metrics`, `missing_metrics`, and delivery metric aggregates: + +```json +{ "scope": "standard", "metric_id": "roas" } +``` + +```json +{ + "scope": "vendor", + "vendor": { "domain": "attentionvendor.example" }, + "metric_id": "attention_units" +} +``` + +The nested `metric.vendor` identifies who defines the metric. It can differ from top-level `producer`, which identifies who produced this assertion. + +`metric_type` remains accepted for backwards compatibility but is deprecated. When both fields are present, consumers use `metric`. + +### Baseline + +`baseline` names what `performance_index = 1.0` represents: + +| Value | Meaning | +| ------------------ | ------------------------------------------------------------------- | +| `campaign_target` | Target or expectation for this buy or package. | +| `control_group` | Buyer- or measurement-provider-defined counterfactual control. | +| `seller_history` | Historical performance for this seller or subject. | +| `buyer_portfolio` | Buyer-side portfolio benchmark. | +| `market_benchmark` | External market or category benchmark. | +| `other` | Another producer-defined baseline described in the linked evidence. | + +The producer does not need to disclose the raw baseline value. For ratio-compatible metrics, compact-contract producers (baseline present) MUST use `observed / baseline` for higher-is-better measures and `baseline / observed` for lower-is-better measures such as CPA. In both cases values above `1.0` mean better performance. + +### Producer and methodology + +`producer` is the BrandRef of the party that produced the analysis. On the provider-to-orchestrator hop, authenticated caller identity is authoritative and the orchestrator verifies that `producer` matches it. On the orchestrator-to-seller hop, `producer` preserves analytical provenance while the authenticated orchestrator remains responsible for the submission. Sellers never need to authenticate or authorize the measurement provider directly. + +`methodology` and `methodology_version` are producer-scoped open strings. AdCP does not impose a universal methodology enum: `geo_incrementality`, `media_mix_model`, and `deterministic_attribution` mean what the identified producer's catalog and methodology documentation say they mean. + +`study_ref` is opaque correlation metadata. It does not instruct the seller to create experiment arms or assign users/geographies. Buyers and measurement providers define cohorts once and apply them consistently through ordinary audience and geographic targeting. + +### Evidence and historical backfill + +The inline `evidence` object is intentionally small: + +- `sample_size`; +- `confidence_interval` on the performance-index scale. + +`evidence_ref` points to the provider-hosted result for authorized reviewers. Large historical datasets and study artifacts stay with the measurement provider. Historical backfills use `measurement_period` plus `as_of`; submit one assertion per task call. + +`final: false` means the producer expects maturation. A later correction is a new immutable assertion carrying `supersedes_feedback_id` from the prior response. + +## Response and application status + +```json +{ + "status": "completed", + "success": true, + "feedback_id": "fb_01J5Y5KQ2T8B2M8P0A4E6R3C9D", + "application_status": "applied", + "received_at": "2026-08-04T12:00:02Z", + "applied_at": "2026-08-04T12:00:02Z" +} +``` + +| Status | Meaning | +| ------------- | -------------------------------------------------------------------------------------------- | +| `accepted` | Stored and eligible for evaluation. This is not a claim that an optimizer used it. | +| `applied` | Incorporated into the seller's optimization inputs. It does not guarantee a delivery change. | +| `not_applied` | Evaluated but not incorporated; `status_reason` explains why. | + +Legacy task bodies may contain only `success`. Orchestrator gateways and sellers declaring `media_buy.performance_feedback` return a hop-local `feedback_id`. A gateway normally reports receipt only. Sellers declaring `reports_application_status: true` return an honest `application_status`. Top-level `status` remains the protocol task lifecycle and is not optimizer disposition. + +The initial contract reports disposition at response time. A durable asynchronous status read or webhook is deferred until implementations demonstrate that optimizers can expose it reliably. + +## Orchestrator-hosted measurement gateway + +Measurement agents are discoverable through `brand.json` entries with `type: "measurement"` and publish their metric catalogs in `get_adcp_capabilities.measurement.metrics[]`. + +A measurement agent that sets `measurement.produces_performance_feedback: true` can produce this task's compact assertion. A buyer orchestrator exposes the receiving boundary through the separate experimental `measurement_gateway` capability, without claiming to be a media-buy seller. + +The orchestrator gives each provider a scoped account. The first experimental tier uses existing task authorization: + +```json +{ + "authorization": { + "allowed_tasks": ["get_media_buy_delivery", "provide_performance_feedback"], + "read_only": false + } +} +``` + +Both tasks are part of the first-tier gateway contract. The provider never receives seller-account access. Webhook and offline interchange are deferred until AdCP defines their registration, credential, payload, and receipt contracts. + +The resulting flow is: + +1. The orchestrator discovers a measurement agent and its metrics. +2. The provider calls the orchestrator's [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) task for buyer-approved, cross-seller delivery. +3. The provider calls `provide_performance_feedback` on the orchestrator gateway. The orchestrator authenticates the provider, validates provenance, and stores its own `feedback_id`. +4. The orchestrator decides what to share with each seller, maps its cross-seller identifiers to seller-local media-buy/package/creative IDs, and calls each seller's `provide_performance_feedback` under the buyer's identity. +5. Seller receipts and `application_status` values return to the orchestrator, which owns the cross-seller audit trail. + +This hub-and-spoke boundary lets the buyer keep treatment users and geographies consistent across sellers, prevents a measurement provider from accumulating seller credentials, and gives the orchestrator control over normalization and disclosure. Measurement data MUST NOT be forced through [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage); that task reports consumption and billing for vendor services. + +## Capability examples + +Buyer orchestrator gateway: + +```json +{ + "supported_protocols": ["measurement"], + "experimental_features": ["measurement.gateway"], + "measurement_gateway": { + "delivery_task": "get_media_buy_delivery", + "feedback_task": "provide_performance_feedback" + } +} +``` + +Seller: + +```json +{ + "experimental_features": ["measurement.core"], + "media_buy": { + "performance_feedback": { + "reports_application_status": true + } + } +} +``` + +Measurement provider: + +```json +{ + "supported_protocols": ["measurement"], + "experimental_features": ["measurement.core"], + "measurement": { + "produces_performance_feedback": true, + "metrics": [ + { + "metric_id": "incremental_revenue_index", + "unit": "index", + "methodology_url": "https://measurement.example/methodology" + } + ] + } +} +``` + +## Privacy and trust + +- Submit aggregate decision signals, not user-level outcomes or identity paths. +- The orchestrator authorizes each measurement provider; sellers authorize only the orchestrator. +- A `producer` field cannot override provider identity at the gateway or orchestrator identity at the seller. +- `evidence_ref` remains subject to the provider's access controls. +- Accepted feedback is not necessarily true or applied. Identity, evidence, attestation, and disposition answer different questions. + +## Related documentation + +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) +- [Measurement taxonomy](/dist/docs/3.2.0-beta.4/measurement/taxonomy) +- [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) +- [Optimization and reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals.mdx new file mode 100644 index 0000000000..aae75edf09 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals.mdx @@ -0,0 +1,201 @@ +--- +title: refine_proposals +description: "Revise proposals or finalize drafts into inventory holds." +"og:title": "AdCP refine_proposals Task" +testable: true +--- + +`refine_proposals` has two explicit operations over immutable proposal snapshots: + +- `action: "revise"` applies structured discovery `criteria`, typed boundaries, product changes, requested alternatives, and/or the buyer's free-text `ask`, returning one or more new draft proposals. +- `action: "finalize"` changes no commercial terms and returns a new committed proposal backed by an inventory hold until `expires_at`. + +For an end-to-end buyer and seller implementation workflow, see [Proposal negotiation](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation). + +Revision may target a draft, committed, or accepted proposal; finalization must target a draft. A request contains at most 25 refinements. Proposal IDs must be unique within the request, and results preserve request order. Every successful operation returns a new `proposal_id`; that ID is the complete version identity for the immutable commercial snapshot, and the source remains unchanged. + +{/* Using latest because this schema is not yet released in any version. + Update to the correct version alias after the next release. */} +**Request schema:** [`/schemas/3.2.0-beta.0/media-buy/refine-proposals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/refine-proposals-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441002", + "refinements": [ + { + "proposal_id": "proposal_123", + "action": "revise", + "constraints": { + "total_budget": { "max": 50000, "currency": "USD" }, + "cpm": { "max": 18, "currency": "USD" }, + "flight": { "end_no_earlier_than": "2026-10-31T23:59:59Z" } + }, + "product_changes": { + "premium_video": "include", + "display_ros": "omit" + }, + "alternatives": { "count": 3 }, + "ask": "Use materially different product mixes while preserving reach." + }, + { + "proposal_id": "proposal_456", + "action": "revise", + "criteria": { + "targeting_overlay": { + "geo_countries": ["US", "CA"] + } + } + } + ] +} +``` + +Typed fields are deliberately small and mechanically verifiable: + +| Field | Meaning | +|---|---| +| `constraints.total_budget` | Inclusive `min`/`max` bounds checked against a present `commercial_terms.total_budget`; `currency` must match and `min` must not exceed `max`. Each `constraints` key is its own stable constraint identifier. | +| `constraints.cpm` | Hard rate ceiling. Satisfied only when every purchase carries fixed `cpm`/`vcpm` pricing in the requested `currency` with `fixed_price` at or below `max`; auction-priced or non-CPM purchases leave it unsatisfied. | +| `constraints.impressions` | Hard volume floor. Satisfied only when every purchase carries `impressions` and their sum is at least `min`. | +| `constraints.flight` | Flight-window bounds. `start_no_later_than` requires a concrete `commercial_terms.start_time` at or before the bound (`asap` is unverifiable and unsatisfied); `end_no_earlier_than` requires `end_time` at or after it. | +| `product_changes` | Map keyed by product ID. `include` requires a product in `commercial_terms.purchases`; `omit` requires it to be absent. Keying makes contradictory actions unrepresentable. | +| `alternatives.count` | Number of drafts with distinct commercial terms requested, from 2 through the protocol maximum of 10 and no higher than a seller's advertised `max_alternatives`. Returned alternatives have distinct `commercial_terms` and therefore unique `terms_digest` values; diversity strategy remains free text. | +| `criteria` | Structured discovery criteria to replace on the source proposal. Omitted criteria fields remain inherited; concrete targeting and offer filters belong here. | +| `ask` | Free text for substitution, trade-offs, diversity, preferences, or other long-tail context. | + +`vary` and typed preference enums are intentionally absent: concepts such as “prioritize reach” cannot be verified consistently against `commercial_terms`. A seller may interpret them from `ask`, but cannot report them as deterministically satisfied. + +Each present `criteria` field replaces that field from the source proposal; omitted fields remain bound to the revision. This makes a targeting change deterministic and ensures the revised proposal's price and forecast use the new effective overlay. When hard targeting appears only in `ask`, the seller confirms any structured interpretation that materially affects the revision in that result's `targeting_resolution.brief_targeting`. Exact structured targeting is not repeated; product-specific alternatives remain sparse modifications on the returned configured products. + +**Response schema:** [`/schemas/3.2.0-beta.0/media-buy/refine-proposals-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/refine-proposals-response.json) + +The response contains one ordered `results[]` entry per requested source proposal. Each entry echoes `source_proposal_id`; buyers cross-check by that echo rather than by position alone. Every returned proposal carries `parent_proposal_id` equal to the entry's `source_proposal_id`, so negotiation lineage survives in the proposals themselves: + +| Outcome | Proposal field | Meaning | +|---|---|---| +| `revised` | `proposals[]` | Every hard constraint is satisfied. Without `alternatives`, the array has one draft; with `alternatives.count`, it has exactly that many and every `terms_digest` is unique. | +| `partial` | `proposals[]` | Honest drafts were produced, but a hard constraint, typed change, requested count, or free-text ask was not fully applied. `reason_code` and `reason` are required. | +| `finalized` | `proposal` | One committed proposal backed by an inventory hold. | +| `unable` | none | No honest draft was produced. `reason_code` and `reason` are required. | + +`reason_code` distinguishes commercial refusal from implementation limits: + +| Code | Meaning | +|---|---| +| `commercially_declined` | The seller understood terms requested through the free-text `ask` but declined to offer them. | +| `constraint_unsatisfiable` | A typed constraint or product change was not satisfied — whether the seller cannot or will not meet it. | +| `unsupported_dimension` | The seller cannot parse or validate a requested typed dimension. | +| `uninterpreted` | Some or all of the free-text `ask` could not be interpreted. | +| `alternatives_unavailable` | Fewer distinct drafts were produced than requested. | +| `source_unavailable` | The source proposal was unavailable or ineligible for this caller. | +| `hold_unavailable` | The seller declined or failed to reserve inventory for a finalize. | +| `batch_aborted` | This entry failed only because a sibling in the all-or-none finalize batch failed. | + +Typed failures always use `constraint_unsatisfiable`, regardless of whether the refusal is capability or commercial; won't-versus-can't nuance belongs in `reason` or a `commercially_declined` response to an `ask`. When multiple shortfalls co-occur, `constraint_unsatisfiable` takes precedence over every other code, and an alternatives shortfall remains visible through `proposals.length`. + +A draft that violates a hard constraint MUST NOT be returned as `revised`. For `constraints.total_budget`, satisfaction requires a present `commercial_terms.total_budget`, the requested currency, and an amount inside every supplied bound. An absent total, currency mismatch, or out-of-range amount is unsatisfied: the seller returns `partial`, or `unable` when it cannot produce an honest draft, with `reason_code: "constraint_unsatisfiable"` and `unsatisfied_constraints: ["total_budget"]`. The other `constraints` keys behave identically under their satisfaction rules in the request schema. + +Every draft on a `partial` result MUST satisfy every typed constraint whose key is absent from `unsatisfied_constraints` and every product action absent from `unsatisfied_product_changes`, whatever the `reason_code`. This is the invariant that lets a buyer trust typed compliance without parsing prose. Constraint failures are identified through `unsatisfied_constraints` (echoing request `constraints` keys), `unsatisfied_product_changes` (a subset of the requested product-action map), or both. + +A `partial` response to the request above looks like: + +```json +{ + "adcp_version": "3.2.0", + "status": "completed", + "results": [ + { + "source_proposal_id": "proposal_123", + "outcome": "partial", + "reason_code": "alternatives_unavailable", + "reason": "Two commercially distinct packages are available at these terms.", + "proposals": [ + { "proposal_id": "proposal_9a1", "parent_proposal_id": "proposal_123", "proposal_status": "draft", "...": "..." }, + { "proposal_id": "proposal_9a2", "parent_proposal_id": "proposal_123", "proposal_status": "draft", "...": "..." } + ] + }, + { + "source_proposal_id": "proposal_456", + "outcome": "revised", + "proposals": [ + { "proposal_id": "proposal_9b7", "parent_proposal_id": "proposal_456", "proposal_status": "draft", "...": "..." } + ] + } + ], + "products": ["..."] +} +``` + +Every returned proposal carries typed `commercial_terms` and a `terms_digest` — the base64url SHA-256 of the [RFC 8785 JCS](https://www.rfc-editor.org/rfc/rfc8785) serialization of `commercial_terms`, prefixed with `sha256:`. Buyers can and should recompute it: digest agreement, not seller assertion, is what makes drafts comparable and alternatives verifiably distinct. Only `commercial_terms` is contractual. Narrative fields — `reason`, `suggestions`, `description`, and anything a buyer wrote in `ask` — are explanatory and never part of the deal a later [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal) binds. + +## A realistic negotiation + +Sam is buying a $50,000 Acme Outdoor campaign from StreamHaus. Capability discovery says StreamHaus supports `total_budget`, `product_changes`, `alternatives`, and `criteria`, with `max_alternatives: 3`. Sam can therefore construct one mechanically checkable request: cap spend at USD 50,000, include premium video, omit run-of-site display, narrow geography to the US and Canada, and ask for three distinct mixes. + +Suppose StreamHaus can satisfy the budget and targeting but can produce only two commercially distinct drafts. It returns `partial` with two proposals, `reason_code: "alternatives_unavailable"`, and unique `terms_digest` values. Sam does not need to parse sales prose to understand the counteroffer: the typed budget and product checks still pass, while the requested alternative count does not. Sam can compare the two drafts, revise one again, or finalize the preferred draft. + +The failure paths are equally deterministic: + +- If a returned draft omits `commercial_terms.total_budget`, uses another currency, or exceeds the cap, the result identifies `total_budget` as unsatisfied and cannot be `revised`. +- If Sam requests four alternatives against the advertised ceiling of three, the whole call fails with [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) at `refinements[0].alternatives.count`; StreamHaus creates no draft. +- If StreamHaus omits `criteria` from `supported_dimensions`, the whole call fails with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) before mutation. Sam can remove or translate that field and retry with a new valid payload. + +This separation is the value of the compact negotiation surface: capabilities prevent impossible asks, typed fields make compliance testable, and `ask` remains available for the commercial nuance that cannot be reduced to a reliable boolean. + +Pass only a finalized committed proposal to [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), or use [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals) when the buyer stops pursuing it. + +## Relationship to legacy refinement + +The deprecated [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) `buying_mode: "refine"` surface is the 3.x compatibility façade; it has no lossless representation of `refinements[].constraints.total_budget`. A compatibility adapter MUST NOT map that proposal-term constraint to `get_products.filters.budget_range`, because the latter filters product candidates and does not guarantee the returned proposal's aggregate `commercial_terms.total_budget`. The adapter MUST instead return a typed `PRE_MUTATION_UNSUPPORTED` result with an RFC 6901 path identifying the exact field before it sends a legacy request. + +Initial proposal discovery is different: `request_proposals.criteria.offer_filters.budget_range` MAY map to `get_products.filters.budget_range` with exact amounts, exact currency, inclusive bounds, no currency conversion, and no proposal-level guarantee. Compact revision criteria use whole-field replacement, while legacy filters are absolute. Legacy finalize is compatible only when the adapter can guarantee unchanged complete commercial terms. See [Legacy budget compatibility](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation#legacy-budget-compatibility-normative) for the complete normative mapping, typed rejection shape, and lifecycle rules. + +The surfaces otherwise share `ask` and product `include`/`omit` verbs, but not response envelopes. Adapters must not invent support for per-proposal constraints or alternatives that the legacy envelope cannot represent faithfully. The legacy `more_like_this` verb has no typed compact equivalent and maps only lossily into `ask`. + +## Finalize and hold inventory + +Finalization is seller commitment, not buyer acceptance. It locks the already-negotiated terms and reserves inventory until the returned `expires_at`: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441003", + "refinements": [ + { + "proposal_id": "proposal_draft_789", + "action": "finalize" + } + ] +} +``` + +A request containing `finalize` must contain only finalize entries. Sellers validate the complete batch before creating any holds; multi-proposal finalization is atomic. When any hold cannot be created, no result is `finalized`: the failing entry returns `unable` with `reason_code: "hold_unavailable"`, and otherwise-eligible siblings return `unable` with `reason_code: "batch_aborted"`. Exact retries use the same idempotency key. A new key does not extend or recreate an existing hold: while a committed successor's hold is unexpired, finalizing the same draft again MUST fail at task level with [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state) rather than minting a second hold; after expiry a new finalize MAY create a new one. + +Holds are a seller commitment against real inventory, so hold policy is the seller's. Sellers MAY decline any hold (`hold_unavailable`), MAY cap concurrent unexpired holds per buyer to prevent inventory squatting, and choose `expires_at` themselves — the hold window should be long enough to complete acceptance and short enough that unaccepted holds do not function as free inventory options. Nothing in this task obliges a seller to grant holds without whatever credit or relationship checks it applies to reservations generally; the async `submitted` path exists for exactly that re-underwriting. + +Every revised proposal inherits the source proposal's opportunity association. Callers do not repeat opportunity context during refinement. + +## Negotiation security + +Both sides of this task are agents, and both sides' inputs are untrusted. `ask` is attacker-controlled free text: sellers MUST NOT let it alter pricing floors, authorization, or policy, and MUST NOT expose other buyers' terms through it — fence it from any LLM with pricing authority and treat its interpretation as suggestion, never instruction. In the other direction, deterministic `constraint_unsatisfiable` responses form a price oracle: repeated budget or rate probes can binary-search a floor at no cost. Sellers SHOULD apply rate or commercial friction to sustained un-held revision rounds and MAY keep `reason` deliberately coarse rather than revealing how near a rejected constraint came to clearing. + +## Amend an accepted MediaBuy + +An accepted proposal is the immutable commercial envelope attached to its MediaBuy. Refining it forks a successor proposal rather than reopening or mutating the accepted snapshot: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441013", + "refinements": [ + { + "proposal_id": "proposal_accepted_123", + "action": "revise", + "change_kind": "amendment", + "ask": "Extend the flight by two weeks and add the premium video product." + } + ] +} +``` + +Use `change_kind: "cancellation"` when cancellation requires counterparty agreement. The returned draft has `proposal_kind: "media_buy_cancellation"`, identifies the MediaBuy and base revision, and must be finalized before it can be applied through [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). + +Sellers MAY respond asynchronously with `status: "submitted"` when a complex multi-publisher revision or inventory hold requires upstream pricing queries or manual re-underwriting. In that case the response contains a `task_id` for polling via [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json); terminal results are delivered on the completion artifact or via push notification if `push_notification_config` was supplied. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals.mdx new file mode 100644 index 0000000000..0d930875c8 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals.mdx @@ -0,0 +1,127 @@ +--- +title: request_proposals +description: "Request one or more seller-authored draft media plans." +"og:title": "AdCP request_proposals Task" +testable: true +--- + +`request_proposals` creates one or more immutable draft media-plan proposal snapshots from a brief. It can begin a consultative workflow directly or use `product_ids` returned by [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products). Native seller success always contains at least one proposal; returning products without a proposal does not satisfy a native 3.2 implementation. The temporary projection-only exception for older peers is documented below. + +`brand` contains only the stable BrandKey (`domain`, optional `brand_id`, and optional ISO country `countries[]`); the seller resolves the canonical brand manifest rather than receiving a full brand file in every call. Countries qualify commercial advertiser identity and do not target delivery. `account` is optional and adds seller-specific commercial terms. A natural-key account can supply the request's sole brand identity and qualify it with an operator-owned unit and fixed account currency. + +{/* Using latest because this schema is not yet released in any version. + Update to the correct version alias after the next release. */} +**Request schema:** [`/schemas/3.2.0-beta.0/media-buy/request-proposals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/media-buy/request-proposals-request.json) + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655441001", + "brief": "Reach outdoor enthusiasts with premium video inventory.", + "account": { + "brand": { + "domain": "nova-athletics.example", + "countries": ["DE", "NL"] + }, + "operator": "pinnacle-media.example", + "operator_unit": { + "id": "seat_emea_01", + "name": "EMEA" + }, + "currency": "EUR" + }, + "opportunity": { + "opportunity_id": "opp_spring_launch_2027", + "phase": "active_sourcing", + "intent": "live_rfp", + "response_deadline": "2027-01-15T17:00:00Z" + }, + "criteria": { + "product_ids": ["product_premium_video"], + "targeting_overlay": { + "geo_countries": ["US"] + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] } + } + } +} +``` + +Put machine-representable requirements in `criteria`: `offer_filters` select commercial offers, `targeting_overlay` supplies concrete delivery constraints that must be reflected in pricing and forecasts, and `required_overlay_support` identifies dimensions the buyer must be able to choose later. Keep goals, semantic audience meaning, and requirements without a structured AdCP field in `brief`. + +## Reverse forecasting with outcome_target + +A proposal request is a solve over three coupled variables — time window, budget, and outcome. The buyer fixes what they know and the seller solves for the rest. Fixing dates and budget yields a delivery forecast; fixing the outcome inverts the question: "I need 10,000 clicks — what does my budget need to be?" + +Sellers declaring `media_buy.outcome_target` in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) accept the structured form in `criteria`: + +```json +{ + "criteria": { + "outcome_target": { + "goal": { "kind": "metric", "metric": "clicks" }, + "volume": 10000 + } + } +} +``` + +The `goal` is a compact planning-time object with two variants: a delivery metric (`kind: "metric"`, using the same `forecastable-metric` vocabulary forecast points report) or a conversion event (`kind: "event"`, using the same `event-type` vocabulary). That construction means every permitted goal has a defined answer: the seller responds with `total_budget_guidance` (`min`/`recommended`/`max`) on each proposal and forecasts whose points carry the goal's metric or event key in `metrics`, with `forecast_range_unit` `clicks` or `conversions` structuring the curve where those units apply. Execution machinery — targets, priorities, event sources, vendor bindings — belongs to the package-level `optimization-goal`, which shares this vocabulary, so buyers carry the same metric or event name from plan to buy. + +An `outcome_target` is a planning input, not a delivery guarantee: pricing and delivery obligations arise only at proposal finalization, and any performance commitment lives in the committed terms, not in the forecast. Sellers that do not declare the capability MUST NOT silently ignore a structured `outcome_target` — they reject it with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature); buyers fall back to expressing the goal in `brief` prose. Declaring sellers MAY reject a goal they cannot plan against (for example `spend`, which restates budget) with [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) naming `criteria.outcome_target.goal`. + +Explicit hard requirements in the brief remain binding. When the seller's structured interpretation materially affects product eligibility, pricing, or forecasting, the response includes `targeting_resolution.brief_targeting`. Exact structured overlays are not echoed; any product-specific alternative appears as sparse `Product.targeting_resolution.modifications` for buyer approval. + +Every returned purchase references the exact `product_id` and `pricing_option_id` whose pricing and forecast the seller used. The returned `proposal_id` is the only proposal linkage needed by [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) and [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals). Each ID identifies one immutable commercial snapshot; refinement and finalization mint new IDs instead of adding a second version field. A draft is indicative and does not reserve inventory. Finalize it through `refine_proposals` before passing the resulting committed proposal to [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). The deprecated [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) proposal mode remains the 3.x compatibility adapter. + +`opportunity` is optional shared planning-cycle context and must be open when supplied here. Its buyer-assigned `opportunity_id` can span request, decline, and purchase calls without becoming part of proposal identity. Sellers associate it with every proposal created by the request, and revised proposals inherit the same association. + +The native response uses `outcome: "proposed"` for a successful draft set and `outcome: "rejected"` with a reason when the seller cannot construct a viable plan. A compatibility coordinator may also return the projection-only `products_available` outcome defined below. + +## Products-only legacy compatibility + +A native 3.2 seller never reports products without a proposal as successful +`request_proposals`; `outcome: "proposed"` continues to require at least one +seller-authored immutable draft. Compatibility coordinators have one temporary +exception for older peers: a valid 2.5, 3.0, or 3.1 [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) brief may +return useful products and no proposal. The coordinator preserves that result +as the projection-only `products_available` outcome instead of dropping the +products or fabricating a proposal. + +`products_available` carries one discriminated `purchase_continuation`: + +- `listed_purchase` means the coordinator successfully re-read the exact + products from a real seller-issued, account-scoped feed and obtained its + feed and pricing fences. The buyer continues through ordinary + [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products) with those + seller-issued values. +- `legacy_create` means no truthful fence is available. The coordinator can + continue through explicit-package + [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy), but + only after the caller accepts every named loss for that logical operation. + The response always names `feed_version_not_atomic` and + `pricing_version_not_atomic`; an AdCP 2.5 source also names + `mutation_idempotency_not_guaranteed` because that release has no mutation + replay contract. + +The second path fails closed by default. A compatibility token may bind the +observed products and prices to the caller and account, but it is not a feed or +pricing fence. The coordinator MUST NOT synthesize a proposal, +`commercial_terms`, `terms_digest`, `feed_version`, or `pricing_version`. +Products with incomplete or unconfirmed pricing cannot use `listed_purchase`. +The legacy seller revalidates price, expiry, and availability at create time, +and its rejection is terminal for that attempt. + +Legacy `incomplete[]` remains a completeness statement. The coordinator +preserves its compatible product, pricing, forecast, and proposal scopes; +`scope: "proposals"` explains the absence of a proposal and is not a business +rejection. Legacy brief pagination limits products, not proposals, and a legacy +`time_budget` instructs the seller not to begin work it cannot complete in +time. A 3.2 compatibility facade must preserve those semantics rather than +silently converting them into an unbounded, apparently complete proposal call. + +This bridge is deprecated with the established lifecycle in 3.2 and removed in +AdCP 4.0. See the [full compatibility and transaction-boundary +matrix](https://github.com/adcontextprotocol/adcp/blob/main/specs/legacy-compact-lifecycle-compatibility.md). + +Sellers MAY respond asynchronously with `status: "submitted"` when consultative planning requires upstream system queries or human sales-desk review. In that case the response contains a `task_id` for polling via [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json); terminal draft proposals are delivered on the completion artifact or via push notification if `push_notification_config` was supplied. diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences.mdx new file mode 100644 index 0000000000..35309d77a1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences.mdx @@ -0,0 +1,582 @@ +--- +title: sync_audiences +description: "sync_audiences task — upload hashed first-party CRM audiences to AdCP seller accounts for retargeting, suppression, and lookalike expansion. Supports match status tracking." +"og:title": "AdCP — sync_audiences" +testable: false +--- + + +Manage first-party CRM audiences on a seller account. Upload hashed customer lists, check matching status, and reference the resulting audiences in [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) targeting overlays for explicit retargeting or suppression. + +Audiences are distinct from [signals](/dist/docs/3.2.0-beta.4/signals/): signals are named targeting dimensions discovered through product signal options, provider-published signal definitions, or [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals); audiences are data you own and upload. Use `audience_include` to target only members of an uploaded list. `audience_include` is a hard constraint — only users on the list are eligible. A signal returned by `get_signals` is not a synced audience ID and instead belongs in [`signal_targeting_groups`](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting#signal_targeting_groups). To find new users *similar to* an audience (lookalike expansion), describe that intent in your campaign brief — the seller handles expansion strategy. Note: lookalike intent expressed in the brief cannot be verified through the protocol; confirm via seller-side reporting. + +**Response Time**: Upload accepted in ~1–2s. Per-audience matching is asynchronous — the task remains active until matching completes (1–48 hours depending on the seller). Configure `push_notification_config` to receive a webhook when the audience is ready. Sellers whose ingestion pipeline cannot return per-audience results in the synchronous response (batch ingestion, governance-gated upload, clean-room flows) MAY respond with an operation-level submitted task envelope — see [Response shapes](#response-shapes). + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-audiences-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-audiences-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-audiences-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-audiences-response.json) + +## Quick Start + +Upload a customer list and check its status: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/sdk"; +import { createHash } from "crypto"; + +const hashEmail = (email) => + createHash("sha256").update(email.toLowerCase().trim()).digest("hex"); + +const hashPhone = (e164Phone) => + createHash("sha256").update(e164Phone).digest("hex"); + +const result = await testAgent.syncAudiences({ + account: { account_id: "acct_12345" }, + audiences: [ + { + audience_id: "existing_customers", + name: "Existing customers", + add: [ + { external_id: "crm_1001", hashed_email: hashEmail("alice@example.com") }, + { external_id: "crm_1002", hashed_email: hashEmail("bob@example.com"), hashed_phone: hashPhone("+12065551234") }, + ], + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAudiencesResponseSchema.parse(result.data); + +// Three-shape discriminated union: errors | submitted | audiences +if ("status" in validated && validated.status === "submitted") { + // Whole sync queued asynchronously — invoke get_task_status with task_id or await webhook + console.log(`Sync queued as task ${validated.task_id}: ${validated.message ?? ""}`); +} else if ("errors" in validated && validated.errors && !("audiences" in validated)) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} else if ("audiences" in validated) { + for (const audience of validated.audiences) { + console.log(`${audience.audience_id}: ${audience.action} (${audience.status ?? "n/a"})`); + if (audience.status === "ready") { + console.log(` Matched ${audience.matched_count} of ${audience.uploaded_count} members (this sync)`); + } + } +} +``` + +```python Python +import asyncio +import hashlib +from adcp.testing import test_agent + +def hash_email(email: str) -> str: + return hashlib.sha256(email.lower().strip().encode()).hexdigest() + +def hash_phone(e164_phone: str) -> str: + return hashlib.sha256(e164_phone.encode()).hexdigest() + +async def main(): + result = await test_agent.simple.sync_audiences( + account={'account_id': 'acct_12345'}, + audiences=[{ + 'audience_id': 'existing_customers', + 'name': 'Existing customers', + 'add': [ + {'external_id': 'crm_1001', 'hashed_email': hash_email('alice@example.com')}, + {'external_id': 'crm_1002', 'hashed_email': hash_email('bob@example.com'), 'hashed_phone': hash_phone('+12065551234')}, + ] + }] + ) + + # Three-shape discriminated union: errors | submitted | audiences + if getattr(result, 'status', None) == 'submitted': + # Whole sync queued asynchronously — invoke get_task_status with task_id or await webhook + print(f"Sync queued as task {result.task_id}: {getattr(result, 'message', '') or ''}") + return + + if getattr(result, 'errors', None) and not getattr(result, 'audiences', None): + raise Exception(f"Operation failed: {result.errors}") + + for audience in result.audiences: + status = getattr(audience, 'status', 'n/a') + print(f"{audience.audience_id}: {audience.action} ({status})") + if status == 'ready': + print(f" Matched {audience.matched_count} of {audience.uploaded_count} members (this sync)") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. | +| `audiences` | [Audience](#audience-object)[] | No | Audiences to sync. When omitted, the call is discovery-only and returns all existing audiences without modification. | +| `delete_missing` | boolean | No | When true, buyer-managed audiences on the account not in this request are removed (default: false). Does not affect seller-managed audiences. Do not combine with an omitted `audiences` array or all buyer-managed audiences will be deleted. | + +### Audience Object + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `audience_id` | string | Yes | Buyer's identifier for this audience. Used to reference the audience in targeting overlays. | +| `name` | string | No | Human-readable name | +| `delete` | boolean | No | When true, delete this audience from the account entirely. All other fields are ignored. | +| `add` | [AudienceMember](#audience-member)[] | No | Members to add to this audience | +| `remove` | [AudienceMember](#audience-member)[] | No | Members to remove from this audience. If the same identifier appears in both `add` and `remove`, remove takes precedence. | +| `consent_basis` | string | No | GDPR lawful basis: `consent`, `legitimate_interest`, `contract`, or `legal_obligation`. Required by some sellers in regulated markets. | + +### Audience Member + +Every member requires an `external_id` (buyer-assigned stable identifier) plus at least one matchable identifier. Hash all values with SHA-256 before sending — normalize emails to lowercase+trim, phone numbers to E.164 format (e.g. `+12065551234`). + +| Field | Type | Description | +|-------|------|-------------| +| `external_id` | string | **Required.** Buyer-assigned stable identifier for this member (e.g. CRM record ID, loyalty ID). Used for deduplication, removal, and cross-referencing with buyer systems. | +| `hashed_email` | string | SHA-256 hash of lowercase, trimmed email (64-char hex) | +| `hashed_phone` | string | SHA-256 hash of E.164-formatted phone number (64-char hex) | +| `uids` | UID[] | Universal IDs: `type` (rampid, uid2, maid, etc.) + `value` | + +Providing multiple identifiers for the same person improves match rates. Composite identifiers (e.g. hashed first name + last name + zip) are not yet standardized — use `ext` for platform-specific extensions. + +**Identifier support varies by seller**: Check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) → `media_buy.audience_targeting.supported_identifier_types` and `media_buy.audience_targeting.supported_uid_types` before sending. MAID support is not universal (LinkedIn does not accept MAIDs; iOS IDFA requires App Tracking Transparency consent). The `media_buy.audience_targeting.matching_latency_hours` range and `media_buy.audience_targeting.minimum_audience_size` in capabilities are also seller-specific. + +**Size limit**: Payloads are limited to 100,000 members per call across all audiences. For larger lists, chunk into sequential calls using `add` deltas. + +**Concurrency**: Ensure that calls made to `sync_audience` are independent of eachother. They may be processed out-of-order. If you need sequential execution, wait for the callback to your configured webhook before making another call. + +## Response shapes + +Responses use discriminated unions — a response has exactly one of three shapes, never mixed: + +**1. Synchronous success** — per-audience results: + +- `audiences` — Results for each audience on the account, including audiences not in this request +- `sandbox` — Boolean indicating if this response is from sandbox mode (optional) + +**2. Terminal failure** — no audiences processed: + +- `errors` — Array of operation-level errors (auth failure, account not found, invalid request format) + +**3. Submitted task envelope** — whole operation queued asynchronously (batch ingestion, governance-gated upload, clean-room flows where the seller cannot return per-audience results before the response is emitted): + +- `status` — Always `"submitted"` +- `task_id` — Handle for polling via [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) on the A2A profile (or the advertised AdCP polling task on MCP), or receiving a webhook on completion +- `message` — Optional human-readable explanation of the queue state + +The final per-audience `audiences` array lands on the task completion artifact, not on the submitted envelope. Per-audience asynchronous matching (one audience in `processing` while the rest of the sync resolves synchronously) belongs on the synchronous success branch with `status: "processing"` on that item, not on the submitted envelope. Matching latency on the per-audience [audience-status](#audience-status) enum is the common case; the submitted envelope is for the less-common operation-level async case. + +**Each audience in success response includes:** + +| Field | Description | +|-------|-------------| +| `audience_id` | Echoed from request (buyer's identifier) | +| `seller_id` | Seller-assigned ID in their ad platform | +| `action` | `created`, `updated`, `unchanged`, `deleted`, or `failed` | +| `status` | `processing`, `ready`, or `too_small`. Present when action is `created`, `updated`, or `unchanged`; absent when action is `deleted` or `failed`. | +| `uploaded_count` | Members submitted in this sync operation (delta, not cumulative). 0 for discovery-only calls. | +| `total_uploaded_count` | Cumulative members uploaded across all syncs. Compare with `matched_count` to calculate match rate. | +| `matched_count` | Total members matched to platform users across all syncs (cumulative). Populated when `status: "ready"`. | +| `effective_match_rate` | Deduplicated match rate across all identifier types (0–1). A single number for reach estimation. Populated when `status: "ready"`. | +| `match_breakdown` | Per-identifier-type match results. Shows which ID types resolve and at what rate. See [match breakdown](#match-breakdown). | +| `last_synced_at` | ISO 8601 timestamp of the most recent sync. Omitted if the seller does not track this. | +| `minimum_size` | Minimum matched audience size for targeting on this platform. Populated when `status: "too_small"`. | +| `errors` | Per-audience errors (only when `action: "failed"`) | + +## Match breakdown + +When a seller supports per-identifier-type reporting, the response includes `match_breakdown` — an array showing which identity types are resolving and at what rate. This helps buyers decide which identifiers to prioritize in future uploads. + +```json +{ + "audience_id": "existing_customers", + "action": "updated", + "status": "ready", + "uploaded_count": 5000, + "total_uploaded_count": 25000, + "matched_count": 18750, + "effective_match_rate": 0.75, + "match_breakdown": [ + { "id_type": "hashed_email", "submitted": 25000, "matched": 17500, "match_rate": 0.70 }, + { "id_type": "hashed_phone", "submitted": 15000, "matched": 12000, "match_rate": 0.80 }, + { "id_type": "rampid", "submitted": 8000, "matched": 7200, "match_rate": 0.90 } + ] +} +``` + +Key semantics: +- **`submitted` and `matched` are cumulative** across all syncs, matching `total_uploaded_count` semantics (not `uploaded_count`). +- **`effective_match_rate` is deduplicated** — a member matched via both email and phone counts once. It will be less than or equal to the sum of per-type match rates. +- **`match_rate` is server-authoritative** — consumers should prefer this value over computing their own from submitted/matched. +- **`id_type` values** combine hashed PII types (`hashed_email`, `hashed_phone`) with universal ID types (`rampid`, `uid2`, `id5`, `euid`, `pairid`, `maid`). + +Sellers that only support aggregate match counts omit `match_breakdown` entirely. + +## Common Scenarios + +### Discovery Only + +Check status of all existing audiences without making changes. The response includes all audiences on the account — filter by `audience_id` to find the one you care about: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAudiences({ + account: { account_id: "acct_12345" }, +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAudiencesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("audiences" in validated) { + for (const audience of validated.audiences) { + console.log(`${audience.audience_id}: ${audience.status ?? "n/a"}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_audiences(account={'account_id': 'acct_12345'}) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for audience in result.audiences: + status = getattr(audience, 'status', 'n/a') + print(f"{audience.audience_id}: {status}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Suppression List + +Upload a list of existing customers to suppress from acquisition campaigns: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/sdk"; +import { createHash } from "crypto"; + +const hashEmail = (email) => + createHash("sha256").update(email.toLowerCase().trim()).digest("hex"); + +// Hashed customer emails from CRM export +const existingCustomers = [ + { hashed_email: hashEmail("customer1@example.com") }, + { hashed_email: hashEmail("customer2@example.com") }, +]; + +const result = await testAgent.syncAudiences({ + account: { account_id: "acct_12345" }, + audiences: [ + { + audience_id: "existing_customers", + name: "Existing customers — suppression", + add: existingCustomers, + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAudiencesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("audiences" in validated) { + const audience = validated.audiences[0]; + console.log(`Status: ${audience.status}`); + // When ready, reference audience_id in create_media_buy targeting_overlay.audience_exclude +} +``` + +```python Python +import asyncio +import hashlib +from adcp.testing import test_agent + +def hash_email(email: str) -> str: + return hashlib.sha256(email.lower().strip().encode()).hexdigest() + +async def main(): + existing_customers = [ + {'hashed_email': hash_email('customer1@example.com')}, + {'hashed_email': hash_email('customer2@example.com')}, + ] + + result = await test_agent.simple.sync_audiences( + account={'account_id': 'acct_12345'}, + audiences=[{ + 'audience_id': 'existing_customers', + 'name': 'Existing customers — suppression', + 'add': existing_customers + }] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + audience = result.audiences[0] + print(f"Status: {audience.status}") + # When ready, reference audience_id in create_media_buy targeting_overlay.audience_exclude + +asyncio.run(main()) +``` + +</CodeGroup> + +### Removing Members + +Update an audience incrementally — add new members and remove ones that no longer qualify: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/sdk"; +import { createHash } from "crypto"; + +const hashEmail = (email) => + createHash("sha256").update(email.toLowerCase().trim()).digest("hex"); + +const result = await testAgent.syncAudiences({ + account: { account_id: "acct_12345" }, + audiences: [ + { + audience_id: "lapsed_subscribers", + name: "Lapsed subscribers", + add: [{ hashed_email: hashEmail("newlapse@example.com") }], + remove: [{ hashed_email: hashEmail("reactivated@example.com") }], + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAudiencesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("audiences" in validated) { + for (const audience of validated.audiences) { + console.log(`${audience.audience_id}: ${audience.action}`); + } +} +``` + +```python Python +import asyncio +import hashlib +from adcp.testing import test_agent + +def hash_email(email: str) -> str: + return hashlib.sha256(email.lower().strip().encode()).hexdigest() + +async def main(): + result = await test_agent.simple.sync_audiences( + account={'account_id': 'acct_12345'}, + audiences=[{ + 'audience_id': 'lapsed_subscribers', + 'name': 'Lapsed subscribers', + 'add': [{'hashed_email': hash_email('newlapse@example.com')}], + 'remove': [{'hashed_email': hash_email('reactivated@example.com')}] + }] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for audience in result.audiences: + print(f"{audience.audience_id}: {audience.action}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Deleting an Audience + +Remove a specific audience from the account without affecting others. Set `delete: true` on the audience object: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncAudiences({ + account: { account_id: "acct_12345" }, + audiences: [ + { audience_id: "old_campaign_list", delete: true }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncAudiencesResponseSchema.parse(result.data); + +if ("audiences" in validated) { + const audience = validated.audiences.find(a => a.audience_id === "old_campaign_list"); + console.log(`${audience.audience_id}: ${audience.action}`); // "deleted" +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_audiences( + account={'account_id': 'acct_12345'}, + audiences=[{'audience_id': 'old_campaign_list', 'delete': True}] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + audience = next(a for a in result.audiences if a.audience_id == 'old_campaign_list') + print(f"{audience.audience_id}: {audience.action}") # "deleted" + +asyncio.run(main()) +``` + +</CodeGroup> + +To delete multiple audiences in one call, include each with `delete: true`. To delete all buyer-managed audiences at once, use `delete_missing: true` with an empty `audiences` array — but be careful, this removes everything. + +### Using Audiences in a Media Buy + +Once an audience is `ready`, reference it by `audience_id` in [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) targeting overlays. Audience IDs are scoped to the seller account — they cannot be used across sellers. + +```json test=false +{ + "brand": { "house_domain": "acme.com", "brand_id": "main" }, + "start_time": "asap", + "end_time": "2026-03-31T23:59:59Z", + "packages": [ + { + "product_id": "prod_sponsored_content", + "pricing_option_id": "cpm_standard", + "budget": 10000, + "targeting_overlay": { + "audience_include": ["high_value_prospects"], + "audience_exclude": ["existing_customers"] + } + } + ] +} +``` + +## Audience Status + +Platform matching is asynchronous. The `status` field reflects the current state: + +| Status | Meaning | +|--------|---------| +| `processing` | Platform is matching uploaded members against its user base. Poll again later — do not create campaigns yet. | +| `ready` | Audience is available for targeting. `matched_count` is populated. | +| `too_small` | Matched audience is below the platform's minimum size. `minimum_size` in the response tells you the threshold. Add more members and re-sync. | + +`status` is present when `action` is `created`, `updated`, or `unchanged`. It is absent when `action` is `deleted` or `failed`. + +Sellers MUST emit `too_small` whenever `matched_count < minimum_size`. Returning `ready` with a `matched_count` below the platform minimum is non-compliant — buyers rely on the status value as a programmatic signal that targeting will fail, not on post-hoc interpretation of the count. + +**Webhook (recommended)**: Configure `push_notification_config` at the protocol level before uploading. The task stays active while the seller's platform matches members. When matching completes, the task completes and the webhook fires with the final result — `status: "ready"` or `status: "too_small"`. Check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) → `audience_targeting.matching_latency_hours` to set realistic expectations (typically 1–48 hours). + +**Polling fallback**: If not using webhooks, poll with discovery-only calls (omit `audiences`) no more frequently than every 15 minutes. A2A profile callers use [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) with the `task_id`; MCP callers use the advertised AdCP polling task. The task will be `submitted` while matching is in progress and `completed` when the audience is ready or too small. + +**Agent workflow**: Upload with `push_notification_config` set. Externalize the `audience_id` and `account_id` before the session ends. When the webhook fires with `status: "ready"`, resume and proceed to [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). + +## Async patterns + +Two distinct async patterns — match the right one to the seller's behavior: + +**Per-audience async matching** (common): the sync operation itself resolves synchronously and returns per-audience results immediately. Audiences whose matching is still running come back on the synchronous success response with `status: "processing"`. The buyer reconciles terminal state (`ready` / `too_small`) via subsequent discovery-only calls or a webhook. This is the case covered by the [Audience Status](#audience-status) enum above. + +**Operation-level async** (less common): the whole sync is queued — the seller cannot return any per-audience results before responding, because ingestion is batched, governance review gates the upload, or an upstream clean-room flow must settle before matching can start. The response is a submitted envelope: + +- Top-level `status: "submitted"` with `task_id` +- `message` — optional human-readable explanation +- No `audiences` array on this envelope + +Invoke [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) on the A2A profile (or the advertised AdCP polling task on MCP), or wait for the webhook. The completion artifact carries the `audiences` array with per-item `action`/`status` results; operation-level failures surface as `status: "failed"` on the task. + +**See:** [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for webhook configuration. + +## Hashing Requirements + +Hash all identifiers with SHA-256 before sending. Normalize first: + +| Identifier | Normalization | Example | +|------------|--------------|---------| +| Email | Lowercase, trim whitespace | `alice@example.com` → hash | +| Phone | E.164 format | `+12065551234` → hash | +| MAID | No normalization needed | As-is | + +```javascript test=false +import { createHash } from "crypto"; + +const hashEmail = (email) => + createHash("sha256").update(email.toLowerCase().trim()).digest("hex"); + +const hashPhone = (e164Phone) => + createHash("sha256").update(e164Phone).digest("hex"); +``` + +## Privacy Considerations + +The schema never carries cleartext email or phone — buyers MUST hash before transport. The seller matches by independently hashing its own user data with the same algorithm. + +**Hashed identifiers are pseudonymous PII, not anonymous.** Unsalted SHA-256 of an email or phone number is recoverable via precomputed dictionaries of the email and E.164 namespaces, so `hashed_email` and `hashed_phone` MUST be treated as PII for retention, consent, access control, and data-subject-request purposes. Do not describe them as "privacy-preserving" in operator documentation or DPAs. See [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations#unsalted-hashed-identifiers-are-pseudonymous-not-anonymous). + +**Buyer obligations**: The buyer is responsible for having a lawful basis to process and share audience data, regardless of jurisdiction. Include `consent_basis` on each audience to communicate the GDPR lawful basis to sellers operating in regulated markets — some sellers require this field for EU audiences. + +**Data handling**: Once uploaded, data processing and retention are governed by your agreement with the seller. Review the seller's data processing terms before uploading audience data. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Account does not exist | Verify `account_id` | +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | Audience to remove from doesn't exist or is not accessible (`error.field` = `audience_id`) | Check `audience_id` or omit `remove` | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | Identifier format or payload size is invalid | Verify SHA-256 hex encoding and keep the payload within the documented limit | +| [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited) | Too many sync requests | Retry with exponential backoff; poll no more than every 15 minutes | + +## Next Steps + +- [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) — Reference audiences in `targeting_overlay.audience_include` and `audience_exclude` +- [create_media_buy](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — Apply audience targeting to packages +- [Conversion Tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/) — Track outcomes from audience-targeted campaigns diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs.mdx new file mode 100644 index 0000000000..43dd93aa73 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs.mdx @@ -0,0 +1,461 @@ +--- +title: sync_catalogs +description: "sync_catalogs task — sync product feeds, store locations, and vertical catalogs (hotel, flight, vehicle, real estate) to AdCP seller accounts for catalog-driven campaigns." +"og:title": "AdCP — sync_catalogs" +--- + + +Manage buyer-provided catalog feeds on a seller account. Sync product feeds, inventory data, store locations, offerings, and industry-vertical catalogs (hotel, flight, job, vehicle, real estate, education, destination). Supports URL-based feeds with scheduled re-fetch, inline item data, discovery of existing catalogs, and immediate suppression or restoration of specific items. + +**Terminology.** `sync_catalogs` manages buyer-provided data feeds that a seller uses to render or target ads. This is separate from the seller-side wholesale product feed exposed by `get_products buying_mode: "wholesale"` and the wholesale signals feed exposed by `get_signals discovery_mode: "wholesale"`; webhooks are the push layer for changes to those seller-side feeds. + +**Response Time**: Instant to days (returns `completed` for small catalogs, or `submitted` for large feeds requiring platform review) + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-catalogs-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-catalogs-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-catalogs-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-catalogs-response.json) + +## Who calls whom + +The **buyer** calls `sync_catalogs` on the **seller** to push catalog feeds to the seller's account. The seller validates items, runs content policy checks, and returns per-item approval status. + +```mermaid +sequenceDiagram + participant B as Buyer + participant S as Seller + + B->>S: sync_catalogs (product feed, stores, inventory) + S->>B: Per-catalog results with item review status + Note over B,S: Buyer can now reference synced catalogs in creatives +``` + +This task sits between format discovery and creative submission in the [account state setup sequence](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state): + +1. [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) — check canonical `format_options[].params.slots[]` for catalog requirements +2. **`sync_catalogs`** — push the required feeds to the account +3. [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) — submit creatives that reference synced catalogs by `catalog_id` +4. [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — launch the campaign + +## Quick start + +Sync a product feed: + +```json +{ + "account": { "account_id": "acct_acmecorp" }, + "catalogs": [ + { + "catalog_id": "product-feed", + "name": "Acme Product Catalog", + "type": "product", + "url": "https://feeds.acmecorp.com/products.xml", + "feed_format": "google_merchant_center", + "update_frequency": "daily" + } + ] +} +``` + +## Request parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account containing the catalogs. Pass `{ "account_id": "..." }` or an implicit-resolution reference supported by the seller. | +| `catalogs` | Catalog[] | No | Catalog feeds to sync (max 50). Omit for an availability-only call; omit with both availability arrays for discovery mode. | +| `item_availability_updates` | CatalogItemAvailabilityUpdate[] | No | Immediate revision-guarded suppress/restore operations for items in buyer-managed catalogs. | +| `item_availability_queries` | CatalogItemAvailabilityRef[] | No | Read current availability and `overlay_revision`. Queries run after updates in a mixed request. | +| `catalog_ids` | string[] | No | Limit sync scope to specific catalog IDs. Others on the account are unaffected. | +| `delete_missing` | boolean | No | When true, buyer-managed catalogs not in this sync are removed. Does not affect seller-managed catalogs. Requires `catalogs` to be present. Default: false. | +| `dry_run` | boolean | No | Preview changes without applying. Default: false. | +| `validation_mode` | string | No | `"strict"` (default) rejects the whole operation before mutation on any entry error. `"lenient"` processes valid entries and returns positionally matched failed results for invalid item references. | +| `push_notification_config` | object | No | Webhook configuration for async completion notification. | + +## Immediate item availability + +`item_availability_updates` lets the buyer correct time-sensitive availability without re-sending a full feed or waiting for the next scheduled fetch. It applies only to catalogs the buyer manages on the seller account. Seller-owned wholesale inventory and seller policy removals continue to use the seller's wholesale-feed and impairment lifecycles. + +Before sending updates, check [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for: + +```json +{ + "media_buy": { + "features": { + "catalog_management": true, + "catalog_item_availability_updates": true + } + } +} +``` + +A suppression is an availability overlay, not a change to seller review status. Once the seller acknowledges `applied` or `unchanged`, it MUST prevent further selection or dynamic rendering, including every cached or pre-generated creative materialized from the item. Internal lineage therefore uses `(resolved_account_id, catalog_id, catalog_generation, item_id)`; shorter keys are unsafe. Static creatives supplied or promoted without catalog lineage remain outside this automatic guarantee and use the creative lifecycle. `unchanged` is valid only when the requested overlay and expiry already match persisted state. + +`catalog_generation` is an opaque seller-issued token returned on catalog results and discovery when this capability is advertised. It is stable across ordinary upserts and feed refreshes, changes after deletion and recreation, and is never reused for the same account and `catalog_id`. This prevents a delayed update from applying to a new catalog that reused the buyer's ID. + +`item_id` is the exact canonical key used by `Catalog.ids`: `offering_id`, `store_id`, `hotel_id`, `flight_id`, `job_id`, `vehicle_id`, `listing_id`, `program_id`, `destination_id`, or `app_id` for those typed catalogs. Product, inventory, and promotion feeds use the stable normalized source identifier retained during ingestion. + +A restore removes only the buyer-authored suppression. The item remains subject to seller approval, policy, rights, inventory, and other controls. If the item is absent, restore is allowed only when a prior overlay or tombstone exists in the same catalog generation; otherwise it fails with [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found). + +Each `(catalog_id, catalog_generation, item_id)` tuple can appear only once in the update array. A duplicate +is an operation-level [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) before mutation in both validation +modes. The combined update and query count cannot exceed 1,000; buyers chunk larger workloads. Excess entries fail before lookup or mutation. For any mixed request, the seller validates and stages catalog upserts and availability updates, evaluates queries against that post-upsert/post-update candidate state, and then commits once before returning query results. If it cannot commit synchronously and atomically, it rejects before any mutation. + +Suppression persists across scheduled feed fetches and ordinary catalog upserts; +only an explicit `restore`, the optional `expires_at`, or deletion of the containing catalog clears it. This +prevents the next hourly feed refresh from accidentally re-enabling an item. A +restore can clear an existing overlay while the item is temporarily absent only +when the seller retained its prior overlay or tombstone in that generation. + +Availability updates are always synchronous. A seller MUST NOT return +`status: "submitted"` for a request containing them. If a mixed request's catalog +upserts require async processing, the seller rejects it with `INVALID_REQUEST` +before mutation and the buyer sends the immediate availability update and the +catalog sync as separate calls. `dry_run: true` is not allowed with availability +updates because their result statuses acknowledge real persisted state, not a +preview. + +Every update includes `expected_overlay_revision`, obtained from a current-state query. Revision 0 is the initial active state. Each applied suppress, applied restore, and automatic expiry increments it exactly once; unchanged updates, reads, and idempotent replays do not. A mismatch returns [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) without mutation, so concurrent suppress/restore operations cannot overwrite one another. + +`validation_mode` does not weaken the request envelope. Schema errors, duplicate identities, an undeclared capability, batch-limit excess, `dry_run` conflicts, and a mixed request that cannot commit atomically are operation-level failures before lookup or mutation in both modes. For entry failures, `strict` rejects the whole operation before mutation; `lenient` returns a failed result in its request position and processes valid entries. Unknown, inaccessible, unauthorized, and stale-generation references are observationally identical: `code: "REFERENCE_NOT_FOUND"`, message exactly `Catalog item not found`, recovery `correctable`, and no field, suggestion, retry hint, issues, details, or resource metadata. Sellers use the same authorization/lookup failure path and avoid materially distinguishable timing. A known seller-managed catalog may return `INVALID_REQUEST` only after access is authorized. + +Responses contain exactly one update result per update and one state result per query, in request order. Every result carries `request_index` and echoes the complete identity (and action for updates). Buyers reject count, order, index, or echo mismatches rather than correlating heuristically. A response with `replayed: true` is historical; after expiry, deletion, or uncertainty, issue a query with a fresh idempotency key before treating it as current. + +The overlay applies to active packages and future item selection, but it does +not change `catalog-item-status` to `withdrawn`, pause or cancel a media buy, or +create a seller-removal impairment. The buyer intentionally requested this +state and receives its acknowledgement directly. If suppressing the last +eligible item leaves a package unable to deliver, the buyer restores or replaces +the item or controls the buy; the seller continues normal delivery and +underdelivery reporting. + +```json +{ + "idempotency_key": "d4a8f1b2-0123-489f-a123-45678901234d", + "account": { "account_id": "acct_acmecorp" }, + "item_availability_updates": [ + { + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-12345", + "expected_overlay_revision": 0, + "action": "suppress", + "reason": "out_of_stock", + "expires_at": "2027-12-31T23:59:59Z" + }, + { + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-67890", + "expected_overlay_revision": 3, + "action": "restore", + "reason": "back_in_stock" + } + ] +} +``` + +Read current state before writing (and after any replay whose snapshot may be stale): + +```json +{ + "idempotency_key": "e5b9a2c3-1234-48af-b234-56789012345e", + "account": { "account_id": "acct_acmecorp" }, + "item_availability_queries": [ + { + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-12345" + } + ] +} +``` + +Standard reasons are `out_of_stock`, `back_in_stock`, `content_unavailable`, `content_available`, `promotion_start`, `promotion_end`, `time_window_started`, `time_window_expired`, `buyer_request`, and `other`. When using `other`, include `reason_detail`. + +Price, copy, and asset changes are catalog content updates, not availability transitions; send those through the ordinary `catalogs` upsert path. + +### Catalog object + +Each catalog in the `catalogs` array is a [Catalog](/dist/docs/3.2.0-beta.4/creative/catalogs#the-catalog-object) object. Key fields: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `catalog_id` | string | Yes | Buyer's identifier. Used to match existing catalogs for upsert. | +| `type` | CatalogType | Yes | Catalog type: `product`, `offering`, `inventory`, `store`, `promotion`, `hotel`, `flight`, `job`, `vehicle`, `real_estate`, `education`, `destination` | +| `url` | uri | No | External feed URL. Mutually exclusive with `items`. | +| `feed_format` | string | No | Feed format: `google_merchant_center`, `facebook_catalog`, `shopify`, `linkedin_jobs`, `custom` | +| `update_frequency` | string | No | Re-fetch schedule: `realtime`, `hourly`, `daily`, `weekly` | +| `items` | object[] | No | Inline catalog data. Mutually exclusive with `url`. | +| `conversion_events` | EventType[] | No | Event types representing conversions for items in this catalog | + +## Response + +**Success response** — per-catalog results: + +| Field | Type | Description | +|-------|------|-------------| +| `catalogs` | object[] | Results for each catalog processed | +| `catalogs[].catalog_id` | string | Catalog ID from request | +| `catalogs[].catalog_generation` | string | Immutable catalog-incarnation token; returned for accessible buyer-managed catalogs when availability updates are supported | +| `catalogs[].action` | string | `created`, `updated`, `unchanged`, `failed`, `deleted` | +| `catalogs[].platform_id` | string | Platform-assigned ID | +| `catalogs[].item_count` | integer | Total items after sync | +| `catalogs[].items_approved` | integer | Items approved by platform | +| `catalogs[].items_pending` | integer | Items awaiting review | +| `catalogs[].items_rejected` | integer | Items rejected | +| `catalogs[].item_issues` | object[] | Per-item rejection reasons | +| `catalogs[].next_fetch_at` | datetime | Next scheduled feed fetch (URL-based catalogs) | +| `item_availability_updates` | object[] | Positionally matched acknowledgements for every requested availability update | +| `item_availability_updates[].request_index` | integer | Zero-based request position | +| `item_availability_updates[].catalog_id` | string | Catalog ID echoed from the request | +| `item_availability_updates[].catalog_generation` | string | Catalog generation echoed from the request | +| `item_availability_updates[].item_id` | string | Item ID echoed from the request | +| `item_availability_updates[].action` | string | `suppress` or `restore`, echoed from the request | +| `item_availability_updates[].status` | string | `applied`, `unchanged`, or `failed` | +| `item_availability_updates[].availability` | string | Persisted `active` or `suppressed` state after an applied or unchanged result | +| `item_availability_updates[].overlay_revision` | integer | Persisted revision after an applied or unchanged result | +| `item_availability_updates[].expires_at` | datetime | Present only while the persisted state is suppressed with an expiry | +| `item_availability_updates[].applied_at` | datetime | Required when applied; optional when unchanged if the seller knows when the existing state took effect | +| `item_availability_updates[].errors` | Error[] | Required when that item update failed | +| `item_availability_states` | object[] | Current-state results for every requested query | +| `item_availability_states[].request_index` | integer | Zero-based request position | +| `item_availability_states[].catalog_id` | string | Catalog ID echoed from the request | +| `item_availability_states[].catalog_generation` | string | Catalog generation echoed from the request | +| `item_availability_states[].item_id` | string | Item ID echoed from the request | +| `item_availability_states[].status` | string | `found` or `failed` | +| `item_availability_states[].availability` | string | Current buyer-authored `active` or `suppressed` overlay state when found | +| `item_availability_states[].overlay_revision` | integer | Current optimistic-concurrency token when found | +| `item_availability_states[].expires_at` | datetime | Present only while the current state is suppressed with an expiry | +| `item_availability_states[].updated_at` | datetime | Timestamp of the state represented by `overlay_revision` when found | +| `item_availability_states[].errors` | Error[] | Required when the item reference could not be read | + +Each suppress request may include `expires_at`. At that instant, the seller +automatically removes the buyer-authored overlay as if it received a restore. +Omit it for an indefinite suppression; it is invalid on restore requests. A +repeated suppress replaces the prior expiry: a changed timestamp, or omission +that clears a previous timestamp, returns `applied`. `unchanged` is only correct +when both the suppression state and expiry already match the request. + +**Error response** — operation failed entirely: + +| Field | Type | Description | +|-------|------|-------------| +| `errors` | Error[] | Operation-level errors (auth failure, service unavailable) | + +Responses use discriminated unions — a synchronous success has `status: "completed"`, always contains `catalogs` (an empty array for an availability-only call), and may contain update or state results; an operation-level failure contains `errors` instead. + +### Availability update response + +```json +{ + "status": "completed", + "catalogs": [], + "item_availability_updates": [ + { + "request_index": 0, + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-12345", + "action": "suppress", + "status": "applied", + "availability": "suppressed", + "overlay_revision": 1, + "expires_at": "2027-12-31T23:59:59Z", + "applied_at": "2026-08-16T08:30:00Z" + }, + { + "request_index": 1, + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-67890", + "action": "restore", + "status": "unchanged", + "availability": "active", + "overlay_revision": 3 + } + ] +} +``` + +### Availability state response + +```json +{ + "status": "completed", + "catalogs": [], + "item_availability_states": [ + { + "request_index": 0, + "catalog_id": "product-feed", + "catalog_generation": "catgen_01K2ABCD", + "item_id": "SKU-12345", + "status": "found", + "availability": "suppressed", + "overlay_revision": 1, + "expires_at": "2027-12-31T23:59:59Z", + "updated_at": "2026-08-16T08:30:00Z" + } + ] +} +``` + +### Example response with item-level review + +```json +{ + "catalogs": [ + { + "catalog_id": "product-feed", + "action": "created", + "platform_id": "plat_cat_001", + "item_count": 1250, + "items_approved": 1180, + "items_pending": 45, + "items_rejected": 25, + "item_issues": [ + { + "item_id": "SKU-789", + "status": "rejected", + "reasons": ["Missing required field: image_url"] + } + ], + "next_fetch_at": "2025-03-01T06:00:00Z" + } + ] +} +``` + +## Item review lifecycle + +Catalog items follow a simple review cycle: items enter `pending` on sync, and the platform reviews them asynchronously. Items are either `approved`, `rejected` (with reasons), or `approved` with `warning` (serving but with fixable issues). + +Rejection is not terminal — fix the issue in the source catalog and re-sync. Re-syncing an item resets it to `pending` for re-review. The `item_issues` array on the response identifies per-item rejection reasons. + +## Discovery mode + +Omit `catalogs`, `item_availability_updates`, and `item_availability_queries` to list all catalogs on the account without modification: + +```json +{ + "account": { "account_id": "acct_acmecorp" } +} +``` + +This matters because sellers may already have brand data from other sources — a retailer might have the brand's product catalog from their commerce platform. Discovery lets the buyer build on existing state rather than re-uploading everything. + +## Async approval workflow + +Large feeds or feeds requiring content policy review return `status: "submitted"` with a `task_id`. The seller reviews items asynchronously and notifies the buyer via webhook when done. + +Async response states: +- **`working`** — platform is processing the feed (fetching URL, validating items) +- **`input-required`** — platform needs buyer action (fix validation errors, provide missing fields) +- **`submitted`** — review complete, final per-catalog results available + +Configure `push_notification_config` on the request to receive webhook notifications for state transitions. + +## Common scenarios + +### Retail media (product + inventory + store) + +```json +{ + "account": { "account_id": "acct_acmecorp" }, + "catalogs": [ + { + "catalog_id": "product-feed", + "type": "product", + "url": "https://feeds.acmecorp.com/products.xml", + "feed_format": "google_merchant_center", + "update_frequency": "daily" + }, + { + "catalog_id": "inventory-feed", + "type": "inventory", + "url": "https://feeds.acmecorp.com/inventory.json", + "feed_format": "custom", + "update_frequency": "hourly" + }, + { + "catalog_id": "store-locations", + "type": "store", + "url": "https://feeds.acmecorp.com/stores.json", + "feed_format": "custom", + "update_frequency": "weekly" + } + ] +} +``` + +### Recruitment (inline job offerings) + +```json +{ + "account": { "account_id": "acct_restaurants" }, + "catalogs": [ + { + "catalog_id": "chef-vacancies", + "type": "offering", + "items": [ + { + "offering_id": "chef-amsterdam-42", + "name": "Head Chef - Amsterdam", + "landing_url": "https://jobs.acme-restaurants.com/chef-amsterdam-42", + "geo_targets": { + "countries": ["NL"], + "regions": ["NL-NH"] + } + } + ] + } + ] +} +``` + +### Dry run validation + +```json +{ + "account": { "account_id": "acct_acmecorp" }, + "dry_run": true, + "catalogs": [ + { + "catalog_id": "product-feed", + "type": "product", + "url": "https://feeds.acmecorp.com/products.xml", + "feed_format": "google_merchant_center" + } + ] +} +``` + +## Error handling + +| Error | Description | Resolution | +|-------|-------------|------------| +| [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found) | Referenced `catalog_id` doesn't exist or is not accessible (when using `catalog_ids` filter; `error.field` = `catalog_ids`) | Verify catalog IDs from a previous sync or discovery call | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | Seller does not declare `catalog_item_availability_updates` | Remove the updates or route to a seller that declares the capability | +| [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) | Duplicate item update, seller-managed catalog, `dry_run` conflict, or mixed request whose catalog work would be asynchronous | Correct the request or split catalog ingestion from availability changes | +| [`FEED_FETCH_FAILED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-feed-fetch-failed) | Platform couldn't fetch the feed URL | Check URL accessibility, authentication, and feed format | +| [`INVALID_FEED_FORMAT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-feed-format) | Feed doesn't match declared `feed_format` | Verify feed content matches the format (XML for google_merchant_center, etc.) | +| [`ITEM_VALIDATION_FAILED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-item-validation-failed) | Items failed schema validation | Check `item_issues` for per-item rejection reasons | +| [`CATALOG_LIMIT_EXCEEDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-catalog-limit-exceeded) | Account has reached maximum catalog count | Remove unused catalogs or contact seller | + +## Best practices + +1. **Check format requirements first** — Read the selected product's canonical declaration and inspect its catalog slots before syncing. This tells you what catalog types to sync and what fields each item needs. + +2. **Use discovery mode** — Before syncing, call without `catalogs` to see what the seller already has. The seller may have brand data from other sources. + +3. **Set `update_frequency`** — For URL-based feeds, always set `update_frequency` so the platform knows how often to re-fetch. Stale feeds lead to ads showing out-of-stock products. + +4. **Declare `conversion_events`** — Connect catalogs to the conversion tracking system by declaring which event types represent conversions for catalog items. + +5. **Use `dry_run` for large feeds** — Validate before committing, especially for first-time syncs with thousands of items. + +6. **Handle per-item failures** — In `lenient` mode, valid items are processed even when others fail. Check `item_issues` on the response to fix rejected items. + +## Next steps + +- [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs) — Complete documentation on catalog types, sourcing, and format requirements +- [Account state](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state) — How catalogs fit into the account setup sequence +- [sync_creatives](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) — Submit creatives that reference synced catalogs +- [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) — Discover format catalog requirements diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources.mdx new file mode 100644 index 0000000000..1ed57ad168 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources.mdx @@ -0,0 +1,488 @@ +--- +title: sync_event_sources +description: "sync_event_sources task — configure website pixels, mobile SDKs, server-to-server integrations, and seller- or platform-native event sources on AdCP seller accounts for conversion tracking and attribution." +"og:title": "AdCP — sync_event_sources" +testable: false +--- + + +Configure event sources on a seller account for conversion tracking. Sources can be buyer-managed integrations such as website pixels, mobile SDKs, server-to-server feeds, and CRM imports, or seller- and platform-native owned properties such as channels, profiles, feeds, podcasts, and newsletter lists. Supports upsert semantics, seller-managed sources, and setup instructions. + +**Response Time**: ~1s (synchronous configuration) + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-event-sources-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/sync-event-sources-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-response.json) + +## Quick Start + +Configure an event source for purchase tracking: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncEventSources({ + account: { account_id: "acct_12345" }, + event_sources: [ + { + event_source_id: "website_pixel", + name: "Main Website Pixel", + event_types: ["purchase", "lead", "add_to_cart"], + allowed_domains: ["www.example.com", "shop.example.com"], + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = SyncEventSourcesResponseSchema.parse(result.data); + +// Check for operation-level errors first (discriminated union) +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("event_sources" in validated) { + for (const source of validated.event_sources) { + console.log(`${source.event_source_id}: ${source.action}`); + if (source.setup?.snippet) { + console.log(` Install: ${source.setup.snippet_type}`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_event_sources( + account={'account_id': 'acct_12345'}, + event_sources=[{ + 'event_source_id': 'website_pixel', + 'name': 'Main Website Pixel', + 'event_types': ['purchase', 'lead', 'add_to_cart'], + 'allowed_domains': ['www.example.com', 'shop.example.com'] + }] + ) + + # Check for operation-level errors first + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for source in result.event_sources: + print(f"{source.event_source_id}: {source.action}") + if source.setup and source.setup.snippet: + print(f" Install: {source.setup.snippet_type}") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. | +| `event_sources` | [EventSource](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event-source)[] | No | Event sources to sync. When omitted, the call is discovery-only and returns all existing event sources without modification. | +| `delete_missing` | boolean | No | When true, buyer-managed event sources on the account not in this request are removed (default: false) | + +### Event Source Object + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `event_source_id` | string | Yes | Unique identifier for this event source | +| `name` | string | No | Human-readable name | +| `event_types` | [EventType](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event-types)[] | No | Event types this source handles. If omitted, accepts all event types. | +| `value_currencies` | string[] | No | ISO 4217 currencies accepted for monetary event values. Required before using this source for canonical ROAS. One source may support multiple currencies; each buy uses only records matching its media-buy currency. | +| `action_source` | [ActionSource](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#action-sources) | No | Flat source category for compatibility (`website`, `app`, `system_generated`, etc.). Pair with `surface` when the flat value is too coarse. | +| `allowed_domains` | string[] | No | Domains authorized to send events for this source | +| `surface` | [EventSurface](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#event-surfaces) | No | Structured surface this source represents, such as an owned channel, profile, feed, podcast, newsletter list, website, app, or store | + +## Response + +**Success Response:** + +- `event_sources` - Results for each event source, including both synced and seller-managed sources on the account + +**Error Response:** + +- `errors` - Array of operation-level errors (auth failure, account not found) + +**Note:** Responses use discriminated unions - you get either success fields OR errors, never both. + +**Each event source in success response includes:** + +- All request fields +- `seller_id` - Seller-assigned identifier for this event source +- `action` - What happened: `created`, `updated`, `unchanged`, `deleted`, `failed` +- `action_source` - Type of event source (website pixel, app SDK, etc.) +- `surface` - Structured surface this source represents, when the flat `action_source` is too coarse +- `managed_by` - Who manages this source: `buyer` or `seller` +- `setup` - Implementation details (snippet, instructions) +- `health` - Event source health assessment (when seller supports health scoring) +- `errors` - Per-source errors (only when `action: "failed"`) +- `ext` - Per-source extension metadata, such as platform-native conversion IDs, attribution-window handles, or raw origin strings + +**See schema for complete field list**: [sync-event-sources-response.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/sync-event-sources-response.json) + +### Event Source Health + +Sellers that evaluate event source quality include a `health` object on each source in the response. This is analogous to Snap's Event Quality Score or Meta's Event Match Quality — it tells the buyer whether their event integration is working well enough for optimization. + +| Field | Type | Description | +|-------|------|-------------| +| `status` | string | AdCP-standardized health level: `insufficient`, `minimum`, `good`, `excellent`. Use this for cross-seller decisions. | +| `detail` | object | Seller-specific scoring (optional). Contains `score`, `max_score`, and optional `label`. Only present when the seller has a native quality score. | +| `match_rate` | number | Fraction of events matched to ad interactions (0.0-1.0). | +| `last_event_at` | date-time | Timestamp of the most recent event received. | +| `evaluated_at` | date-time | When this health assessment was computed. Stale for sellers computing from reporting data. | +| `events_received_24h` | integer | Events received in the last 24 hours (0 = not firing). | +| `issues` | array | Actionable problems with severity (`error`, `warning`, `info`) and message. Sort by severity — don't rely on array position. | + +```json test=false +{ + "event_sources": [ + { + "event_source_id": "web_pixel", + "action": "unchanged", + "managed_by": "buyer", + "health": { + "status": "good", + "detail": { "score": 7.2, "max_score": 10, "label": "Event Match Quality" }, + "match_rate": 0.72, + "last_event_at": "2026-03-23T14:22:00Z", + "evaluated_at": "2026-03-23T14:30:00Z", + "events_received_24h": 14200, + "issues": [ + { + "severity": "warning", + "message": "Missing hashed_email parameter on 38% of purchase events. Adding this improves match rate for cross-device attribution." + } + ] + } + } + ] +} +``` + +Buyer agents should key decisions off `status`, not `detail.score`. The four-tier status is comparable across all sellers — a buyer agent writes one rule ("require `good` or better for DR products") that works everywhere. The `detail` object is for human dashboards or advanced diagnostics. + +Buyer agents can use health data to: +- Gate product selection on event quality (e.g., require `good` or better for DR products) +- Surface setup issues to the buyer before campaign launch +- Prioritize which event sources to fix first + +## Common Scenarios + +### Discovery Only + +Discover all event sources on an account (including seller-managed sources) without making changes. Useful for platform-managed conversion tracking where the seller provides always-on attribution: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncEventSources({ + account: { account_id: "acct_12345" }, +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncEventSourcesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("event_sources" in validated) { + for (const source of validated.event_sources) { + console.log(`${source.event_source_id} (${source.managed_by}): ${source.name}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_event_sources( + account={'account_id': 'acct_12345'} + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for source in result.event_sources: + print(f"{source.event_source_id} ({source.managed_by}): {source.name}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Multiple Event Sources + +Configure separate sources for website and app: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncEventSources({ + account: { account_id: "acct_12345" }, + event_sources: [ + { + event_source_id: "web_pixel", + name: "Website Pixel", + event_types: ["purchase", "lead", "add_to_cart", "view_content"], + allowed_domains: ["www.example.com"], + }, + { + event_source_id: "app_sdk", + name: "Mobile App SDK", + event_types: ["purchase", "app_install", "app_launch"], + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncEventSourcesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("event_sources" in validated) { + for (const source of validated.event_sources) { + console.log(`${source.event_source_id} (${source.managed_by}): ${source.action}`); + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_event_sources( + account={'account_id': 'acct_12345'}, + event_sources=[ + { + 'event_source_id': 'web_pixel', + 'name': 'Website Pixel', + 'event_types': ['purchase', 'lead', 'add_to_cart', 'view_content'], + 'allowed_domains': ['www.example.com'] + }, + { + 'event_source_id': 'app_sdk', + 'name': 'Mobile App SDK', + 'event_types': ['purchase', 'app_install', 'app_launch'] + } + ] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for source in result.event_sources: + print(f"{source.event_source_id} ({source.managed_by}): {source.action}") + +asyncio.run(main()) +``` + +</CodeGroup> + +### Discovering Seller-Managed Sources + +Sellers may provide always-on event sources (e.g. Amazon sales attribution). These appear in the response with `managed_by: "seller"` alongside your buyer-managed sources: + +```json test=false +{ + "event_sources": [ + { + "event_source_id": "web_pixel", + "name": "Website Pixel", + "seller_id": "px_abc123", + "action": "created", + "managed_by": "buyer", + "setup": { + "snippet": "<script src=\"https://seller.example/pixel/px_abc123.js\"></script>", + "snippet_type": "javascript", + "instructions": "Place this tag in the <head> of all pages where you want to track events." + } + }, + { + "event_source_id": "seller_sales_attribution", + "name": "Sales Attribution", + "seller_id": "internal_attr", + "action": "unchanged", + "managed_by": "seller", + "action_source": "in_store" + } + ] +} +``` + +Products with `conversion_tracking.platform_managed: true` indicate the seller provides these sources. + +### Creator and Owned-Property Sources + +Seller-managed creator or owned-property sources use the same `event_sources` array, with a flat `action_source` for compatibility and `surface` for structured context: + +```json test=false +{ + "event_sources": [ + { + "event_source_id": "creator_channel", + "name": "Creator Channel Events", + "seller_id": "creator_attr_001", + "event_types": ["follow", "content_view", "watch_milestone"], + "action_source": "system_generated", + "surface": { + "category": "owned_property", + "property_type": "channel", + "namespace": "video_platform", + "property_id": "channel_123" + }, + "managed_by": "seller", + "action": "unchanged", + "ext": { + "video_platform": { + "native_origin": "owned_channel" + } + } + } + ] +} +``` + +Use `follow` for free durable opt-ins to a channel, profile, feed, list, or podcast. Use `subscribe` only for paid subscriptions or paid memberships. + +### Clean Sync with delete_missing + +Replace all buyer-managed event sources on the account: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/sdk/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/sdk"; + +const result = await testAgent.syncEventSources({ + account: { account_id: "acct_12345" }, + delete_missing: true, + event_sources: [ + { + event_source_id: "unified_pixel", + name: "Unified Tracking Pixel", + }, + ], +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = SyncEventSourcesResponseSchema.parse(result.data); + +if ("errors" in validated && validated.errors) { + throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`); +} + +if ("event_sources" in validated) { + for (const source of validated.event_sources) { + if (source.action === "deleted") { + console.log(`Removed: ${source.event_source_id}`); + } else { + console.log(`Active: ${source.event_source_id} (${source.action})`); + } + } +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_event_sources( + account={'account_id': 'acct_12345'}, + delete_missing=True, + event_sources=[{ + 'event_source_id': 'unified_pixel', + 'name': 'Unified Tracking Pixel' + }] + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Operation failed: {result.errors}") + + for source in result.event_sources: + if source.action == 'deleted': + print(f"Removed: {source.event_source_id}") + else: + print(f"Active: {source.event_source_id} ({source.action})") + +asyncio.run(main()) +``` + +</CodeGroup> + +## Setup Instructions + +The response includes setup details for each event source. The `setup` object tells you how to activate the source: + +| `snippet_type` | Description | Action Required | +|-----------------|-------------|-----------------| +| `javascript` | JavaScript tag for website pages | Place in `<head>` of tracked pages | +| `html` | HTML pixel/iframe | Place before `</body>` | +| `pixel_url` | URL that fires on events | Send GET request on each event | +| `server_only` | No client-side tag needed | Use [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) API directly | + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`ACCOUNT_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-not-found) | Account does not exist | Verify `account_id` from account setup | +| [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) | An event type is not included in the seller's `supported_event_types` | Choose a supported event type or another seller | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | An `event_source_id` is duplicated in the request | Use unique source IDs | +| [`RATE_LIMITED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-rate-limited) | Too many sync requests | Wait and retry with exponential backoff | + +## Best Practices + +1. **Sync before logging** - Always configure event sources before sending events via [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event). Events sent to unconfigured sources will be rejected. + +2. **Use descriptive IDs** - Choose `event_source_id` values that are meaningful (e.g. `web_pixel`, `app_sdk`, `crm_import`) rather than opaque identifiers. + +3. **Specify event_types** - Restrict each source to relevant event types for better validation and debugging. + +4. **Check seller capabilities** - Use [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) to discover supported event types, UID types, and action sources before configuring event sources. + +5. **Install setup snippets** - When the response includes `setup` instructions, install the provided snippet before logging events. Server-only sources (`snippet_type: "server_only"`) skip this step. + +6. **Handle seller-managed sources** - The response may include sources with `managed_by: "seller"` that you didn't configure. These are always-on and provide additional attribution data. + +## Next Steps + +- [Conversion Tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/) - Data model, optimization goals, and the end-to-end flow +- [log_event](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) - Send marketing events to configured event sources +- [create_media_buy](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization) - Set optimization goals on packages referencing event sources +- [get_media_buy_delivery](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) - Monitor conversion metrics in delivery reports diff --git a/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy.mdx b/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy.mdx new file mode 100644 index 0000000000..30a2705fee --- /dev/null +++ b/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy.mdx @@ -0,0 +1,1046 @@ +--- +title: update_media_buy +description: "update_media_buy task — modify active AdCP campaigns with PATCH semantics. Update budgets, flight dates, targeting, status, and package-level settings." +"og:title": "AdCP — update_media_buy" +testable: true +--- + + +Modify an existing media buy using PATCH semantics. Supports campaign-level and package-level updates. + +<Warning> +`update_media_buy` is the AdCP 3.x compatibility facade as of 3.2. New integrations use [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) for operational controls and [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) for commercial amendments or negotiated cancellation. Existing payloads remain supported throughout 3.x. +</Warning> + +**Response Time**: Instant to days (status: `completed`, `working` < 120s, or `submitted` for manual review) + +## Scope + +`update_media_buy` operates on any `media_buy_id` returned by [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys), not just buys created via [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). Sales agents MUST NOT refuse updates on the basis that a buy was originally created outside AdCP (direct ad-server entry, legacy APIs, manual trafficking). Creation surface is not a supported axis of authorization; account ownership is. + +When a specific action is unsupported for a given buy for business reasons (contractual obligations, platform constraints, policy), the seller MUST omit only that action from `valid_actions` (and the corresponding entry from `available_actions[]`) on the buy rather than silently rejecting the corresponding update. **Creation surface is not a business reason.** Sellers MUST NOT return [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state) on an otherwise-valid update against a non-AdCP-created buy, and MUST NOT return a buy with systematically empty `valid_actions` simply because it was booked outside AdCP — that pattern is indistinguishable from hiding the buy and violates the [Account Ownership vs. Creation Surface](/dist/docs/3.2.0-beta.4/media-buy/specification#account-ownership-vs-creation-surface) rule. + +## Compatibility transaction boundary + +One `update_media_buy` request is one atomic mutation. The seller validates the +complete post-update state before applying any field. Invalid inline creative +bodies or creative assignments therefore fail the entire request, including +otherwise-valid budget, targeting, catalog, pause, and billing changes in the +same payload. No package, assignment, library creative, or MediaBuy field from +the rejected update may change. + +Creative review occurs after that request-time boundary. A valid inline +creative can enter review as part of a successful update. If policy review later +rejects it, the rejection changes creative or package-approval state and may +prevent a pending buy from activating or impair an active buy; it does not +reverse the successful update or restore the prior commercial and operational +fields. + +This facade is required when targeting and assignments must change together. +For example, narrowing `placement_selection` while removing or rerouting +assignments that reference the removed placements is one atomic package update. +[`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) does not accept assignments, so a control followed by +[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) is a non-atomic saga and cannot substitute for this shape. + +The same limitation applies to any compatibility request that mixes commercial +amendment, operational control, and creative mutation. Compact proposal +acceptance, `control_media_buy`, and `sync_creatives` each have their own +idempotency, authorization, async-task, and failure boundary. One can succeed +while the next fails. Adapters MUST either execute the facade atomically or +surface the incompatibility; they MUST NOT silently split the request and claim +equivalent atomicity. + +`invoice_recipient` is a concrete example with no lossless public compact +mapping: [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals) has no typed billing-entity refinement, and its +free-text `ask` cannot carry or authorize a structured `BusinessEntity`. +Sellers therefore need a private typed atomic amendment behind this facade or +must reject the field before mutation. + +## Action vocabulary and field mapping + +Buyers express intent through actions; the seller declares the actions available on each buy via the structured `available_actions[]` field (authoritative) and the flat `valid_actions[]` field (legacy, deprecated in 4.0). When both fields are present, consumers MUST prefer `available_actions[]` — it carries the resolved `mode`, optional `sla`, and optional `terms_ref` that the flat string array cannot represent. When a buyer issues an `update_media_buy` request, the seller maps the request's fields to one or more actions and rejects with [`ACTION_NOT_ALLOWED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-action-not-allowed) (carrying `attempted_action`, `reason`, and `currently_available_actions` in `error.details`) if any mapped action is not in the buy's resolved `available_actions[]`. + +The mapping is normative — sellers and SDKs MUST use this table to translate between request fields and action identifiers so the surface is consistent across implementations. + +| Action | update_media_buy fields | Notes | +|--------|-------------------------|-------| +| `pause` | `paused: true` | | +| `resume` | `paused: false` | | +| `cancel` | `canceled: true`, `cancellation_reason` | Irreversible | +| `update_name` | `name` | Display metadata only; does not amend accepted commercial terms | +| `extend_flight` | `end_time`, `packages[].end_time` (later than current) | End-time push only | +| `shorten_flight` | `end_time`, `packages[].end_time` (earlier than current) | End-time pull only | +| `update_flight_dates` | `start_time`, `end_time`, `packages[].start_time`, `packages[].end_time` (shift) | Start-shift distinct from extend/shorten; covers both buy-level and package-level dates | +| `increase_budget` | `total_budget`, `packages[].budget`, `daily_budget_cap`, `packages[].daily_budget_cap` (raise or `null`) | A `null` cap removes a ceiling and therefore relaxes, rather than lowers, the budget constraint. | +| `decrease_budget` | `total_budget`, `packages[].budget`, `daily_budget_cap`, `packages[].daily_budget_cap` (set or lower) | Daily-cap reductions apply immediately but cannot reverse spend already incurred in the current cap day. | +| `reallocate_budget` | `packages[].budget` (redistribute, aggregate unchanged) | | +| `update_budget_allocation` | `budget_allocation`, `packages[].min_spend_target` | Changes fixed/shared mode, cross-package goals, or soft minimum targets, including `null` to clear a target. Automatic allocation inside an accepted seller-optimized buy is not an update action. | +| `update_targeting` | `packages[].targeting_overlay`, `packages[].keyword_targets_add`, `packages[].keyword_targets_remove`, `packages[].negative_keywords_add`, `packages[].negative_keywords_remove` | Includes audience, geography, property, collection, and `placement_selection` changes. | +| `update_pacing` | `pacing`, `packages[].pacing`, `budget_cap_timezone` | Media-buy pacing controls aggregate spend; package pacing is subordinate. A cap-timezone change begins at the next existing day boundary. | +| `update_bidding` | `bidding`, `packages[].bidding` | Replaces or clears complete authored bidding blocks. The seller validates every resulting effective package policy before mutation. | +| `update_frequency_caps` | `packages[].targeting_overlay.frequency_cap` | Renegotiated mid-flight more often than other targeting. Field is singular `frequency_cap` (single rule), not plural. | +| `replace_creative` | `packages[].creatives[]` swap (assignments unchanged) | Distinct AM workflow from changing assignment set | +| `update_creative_assignments` | `packages[].creative_assignments` | Which creatives go where | +| `remove_creative` | Creative omitted from `packages[].creatives[]` and/or `packages[].creative_assignments` on a replacement payload | Both arrays use replacement semantics, so removal is expressed by sending the desired post-state with the creative absent (no explicit delete primitive in 3.x). Time-sensitive; sellers SHOULD support self_serve removal even when add/swap require approval | +| `add_packages` | `new_packages[]` | | +| `remove_packages` | `packages[].canceled: true` | | + +The direction-of-change actions (`extend_flight` / `shorten_flight`, `increase_budget` / `decrease_budget` / `reallocate_budget`) share their `update_fields` paths; the action is determined by comparing the requested value against the buy's current state, not by which field is set. Server-side dispatch enforcement MUST diff request-vs-current to pick the right action and reject with `ACTION_NOT_ALLOWED` if the resolved action is not in the buy's `available_actions[]`. + +For seller-optimized constraints, clearing `packages[].budget` or either scope's `daily_budget_cap` with `null` resolves to `increase_budget` because it removes a hard ceiling. Clearing `packages[].min_spend_target` resolves to `update_budget_allocation`. A request clearing both requires both actions when the seller enforces field-level actions conjunctively. Sellers that do not advertise the required action reject the update without mutation; `seller_optimized_budget: true` alone does not promise mid-flight constraint changes. + +The coarse legacy actions (`update_budget`, `update_dates`, `update_packages`, [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives)) cover the finer-grained vocabulary in a single value for sellers still emitting the 3.0 enum surface. Sellers SHOULD migrate to the finer set; the legacy values are removed in 4.0. + +### Action modes + +Each entry in `available_actions[]` carries a singular `mode` (resolved against the buy's current state). On the product-level `allowed_actions[]` template the field is `modes[]` (plural) because a product can offer multiple conditional modes (e.g. `self_serve` within tolerances, escalating to `requires_approval` outside). + +| Mode | Meaning | +|------|---------| +| `self_serve` | Seller honors the request synchronously | +| `conditional_self_serve` | Auto-approves within tolerances, escalates outside them (programmatic guaranteed pattern) | +| `requires_approval` | Human-in-the-loop, async, no proposal artifact; buyer SDK polls or awaits webhook | + +Buyer SDKs MUST branch on `mode` to decide whether to expect a synchronous response, conditional handling, or an asynchronous approval callback. Requotes are not modeled as an action mode in 3.1; sellers return [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required) when a requested update exceeds the current quoted envelope. + +**PATCH Semantics**: Only specified fields are updated; omitted fields remain unchanged. + +**Request Schema**: [`/schemas/3.2.0-beta.4/media-buy/update-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/update-media-buy-response.json) + +## Quick Start + +Create a media buy, then pause it: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/sdk/testing'; +import { CreateMediaBuyResponseSchema, UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +// First, create a media buy to update +const uniqueRef = `test_campaign_${Date.now()}`; + +// Use dates in the future +const startDate = new Date(); +startDate.setDate(startDate.getDate() + 7); // Start 1 week from now +const endDate = new Date(); +endDate.setDate(endDate.getDate() + 37); // End 5 weeks from now + +const createResult = await testAgent.createMediaBuy({ + brand: { domain: 'acmecorp.com' }, + packages: [{ + product_id: 'prod_d979b543', + pricing_option_id: 'cpm_usd_fixed', + format_option_refs: [{ scope: 'product', format_option_id: 'display_300x250_image' }], + budget: 800, + bidding: { bid_amount: 5.00 } + }], + start_time: startDate.toISOString(), + end_time: endDate.toISOString() +}); + +if (!createResult.success) { + throw new Error(`Create failed: ${createResult.error}`); +} + +const created = CreateMediaBuyResponseSchema.parse(createResult.data); +if ('errors' in created && created.errors) { + throw new Error(`Create failed: ${JSON.stringify(created.errors)}`); +} + +console.log(`Created media buy ${created.media_buy_id}`); + +// Now update it - pause the campaign +const updateResult = await testAgent.updateMediaBuy({ + account: { brand: { domain: 'acmecorp.com' }, operator: 'acmecorp.com' }, + media_buy_id: created.media_buy_id, + revision: created.revision, + paused: true +}); + +if (!updateResult.success) { + throw new Error(`Update failed: ${updateResult.error}`); +} + +const updated = UpdateMediaBuyResponseSchema.parse(updateResult.data); +if ('errors' in updated && updated.errors) { + throw new Error(`Update failed: ${JSON.stringify(updated.errors)}`); +} + +console.log(`Campaign ${updated.media_buy_id} paused`); +``` + +```python Python test=false +import asyncio +import time +from datetime import datetime, timedelta +from adcp.testing import test_agent + +async def create_and_pause_campaign(): + # First, create a media buy to update + unique_ref = f"test_campaign_{int(time.time() * 1000)}" + + # Use dates in the future + start_date = datetime.utcnow() + timedelta(days=7) + end_date = datetime.utcnow() + timedelta(days=37) + + create_result = await test_agent.simple.create_media_buy( + brand={'domain': 'acmecorp.com'}, + packages=[{ + 'product_id': 'prod_d979b543', + 'pricing_option_id': 'cpm_usd_fixed', + 'format_kind': 'image', + 'params': {'width': 300, 'height': 250}, + 'budget': 800, + 'bidding': {'bid_amount': 5.00} + }], + start_time=start_date.strftime('%Y-%m-%dT%H:%M:%SZ'), + end_time=end_date.strftime('%Y-%m-%dT%H:%M:%SZ') + ) + + if hasattr(create_result, 'errors') and create_result.errors: + raise Exception(f"Create failed: {create_result.errors}") + + print(f"Created media buy {create_result.media_buy_id}") + + # Now update it - pause the campaign + update_result = await test_agent.simple.update_media_buy( + account={'brand': {'domain': 'acmecorp.com'}, 'operator': 'acmecorp.com'}, + media_buy_id=create_result.media_buy_id, + revision=create_result.revision, + paused=True + ) + + if hasattr(update_result, 'errors') and update_result.errors: + raise Exception(f"Update failed: {update_result.errors}") + + print(f"Campaign {update_result.media_buy_id} paused") + +asyncio.run(create_and_pause_campaign()) +``` + +</CodeGroup> + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | Yes | Account that owns this media buy. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }`. Required for governance checks and account resolution. | +| `media_buy_id` | string | Yes | Seller's media buy identifier to update | +| `name` | string | No | Replacement human-readable label for trafficking UI display and buyer-seller communication (maximum 255 characters). A seller that cannot update it mid-flight SHOULD return the prior unchanged value rather than silently dropping the field. | +| `revision` | integer | No | Expected current revision for optimistic concurrency. Seller rejects with [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) on mismatch. Obtain from [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) or the most recent response. | +| `start_time` | string | No | Updated campaign start time | +| `end_time` | string | No | Updated campaign end time | +| `paused` | boolean | No | Pause/resume entire media buy (`true` = paused, `false` = active) | +| `canceled` | boolean | No | Cancel the entire media buy (irreversible). Must be `true` when present. Seller may reject with [`NOT_CANCELLABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-not-cancellable). | +| `cancellation_reason` | string | No | Reason for cancellation | +| `packages` | PackageUpdate[] | No | Package-level updates (see below) | +| `reporting_webhook` | object | No | Update reporting webhook configuration (see below) | +| `idempotency_key` | string | No | Unique key for safe retries. If an update with the same key has already been processed, the seller returns the original response. MUST be unique per (seller, request) pair. Min 16 chars. | +| `invoice_recipient` | [BusinessEntity](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#billing-entity-and-invoice-recipient) | No | Override who receives the invoice for this buy. The seller MUST validate authorization and include in [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) when governance agents are configured. | +| `new_packages` | PackageRequest[] | No | New packages to add to this media buy. Same shape as [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) packages. When `budget_allocation` is omitted or fixed, each new package requires `budget` and cannot use `min_spend_target`. To add an uncapped package to an existing seller-optimized buy, include the resulting seller-optimized `budget_allocation` block so the allocation context is explicit. Only supported by sellers that advertise `add_packages` in `valid_actions`. | +| `total_budget` | TotalBudget | No | Updated hard aggregate lifetime budget. When supplied alone, in fixed mode the seller atomically scales active package budgets proportionally; when supplied with `packages` or `new_packages`, `total_budget.amount` must equal the resulting package sum (assertion path). In seller-optimized mode, updates the shared pool without treating package caps as allocations. Already-spent amounts continue to count against the new total. `currency` must equal the existing media-buy currency. | +| `daily_budget_cap` | number \| null | No | Replace the hard aggregate daily cap; `null` removes it. Numeric changes apply immediately with spend already incurred in the current cap day counted against the new value. Package caps are not redistributed. | +| `budget_cap_timezone` | string \| null | No | Replace the shared IANA cap-day timezone override; `null` restores the default selected by `budget_capping.timezone_basis` (`Account.timezone` or `fixed_timezone`). The new timezone begins at the next boundary under the previously effective timezone. | +| `budget_allocation` | BudgetAllocation | No | Updated fixed or seller-optimized allocation configuration. Mode changes require `update_budget_allocation` in `available_actions`. | +| `pacing` | string | No | Updated aggregate media-buy pacing strategy. | +| `bidding` | BiddingPolicy \| null | No | Replace the complete media-buy bidding default, use `{automatic: true}` for an explicit automatic policy, or clear it with `null`. Goal binding follows the resulting allocation mode; monetary amounts remain in the media-buy currency. Package-authored overrides remain explicit. | +| `push_notification_config` | object | No | Webhook for async operation notifications | + +`account` and `media_buy_id` are always required. + +### Atomic total-budget updates + +`total_budget` supports two code paths depending on whether explicit package mutations are also present in the same request. + +**Redistribution path** (`packages` and `new_packages` absent): the seller invokes proportional redistribution as described below. + +**Assertion path** (`packages` or `new_packages` present): the seller applies the explicit package mutations and requires `total_budget.amount` to equal the resulting fixed-mode package sum. If the total is inconsistent, the seller MUST return [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) and apply no changes. + +For the redistribution path on a fixed-allocation buy, sellers MUST derive each active package's new budget from its share of the current active-package budget total. All derived budgets are accepted or rejected as one mutation. If the active total is zero, a package lacks a usable committed budget, or any package cannot accept its derived amount, the seller rejects the whole update. Sellers MUST preserve the requested aggregate exactly, assigning any representation-level rounding remainder deterministically to the final active package. Canceled packages are not redistributed and remain unchanged. + +For a seller-optimized buy, `total_budget` updates the shared hard pool. Package `budget` values remain optional caps rather than allocations and are not rescaled. In either mode, a supplied stale `revision`, currency mismatch, or exact idempotency replay follows the normal whole-request rules. + +On fixed-mode success, `affected_packages` MUST contain the full post-update state of every rescaled active package so the buyer can audit the resulting allocation without a second read. + +### Optimistic concurrency + +`revision` is the expected current media-buy revision. Some implementations call this value `expected_revision` internally; on the AdCP wire the field is `revision`. The field is optional for backward compatibility. When it is present, sellers MUST check it atomically with the write that applies a mutating update; reading the current value in application code, comparing it, then writing later can race another writer and lose an update. If the stored revision differs from the request's `revision`, the seller rejects with `CONFLICT` and applies no changes. + +Every mutating update increments `revision` and returns the new value in the success response. Validation-only requests, reads, and exact idempotency replays do not increment it; exact replays return the prior revision. Clients SHOULD pass the latest observed revision on every update intended to change state, then reload with `get_media_buys` and retry with a fresh `idempotency_key` when they receive `CONFLICT`. + +Creative and assignment mutations made through this facade are part of the +MediaBuy transaction and increment `revision`. The standalone +[`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) task does not increment MediaBuy revision and does not share +this optimistic-concurrency fence. An unchanged revision therefore cannot prove +that assignment state is unchanged. A client that mixes the two surfaces must +re-read current assignments before sending a complete replacement. + +### Accepted-proposal coherence + +For a MediaBuy that exposes `accepted_proposal`, a successful compatibility +update that changes the accepted commercial envelope MUST create an accepted +successor snapshot and atomically advance `accepted_proposal_id`, +`accepted_proposal_terms_digest`, and `accepted_proposal` with the MediaBuy +revision. The successor points to the prior accepted proposal and records the +pre-update revision as its base. A later compact amendment then starts from the +terms actually in force rather than a stale pre-update snapshot. + +Operational changes that remain inside the accepted envelope and creative-only +changes do not create a commercial successor. If the seller cannot commit the +commercial update and successor snapshot together, it rejects the facade +request without mutation. + +### Cancellation precedence + +Root `canceled: true` cancels the entire MediaBuy and takes precedence over +`packages[].canceled` and every other field in the same compatibility request. +The seller applies only root cancellation and `cancellation_reason`, releases +all package assignments, ignores the other fields, and SHOULD return a +structured warning naming what was ignored. Package cancellation is evaluated +independently only when root `canceled` is absent. This precedence rule is +specific to the compatibility facade; compact [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) makes root +cancellation mutually exclusive with package and other controls. + +Within one package entry, `canceled: true` takes precedence over that package's +sibling fields. The seller applies only package cancellation and its reason and +SHOULD warn about the ignored sibling fields. Root changes and other package +entries still participate in the same atomic update unless root cancellation +is present. + +### Reporting Webhook Object + +Configure automated delivery reporting for this media buy: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `url` | string | Yes | Webhook endpoint URL | +| `authentication` | object | Yes | Auth config with `schemes` and `credentials` | +| `reporting_frequency` | string | Yes | `hourly`, `daily`, `weekly`, `monthly`, `quarterly`, or `post_campaign` | +| `requested_metrics` | string[] | No | Specific metrics to include (defaults to all) | +| `token` | string | No | Client token for validation (min 16 chars) | + +**Note**: `reporting_webhook` configures ongoing campaign reporting. `push_notification_config` is for async operation notifications (e.g., "notify me when this update completes"). + +### Package Update Object + +| Parameter | Type | Description | +|-----------|------|-------------| +| `package_id` | string | Seller's package identifier to update | +| `paused` | boolean | Pause/resume specific package (`true` = paused, `false` = active) | +| `canceled` | boolean | Cancel this package (irreversible). Must be `true` when present. Seller may reject with `NOT_CANCELLABLE`. | +| `cancellation_reason` | string | Reason for canceling this package | +| `budget` | number \| null | Updated hard package spend cap in the media-buy currency. In seller-optimized mode this is not a current allocation; `null` removes the cap. A resulting fixed allocation still requires a budget on every package. | +| `min_spend_target` | number \| null | Updated soft package minimum-spend target in the media-buy currency for seller-optimized allocation; `null` removes the target. | +| `impressions` | number | Updated impression goal for this package | +| `start_time` | string | Updated flight start date/time in ISO 8601 format. Must fall within the media buy's date range. | +| `end_time` | string | Updated flight end date/time in ISO 8601 format. Must fall within the media buy's date range. | +| `pacing` | string | Updated pacing strategy | +| `daily_budget_cap` | number \| null | Replace the hard package-level daily spend ceiling; `null` removes it. The change applies immediately to the current cap day and counts spend already incurred that day. Package caps remain subordinate to the aggregate media-buy cap. | +| `bidding` | BiddingPolicy \| null | Replace the complete package-authored override, use `{automatic: true}` to explicitly disable inherited buyer controls, or clear it with `null` so the package inherits media-buy bidding. During legacy migration, `null` may accompany `bid_price` or a monetary optimization-goal target; only a non-null canonical block conflicts with those representations. | +| `bid_price` | number | **Deprecated in 3.2.** Legacy package bid representation; cannot be combined with a non-null `bidding` object. | +| `optimization_goals` | OptimizationGoal[] | Replace objective functions for this package. Currency-bearing policy belongs in `bidding`; legacy monetary targets cannot be combined with canonical bidding. | +| `targeting_overlay` | TargetingOverlay | Complete replacement for the package's effective targeting, including values originally accepted through configured-product selection. Omit the field to leave targeting unchanged; omitting a field inside the replacement removes that constraint. Placement, property, and collection selection use the same replacement contract as audience and geography. Changing priced signal selection or broader targeting may require [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required). A demographic change is compiled against the product's current `demographic_targeting` declaration and refreshes `targeting_resolution.demographics` atomically; unsupported or inexact changes are rejected rather than broadened. If placement selection removes a placement used by an assignment, the same atomic update must provide a compatible complete `creative_assignments` replacement or the seller rejects it. | +| `catalogs` | Catalog[] | Replace the catalogs this package promotes. Uses replacement semantics — omit to leave unchanged. | +| `keyword_targets_add` | KeywordTarget[] | Keyword targets to add or upsert by (keyword, match_type) identity. On create, these are set as `keyword_targets` inside `targeting_overlay`. | +| `keyword_targets_remove` | KeywordTarget[] | Keyword targets to remove by (keyword, match_type) identity. | +| `negative_keywords_add` | NegativeKeyword[] | Negative keywords to append to this package. On create, these are set as `negative_keywords` inside `targeting_overlay`. | +| `negative_keywords_remove` | NegativeKeyword[] | Negative keywords to remove from this package. | +| `creative_assignments` | CreativeAssignment[] | Replace assigned library creatives with optional weights and placement routing. When placement selection narrows in the same update, remove or reroute every reference that would be orphaned. | +| `creatives` | CreativeAsset[] | Replace assigned inline creative bodies for this package. Requires `media_buy.features.inline_creative_management: true`; when the seller also advertises `creative.has_creative_library: true`, new `creative_id` values must not already exist in the library. | + +`package_id` is required to identify the package to update. + +Sellers validate targeting and creative-assignment replacements atomically. +They must never silently delete an assignment or retain an assignment reference +to a placement removed from the package's purchased set. + +For budget/pacing interaction and bidding inheritance, see [Budget & Pacing Controls](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#budget--pacing-controls) and [BiddingPolicy Object](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy#biddingpolicy-object) on the `create_media_buy` reference. + +## Response + +### Success Response + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Media buy identifier | +| `name` | Persisted human-readable label after the update. When the request supplied `name`, the seller MUST return the stored value (updated or prior unchanged value). | +| `media_buy_status` | Media buy lifecycle status after the update (present when status changes, e.g., cancellation). See [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status). | +| `revision` | Revision number after this update. Use in subsequent requests intended to change state for optimistic concurrency. Exact idempotency replays return the prior revision. | +| `implementation_date` | ISO 8601 timestamp when changes take effect (null if pending approval) | +| `invoice_recipient` | Updated invoice recipient, echoed from request when provided. Confirms the seller accepted the billing override. Bank details are omitted (write-only). | +| `valid_actions` | Flat-vocabulary actions the buyer can perform after this update. Saves a round-trip to [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). Deprecated in favor of `available_actions[]` and removed in 4.0. | +| `available_actions` | Structured per-buy resolution of actions available after this update, each entry with action, resolved `mode`, optional `sla`, optional `terms_ref`. Authoritative — buyer SDKs SHOULD prefer this over `valid_actions` when both are present. | +| `affected_packages` | Full Package objects for every modified package, including every active package rescaled by a fixed-mode `total_budget` update. This is a state snapshot, not a sparse delta: sellers MUST NOT return `{ package_id }`-only stubs. Campaign-level updates that do not modify packages may return an empty array. | +| `warnings` | Structured non-blocking observations. The update was still applied. Continuing conditions appear on the next `get_media_buys` snapshot. | + +### Error Response + +| Field | Description | +|-------|-------------| +| `errors` | Array of error objects explaining failure | + +**Note**: Responses use discriminated unions. Terminal errors never carry `warnings`; warnings occur only on successful updates. See [Indicators and Warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators). + +## Common Scenarios + +### Update Package Budget + +Increase budget for a specific package: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.updateMediaBuy({ + account: { account_id: 'acc_acme_001' }, + media_buy_id: 'mb_12345', + packages: [{ + package_id: 'pkg_001', + budget: 50000 // Increased from 30000 + }] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = UpdateMediaBuyResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +const pkg = validated.affected_packages?.find(p => p.package_id === 'pkg_001'); +if (pkg) { + console.log(`Package budget updated to ${pkg.budget}`); +} +``` + +```python test=false Python +import asyncio +from adcp.testing import test_agent +from adcp.types import UpdateMediaBuyRequest + +async def increase_budget(): + result = await test_agent.update_media_buy( + UpdateMediaBuyRequest( + account={'account_id': 'acc_acme_001'}, + media_buy_id='mb_12345', + packages=[ + {'package_id': 'pkg_001', 'budget': 50000} + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + pkg = next((p for p in result.affected_packages if p.package_id == 'pkg_001'), None) + if pkg: + print(f"Package budget updated to {pkg.budget}") + +asyncio.run(increase_budget()) +``` + +</CodeGroup> + +### Change Campaign Dates + +Extend campaign end date: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.updateMediaBuy({ + account: { account_id: 'acc_acme_001' }, + media_buy_id: 'mb_12345', + end_time: '2025-09-30T23:59:59Z' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = UpdateMediaBuyResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +console.log('Campaign end date extended'); +console.log(`Effective: ${validated.implementation_date}`); +``` + +```python test=false Python +import asyncio +from adcp.testing import test_agent +from adcp.types import UpdateMediaBuyRequest + +async def extend_campaign(): + result = await test_agent.update_media_buy( + UpdateMediaBuyRequest( + account={'account_id': 'acc_acme_001'}, + media_buy_id='mb_12345', + end_time='2025-09-30T23:59:59Z' + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + print('Campaign end date extended') + print(f"Effective: {result.implementation_date}") + +asyncio.run(extend_campaign()) +``` + +</CodeGroup> + +### Update Targeting + +Add or modify geographic restrictions: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.updateMediaBuy({ + account: { account_id: 'acc_acme_001' }, + media_buy_id: 'mb_12345', + packages: [{ + package_id: 'pkg_001', + targeting_overlay: { + geo_countries: ['US', 'CA'], + geo_regions: ['US-CA', 'US-NY', 'US-TX', 'CA-ON', 'CA-QC'] + } + }] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = UpdateMediaBuyResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +console.log('Targeting updated successfully'); +``` + +```python test=false Python +import asyncio +from adcp.testing import test_agent +from adcp.types import UpdateMediaBuyRequest + +async def update_targeting(): + result = await test_agent.update_media_buy( + UpdateMediaBuyRequest( + account={'account_id': 'acc_acme_001'}, + media_buy_id='mb_12345', + packages=[ + { + 'package_id': 'pkg_001', + 'targeting_overlay': { + 'geo_countries': ['US', 'CA'], + 'geo_regions': ['US-CA', 'US-NY', 'US-TX', 'CA-ON', 'CA-QC'] + } + } + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + print('Targeting updated successfully') + +asyncio.run(update_targeting()) +``` + +</CodeGroup> + +### Replace Creatives + +Swap out creative assignments for a package: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.updateMediaBuy({ + account: { account_id: 'acc_acme_001' }, + media_buy_id: 'mb_12345', + packages: [{ + package_id: 'pkg_001', + creative_assignments: [ + { creative_id: 'creative_video_v2' }, + { creative_id: 'creative_display_v2', weight: 60 } + ] + }] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = UpdateMediaBuyResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +const pkg = validated.affected_packages?.find(p => p.package_id === 'pkg_001'); +const assignmentCount = pkg?.creative_assignments?.length || 0; +console.log(`Assigned ${assignmentCount} creatives`); +``` + +```python test=false Python +import asyncio +from adcp.testing import test_agent +from adcp.types import UpdateMediaBuyRequest + +async def replace_creatives(): + result = await test_agent.update_media_buy( + UpdateMediaBuyRequest( + account={'account_id': 'acc_acme_001'}, + media_buy_id='mb_12345', + packages=[ + { + 'package_id': 'pkg_001', + 'creative_assignments': [ + {'creative_id': 'creative_video_v2'}, + {'creative_id': 'creative_display_v2', 'weight': 60} + ] + } + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + pkg = next((p for p in result.affected_packages if p.package_id == 'pkg_001'), None) + assignment_count = len(pkg.creative_assignments) if pkg and pkg.creative_assignments else 0 + print(f"Assigned {assignment_count} creatives") + +asyncio.run(replace_creatives()) +``` + +</CodeGroup> + +### Multiple Package Updates + +Update multiple packages in one call: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/sdk/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/sdk'; + +const result = await testAgent.updateMediaBuy({ + account: { account_id: 'acc_acme_001' }, + media_buy_id: 'mb_12345', + packages: [ + { + package_id: 'pkg_001', + budget: 50000, + pacing: 'front_loaded' + }, + { + package_id: 'pkg_002', + budget: 30000, + paused: true + } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = UpdateMediaBuyResponseSchema.parse(result.data); + +if ('errors' in validated && validated.errors) { + throw new Error(`Update failed: ${JSON.stringify(validated.errors)}`); +} + +console.log(`Updated ${validated.affected_packages?.length || 0} packages`); +``` + +```python test=false Python +import asyncio +from adcp.testing import test_agent +from adcp.types import UpdateMediaBuyRequest + +async def update_multiple_packages(): + result = await test_agent.update_media_buy( + UpdateMediaBuyRequest( + account={'account_id': 'acc_acme_001'}, + media_buy_id='mb_12345', + packages=[ + { + 'package_id': 'pkg_001', + 'budget': 50000, + 'pacing': 'front_loaded' + }, + { + 'package_id': 'pkg_002', + 'budget': 30000, + 'paused': True + } + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Update failed: {result.errors}") + + print(f"Updated {len(result.affected_packages)} packages") + +asyncio.run(update_multiple_packages()) +``` + +</CodeGroup> + +### Cancel a Media Buy + +Cancel an entire media buy: + +```json +{ + "account": { "account_id": "acc_acme_001" }, + "media_buy_id": "mb_12345", + "canceled": true, + "cancellation_reason": "Campaign strategy changed" +} +``` + +**Success response:** +```json +{ + "media_buy_id": "mb_12345", + "media_buy_status": "canceled", + "revision": 4, + "implementation_date": "2025-06-15T10:00:00Z", + "affected_packages": [] +} +``` + +The body-level `media_buy_status` is the canonical field for the buy's lifecycle state. The AdCP 3.2 source schema no longer permits the legacy top-level `status: MediaBuyStatus` form (e.g., `"status": "canceled"`) because it collides with the envelope task-status at the same root key. That legacy lifecycle field existed only during the 3.1 deprecation window; in 3.2, root `status` is TaskStatus only. See [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status) for migration guidance. + +**[`NOT_CANCELLABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-not-cancellable) error response:** +```json +{ + "errors": [{ + "code": "NOT_CANCELLABLE", + "message": "Media buy mb_12345 has contractual obligations preventing cancellation", + "suggestion": "Contact seller to discuss cancellation options" + }] +} +``` + +**[`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state) error response** (e.g., trying to update a completed media buy): +```json +{ + "errors": [{ + "code": "INVALID_STATE", + "message": "Media buy mb_12345 is in terminal state 'completed' and cannot be modified", + "suggestion": "Check current status via get_media_buys and adjust request" + }] +} +``` + +**[`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required) error response** (update changes the parameter envelope the quote was priced against): +```json +{ + "errors": [{ + "code": "REQUOTE_REQUIRED", + "message": "Doubling budget and extending end_time into Q4 changes the pricing basis of the current buy", + "details": { + "envelope_field": ["packages[0].budget", "end_time"] + }, + "suggestion": "Adjust the update to stay within the current quote envelope, rediscover products/terms, add packages when available, or create a separate media buy" + }] +} +``` + +### Cancel a Package + +Cancel a single package while the media buy remains active: + +```json +{ + "account": { "account_id": "acc_acme_001" }, + "media_buy_id": "mb_12345", + "packages": [ + { + "package_id": "pkg_67890", + "canceled": true, + "cancellation_reason": "Underperforming — reallocating budget" + } + ] +} +``` + +## What Can Be Updated + +### Campaign-Level Updates + +✅ **Can update:** +- Start/end times (subject to seller approval) +- Campaign status (active/paused/canceled) +- Reporting webhook configuration (URL, frequency, metrics) + +❌ **Cannot update:** +- Media buy ID +- Brand reference +- Original package product IDs + +### Package-Level Updates + +✅ **Can update:** +- Budget allocation +- Pacing strategy +- Bid prices (auction products) +- Optimization goal (event source, event type, target ROAS/CPA) +- Targeting overlays +- Creative assignments +- Package status (active/paused/canceled) +- Catalog reference (replace the catalog a catalog-driven package promotes) +- Creative assignments (before the package's `creative_deadline`) + +❌ **Cannot update (schema-enforced via `not` constraint on `package-update.json`):** +- Package ID +- Product ID +- Pricing option ID +- Format selectors: `format_option_refs`, `format_kind`, and `params` (plus deprecated `format_ids` on a legacy package); creatives must match the existing package contract + +⚠️ **Append-only on update:** +- `committed_metrics` — sellers accept new entries (mid-flight metric additions, each with its own `committed_at` timestamp) but MUST reject attempts to modify or remove existing entries with `validation_error` (code `IMMUTABLE_FIELD`). Runtime enforcement; the append-only semantics aren't expressible in the schema's `not` clause. + +## Error Handling + +Common errors and resolutions: + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`MEDIA_BUY_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-media-buy-not-found) | Media buy doesn't exist | Verify `media_buy_id`; for legacy correlation use [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) + `context.internal_campaign_id` | +| [`PACKAGE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-package-not-found) | Package doesn't exist | Verify `package_id`; for legacy package correlation use `get_media_buys` + package `context.buyer_ref` | +| [`ACTION_NOT_ALLOWED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-action-not-allowed) | Field cannot be changed | See "What Can Be Updated" above | +| [`BUDGET_TOO_LOW`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-too-low) | New budget below minimum | Increase budget amount | +| [`POLICY_VIOLATION`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-policy-violation) | Update violates content policy | Review policy requirements | +| [`INVALID_STATE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-state) | Operation not allowed in current state (e.g., updating completed/canceled media buy) | Check campaign status via `get_media_buys` | +| [`NOT_CANCELLABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-not-cancellable) | Media buy or package cannot be canceled | Check seller's cancellation policy or contact seller | +| [`CREATIVE_REJECTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-rejected) | Creative failed content-policy, brand-safety, or accessibility review | Revise according to the applicable policy or validated accessibility criteria | +| [`CREATIVE_LOCALE_NOT_ACCEPTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-locale-not-accepted) | Creative has no materialized variant accepted by the package's effective format locale policy, or its serving default is ineligible | Supply a matching locale variant, assign a different creative, or change the creative's default behavior | +| [`CREATIVE_DEADLINE_EXCEEDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-creative-deadline-exceeded) | Creative change submitted past the package's `creative_deadline` | Check package `creative_deadline` before submitting creative changes | +| [`BUDGET_EXCEEDED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-exceeded) | Operation would exceed allocated budget | Reduce the amount or increase media buy total budget | +| [`CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflict) | Revision mismatch — another update was applied since you last read | Re-read via `get_media_buys` and retry with current `revision` | +| [`REQUOTE_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-requote-required) | Requested change (budget, dates, volume, targeting, or signal targeting price) falls outside the envelope the original quote was priced against | Adjust the update to fit the current quote, rediscover products/terms, add packages when `add_packages` is available, or create a separate media buy. 3.1 does not define an amendment-quote artifact for `update_media_buy`. Seller's `error.details.envelope_field` names which fields breached. | +| [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error) | Request field values, including a duplicate submitted `creative_id`, violate seller/product business rules | Follow `error.field` and `error.message`; for a duplicate inline creative, use a different package-scoped `creative_id` | + +Example error response: + +```json +{ + "errors": [{ + "code": "UNSUPPORTED_FEATURE", + "message": "Cannot change product_id for existing package", + "field": "packages[0].product_id", + "suggestion": "Create a new package with the desired product instead" + }] +} +``` + +## Update Approval + +Some updates require seller approval and return pending status: + +- **Significant budget increases** (threshold varies by seller) +- **Date range changes** affecting inventory availability +- **Targeting changes** that alter campaign scope +- **Creative changes** requiring policy review + +When approval is needed, `implementation_date` will be `null` and `affected_packages` contains the proposed full post-update state of each package that would be modified: + +```json +{ + "media_buy_id": "mb_12345", + "implementation_date": null, + "affected_packages": [ + { + "package_id": "pkg_abc123", + "product_id": "sports_display_auction", + "pricing_option_id": "cpm_auction", + "budget": 50000, + "bidding": { "bid_amount": 7.25 }, + "pacing": "even", + "creative_assignments": [ + { "creative_id": "creative_video_v2" } + ] + } + ] +} +``` + +## PATCH Semantics + +Only specified fields are updated - omitted fields remain unchanged: + +```json +{ + "account": { "account_id": "acc_acme_001" }, + "media_buy_id": "mb_12345", + "packages": [{ + "package_id": "pkg_001", + "budget": 50000 + }] +} +``` + +**Array replacement**: When updating arrays (like `creative_assignments`), provide the complete new array: + +```json +{ + "account": { "account_id": "acc_acme_001" }, + "media_buy_id": "mb_12345", + "packages": [{ + "package_id": "pkg_001", + "creative_assignments": [ + { "creative_id": "creative_video_v2" }, + { "creative_id": "creative_display_v2", "weight": 60 } + ] + }] +} +``` + +## Asynchronous Operations + +Updates may be asynchronous, especially with seller approval. + +### Response Patterns + +**Synchronous (completed immediately)** — campaign-level update (e.g., `paused: true`): +```json +{ + "media_buy_id": "mb_12345", + "implementation_date": "2025-06-15T10:00:00Z", + "affected_packages": [] +} +``` + +**Synchronous (completed immediately)** — package-level update: +```json +{ + "media_buy_id": "mb_12345", + "implementation_date": "2025-06-15T10:00:00Z", + "affected_packages": [ + { + "package_id": "pkg_abc123", + "product_id": "sports_display_auction", + "pricing_option_id": "cpm_auction", + "budget": 50000, + "bidding": { "bid_amount": 7.25 }, + "pacing": "even", + "creative_assignments": [ + { "creative_id": "creative_video_v2" } + ] + } + ] +} +``` + +**Asynchronous (processing)**: +```json +{ + "status": "working", + "message": "Processing update..." +} +``` +Poll for completion or use webhooks/streaming. + +**Manual Approval Required**: +```json +{ + "status": "submitted", + "message": "Update requires seller approval (2-4 hours)" +} +``` +Will take hours to days. + +### Protocol-Specific Handling + +AdCP tasks work across multiple protocols (MCP, A2A, REST). Each protocol handles async operations differently: + +- **Status checking**: Polling, webhooks, or streaming +- **Updates**: Protocol-specific mechanisms +- **Long-running tasks**: Different timeout and notification patterns + +See [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) for protocol-specific async patterns and examples. + +## Best Practices + +**1. Use Precise Updates** +Update only what needs to change - don't resend unchanged values. + +**2. Budget Increases** +Small incremental increases are more likely to be auto-approved than large jumps. + +**3. Pause Before Major Changes** +Pause campaigns before making significant targeting or creative changes to avoid delivery issues. + +**4. Test with Small Changes** +Test update workflows with minor changes before critical campaign modifications. + +**5. Monitor Status** +Always check response status and `implementation_date` for approval requirements. + +**6. Validate Package State** +Check `affected_packages` in response to confirm changes were applied correctly. + +## Usage Notes + +- One compatibility-facade request is atomic: either all non-ignored changes apply or none do. Root cancellation is the documented exception—it wins and other fields are ignored with a warning. Splitting the request across compact tasks is not atomic. +- Both media buys and packages can be referenced by publisher IDs +- Pending states (`working`, `submitted`) are normal, not errors +- Orchestrators MUST handle pending states as part of normal workflow +- `implementation_date` indicates when changes take effect (null if pending approval) +- **Inline creatives**: The `creatives` array replaces the package's inline creative bodies. If the seller advertises `creative.has_creative_library: true`, use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) to update existing library creatives and `creative_assignments` to assign existing library creatives. If the seller advertises `inline_creative_management: true` without a creative library, use `packages[].creatives` here for inline creative add, replace, and removal workflows. Invalid request-time bodies fail the whole update; later review rejection does not roll back a successful update. + +<Note> +**Campaign Governance — Modification Phase** + +When a buyer's account has governance agents configured, sellers MUST call [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) with `media_buy_id`, `planned_delivery`, and `phase: "modification"` before confirming an update. The governance agent validates change magnitude, budget reallocation, and new parameters against the campaign plan. + +See the [seller integration guide](/dist/docs/3.2.0-beta.4/building/operating/seller-integration#execution-checks) for the full execution check workflow and code example. +</Note> + +## Next Steps + +After updating a media buy: + +1. **Verify Changes**: Use [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) to confirm updates +2. **Supply New Creatives**: Use [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) for library-backed sellers, or `packages[].creatives` in this task for inline-only sellers +3. **Monitor Performance**: Track impact of changes on campaign metrics +4. **Optimize Further**: Use [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) for ongoing optimization + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/) - Complete campaign workflow +- [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) - Targeting overlays and restrictions +- [Async Operations](/dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations) - Async patterns and status checking +- [create_media_buy](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) - Initial campaign creation diff --git a/dist/docs/3.2.0-beta.4/protocol/architecture.mdx b/dist/docs/3.2.0-beta.4/protocol/architecture.mdx new file mode 100644 index 0000000000..16fa0bd69d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/architecture.mdx @@ -0,0 +1,122 @@ +--- +title: Protocol architecture +sidebarTitle: Architecture +"og:image": /images/concepts/protocol-domain-map.png +description: "AdCP protocol architecture: identity layer (brand, registry, accounts), transaction domains (media buy, creative, signals, sponsored intelligence), and cross-cutting governance." +"og:title": "AdCP — Protocol architecture" +--- + +# Protocol architecture + +AdCP operates at multiple layers, providing a clean separation between business roles, orchestration, and technical execution. + +## Protocol domain map + +<img src="/images/concepts/protocol-domain-map.png" alt="Three-layer architecture diagram showing identity layer (brand, registry, accounts) at top, transaction domains (media buy, creative, signals, sponsored intelligence) in the middle, and governance as a cross-cutting layer connecting to all transaction domains" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +### Identity layer + +Three protocol domains establish who the parties are before any transaction occurs. + +**Brand Protocol** defines organization identity through `brand.json` files hosted at `/.well-known/brand.json`. Buyers use it for advertiser identity and authorized operators; sellers use it for operator identity, sales-agent discovery, signing-key discovery, and property relationship declarations. Any domain can be resolved to a canonical brand identity. See [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol). + +**Registry** provides a public REST API for entity resolution and agent discovery. Resolve a brand domain, find which agents are authorized to sell a publisher's inventory, or discover agents by capability. See [Registry API](/dist/docs/3.2.0-beta.4/registry). + +**Accounts** establishes the commercial relationship between buyers and sellers. Every AdCP transaction happens within an account that defines billing terms, operator authorization, and usage reporting. Accounts are grounded in brand identity from the Brand Protocol. See [Accounts Protocol](/dist/docs/3.2.0-beta.4/accounts/overview). + +### Transaction domains + +Four protocol domains handle core advertising operations. The [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match) serves as the execution layer, connecting planning-time decisions to real-time activation through a four-phase lifecycle: + +1. **Planning** — [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) and [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) establish packages, budgets, and targeting criteria. +2. **Execution** — TMP Context Match determines content fit; TMP Identity Match checks user eligibility. Both operations run at serve time with structural privacy separation. +3. **Engagement** — Sponsored Intelligence sessions deliver conversational brand experiences. +4. **Reporting** — [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) aggregates delivery data across sellers. + +**Media Buy** covers inventory discovery (`get_products`), campaign creation (`create_media_buy`), and delivery reporting (`get_media_buy_delivery`). Publishers return structured media products with pricing, targeting options, and delivery forecasts. Buyers can request proposals — structured media plans that encode publisher expertise. See [Media Buy](/dist/docs/3.2.0-beta.4/media-buy). + +**Creative** handles canonical capability discovery ([`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)), AI-powered creative generation ([`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative)), catalog synchronization ([`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs)), and creative delivery tracking. Creative agents resolve brand identity from the Brand Protocol to generate on-brand assets. See [Creative](/dist/docs/3.2.0-beta.4/creative). + +**Signals** enables audience and targeting data discovery ([`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals)) and activation ([`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal)). Data providers publish signal definitions that buyers can discover with natural language queries, then activate on decisioning platforms. See [Signals](/dist/docs/3.2.0-beta.4/signals/overview). + +**Sponsored Intelligence** defines conversational brand experiences in AI assistants. When a user expresses interest in a brand, the host initiates a consent-first session where the brand's agent engages conversationally with text, voice, UI components, or commerce handoffs. See [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview). + +### Governance (cross-cutting) + +**Governance** operates across all transaction domains. Governance agents manage property lists (curated sets of properties for targeting or exclusion), content standards (brand suitability policies), and creative governance (security scanning, content categorization). Governance data flows into media buy decisions, creative validation, and signal activation. See [Governance Protocol](/dist/docs/3.2.0-beta.4/governance/overview). + +Human-in-the-loop enters the protocol through two mechanisms: any mutation may be taken async for human review via the task lifecycle, and campaign governance provides a declarative buyer-side review channel via [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) and [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance). See [How human-in-the-loop enters the protocol](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment#how-human-in-the-loop-enters-the-protocol). This is not a real-time protocol: operations may take minutes to days when human approval is required. + +### Privacy posture across domains + +AdCP's privacy posture is not uniform. TMP is the only domain that enforces privacy **structurally** — through separated code paths, schema-level prohibitions on combining identity with context, and independently verifiable decorrelation. Every other domain relies on **contractual confidentiality or per-session consent** — the parties exchanging data are bound by the account's terms or the user's consent, not by protocol-level separation. Governance gating (via campaign governance) is orthogonal: it can require human approval on budget, policy, or brand-safety grounds, but it does not change the privacy mechanism of the underlying domain. + +| Domain | Privacy mechanism | Notes | +|---|---|---| +| Trusted Match Protocol | **Structural separation** | Context Match and Identity Match operate on separated code paths; schemas prohibit crossover. See [TMP privacy architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture). | +| Media Buy | Contractual | Buyer and seller exchange full plan context under account terms. | +| Creative | Contractual | Creative assets and targeting signals pass through the creative agent under account terms. | +| Signals | Contractual | Audience and signal data exchanged under account terms and signal-provider agreements. | +| Brand / Registry / Accounts | Public or contractual | Brand identity is public (`brand.json`); commercial terms are account-scoped. | +| Sponsored Intelligence | Consent-first | The user consents per session; the brand agent sees conversation content, and identity only when the user shares it. Networks that route sessions may see routing metadata — see [Networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks). | +| Governance | Contractual | Governance agents receive the context needed to evaluate policies under account terms. | + +"Structural" means the protocol — not the operator's policy — prevents the combination of sensitive data. If you need that property outside TMP, build it yourself or compose with TMP. + +--- + +## Ecosystem layers + +The protocol domain map above shows how AdCP tasks relate to each other. The diagram below shows how these map to real-world roles and systems. + +<img src="/images/concepts/ecosystem-layers.png" alt="Four-tier ecosystem diagram showing business parties at top, orchestration layer with specialized agents in the middle, technical execution below, and governance with human oversight spanning all layers" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +### Business parties + +**Buy side** — advertisers, agencies, retail media networks, and curators packaging inventory and data for specific use cases. + +**Media seller** — publishers, sales houses, rep firms, SSPs, and ad networks. + +These parties exchange impressions and money through the orchestration layer. + +### Orchestration layer + +**Media orchestration platform** — evaluates sellers and audiences, executes buying strategies. Communicates with specialized agents via MCP. + +**Signals agent** — MCP servers exposing audience and targeting data discovery and activation. + +**Sales agent** — MCP servers exposing media product discovery and campaign execution. + +**Creative agent** — MCP servers exposing format discovery and AI-powered creative generation. + +### Technical execution + +**Trusted Match Protocol (TMP)** — real-time execution layer that determines which pre-negotiated packages should activate for a given impression. Two structurally separated operations — Context Match (content fit) and Identity Match (user eligibility) — connect planning-time media buys to serve-time decisions across web, mobile, CTV, AI assistants, and retail media. See [TMP documentation](/dist/docs/3.2.0-beta.4/trusted-match). + +**Agentic eXecution Engine (AXE)** — deprecated predecessor to TMP. See [AXE documentation](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine). + +**Decisioning platform** — the infrastructure that selects which ad to serve, via direct campaigns or programmatic (RTB). Examples include DSPs, SSPs, and ad servers. + +### Governance and human oversight + +**Governance agents** provide compliance and quality control across all layers: property lists, brand suitability scoring, quality measurement (MFA score, ad density), and privacy compliance (COPPA, TCF, GDPR). They operate at setup time, real-time, and post-bid. + +**Human-in-the-loop** — manual approval at decision points. See [How human-in-the-loop enters the protocol](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment#how-human-in-the-loop-enters-the-protocol). + +--- + +## State persistence and horizontal scaling + +AdCP is a multi-instance protocol. A single buyer's workflow with an agent may be routed across multiple backend replicas — [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) may land on one replica, the subsequent `get_media_buy` on another — and both calls MUST see the same state. + +### Normative requirements + +State keyed by a `(brand, account)` tuple MUST survive across agent process instances. This includes but is not limited to accounts, catalogs, creatives, audiences, event sources, governance configuration, active campaigns, proposals, insertion-order approval records, signal activations, sponsored-intelligence sessions, async task records, and idempotency-key cache entries. Implementations MUST NOT use in-process memory as the primary store for any `(brand, account)`-scoped state that a subsequent call can read back. In-process storage does not satisfy this requirement. For the canonical (non-exhaustive) catalog of state domains, see [Account state](/dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state). + +**Acceptable storage:** Postgres, Redis, DynamoDB, or any shared store that persists across process restarts and is reachable from every replica. **Not acceptable:** module-level variables, per-process Maps or dicts, single-node file storage, or sticky-session routing that masks the absence of shared state. + +Within a single `(brand, account)` context, implementations MUST support read-your-writes across replicas: after a successful non-async response, a subsequent request routed to any replica MUST observe the write. Async/pending task state (status transitions, `context_id`, push-notification subscriptions) is itself subject to this rule — once a task record is created, it MUST be readable from any replica. Eventual consistency is acceptable when the staleness window is bounded and disclosed — either capped at the implementation's documented async polling interval, or declared explicitly in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). + +**Sandbox exemption.** Sandbox accounts are allowed to carry ephemeral state that does not persist across process restarts (see [Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox)). Within a single sandbox session, read-your-writes across replicas still applies. + +Implementations may prove this invariant by architecture (managed serverless + shared datastore), by multi-instance compliance testing, or by their own verification; the protocol cares about the invariant, not the methodology. See [Validate your agent — Verifying cross-instance state](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent#verifying-cross-instance-state). diff --git a/dist/docs/3.2.0-beta.4/protocol/calling-an-agent.mdx b/dist/docs/3.2.0-beta.4/protocol/calling-an-agent.mdx new file mode 100644 index 0000000000..d71213be37 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/calling-an-agent.mdx @@ -0,0 +1,178 @@ +--- +title: Calling an AdCP agent +sidebarTitle: Calling an agent +description: "Wire-level invariants every AdCP buyer must follow: idempotency_key replay, account oneOf variants, async status:'submitted' polling, and error recovery from adcp_error.issues[]." +"og:title": "AdCP — Calling an agent" +--- + +# Calling an AdCP agent + +This page is the canonical buyer-side wire contract: the rules that don't live cleanly in any single task schema, but apply to every mutating call you'll make. If you're building a buyer (DSP, planning tool, agentic client) and calling out to AdCP sales, creative, signals, governance, SI, or brand agents, read this once. + +The agent-facing version of this content lives at [`skills/call-adcp-agent/SKILL.md`](https://github.com/adcontextprotocol/adcp/blob/main/skills/call-adcp-agent/SKILL.md) — bundled into the [protocol tarball](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas#one-shot-protocol-bundle) so SDKs can ship it to coding agents. + +## Discovery chain + +Walk these in order on first contact with any new agent: + +1. **Agent card** (A2A) or **`tools/list`** (MCP): returns the tools selected for this endpoint or session. An AdCP 3.2 MCP server includes each selected tool's self-contained `inputSchema`; it does not load the complete AdCP catalog or its response schemas into model context. Treat the live names as the authority for what can be called. +2. **[`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities)**: returns supported protocols, AdCP major versions, and feature flags. Tells you *which* tools this agent supports, not how to call them. See [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). +3. **`get_schema(tool_name)`** *(when the agent exposes it — pending standardization, see [#3057](https://github.com/adcontextprotocol/adcp/issues/3057))*: returns the JSON Schema for a specific tool's request/response. +4. **Bundled schemas** (offline, authoritative): every published AdCP version ships JSON Schemas for every tool, signed via Sigstore. The path differs by SDK — the spec repo source uses `dist/schemas/<version>/bundled/`, `@adcp/sdk` puts them at `schemas/cache/<version>/bundled/` after `npm run sync-schemas`, Python and Go SDKs use their own conventions. Don't hardcode a path; let the SDK's loader find them. Once located, each schema lives at `<protocol>/<tool>-{request,response}.json`. + +## Idempotency: replay vs. new operation + +Every mutating tool requires an `idempotency_key` (UUID). + +- **Same key on retry** → server replays the **same response**, byte-for-byte. Use this for transport-level retries (timeout, 5xx, dropped connection). +- **Fresh key** → **new operation**, regardless of body. Generating a new UUID because the previous attempt failed is the most common way naïve callers create duplicate media buys. +- **Same key, different canonical body** → [`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict). Sellers MUST reject (rule 5 in [security.mdx#idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency)) — do not silently apply the second body, do not silently replay the first response. +- **Same key while first request still running** → [`IDEMPOTENCY_IN_FLIGHT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-in-flight) (rule 9 in [security.mdx#idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency)). The seller MAY return this code with top-level `error.retry_after` instead of blocking. Wait and retry with the **same key** — minting a fresh key on this code turns a safe retry into a double-execution race. + +For async flows, the replayed response carries the **same `task_id`** so polling continues against the same task instead of forking. + +The compact 3.2 lifecycle requires `idempotency_key` on [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals), [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products), [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), and [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy). [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) remains a synchronous key-optional read. + +`idempotency_key` is required on: [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy), [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy), [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives), [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences), [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts), [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs), [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources), [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance), [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal), [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights), [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event), [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage), [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback), [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome), [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list), [`update_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#update_property_list), [`delete_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#delete_property_list), [`create_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#create_collection_list), [`update_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#update_collection_list), [`delete_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#delete_collection_list), [`create_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards), [`update_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards), [`calibrate_content`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content), [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message). + +Missing the key → `adcp_error.code: 'VALIDATION_ERROR'` with `/idempotency_key` in `issues`. + +## `account` is `oneOf` — pick exactly one variant + +`account` is a discriminated union. On [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy), two variants: + +```json +// variant 0: by seller-assigned id (from list_accounts or out-of-band onboarding; +// buyer-declared sellers may also echo account_id from sync_accounts as an internal handle) +"account": { "account_id": "seller_assigned_id" } + +// variant 1: by advertiser natural key +// (brand + operator, optional operator_unit/currency/timezone/sandbox; +// brand may include commercial-identity countries[]) +// brand.domain — the buyer's brand domain (e.g., advertiser website) +// operator — the buyer-side entity operating on behalf of the brand +"account": { "brand": { "domain": "acme.com" }, "operator": "pinnacle-media.com" } +``` + +**Do NOT merge required fields across variants.** `additionalProperties: false` on each variant means `{account_id, brand}` fails BOTH. + +When a task schema requires `account`, send an explicit `AccountRef` even if the SDK auto-selected the only account available to the authenticated credential. Hidden credential-implied defaulting is not a protocol model. When a task marks `account` optional, omission has only the semantics documented by that task. + +Other tools (e.g. [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives)) may accept a superset — always check the specific tool's schema. + +## Async responses: `status: 'submitted'` means queued + +A mutating tool can return one of three shapes: + +```json +// Success (sync): the work is done +{ "media_buy_id": "mb_123", "packages": [...], "confirmed_at": "..." } + +// Submitted (async): the work is queued +{ "status": "submitted", "task_id": "tk_abc", "message": "Awaiting IO signature" } + +// Error: don't retry without fixing +{ "errors": [{ "code": "PRODUCT_NOT_FOUND", "message": "..." }] } +``` + +AdCP task state is an **application-layer** contract. MCP and A2A may wrap, stream, or transport an AdCP response, but their native task mechanisms do not replace the AdCP `task_id`, status values, webhook payloads, or polling/reconciliation surfaces. A transport task can complete after delivering an AdCP response whose payload still says `status: 'submitted'`. + +When you see `status: 'submitted'`, the work is **not** complete. Under the [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension), the caller MUST poll by sending fresh structured invocations of [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) with the returned AdCP `task_id`. The enclosing A2A Task is already completed and MUST NOT be polled as a proxy for the AdCP operation. MCP implementations may continue to expose the legacy AdCP `tasks/get` surface; both AdCP polling names use the same snake_case payload shape, including the optional `account` scope for multi-account credentials. + +Pass `include_result: true` when polling so the seller includes the completion payload once status transitions to `completed`: + +```json +// get_task_status request +{ + "task_id": "task_456", + "include_result": true, + "account": { + "brand": { "domain": "acmeoutdoor.example" }, + "operator": "pinnacle-agency.example", + "sandbox": true + } +} + +// get_task_status response — completed +{ + "task_id": "task_456", + "task_type": "create_media_buy", + "protocol": "media-buy", + "status": "completed", + "completed_at": "2025-01-22T10:30:00Z", + "result": { + "media_buy_id": "mb_12345", + "packages": [{ "package_id": "pkg_001" }] + } +} +``` + +The `result` field uses the same payload structure as the push-notification webhook `result` field for completed tasks — buyers who configure both polling and webhooks receive the same data shape either way. + +## Error recovery — read `issues[]` + +Every validation failure produces an envelope shaped like: + +```json +{ + "adcp_error": { + "code": "VALIDATION_ERROR", + "recovery": "correctable", + "field": "/first/offending/pointer", + "issues": [ + { + "pointer": "/account", + "keyword": "oneOf", + "message": "must match exactly one schema in oneOf", + "variants": [ + { "index": 0, "required": ["account_id"], "properties": ["account_id"] }, + { "index": 1, "required": ["brand", "operator"], "properties": ["brand", "operator", "sandbox"] } + ] + }, + { "pointer": "/brand/domain", "keyword": "required", "message": "must have required property 'domain'" } + ] + } +} +``` + +- `issues[].pointer` — RFC 6901 JSON Pointer to the offending field +- `issues[].keyword` — Ajv keyword (`required`, `type`, `oneOf`, `anyOf`, `additionalProperties`, `format`, `enum`) +- `issues[].variants` — when `keyword` is `oneOf` or `anyOf`, each entry lists one variant's `required` + declared `properties` + +**For `oneOf` failures, pick ONE variant from `variants[]` and send only its `required` fields.** This is the fastest recovery path when you didn't know the field was a union. + +`recovery` values: + +- `correctable` — buyer-side fix; read `issues[]`, patch the pointers, resend +- `transient` — retry with the **same** `idempotency_key` +- `terminal` — requires human action (account suspended, payment required); do not retry + +## Common shape pitfalls + +| Symptom | What it means | Fix | +|---|---|---| +| `keyword: 'oneOf'` with `variants[]` | Discriminated union — you sent fields from multiple variants, or none | Pick ONE variant from `variants[]`. Send only its `required` fields. | +| 2-3 `additionalProperties` errors at the same pointer | You merged `oneOf` variants | Drop to one variant. Don't keep "extra" fields "for completeness". | +| `keyword: 'required'`, `pointer: '/idempotency_key'` | Mutating tool, no UUID | Generate fresh UUID per logical operation. Reuse on retries. | +| `keyword: 'type'` or `additionalProperties` at `/budget` | Sent `{amount, currency}` | `budget` is a number. Currency is implied by `pricing_option_id`. | +| `enum` at `/format_kind` | Sent a non-canonical format kind | Choose a registered canonical kind or use a valid `custom` declaration. | +| `keyword: 'enum'` at `/destinations/*/type` | Made-up destination type | Use `'platform'` (with `platform`) or `'agent'` (with `agent_url`). | +| Response carries `status: 'submitted'` and `task_id` | Async — work is queued, NOT done | On the AdCP v3 A2A profile, invoke [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json). On MCP, use the advertised AdCP polling task. | + +## Transport notes + +- **MCP**: `tools/call` with `{ name: 'tool_name', arguments: {...} }`. Read `structuredContent` for the typed response. +- **A2A 1.0**: advertise and activate `https://adcontextprotocol.org/extensions/adcp/v3`, then Send Message with exactly one invocation DataPart shaped `{ skill: 'tool_name', input: {...} }`; optional TextParts are advisory. Read the authoritative response DataPart from the completed Task artifact. + +Both transports share idempotency, error shape, schema enforcement, and handler semantics. If a call works on one, the equivalent call works on the other. + +A common trap: **A2A `Task.status.state: 'completed'` is not the same as AdCP completion.** A2A task state describes the transport invocation; AdCP-level completion is in the artifact DataPart. A `completed` A2A task can carry a `submitted` AdCP response, whose `task_id` remains only in that DataPart and is polled through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json). It also carries structured business outcomes that are not transport failures, such as `GetProductsRejected`: A2A remains `completed`, while the artifact payload contains `status: "rejected"`, `reason`, and optional `suggestions[]`. + +## Related + +- Per-task request/response shapes: see the protocol-specific reference (`/docs/media-buy/`, `/docs/creative/`, `/docs/signals/`, etc.). +- [Protocol architecture](/dist/docs/3.2.0-beta.4/protocol/architecture) — how the protocol domains fit together. +- [Required tasks](/dist/docs/3.2.0-beta.4/protocol/required-tasks) — which tasks an agent must implement to claim a specialism. +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — first call against any new agent. +- [Schemas](/dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas) — how SDKs consume the protocol tarball (which now bundles `skills/`). +- [Build a caller](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller) — build-shaped guide for the caller side: install, call, handle responses, ingest reporting. diff --git a/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer.mdx b/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer.mdx new file mode 100644 index 0000000000..35e0d8bb19 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer.mdx @@ -0,0 +1,248 @@ +--- +title: Capabilities explorer +sidebarTitle: Capabilities explorer +description: "Browsable view of the get_adcp_capabilities response schema — every top-level domain, every sub-namespace, with anchors and 'propose extension here' links so new flags land in the right home." +"og:title": "AdCP — Capabilities explorer" +--- + +# Capabilities explorer + +This page renders the actual top-level shape of the [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) response so you can find the right place for a new capability before you propose it. The most common reason an extension RFC gets bounced is wrong-shape: the proposal puts a flag at a level that doesn't match where similar flags already live. Walk the tree first. + +If you're here to draft an RFC, the workflow is: + +1. Find the closest existing top-level domain for your flag below. +2. Drill into that domain's sub-namespaces (`features`, `execution`, etc.). +3. If your flag fits an existing sub-namespace, propose it there. Use the **propose extension here** link at the relevant node — it pre-fills the issue title with the path. +4. If nothing fits, scroll to **Before proposing a new top-level key** at the bottom and answer the gate questions in your RFC body. + +The authoritative schema lives at [`static/schemas/source/protocol/get-adcp-capabilities-response.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/protocol/get-adcp-capabilities-response.json). The tree below is curated to one level deep for the rich domains; for the full nested shape, read the schema. See also [Design principles — capabilities are commitments, declared under existing buckets](/dist/docs/3.2.0-beta.4/protocol/design-principles#4-capabilities-are-commitments-declared-under-existing-buckets). + +--- + +## Top-level domains + +The 14 domains below are the entire top-level surface of [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). Every capability flag eventually nests under one of these. New top-level keys are extremely rare and should not be the first move — see the gate questions at the end of this page. + +### `adcp` — core protocol identity + +Version negotiation, idempotency contract, build identifier. + +- **`supported_versions`** — release-precision strings (e.g. `"3.0"`, `"3.1"`). Authoritative for buyer-side release pinning. +- **`major_versions`** — DEPRECATED in favor of `supported_versions`; sellers MUST keep emitting through 3.x. +- **`build_version`** — full semver build identifier; advisory metadata for buyer-side incident triage. +- **`idempotency`** — discriminated union (`IdempotencySupported` / `IdempotencyUnsupported`) declaring replay semantics. **A declaration here is a commitment** — sellers that declare `supported: true` are probed by the conformance runner. +- **`capability_changes`** — freshness metadata and optional `capabilities.changed` invalidation webhooks for cached capability documents. + +[Propose an extension to `adcp`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+adcp+capability:+%3Cflag%3E&body=Schema+location:+%60.adcp%60%0AExisting+keys:+supported_versions,+major_versions,+build_version,+idempotency%0A%0A%23%23+Proposal%0A%0A...%0A%0A%23%23+Why+this+belongs+under+%60adcp%60+and+not+a+new+top-level+key%0A%0A...&labels=rfc,capabilities) + +--- + +### `supported_protocols` — which AdCP protocols this agent implements + +Array of protocol names. Each value commits the agent to (a) implement those tools and (b) pass the baseline compliance storyboard at `/compliance/{version}/protocols/{protocol}/`. + +Valid values cover `media_buy`, `creative`, `signals`, `governance`, `sponsored_intelligence`, `brand`, `accounts`, `measurement` (in development). + +[Propose a new protocol to add to `supported_protocols`](https://github.com/adcontextprotocol/adcp/issues/new?title=Add+protocol+to+supported_protocols:+%3Cname%3E&body=%23%23+Proposal%0A%0A...%0A%0A%23%23+Compliance+storyboard+plan%0A%0AHow+will+the+baseline+conformance+suite+exercise+this+protocol?+...&labels=rfc,capabilities,new-protocol) + +--- + +### `account` — account establishment and billing + +How accounts are negotiated; whether one is required before product discovery; what billing models are supported. + +- **`required_for_products`** — boolean. If true, [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) requires an established account. +- **`authorization_endpoint`** — OAuth/auth URL for account negotiation. +- **`require_operator_auth`** — declares whether operator-level authentication is required. +- **`supported_billing`** — invoiced parties the seller supports (`operator`, `agent`, `advertiser`). +- **`supported_account_currency_modes`** — whether advertiser accounts use an immutable `fixed` currency, `per_media_buy` currency, or both. Required for 3.2 advertiser-account provisioning; older 3.x sellers may omit it, which means the mode is not discoverable. +- **`timezone`** — whether every account uses one seller-fixed timezone or each account carries an immutable seller-assigned/buyer-selected timezone. Feature capabilities explicitly declare when reporting, billing, or daily-cap clocks differ. +- **`account_financials`** — what financial data the seller exposes (credit limits, current balance, etc.). +- **`sandbox`** — sandbox-account capabilities. + +[Propose an extension to `account`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+account+capability:+%3Cflag%3E&body=Schema+location:+%60.account%60&labels=rfc,capabilities) + +--- + +### `media_buy` — media buying capabilities + +The largest domain. Sub-namespaces are where most media-buying flags belong. + +- **`features`** — boolean feature flags (e.g. `inline_creative_management`, `property_list_filtering`, `catalog_management`, `committed_metrics_supported`). **Most new media-buy capability flags belong here.** +- **`execution`** — technical execution capabilities. Contains `trusted_match` (TMP), `creative_specs` (VAST/MRAID/VPAID/SIMID versions), `targeting` (geo / audience / device / temporal), `axe_integrations` (deprecated). See note in [Design principles — Where the surface doesn't yet follow these](/dist/docs/3.2.0-beta.4/protocol/design-principles#where-the-surface-doesnt-yet-follow-these-principles) about the `trusted_match` placement. +- **`audience_targeting`** — declared audience-targeting capabilities. +- **`content_standards`** — content-standards enforcement capabilities. +- **`conversion_tracking`** — conversion-tracking capabilities. +- **`offline_delivery_protocols`** — supported offline delivery protocols (broadcast trafficking, etc.). +- **`portfolio`** — portfolio-management capabilities. +- **`reporting_delivery_methods`** — how reporting is delivered. +- **`supported_pricing_models`** — array (CPM, CPC, CPCV, CPP, revenue share, flat rate, etc.). + +[Propose a flag for `media_buy.features`](https://github.com/adcontextprotocol/adcp/issues/new?title=Add+media_buy+feature:+%3Cflag%3E&body=Schema+location:+%60.media_buy.features%60%0A%0A%23%23+Proposal%0A%0A...%0A%0A%23%23+Why+a+feature+flag+and+not+a+new+task%0A%0A...%0A%0A%23%23+Conformance+probe%0A%0AHow+can+a+buyer+verify+this+capability+is+actually+honored?+...&labels=rfc,capabilities) + +[Propose an extension to `media_buy.execution`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+media_buy.execution:+%3Cflag%3E&body=Schema+location:+%60.media_buy.execution%60%0AExisting+sub-keys:+trusted_match,+creative_specs,+targeting&labels=rfc,capabilities) + +--- + +### `signals` — audience and contextual data activation + +Authorization scope and feature flags for the signals domain. + +- **`data_provider_domains`** — array of domains this signals agent is authorized to resell. Buyers fetch each provider's `adagents.json` to verify. +- **`features`** — boolean feature flags. `catalog_signals` is deprecated; structured `signal_ref` support is part of the Signals protocol and should not require a feature flag. **Additional signals capability flags belong here**, not in a new top-level key. (E.g., a `signal_enforcement_on_guaranteed` flag for direct-sold targeting belongs at `signals.features`, not under `media_buy.execution.trusted_match`.) + +[Propose a flag for `signals.features`](https://github.com/adcontextprotocol/adcp/issues/new?title=Add+signals+feature:+%3Cflag%3E&body=Schema+location:+%60.signals.features%60%0A%0A%23%23+Proposal%0A%0A...%0A%0A%23%23+Conformance+probe%0A%0A...&labels=rfc,capabilities,signals) + +--- + +### `governance` — governance protocol capabilities + +Property and creative governance capabilities. + +- **`property_features`** — what the governance agent does with property lists. +- **`creative_features`** — what the governance agent does for creative review. +- **`aggregation_window_days`** — how long the agent aggregates governance events. + +[Propose an extension to `governance`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+governance+capability:+%3Cflag%3E&body=Schema+location:+%60.governance%60&labels=rfc,capabilities,governance) + +--- + +### `sponsored_intelligence` — conversational brand experiences + +For agents that handle SI sessions. + +- **`endpoint`** — SI endpoint URL. +- **`brand_url`** — brand identity URL. +- **`capabilities`** — SI-specific capabilities (commerce handoff, voice, UI components, etc.). + +[Propose an extension to `sponsored_intelligence`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+sponsored_intelligence+capability:+%3Cflag%3E&body=Schema+location:+%60.sponsored_intelligence%60&labels=rfc,capabilities) + +--- + +### `brand` — brand protocol capabilities + +For brand agents. + +- **`description`** — agent description. +- **`available_uses`** — what the brand data is licensed for. +- **`generation_providers`** — supported generation providers. +- **`right_types`** — right types the agent grants. +- **`rights`** — concrete rights this agent issues. + +[Propose an extension to `brand`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+brand+capability:+%3Cflag%3E&body=Schema+location:+%60.brand%60&labels=rfc,capabilities) + +--- + +### `creative` — creative protocol capabilities + +For creative agents. + +- **`has_creative_library`** — whether the agent maintains a creative library. +- **`supports_compliance`** — creative compliance scanning. +- **`supports_generation`** — generative-creative capabilities. +- **`supports_transformation`** — creative transformation capabilities. + +[Propose an extension to `creative`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+creative+capability:+%3Cflag%3E&body=Schema+location:+%60.creative%60&labels=rfc,capabilities,creative) + +--- + +### `request_signing` — RFC 9421 HTTP Signatures for incoming requests + +Signing remains optional through 3.2 and capability-advertised so counterparties can opt in selectively. A 3.2 agent that advertises support must use the body-bound profile. + +- **`supported`** — boolean. +- **`required_for`** — array of operations where signing is required. +- **`supported_for`** — array of operations where signing is supported. +- **`warn_for`** — array of operations where unsigned requests produce warnings. +- **`covers_content_digest`** — MUST be `required` for a 3.2 signing profile. The legacy `either` and `forbidden` values are accepted only when negotiating with a 3.0/3.1 endpoint. + +[Propose an extension to `request_signing`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+request_signing+capability:+%3Cflag%3E&body=Schema+location:+%60.request_signing%60&labels=rfc,capabilities,security) + +--- + +### `webhook_signing` — RFC 9421 signing for outbound webhooks + +Top-level peer of `request_signing`. + +- **`supported`** — boolean. +- **`profile`** — signing profile name. +- **`algorithms`** — supported signature algorithms. +- **`legacy_hmac_fallback`** — whether HMAC fallback is supported for legacy receivers. + +[Propose an extension to `webhook_signing`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+webhook_signing+capability:+%3Cflag%3E&body=Schema+location:+%60.webhook_signing%60&labels=rfc,capabilities,security) + +--- + +### `identity` — operator identity posture + +Key-scoping and compromise-response controls. Advisory in 3.x; required in 4.0. + +- **`per_principal_key_isolation`** — whether each principal has an isolated key. +- **`key_origins`** — declared key-management origins. +- **`compromise_notification`** — notification posture for key compromise events. + +[Propose an extension to `identity`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+identity+capability:+%3Cflag%3E&body=Schema+location:+%60.identity%60&labels=rfc,capabilities,security) + +--- + +### `measurement` — measurement capabilities (in development) + +Quantitative metrics about ad delivery, exposure, or effectiveness. + +- **`metrics`** — array of metric definitions this agent emits. + +The protocol surface beyond capabilities discovery (reporting, attribution tasks) lands in subsequent minors. + +[Propose an extension to `measurement`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+measurement+capability:+%3Cflag%3E&body=Schema+location:+%60.measurement%60&labels=rfc,capabilities,measurement) + +--- + +### `compliance_testing` — deterministic test scenarios + +Declares the agent supports [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) and which scenarios are honored. + +- **`scenarios`** — array of compliance scenario IDs the agent supports. + +[Propose an extension to `compliance_testing`](https://github.com/adcontextprotocol/adcp/issues/new?title=Extend+compliance_testing+capability:+%3Cflag%3E&body=Schema+location:+%60.compliance_testing%60&labels=rfc,capabilities,compliance) + +--- + +### `specialisms` — kebab-case specialty IDs + +Optional. Specialty compliance claims (e.g., `creative-generative`, `sales-non-guaranteed`). Values are kebab-case enum IDs registered with the working group. + +[Propose a new specialism](https://github.com/adcontextprotocol/adcp/issues/new?title=Add+specialism:+%3Ckebab-case-id%3E&body=%23%23+Specialism+ID%0A%0A%3Ckebab-case-id%3E%0A%0A%23%23+What+it+claims%0A%0A...%0A%0A%23%23+Conformance+criteria%0A%0AHow+do+we+verify+an+agent+actually+meets+this+claim?+...&labels=rfc,capabilities,specialism) + +--- + +## Things-this-agent-does that aren't a domain + +Three top-level lists carry capability metadata that doesn't fit a single protocol domain. The shape inconsistency between them is on the open list ([Design principles — Where the surface doesn't yet follow these](/dist/docs/3.2.0-beta.4/protocol/design-principles#where-the-surface-doesnt-yet-follow-these-principles)). + +- **`extensions_supported`** — array of extension namespaces this agent populates (`ext.{namespace}`). +- **`experimental_features`** — array of experimental surface IDs this agent implements (e.g. `trusted_match.core`). +- **`compliance_testing`** — covered above. + +--- + +## Before proposing a new top-level key + +If your flag genuinely doesn't fit any of the 14 domains above, open the RFC — but answer these gate questions in the body. Most reviewers expect them. RFCs that ignore them tend to bounce. + +1. **Which existing top-level domain is closest?** Name it. Explain why your flag *isn't* an extension to that domain's `features`, `execution`, or other sub-namespaces. +2. **Why isn't this an `ext.{vendor}` extension?** Vendor-specific behavior belongs in vendor namespaces ([spec-guidelines on platform agnosticism](/dist/docs/3.2.0-beta.4/spec-guidelines#platform-agnosticism)). Why is your flag normative across all implementers? +3. **What's the conformance probe?** A capability declaration is a commitment, not an advertisement. How does the conformance runner verify a seller that declares your flag actually honors it? +4. **What does this rule out?** What proposals does adding this top-level key make easier — and what does it make harder for someone scanning the top level a year from now? + +These are the same questions reviewers will ask. Answering them in the RFC saves a round-trip. + +[Propose a new top-level capability key (use only after answering the gate questions)](https://github.com/adcontextprotocol/adcp/issues/new?title=Propose+new+top-level+capability+key:+%3Cname%3E&body=%23%23+Proposed+top-level+key%0A%0A%3Cname%3E%0A%0A%23%23+Gate+questions%0A%0A**1.+Which+existing+top-level+domain+is+closest+and+why+isn%27t+this+an+extension+there?**%0A%0A...%0A%0A**2.+Why+isn%27t+this+an+%60ext.%7Bvendor%7D%60+extension?**%0A%0A...%0A%0A**3.+What%27s+the+conformance+probe?**%0A%0A...%0A%0A**4.+What+does+this+rule+out?**%0A%0A...&labels=rfc,capabilities,new-top-level-key) + +--- + +## Related + +- [Design principles](/dist/docs/3.2.0-beta.4/protocol/design-principles) — the reasoning behind the capability surface shape. +- [`get_adcp_capabilities` task reference](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) — the response schema as documented per-field. +- [Specification Guidelines](/dist/docs/3.2.0-beta.4/spec-guidelines) — type naming, enum design, vendor-neutral rule. diff --git a/dist/docs/3.2.0-beta.4/protocol/design-principles.mdx b/dist/docs/3.2.0-beta.4/protocol/design-principles.mdx new file mode 100644 index 0000000000..4d661e0d45 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/design-principles.mdx @@ -0,0 +1,193 @@ +--- +title: How AdCP is designed +sidebarTitle: Design principles +description: "The load-bearing principles behind AdCP's design — what they rule out, when you'd be right to push back, and where the surface doesn't yet follow them." +"og:title": "AdCP — Design principles" +--- + +# How AdCP is designed + +You don't need to read this page to use AdCP. You do need to read it to extend it. + +This is the meta-protocol — the philosophical framework behind the calls we made. Each principle is a load-bearing decision that shows up the moment someone proposes "just add this one field." We've made these calls deliberately, and we revisit them deliberately. The goal here is to give contributors enough context to either propose something that fits the existing shape or to argue, with both feet on the ground, for changing the shape itself. + +Two principles bounce most RFCs that reach the working group: **the schema is the spec** and **compose before adding a task**. They sit first because they're load-bearing for the rest. Six supporting principles follow. A "where the surface doesn't yet follow these" section at the end names the contradictions we know about — the principles are credible only to the extent that we're honest about them. + +Each principle has the same structure: the rule, why we chose it, what it rules out, and the exception path — when pushing back on the principle is the right move. + +--- + +## The two principles that bounce most RFCs + +### 1. The schema is the spec + +Documentation describes; schemas decide. When documentation and schemas diverge, schemas win. A proposal that extends a field or task that does not exist in the schema is making two claims at once — that a thing exists, and that it should grow — and reviewers will bounce it on the first claim alone. + +**Why we chose it.** Generated SDKs come from schemas, conformance tests come from schemas, the registry comes from schemas. A doc page can lag for a release and the protocol still works; a schema change ships everywhere. The schema is also the only place we can enforce the cross-language guarantees AdCP claims (TypeScript, Python, Go all generate cleanly from one source). See [Specification Guidelines — Philosophy](/dist/docs/3.2.0-beta.4/spec-guidelines#philosophy) for the canonical version of this rule. + +**What this rules out.** Proposing a `direct_sold_signals` flag inside a `trusted_match` capability object in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) when the schema's actual top-level keys are `adcp`, `supported_protocols`, `account`, `media_buy`, `signals`, `governance`, `sponsored_intelligence`, `brand`, `creative`, `request_signing`, `webhook_signing`, `identity`, `compliance_testing`, and `specialisms`. There is no `trusted_match` top-level key — and the right shape for the proposed flag is `signals.features.signal_enforcement_on_guaranteed`, not a new bucket. Reviewers bounce the issue on the wrong-shape premise alone, before evaluating the underlying idea — which may be perfectly good. + +**When you'd be right to push.** When the schema genuinely lacks a place to put your proposal. State that as the first claim, propose the new schema location with a path, and then propose the field. Two clear claims beat one fuzzy one. + +→ Use the [Capabilities explorer](/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer) before proposing a new flag. It walks the actual schema tree. + +--- + +### 2. Compose with existing primitives before adding a new task + +Every new top-level task is a permanent surface every implementer eventually has to reason about, even the ones who don't use it. Before proposing one, the question to answer is: can this be expressed via the existing tasks plus their existing modes? If yes, the proposal is a documentation gap (or a missing field) — not a new task. + +**Why we chose it.** Tasks are the protocol's coordination cost. Adding a task is the most expensive thing a contributor can ask for, because it lands on every sales agent, every buyer agent, every SDK, every test suite, every conformance row. Fields and modes compose; tasks don't. A protocol that grows by adding tasks every release ages into something only its authors can hold in their head. + +**What this rules out.** Proposing a `get_price_quote` task between discovery +and commitment. The 3.2 lifecycle already distinguishes the two cases: a +published offer carries versioned pricing from [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) into +[`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products); seller-specific pricing or configuration moves through +[`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), typed [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), a committed hold, and +[`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal). A quote task would duplicate an existing commercial state +transition without adding a new counterparty role. + +**When you'd be right to push.** When no composition reaches the desired semantics — when the proposal demands a state transition or a counterparty role no existing task can carry. The bar is high and that's intentional. Bring evidence: which existing task you tried to extend, why the extension didn't work, what the new task adds that an extension can't. + +--- + +## Six supporting principles + +### 3. Discovery and planning are distinct; targeting is an input to both + +Targeting is what the buyer wants delivered. It is not a downstream filter on +a generic result. A buyer reading published offers sends structured criteria to +[`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products). A buyer asking +the seller to plan sends a brief plus the same structured criteria to +[`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals). In both +paths the returned product, price, forecast, and targeting resolution describe +the executable result. + +Wholesale synchronization belongs to the published-offer path: feed versions +and account-level product webhooks keep a mirror current. Proposal negotiation +is a separate immutable-snapshot lifecycle. Treating wholesale as a planning +mode conflates catalog topology with commercial negotiation. + +**Why we chose it.** A brief is the natural unit of seller-planned intent; a +versioned offer feed is the natural unit for buyers that select products +directly. Both need the same targeting semantics. Keeping the paths distinct +lets sellers curate when their expertise matters without forcing catalog +mirrors and direct buyers through a conversational planning loop. + +**What this rules out.** A separate quote step between products and buy creation. (See principle 2 — the same RFC fails both filters.) + +**When you'd be right to push.** When neither a versioned published offer nor +an immutable proposal can express the pricing dependency or commitment being +negotiated. Name the missing state transition and explain why proposal +refinement cannot carry it before adding another task. + +→ See [Targeting](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) for the brief-first model. + +--- + +### 4. Capabilities are commitments, declared under existing buckets + +Two things, one principle. **Where capabilities live** in the schema: under existing top-level domains (`signals`, `media_buy`, `creative`, `governance`), not in new top-level keys. **What declaring a capability means**: an enforceable contract, not an advertisement. If a sales agent declares `idempotency.supported: true`, the conformance suite probes it and the contract is testable. Declarations cost something to make. + +**Why we chose it.** Top-level keys are the most visible part of the capabilities surface. Each one is a category every implementer scans on every read. Sub-namespacing keeps related capabilities discoverable together (`signals.features.X` belongs near `signals.data_provider_domains`) and keeps the top level scannable. Adding a top-level key for one flag is like adding a department to handle one form. And declarations need to be load-bearing to be useful: a flag the protocol can't enforce or test is a wish, not a contract. + +**What this rules out.** "Add a `trusted_match` top-level capability key" for a flag about how signals interact with guaranteed line items. The flag belongs in `signals.features` — a `signal_enforcement_on_guaranteed: "enforced" | "best_effort" | "not_supported"` enum, not a new bucket. Also: declaring a capability you don't actually support, hoping no one probes it. The conformance runner will. + +**Reviewer test.** Did the proposal cite the actual top-level keys in the schema today, and explain why none of them is the right home? If the proposal can't answer that question, it's not ready. + +→ The [Capabilities explorer](/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer) renders the existing tree. + +--- + +### 5. Trust is bilateral and `/.well-known`-rooted + +Trust in AdCP is bilateral and verifiable, not blessed by a registry. Operators declare organization identity, agents, property relationships, and signing-key discovery via [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) at `/.well-known/brand.json`; publishers declare which agents are authorized for which properties via [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents). Either party can resolve and verify the other's declarations. The [Registry](/dist/docs/3.2.0-beta.4/registry) helps with discovery and resolution; it does not gate participation. Every discovery hop is an HTTP GET against a deterministic path — the model ads.txt and sellers.json got right, deliberately reused. + +**Why we chose it.** Every centralized trust authority eventually becomes a tax. ads.txt and sellers.json got the model right: declarations are public and machine-readable; verification is bilateral; the network discovers truth without a single gatekeeper deciding who counts. AdCP follows that pattern deliberately — adding a "well-known brand registry" or a "verified buyer" tier would re-create the exact ad tech tax structure the protocol is meant to replace. + +**What this rules out.** Proposals that frame brand verification as a centralized validation problem — "who decides which brands are well-known?", "should AAO verify brand.json submissions before allowing them in the registry?" The premise is the error: `/.well-known/` is a [URI convention from RFC 8615](https://datatracker.ietf.org/doc/html/rfc8615), not a quality signal. A `brand.json` at a domain proves only that whoever controls that domain published it. Trust is built by composing that proof with adagents.json, account-level commercial relationships, and (when needed) signed requests — not by a third party blessing the brand list. + +**When you'd be right to push.** When you have evidence of a trust failure that bilateral declarations *demonstrably can't* address — not "what if a fraud declares themselves," but "here's a class of fraud the bilateral model misses, here's the cost, here's the smallest amount of centralization that closes it." Trust extensions are accepted; trust centralization needs receipts. The unresolved question on the substrate (CDN takeovers, DNS games, stale `/.well-known/` crawls) is real — see [Trust & Security](/dist/docs/3.2.0-beta.4/trust) for what AdCP provides versus what it explicitly does not. + +--- + +### 6. Privacy is layered, not uniform + +[Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match) has *structural* privacy — separated code paths, schema prohibitions on combining identity with context, decorrelation that's independently verifiable. Every other domain has *contractual* privacy — the parties exchanging data are bound by the account's terms or the user's consent. These are different mechanisms with different guarantees, and proposals that mix them produce confused features. + +**Why we chose it.** Structural privacy is expensive — it constrains the schema, requires separated infrastructure, and limits what compositions are possible. We pay that cost in TMP because TMP runs at impression time across mixed buyer/seller boundaries, where contractual confidentiality can't reach. Outside TMP, parties have already established a commercial relationship; a contract is the right unit of trust. Pretending the two are interchangeable means either over-engineering the contractual cases or under-protecting the structural ones. + +**What this rules out.** Proposing a "TMP-verified direct-sold targeting" +capability that assumes TMP's privacy guarantees apply to direct-sold ad-server +decisioning. They don't. Whether a seller can enforce signal targeting on +guaranteed inventory is a `signals.features` declaration plus validation of the +published purchase or accepted proposal—a contractual-disclosure feature, not +a structural-privacy one. + +**When you'd be right to push.** When you have a cross-domain privacy claim and you can name which mechanism applies. "This is a contractual feature, here's what's in the contract" or "this is a structural feature, here's the schema-level prohibition that makes it work." Vague privacy improvements tend to land on neither and end up in the wrong place. + +→ See [Architecture — Privacy posture across domains](/dist/docs/3.2.0-beta.4/protocol/architecture#privacy-posture-across-domains) for the per-domain mechanism table. + +--- + +### 7. The protocol exposes seams; deployers wire decisions + +AdCP defines what fields exist and what guarantees the protocol makes about them. It does not define how a deployer's policy must be enforced, how a governance agent must decide, or what counts as a "good" buyer. This stance shows up in three places, and they share a single posture: **the protocol is realistic about how decisions actually happen — distributed across parties, asynchronous in time, human-checkable in process.** + +- *Capabilities are declared, not gated.* [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) is a seam, not an enforcer. A seller that hasn't configured a governance agent will not call it; the protocol doesn't prevent a non-conformant seller from transacting. Schema-level enforcement exists but is rare and named (`fair_housing`, `fair_lending`, `fair_employment` in 3.0); the default is exposure, not coercion. +- *Async is the default; sync is the optimization.* Every mutating task has `*-async-response-{submitted,working,input-required}.json` siblings. A protocol that pretends every operation is synchronous and atomic is one that breaks the moment a real workflow lands. +- *Human review is architectural, not exceptional.* Any mutation can be taken async for human approval via the [task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle); campaign governance provides a declarative buyer-side review channel. HITL composes with everything else — audit logs, governance checks, async responses — rather than being a special case bolted onto certain tasks. + +A related invariant lives at the account boundary: **account ownership, not creation surface, determines visibility.** Buys created outside AdCP still belong to the account they fall under, and surface in account-scoped queries. This prevents the shadow-ledger pattern that breaks every "API on top of an ad server." + +**Why we chose it.** A protocol that ships policy is a platform with extra steps. The credibility of an open standard is exactly its restraint about what it tries to decide. Deployer policy is also where context-specific judgment belongs — what's a brand-safety violation in one vertical is fine in another, and AdCP can't carry that nuance without picking sides. + +**What this rules out.** "The protocol should reject buys that don't match capability X." Most of the time the right answer is "the protocol should make capability X visible, and the deployer rejects the buy." Also: framing autonomy and oversight as opposites — "for agentic to truly work, X must be automated end-to-end." For most regulated and high-stakes operations, that's not what we want, and it's not what the protocol assumes. + +**When you'd be right to push.** When the asymmetry is bad enough that a per-deployer policy doesn't solve the coordination problem — when buyers and sellers can't economically agree on enforcement without a protocol-level rule. Schema-level enforcement is rare and earned; argue for it when you have it, not as the first move. + +→ See [Trust & Security — Governance](/dist/docs/3.2.0-beta.4/trust#governance) for what AdCP provides versus what it explicitly does not, and [Governance — Embedded human judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) for how HITL surfaces in the protocol. + +--- + +### 8. Reference data: own the namespace and the resolution contract, not the corpus + +AdCP defines the **namespace** (which classification systems exist and the shape of their IDs) and the **resolution contract** (resolve a name against a declared source rather than infer an identifier from a model's training data, and surface ambiguity rather than pick one). It does not publish the underlying code↔name tables — the **corpus** — unless AdCP is itself the authority that mints the values. A code is identity and travels losslessly on the wire; a name is a *rendering* of that code, reconstituted at the edge by whoever displays it, from a lookup they already hold. + +**Why we chose it.** The durable asset is the contract, not the corpus. Publishing someone else's reference table makes the registry a downstream mirror that has to track an external publisher forever — owning its correctness, its refresh cadence, and its license exposure, with no ops function behind any of it. And a wrong-but-canonical table is worse than no table: agents hallucinate, and they trust an authority stamp precisely when they shouldn't, so a stale or fabricated entry misdirects real spend silently. The name doesn't need to travel or be centralized — it's a dimension attribute, replicated to the edge once and joined locally, not denormalized onto every request and not fetched from a central service per lookup. + +**What this rules out.** A canonical geo-metro registry — a versioned DMA `code → name` table the ecosystem fetches as source of truth (proposed and declined). The proposal's first commit shipped fabricated codes numbered sequentially by market rank — contradicting both the source authority and this repo's own examples — and only a human reviewer caught it. There is no automated authority check, so that error class recurs. The names are also a proprietary, trademarked corpus the project has no license to redistribute. The protocol already handles the read direction correctly: `geo-delivery-metrics` carries an optional `geo_name` beside the required `geo_code`, so a seller *can* render from its own catalog rather than force the buyer to reconstruct a name from a bare code. It equally rules out the opposite over-correction — stapling display names onto targeting values as authoritative. "Albany" names two different DMAs (NY and GA); targeting values are IDs in a declared namespace, and a name rides along only as a non-authoritative label, if at all. + +**When you'd be right to push.** When AdCP itself mints the values, owning the table is interop, not data-ops — `v1-canonical-mapping.json` is the legitimate example: AdCP defined both the v1 format vocabulary and the v2 canonical it projects to, the set is additive (entries are never removed, only deprecated), and there is no external rights-holder. And when a single external authority publishes openly (ISO 3166, Eurostat NUTS, ONS ITL, GeoNames under CC-BY), the project *may* ship a thin **generated** mirror with provenance and a regeneration script — a projection, explicitly non-authoritative, demoted the moment the source drifts or a second source disagrees. The bar: name the authority, name the license, and explain why a fetch-once-cache-locally lookup doesn't already solve it. + +**Reviewer test.** Is there a single external authority for these values, and is it us? If an external body owns the truth, AdCP declares the namespace and the resolution contract and defers the bytes. "Everyone re-implements this annoying mapping" is a library opportunity, not a protocol mandate. + +→ The same anti-centralization instinct as principle 5, applied to reference data instead of trust: the [Registry](/dist/docs/3.2.0-beta.4/registry) helps resolve and discover, it does not become the ecosystem's lookup table. + +--- + +## Where the surface doesn't yet follow these principles + +The principles are credible to the extent we name where the surface still violates them. These are known and tracked. + +**`media_buy.execution.trusted_match` (principle 4).** The capabilities schema places TMP-related flags inside `media_buy.execution.trusted_match`, while the architecture page treats TMP as a peer transaction domain alongside Media Buy, Creative, and Signals. A reviewer using these principles to evaluate proposals lands in conflicting answers about where TMP-shaped flags belong. The schema sub-namespacing was right (per principle 4); the parent location is the open question. RFCs proposing changes to TMP capability declarations should expect this to be on the table. + +**`axe_integrations` and `axe_include_segment` / `axe_exclude_segment` (principles 1 and the [vendor-neutral rule in spec-guidelines](/dist/docs/3.2.0-beta.4/spec-guidelines#platform-agnosticism)).** These survive in the v3 schema as normative fields. AXE is a Scope3-originated brand. By the spec-guidelines test, these should have moved to `ext.axe` or replaced cleanly by `trusted_match` before 3.0 GA. They reflect a deprecation in progress, not a stable shape — proposals that build on these fields should expect them to be moved. + +**Three top-level keys for "things this agent does that aren't a domain" (principle 4).** `compliance_testing`, `experimental_features`, and `extensions_supported` each carry related-but-shaped-differently capability metadata at the top level. A reviewer would ask why these aren't unified. + +**Three signing-related top-level keys (principle 4).** `request_signing`, `webhook_signing`, and `identity` (operator JWKS) are all signing infrastructure metadata. Three top-level keys for one concern is exactly the "scannable top level" cost the principle warns about. + +**The trust substrate (principle 5).** Trust in 3.x is trust-on-first-use, rooted in each counterparty's `/.well-known/` + DNS + CDN. Key transparency is deferred to 4.0. ads.txt and sellers.json have been gamed by exactly this attack class for years. The principle is right; the substrate isn't yet what the principle deserves. See [Trust & Security](/dist/docs/3.2.0-beta.4/trust) for the explicit gap statement. + +These are the surface contradictions a sharp third-party reviewer flags on a first read. The honest answer is that some are deprecation in progress, some are unresolved, and at least one (the trust substrate) is the load-bearing 4.0 work. Naming them here keeps the principles credible. + +--- + +## How to use this page + +If you're drafting an RFC, work through the principles before you write the title. Most proposals that get bounced get bounced on one of the first two — proposing a field that doesn't exist (principle 1) or proposing a new task for a behavior already expressible via existing tasks plus modes (principle 2). The [Capabilities explorer](/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer) renders the actual schema tree; check it before you propose a new top-level key. + +If you're reviewing an RFC, the principles double as a triage filter. A proposal that names which principle it's pushing back on, and why, is doing the work; a proposal that doesn't recognize a principle applies usually needs a coverage-leading reply before any drafting happens. + +The principles aren't immutable. Each one was chosen against a specific trade-off, and each is up for renegotiation when the trade-off shifts. But the renegotiation is the work of an RFC, not the side effect of one — argue for changing the rule explicitly, with the cost of the change named, before proposing the change that depends on it. diff --git a/dist/docs/3.2.0-beta.4/protocol/format-references.mdx b/dist/docs/3.2.0-beta.4/protocol/format-references.mdx new file mode 100644 index 0000000000..65b1df8d67 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/format-references.mdx @@ -0,0 +1,72 @@ +--- +title: Format References +description: "How canonical format declarations, format-option references, and creative capability IDs differ in AdCP 3.2." +"og:title": "AdCP — Canonical format references" +--- + +AdCP 3.2 has three deliberately different format-related shapes. Do not substitute one for another. + +| Shape | Scope | Used for | +|---|---|---| +| `ProductFormatDeclaration` | Publisher or product contract | Full `format_kind` + `params` declaration in `adagents.json.formats[]`, `Product.format_options[]`, placements, and creative capabilities | +| `FormatOptionRef` | Product/package delivery routing | Selects a publisher or product option without copying its declaration | +| `capability_id` | One creative agent | Selects that agent's build, validation, or preview path | + +## Full declaration + +```json +{ + "format_option_id": "homepage_image", + "format_kind": "image", + "params": { + "width": 300, + "height": 250, + "slots": [ + { "asset_group_id": "image_main", "asset_type": "image", "required": true } + ] + } +} +``` + +Products always carry full declarations in `format_options[]`. A product never contains a bare capability reference. + +## Option reference + +Publisher option: + +```json +{ + "scope": "publisher", + "publisher_domain": "daily-pulse.example", + "format_option_id": "homepage_image" +} +``` + +Product-local option: + +```json +{ + "scope": "product", + "format_option_id": "homepage_image" +} +``` + +Use these in package selectors and `creative_manifest.format_option_ref`. A publisher-scoped reference resolves by `{publisher_domain, format_option_id}`; a product-scoped reference resolves only inside the enclosing product/package context. + +## Creative capability selector + +```json +{ + "target_capability_id": "homepage_image_builder" +} +``` + +The value comes from the selected creative agent's `get_adcp_capabilities.creative.supported_formats[].capability_id`. It is meaningful only at that agent endpoint. It must not appear on products, placements, manifests, or creative assets. + +## Deprecated named references + +The compound `{agent_url, id}` `format_id` shape and `format_ids[]` arrays are deprecated in 3.2. Implementations may read or project them for older 3.x peers, but new examples and authored resources use exactly one canonical selector route. New buyers MUST NOT dual-emit `format_ids[]`. + +Receivers remain compatible with older 3.x multi-route requests. They resolve every present route independently before applying precedence. An unresolved option reference or unprojectable legacy ID is rejected with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). Once all routes resolve, receivers derive the product options selected by each route and require those sets to match; legacy parameter compatibility follows the asymmetric [v2 narrows v1](/dist/docs/3.2.0-beta.4/creative/canonical-formats#narrows-formal-definition-normative) relation instead of raw object equality. Conflicts are rejected with [`CONFLICTING_SELECTORS`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-conflicting-selectors); they are never resolved by silently ignoring the legacy projection. Fixed-size image width and height are atomic and both dimensions participate in compatibility. + +See [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) for matching, narrowing, publisher resolution, and migration details. diff --git a/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities.mdx b/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities.mdx new file mode 100644 index 0000000000..1588d7231e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities.mdx @@ -0,0 +1,1892 @@ +--- +title: get_adcp_capabilities +description: "get_adcp_capabilities is the first call a buyer makes to discover an AdCP seller's supported protocols, auth model, version, and feature capabilities. Request and response schema reference." +"og:title": "AdCP — get_adcp_capabilities" +testable: false +--- + +Discover a seller's protocol support and capabilities across all AdCP protocols. This is the first call a buyer should make to understand what a seller supports. + +<Info> + **Why this shape.** Capabilities are organized into ~14 top-level domain keys + (one per protocol plus identity and signing infrastructure), with feature + flags nested under each domain's `features`/`execution`/etc. sub-namespace. We + rejected a flat capability list — it forces every implementer to scan an + unbounded surface, and it removes the discoverability that comes from related + flags sitting next to each other. New capability flags belong under existing + domains, not in new top-level keys; declarations are commitments, not + advertisements (the conformance runner probes them). → [Capabilities + explorer](/dist/docs/3.2.0-beta.4/protocol/capabilities-explorer) walks the tree before you + propose. → [Design principle: capabilities are + commitments](/dist/docs/3.2.0-beta.4/protocol/design-principles#4-capabilities-are-commitments-declared-under-existing-buckets). +</Info> + +**Response Time**: ~2 seconds (configuration lookup) + +**Purpose**: + +- **AdCP discovery** - Does this agent support AdCP? Which versions? +- **Protocol support** - Which protocols (media_buy, signals, governance, sponsored_intelligence, creative, brand)? +- **Auth model** - Does this seller trust the agent directly, or must each operator authenticate independently? +- **Detailed capabilities** - Features, execution integrations, geo targeting, portfolio + +<Note> + **Per-caller authorization is NOT reported here.** `get_adcp_capabilities` + returns the seller's surface — everything it *could* do for any authorized + caller. To discover what *you* are allowed to do on a specific account (which + tasks are callable for your identity, which request fields are modifiable, any + named scope like `attestation_verifier`), read the `authorization` object on + per-account entries in [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) + and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses. See + [Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization) for the + full shape and semantics. +</Note> + +**Request Schema**: [`/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json) + +## Tool-Based Discovery + +AdCP uses native MCP tool discovery and the [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension) on A2A 1.0. **The presence of `get_adcp_capabilities` in an agent's tool or skill list indicates that runtime AdCP discovery is available.** + +``` +Discovery Flow: +1. Browse the agent's tool list (MCP), or find and activate the versioned AdCP profile in AgentCard.capabilities.extensions[] (A2A) +2. See the get_adcp_capabilities tool/skill → Runtime AdCP discovery is available +3. Call get_adcp_capabilities → Get version, protocols, features, capabilities +4. Proceed based on returned capabilities +``` + +This approach: + +- Uses native MCP discovery or A2A 1.0's standard extension mechanism +- Always returns current capabilities (not stale metadata) +- Single source of truth for all capability information + +:::note +The A2A profile declaration identifies only the wire binding. Its `params` member is omitted or empty. Do not place AdCP versions, domains, or feature flags there: `get_adcp_capabilities` remains the single runtime authority for those values. The unversioned v2 `adcp-extension.json` capability payload remains removed. +::: + +## Version Negotiation + +Sellers declare which major versions they support via `adcp.major_versions` in the response. Buyers declare which version they're using via `adcp_major_version` on the request. + +``` +Version Negotiation Flow: +1. Buyer calls get_adcp_capabilities with adcp_major_version: 2 +2. Seller checks 2 against its major_versions: [2, 3] +3. Version is supported → seller returns capabilities for v2 +4. Buyer includes adcp_major_version: 2 on all subsequent requests +``` + +`adcp_major_version` is an optional field on every AdCP request schema. Buyers SHOULD include it on all requests when interacting with a multi-version seller. + +**Seller behavior:** + +- If `adcp_major_version` is provided and supported → respond using that version's schemas +- If `adcp_major_version` is provided but unsupported → return [`VERSION_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-version-unsupported) (buyer should call without `adcp_major_version` to discover supported versions) +- If `adcp_major_version` is omitted → assume the highest supported version + +**Why major versions, not minor?** Semver policy guarantees backward compatibility within a major version for stable surfaces. Explicitly experimental surfaces follow the narrower [experimental-status contract](/dist/docs/3.2.0-beta.4/reference/experimental-status): they require runtime opt-in through `experimental_features` and may change inside 3.x after the required notice. A seller at 3.1 can otherwise serve a buyer at 3.0 without negotiation. The capability model handles feature-level differences — buyers check specific capabilities (targeting systems, features, extensions) rather than version numbers to determine compatibility. + +## Request Parameters + +| Field | Type | Description | +|-------|------|-------------| +| `adcp_major_version` | integer | Optional. The AdCP major version the buyer's payloads conform to. When provided, the seller validates against its `major_versions` and returns [`VERSION_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-version-unsupported) if not in range. When omitted, the seller assumes the highest major version it supports. | +| `protocols` | string[] | Optional. Filter to specific protocols (`media_buy`, `signals`, `governance`, `sponsored_intelligence`, `creative`, `brand`). If omitted, returns all supported protocols. | + +## Response Structure + +### adcp + +Core AdCP protocol information: + +| Field | Type | Description | +|-------|------|-------------| +| `major_versions` | integer[] | **Required.** AdCP major versions supported (e.g., `[3]`) | +| `idempotency` | object | **Required.** Idempotency semantics. See [idempotency](#idempotency). | +| `capability_changes` | object | Optional. Freshness metadata and opt-in `capabilities.changed` invalidation webhooks for cached capability documents. See [capability_changes](#capability_changes). | +| `attestations` | object | Optional. Allowlisted portable-attestation claim types, issuers, resolvers, verifiers, proof formats, and delivery methods this agent evaluates. See [attestations](#attestations). | + +#### idempotency + +Declares whether this seller honors `idempotency_key` replay protection. AdCP requires keys on mutating requests. In the compact AdCP 3.2 product lifecycle, [`request_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals), [`refine_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals), and [`decline_proposals`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals) require keys; [`list_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products) and the legacy 3.x [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) facade leave the key optional. See [security.mdx § Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). Clients MUST NOT assume a default; a seller without this block is non-compliant and should be treated as unsafe for retry-sensitive operations. + +| Field | Type | Description | +|-------|------|-------------| +| `supported` | boolean | **Required.** Whether the seller deduplicates replays. When `false`, sending an `idempotency_key` is a no-op — the seller will NOT return [`IDEMPOTENCY_CONFLICT`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-conflict) or [`IDEMPOTENCY_EXPIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-idempotency-expired), and a naive retry WILL double-process. Buyers MUST use natural-key checks (e.g., [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) plus request context such as `context.internal_campaign_id` or package context such as `context.buyer_ref`) before retrying spend-committing operations. | +| `replay_ttl_seconds` | integer | Required when `supported: true`. How long the seller retains a canonical response for a key. Minimum `3600` (1h); recommended `86400` (24h); maximum `604800` (7d). | + +```json +{ + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + } +} +``` + +Sellers that do not support replay dedup declare it explicitly: + +```json +{ + "adcp": { + "major_versions": [3], + "idempotency": { "supported": false } + } +} +``` + +**Verifying the declaration.** `idempotency.supported: true` is a trust-bearing claim that enables buyers to safely retry spend-committing operations. A compromised or buggy seller could advertise `true` while silently ignoring keys, causing buyer double-spend on retry. Buyers and conformance runners SHOULD probe the declaration with a deliberate payload-mutation replay: send two requests with the same `idempotency_key` but different canonical payloads — a conformant seller MUST return `IDEMPOTENCY_CONFLICT` on the second. Sellers declaring `supported: true` MUST pass this probe as part of the baseline compliance storyboard before the declaration is considered verified. + +#### capability_changes + +Declares how consumers should cache and invalidate this agent's capability document. Capabilities are agent-wide and usually stable, so buyers and registries can cache them; this block gives them a bounded TTL, an opaque revision token, and an optional push signal for material changes. + +When `notifications.supported: true`, sellers MUST include `cache_ttl_seconds` and `capabilities_version`. The webhook is the fast path; the TTL and opaque revision marker are the recovery path when delivery is missed or delayed. `last_modified` remains useful human-readable metadata, but it is not sufficient as the notification fence. + +| Field | Type | Description | +| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `capabilities_version` | string | Opaque revision token for the full capability document. Required when `notifications.supported: true`. Sellers SHOULD change it whenever any material field in `get_adcp_capabilities` changes. Buyers compare for equality only. | +| `last_modified` | date-time | Timestamp when the seller last changed the advertised capability document. Use this instead of legacy top-level `last_updated` when both are present. | +| `cache_ttl_seconds` | integer | Maximum time a buyer or registry SHOULD reuse this response without a fresher invalidation signal. Required when `notifications.supported: true` so receivers recover from missed fires. | +| `notifications` | object | Whether the seller supports `capabilities.changed` webhooks. When `supported: true`, register subscribers with [`sync_agent_notification_configs`](/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs). | + +```json +{ + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 }, + "capability_changes": { + "capabilities_version": "rev_20260702_091455", + "last_modified": "2026-07-02T09:14:55Z", + "cache_ttl_seconds": 3600, + "notifications": { + "supported": true, + "registration_task": "sync_agent_notification_configs", + "event_types": ["capabilities.changed"], + "coalescence_window_seconds": 300 + } + } + } +} +``` + +A **material capability change** is any externally advertised contract change that can affect routing, validation, conformance coverage, or task behavior. Examples include sandbox support, `require_operator_auth`, supported billing, account resolution mode, supported protocol versions, task availability, reporting delivery methods, creative-library support, targeting support, and any feature gate a buyer checks before sending a request. + +Non-contract operational changes that do not alter the `get_adcp_capabilities` response body do not require a revision or webhook fire. + +`capabilities.changed` webhooks are invalidation signals, not replacement documents. The payload identifies the agent, change time, reason, required post-change `capabilities_version`, and optional advisory `changed_paths[]`; receivers SHOULD re-run `get_adcp_capabilities` and replace their cached snapshot from the fresh response. Sellers MUST publish the new capability snapshot before firing the webhook so the webhook's `capabilities_version` is observable on read. If a receiver reads before the webhook revision is observable, it SHOULD retry with normal transient-error backoff and retain the prior cached snapshot until a matching or newer authoritative snapshot is available. The payload schema is [`/schemas/3.2.0-beta.4/core/capabilities-changed-webhook.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/capabilities-changed-webhook.json). + +### adcp.governance_enforcement + +Declares cross-role enforcement of buyer governance for consequential tasks. This core capability is intentionally separate from the top-level `governance` block: `governance` describes an agent that provides governance services, while `adcp.governance_enforcement` describes a media, signal, brand, creative, or other service that consumes governance authorization before committing state. + +| Field | Type | Description | +| ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tasks` | object[] | Task-scoped enforcement claims. Each entry has `task` and `modes`; the corresponding request schema defines when the operation is commitment-bearing through `x-governed-commitment`. `task` is the semantic uniqueness key: emit one entry per task and combine modes in that entry. | + +```json +{ + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 }, + "governance_enforcement": { + "tasks": [ + { + "task": "create_media_buy", + "modes": ["signed_context", "online_execution_check"] + }, + { "task": "activate_signal", "modes": ["signed_context"] } + ] + } + } +} +``` + +The declaration is part of the experimental `governance.campaign` surface, so an implementing service also lists `governance.campaign` in top-level `experimental_features`. `signed_context` is defined for every governed role. `online_execution_check` is available for the legacy [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) / [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) facades and the compact [`buy_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products), [`accept_proposal`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal), and [`control_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy) lifecycle, where `planned_delivery` provides a standardized prepared-result shape. Proposal acceptance binds both `proposal_id` and `proposal_terms_digest`. Online checking always implies `signed_context`; the state transition follows prepare → check → commit and commits atomically only when the response is `approved`. + +Advertising a task also commits the service to deterministic applicability. It resolves the commercial account from the request or existing resource before the side effect; when it cannot do so, it returns [`ACCOUNT_REQUIRED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-account-required). It never treats a missing token as evidence that the buyer is ungoverned. Conditional task annotations use `trigger_overrides_exemption`: any commitment-increasing part of a mixed atomic update requires governance. + +AdCP 3.2 conformance selects role-specific governance workflows from exact +entries in `adcp.governance_enforcement.tasks[]`. The legacy +`media_buy.governance_aware` boolean remains a compatibility signal for older +runners, but it is not the 3.2 certification gate. + +### adcp.attestations + +Declares the portable attestations this agent is prepared to evaluate. The block is shared across protocol roles and therefore lives under `adcp`: a seller may evaluate an attestation directly, while a governance agent may evaluate the same presentation for a governance action. + +The authoritative shape is [`attestation-capabilities.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attestation-capabilities.json). See [Portable attestations](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#portable-attestations) for the normative resolution and verification procedure. + +```json +{ + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 }, + "attestations": { + "accepted_claim_types": [ + "https://claims.example/audience/methodology-reviewed", + "https://adcontextprotocol.org/claims/rights/grant" + ], + "accepted_proof_formats": [ + "https://www.w3.org/TR/vc-jose-cose/" + ], + "supported_delivery_methods": [ + "issuer_credential_id", + "embedded" + ], + "accepted_issuers": [ + { + "issuer": { + "type": "origin", + "origin": "https://credentials.example" + }, + "claim_types": ["https://claims.example/audience/methodology-reviewed"], + "resolvers": [ + { + "resolver_id": "primary", + "url": "https://resolver.credentials.example/v1/credentials", + "authentication": "evaluator_managed" + } + ] + }, + { + "issuer": { + "type": "brand", + "brand": { "domain": "novabrands.example", "brand_id": "nova_talent" } + }, + "claim_types": ["https://adcontextprotocol.org/claims/rights/grant"], + "proof_formats": ["https://www.w3.org/TR/vc-jose-cose/"], + "resolvers": [ + { + "resolver_id": "rights-primary", + "url": "https://rights.novabrands.example/credentials", + "authentication": "evaluator_managed" + } + ] + } + ], + "accepted_verifiers": [ + { + "agent_url": "https://verification.example/adcp" + } + ], + "max_embedded_credential_bytes": 262144 + } + } +} +``` + +| Field | Type | Description | +|---|---|---| +| `accepted_claim_types` | URI[] | **Required.** Open claim identifiers the evaluator accepts. This is evaluator policy, not an AdCP issuer or claim registry. | +| `accepted_proof_formats` | URI[] | **Required.** Open credential/proof formats the evaluator can verify. | +| `supported_delivery_methods` | string[] | **Required.** Any of `credential_uri`, `issuer_credential_id`, and `embedded`. | +| `accepted_issuers` | object[] | **Required.** Canonical issuers plus their permitted credential origins and evaluator-configured resolver endpoints. | +| `accepted_verifiers` | object[] | Optional verifier-agent allowlist. Presenter nominations must match this list but never control evaluator routing. | +| `max_embedded_credential_bytes` | integer | Optional embedded-proof byte limit; evaluators enforce it before parsing. Protocol maximum: 1 MiB. | + +Changing an attestation allowlist can change whether future requests are accepted and whether cached evaluations remain reusable. It is therefore a material capability change and SHOULD update `adcp.capability_changes.capabilities_version` and fire `capabilities.changed` when notifications are enabled. + +The rights-grant claim URI is a domain profile, not a globally trusted issuer list. A seller that advertises `media_buy.rights_attestations` also lists `https://adcontextprotocol.org/claims/rights/grant` here and configures each acceptable rights-agent issuer, resolver, proof format, and credential origin. Buyer-supplied values cannot expand that policy. + +### supported_protocols + +AdCP protocols this agent supports. This is the single capability axis — each value both (a) declares which tools the agent implements _and_ (b) commits the agent to pass the baseline compliance storyboard at `/compliance/{version}/protocols/{protocol}/`. The runner maps JSON snake_case → URL kebab-case (`media_buy` → `/compliance/.../protocols/media-buy/`). + +```json +{ + "supported_protocols": ["media_buy", "creative"] +} +``` + +Valid values: `media_buy`, `creative`, `signals`, `governance`, `brand`, `sponsored_intelligence`. + +See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for every protocol's scope. Support for the [compliance test controller](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller) is declared via the separate `compliance_testing` capability block (below), not as a protocol value. + +### specialisms + +Optional specialization claims. Each entry corresponds to a narrow storyboard at `/compliance/{version}/specialisms/{id}/`. Every specialism rolls up to one protocol in `supported_protocols` — claiming `sales-guaranteed` requires `media_buy`. The runner rejects a specialism whose parent protocol is missing. + +```json +{ + "specialisms": ["sales-guaranteed", "creative-template"] +} +``` + +See the full [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for every specialism and the [enum schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/specialism.json) for the authoritative list. + +### oauth + +Introduced in AdCP 3.2. Declares OAuth support for the agent's inbound transport. This is separate from `account.authorization_endpoint`, which is specifically an operator credential-acquisition URL. + +```json +{ + "oauth": { + "supported": true + } +} +``` + +Setting `oauth.supported: true` opts the agent into the universal [`oauth_setup`](/compliance/latest/universal/oauth-setup.yaml) storyboard. The agent must publish RFC 9728 protected-resource metadata for its endpoint and valid RFC 8414 metadata for every authorization server named there. Agents that authenticate only with static Bearer keys, HTTP Basic, mTLS, or RFC 9421 omit the block or set `supported: false`. + +### Capability slot gaps + +SDK helpers such as `definePlatform` can project a platform implementation into narrower capability slots. Treat those slots as commitments: only declare a slot when the agent can execute the corresponding task path end to end. + +If a storyboard or local test vector targets a slot the agent does not declare, the expected conformance outcome is `not_applicable`, not failure. Until runner-side enforcement lands in `adcp-client#2244`, implementers running custom or prerelease suites should add explicit skip gates for vectors outside the declared slot scope. Do not work around a missing slot by declaring it and returning placeholder responses; that turns an honest coverage gap into a failed capability claim. + +### account + +Account and authentication capabilities. All sellers should declare this section — buyers read it before calling [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts), [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts), or any authenticated task. Even simple publishers need account management to handle billing relationships and sandbox testing. + +| Field | Type | Description | +|-------|------|-------------| +| `supported_billing` | string[] | **Required.** Billing models this seller supports: `operator`, `agent`, or `advertiser`. When the buyer calls `sync_accounts`, every entry must select one of these values. | +| `supported_account_currency_modes` | string[] | **Required for 3.2 advertiser-account provisioning; additive/optional on the shared 3.x wire schema for 3.1 compatibility.** Models this seller supports: `fixed`, `per_media_buy`, or both. A buyer includes `currency` in `sync_accounts` for `fixed` and omits it for `per_media_buy`. When both are advertised, presence or absence selects the model. Absence means an older seller has not exposed currency-mode discovery; it does not imply support for either mode. | +| `timezone` | object | **Required for 3.2 advertiser-account provisioning; additive/optional on the shared 3.x wire schema for compatibility.** `seller_fixed` advertises one `fixed_timezone` for every account. `account_fixed` declares whether each immutable account timezone is `seller_assigned` or `buyer_selected`; buyer-selected mode also publishes the exact `supported_timezones`. | +| `require_operator_auth` | boolean | Default: `false`. Declares who must authenticate; it does not by itself declare whether OAuth is used, whether `list_accounts` is exposed, or which `sync_accounts` modes are supported. When `true`, each operator authenticates independently and account-scoped calls use seller/storefront-assigned `account_id` values. When `false`, the agent is trusted and calls use the advertiser natural key: `brand` + `operator` + optional `operator_unit`, fixed `currency`, optional buyer-selected `timezone`, and `sandbox`. `operator_unit.id` belongs to the operator and is not the seller's `account_id`. Buyer-declared sellers normally provision through `sync_accounts`, MUST continue accepting the natural key, and SHOULD expose `list_accounts` so all key fields can be recovered after a cold start. | +| `authorization_endpoint` | string | OAuth URL for operator authentication. Present when the seller supports OAuth for operator authentication. Relevant when `require_operator_auth: true`; if absent, operators obtain credentials out-of-band (seller portal, API key). | +| `required_for_products` | boolean | Default: `false`. When `true`, the buyer must establish an account before calling [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products). When `false`, the buyer can browse products without an account — useful for price comparison and discovery before committing to a seller. | +| `account_financials` | boolean | Default: `false`. When `true`, the seller supports [`get_account_financials`](/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials) for querying spend, credit, and invoice status. Only applicable to operator-billed accounts. | +| `identity_updates` | object | Optional capability gate for reconciling an existing account's buyer-controlled operator identity through `sync_accounts` settings-update mode. `supported_changes` declares `operator_unit_name`, `operator_unit`, and/or `operator`. | +| `notifications` | object | Optional. Declares durable account lifecycle webhook support. When `supported: true`, buyers may register `account.status_changed` subscribers with `sync_accounts.accounts[].notification_configs[]` and repair by re-reading `list_accounts`. | +| `sandbox` | boolean | Default: `false`. Strongly recommended for production sales agents. When `true`, the seller supports sandbox accounts for testing. Account-id namespaces discover pre-existing test accounts through `list_accounts` or out-of-band setup. Buyer-declared accounts use `sandbox: true` in `sync_accounts`, or in the natural-key account reference when the seller uses unambiguous lazy provisioning — no real platform calls or spend. See [Sandbox mode](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox). | + +#### account.notifications + +Declares whether the seller supports durable account lifecycle invalidation webhooks. This is the capability gate for `account.status_changed`, including billing-related status transitions such as `payment_required`, `suspended`, recovery to `active`, and terminal `closed`. + +```json +{ + "account": { + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"], + "timezone": { + "mode": "account_fixed", + "account_selection": "buyer_selected", + "supported_timezones": ["America/New_York", "Europe/London", "UTC"] + }, + "notifications": { + "supported": true, + "registration_task": "sync_accounts", + "read_task": "list_accounts", + "event_types": ["account.status_changed"], + "supports_webhook_activity": true + } + } +} +``` + +When `supported: false` or absent, buyers MUST NOT assume durable account status webhooks are available. They can still use the one-shot `sync_accounts.push_notification_config` callback for the initial provisioning result when offered, and poll `list_accounts` for later account status changes. + +See [Provision a seller-mediated account](/dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough) for the complete discovery, registration, human setup, webhook, and repair sequence. + +#### account.timezone + +Account timezone is an immutable operational default, not an assumption that every upstream clock is identical. A `seller_fixed` seller advertises one `fixed_timezone` and buyers omit `timezone` during provisioning. An `account_fixed` seller returns a timezone on every account; when `account_selection` is `buyer_selected`, buyers MUST provide one advertised value to `sync_accounts`, and that value participates in the natural account key. When it is `seller_assigned`, buyers omit the field and discover the value from `sync_accounts` or `list_accounts`. + +Calendar-day features inherit `Account.timezone` only when their capability says so. Product reporting continues to use `reporting_capabilities.timezone`, account financials use the timezone returned by `get_account_financials`, and daily caps use `budget_capping.timezone_basis`. This prevents a seller from claiming that distinct reporting, billing, and delivery clocks are aligned when the upstream platform does not align them. + +#### account.identity_updates + +Declares whether the seller accepts a complete desired `operator_identity` on an existing account through `sync_accounts` settings-update mode. + +```json +{ + "account": { + "supported_billing": ["operator", "agent"], + "identity_updates": { + "supported": true, + "supported_changes": ["operator_unit_name", "operator_unit", "operator"] + } + } +} +``` + +`operator_unit_name` covers display-name-only changes within the current operator. `operator_unit` covers adding, removing, or changing the stable unit ID within the current operator and also implies name changes. `operator` covers an inter-entity operator-domain handoff and encompasses the complete replacement identity, including any simultaneous unit addition, removal, or change; a seller does not also need to advertise `operator_unit` for that cross-operator replacement. Operator-domain handoffs always require seller-mediated approval of the current account authority, verified brand authorization, destination-operator acceptance, and operator-scoped billing and grants. Sellers declaring support MUST return account `revision` from `sync_accounts` and `list_accounts`, require and atomically enforce a submitted revision, preserve account identity and account-scoped resources during rekeying, expose any pending or rejected transition as `identity_change`, and return `identity_change_preview` for `dry_run: true`. When the capability is absent or `supported: false`, buyers MUST NOT submit `operator_identity`; sellers reject it with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). + +See [`sync_accounts` identity reconciliation](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts#reconciling-operator-identity) for replacement, approval, collision, and stale-key semantics. + +#### Auth models + +**Buyer-declared accounts** (`require_operator_auth: false`) — The seller trusts the agent's identity claims. The agent authenticates once with its own bearer token, and account-scoped calls use that credential plus the advertiser natural key (`brand` + `operator` + optional `operator_unit`, fixed `currency`, optional buyer-selected `timezone`, and `sandbox`). `brand.countries[]` may qualify the commercial advertiser identity without targeting delivery. Most sellers expose `sync_accounts` so the buyer can declare the relationship and select billing or other settings before use. A seller MAY instead auto-provision on the first account-scoped request when those settings are unambiguous from capabilities or onboarding defaults; in that mode it MUST expose `list_accounts` as the recovery read and MUST keep accepting the natural key. Auto-provisioning is not conformant when buyer input is needed to resolve billing, timezone, terms, sandbox setup, notifications, or other account settings before the operation. + +**Account-id namespaces** (`require_operator_auth: true`) — Each operator must authenticate with the seller directly. The agent obtains a credential per operator — via OAuth using `authorization_endpoint`, or out-of-band — opens a per-operator session, and passes seller-assigned `account_id` values on subsequent requests. OAuth is credential acquisition, not an account taxonomy axis. Two namespace patterns use the same wire reference: upstream-managed sellers expose `list_accounts`, making explicit account resolution mandatory before account-scoped calls; seller-defined namespaces without `list_accounts` provide account IDs out-of-band. SDKs SHOULD lazily call `list_accounts` when first needed, auto-select a singleton, cache it per credential/session, and still send explicit `AccountRef` values on required-account calls. + +For sandbox, the path follows the account namespace: account-id namespaces discover pre-existing test accounts via `list_accounts` or out-of-band setup; buyer-declared accounts send `sandbox: true` through `sync_accounts` or, for a lazy-provisioning seller, in the natural-key account reference. + +See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#what-sellers-declare) for full workflows and [seller patterns](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#seller-patterns) for common combinations of auth model and billing support. + +### media_buy + +Media-buy protocol capabilities. Only present if `media_buy` is in `supported_protocols`. Sellers declaring `media_buy` should also include `account` (with `supported_billing`) and `media_buy.portfolio` — buyers need both to establish billing and understand inventory coverage. Compliance testing validates their presence. + +#### lifecycle_tools + +AdCP 3.2 sellers use `lifecycle_tools` to advertise any supported subset of `get_products`, `list_products`, `request_proposals`, `refine_proposals`, `decline_proposals`, `buy_products`, `accept_proposal`, and `control_media_buy`. When absent, buyers use the legacy `get_products`, `create_media_buy`, and `update_media_buy` facades. The compact tools share the authorization framework with their legacy peers, but grants remain task-specific and each stateful tool has its own idempotency identity: retry with the same tool name and payload. SDKs use the release manifest's `legacy_fallback` metadata to distinguish a direct one-call translation from a stateful orchestration or an unsupported fallback; see [Same-major tool replacements](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation#same-major-tool-replacements). + +#### availability_horizon + +`media_buy.availability_horizon: true` declares flexible-window availability discovery: the seller parses `offer_filters.availability_horizon` and answers with `time`-dimensioned forecast points carrying `availability_status` — half-open, non-overlapping windows that partition the requested horizon (gaps signalled via `incomplete[]`), with status computed from all booking eligibility constraints, not only competing holds. See [Flexible Availability Windows](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#flexible-availability-windows). When `false` or absent, support is unknown: buyers SHOULD use exact `start_date`/`end_date` filtering instead, and sellers MAY ignore the field or reject it. Conformance storyboards gate flexible-window checks on this declaration. + +#### proposal_refinement + +When `lifecycle_tools` includes `refine_proposals`, `proposal_refinement` optionally advertises which typed revision dimensions the seller can parse and mechanically validate: + +| Dimension | Request field | Deterministic check | +|---|---|---| +| `total_budget` | `constraints.total_budget` | Compare the inclusive range and currency with `commercial_terms.total_budget`. | +| `cpm` | `constraints.cpm` | Compare the ceiling and currency with every purchase's fixed `cpm`/`vcpm` `pricing.fixed_price`. | +| `impressions` | `constraints.impressions` | Sum `commercial_terms.purchases[].impressions` and compare with the minimum. | +| `flight` | `constraints.flight` | Compare `commercial_terms.start_time` and `end_time` with the window bounds. | +| `product_changes` | `product_changes` | Check each keyed `include`/`omit` action against `commercial_terms.purchases[].product_id`. | +| `alternatives` | `alternatives.count` | Count drafts and verify that their `commercial_terms` — and therefore `terms_digest` values — are distinct. | +| `criteria` | `criteria` | Apply structured discovery changes and preserve omitted criteria from the source proposal. | + +`alternatives.count` has a protocol maximum of 10. `max_alternatives` may accompany `alternatives` to publish a lower pre-flight count ceiling and therefore cannot exceed 10. A request whose `alternatives.count` exceeds that declared ceiling MUST fail at task level with [`VALIDATION_ERROR`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-validation-error); `error.field` identifies the offending `refinements[i].alternatives.count`. Sellers MUST NOT silently clamp the count or reinterpret the ceiling as an `alternatives_unavailable` result. + +An explicit `supported_dimensions` list is authoritative, including an empty list meaning the seller supports `ask`-only refinement but no typed dimensions. Buyers SHOULD NOT send omitted dimensions, and sellers MUST reject them at task level with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature). Such errors SHOULD carry the [`error-details/unsupported-refinement-dimension.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.0/error-details/unsupported-refinement-dimension.json) shape — `details.unsupported_dimension` and `details.supported_dimensions` — so an authorized buyer can remove or translate unsupported fields without another capability round trip. This task-level rejection applies to the complete request: no sibling refinement succeeds and no proposal is created, even when the unsupported dimension appears after otherwise supported entries. When `proposal_refinement` is absent, support is unknown; sellers report unsupported dimensions through `partial` or `unable` results instead. `proposal_refinement` is valid only when `lifecycle_tools` includes `refine_proposals`. + +This capability is about parse and validation support, never commercial willingness. Free-text `ask` interpretation remains seller competence rather than a boolean capability. Multi-proposal finalization deliberately retains its separate failure-as-discovery model through [`MULTI_FINALIZE_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-multi-finalize-unsupported): it describes atomic infrastructure topology, while the core typed revision fields must be discoverable before a deterministic buyer constructs a request. + +#### outcome_target + +`media_buy.outcome_target: true` declares reverse-forecast planning: the seller parses `criteria.outcome_target` (a compact goal — a `forecastable-metric` delivery metric or an `event-type` conversion event — plus a desired volume) and solves for budget, answering with `total_budget_guidance` on proposals and forecasts whose points carry the goal's key in `metrics`. See [Reverse forecasting](/dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals#reverse-forecasting-with-outcome_target). When `false` or absent, support is unknown: buyers SHOULD express outcome goals in `brief` prose instead, and sellers reject a structured `outcome_target` with [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature) rather than silently ignoring it. + +#### budget_capping + +`budget_capping` advertises hard daily caps independently at `media_buy` and `package` scopes. A media-buy cap bounds aggregate daily spend without allocating it; package caps add subordinate ceilings and are never reservations. Sellers MUST reject an undeclared scope with `UNSUPPORTED_FEATURE` before mutation and MUST NOT reinterpret `daily_budget_cap` as a soft pacing target. + +```json +{ + "media_buy": { + "budget_capping": { + "supported_scopes": ["media_buy", "package"], + "supported_periods": ["day"], + "timezone_basis": "account", + "buyer_timezone_override": true + } + } +} +``` + +`timezone_basis: "account"` uses the selected `Account.timezone`, allowing two accounts on the same seller to have different cap days. `timezone_basis: "fixed"` requires `fixed_timezone` and uses that feature-specific boundary for every buy. A buyer override is media-buy-level and applies to every cap on that buy. The accepted effective timezone is echoed as `budget_cap_timezone`; DST transition dates remain one calendar day carrying the full cap. Billing and reporting timezones remain independently explicit and MUST NOT be inferred from the cap basis. + +:::note 3.0 breaking changes +The following fields have been removed from the capabilities response: + +- `media_buy.reporting` — Reporting is implied by `media_buy`. Use product-level `reporting_capabilities` instead. +- `features.content_standards` — Replaced by `media_buy.content_standards` object. Presence of the object indicates support. +- `features.audience_targeting` — Replaced by `media_buy.audience_targeting` object. Presence of the object indicates support. +- `features.conversion_tracking` — Replaced by `media_buy.conversion_tracking` object. Presence of the object indicates support. +- `execution.targeting.device_platform`, `device_type` — Implied by `media_buy` support. +- `execution.targeting.audience_include`, `audience_exclude` — Implied by `audience_targeting` object presence. +- `execution.trusted_match.supported` — Object presence indicates support. +- `brand.identity` — Implied by `brand` in `supported_protocols`. [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) is always available. +::: + +#### reporting_delivery_methods + +Declares which push-based delivery methods are available across the seller's product portfolio. Polling via [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) is a required task for all `media_buy` sellers regardless of this field. + +| Method | Description | Configuration | +| --------- | --------------------------------------------------- | -------------------------------------------------- | +| `webhook` | Seller pushes to buyer-provided URL | Buyer configures `reporting_webhook` per media buy | +| `offline` | Seller pushes batch files to a cloud storage bucket | Seller provisions `reporting_bucket` per account | + +When absent, only polling is available. Cadence and metrics are declared per product in `reporting_capabilities`. + +When `offline` is declared, also include `offline_delivery_protocols` to declare which cloud storage protocols are supported (`s3`, `gcs`, `azure_blob`). Buyers express a protocol preference via `preferred_reporting_protocol` in `sync_accounts`; the seller provisions the account's `reporting_bucket` using a supported protocol. + +For offline delivery, the seller provisions a per-account bucket and grants the buyer read access out-of-band. The bucket location (including `file_retention_days`) appears on the account object returned by `sync_accounts` as `reporting_bucket`. See [Offline File Delivery](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#offline-file-delivery-based-reporting) for details. + +#### performance_feedback + +Presence declares that a seller accepts compact baseline/metric/provenance fields from a buyer orchestrator and returns a `feedback_id` for accepted assertions. + +| Field | Description | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `reports_application_status` | A seller response honestly distinguishes `accepted`, `applied`, and `not_applied` in `application_status`. `accepted` means stored and eligible for evaluation, not optimizer use. | + +Because this compact contract is experimental, a seller declaring `media_buy.performance_feedback` also lists `measurement.core` in top-level `experimental_features`. This does not make the seller a measurement provider or require `measurement` in `supported_protocols`. + +See [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) and `measurement_gateway` below for the provider → orchestrator → seller flow. + +#### creative_approval_mode + +Declares the seller's tenant-wide creative approval posture after creatives are assigned and automated validation passes. This is not a notification surface or a new approval workflow; it tells buyers and compliance runners whether human review can still block serving eligibility. Compliance runners use this declaration mainly to decide whether auto-approval-dependent storyboards such as `media_buy_seller/pending_creatives_to_start` apply. + +| Value | Description | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `auto_approve` | Human review does not block serving eligibility after creatives are assigned and automated validation passes. Auto-approval-dependent storyboards can run. | +| `require_human` | One or more products/accounts may require manual review before creatives become eligible to serve. Treat this as a tenant-wide worst-case ceiling until a product-level override exists. | + +Sellers with mixed approval policies SHOULD declare `require_human` unless every product/account that can be reached by the advertised agent supports automatic eligibility after automated validation. When the field is absent, approval behavior is legacy-unspecified; runners SHOULD NOT treat omission as an affirmative `auto_approve` claim. `ai_assisted` is intentionally not a value until the protocol defines what assistance changes in observable behavior. + +#### supported_indicator_types and relationship_notifications + +Lists the seller interpretations available on media-buy resource relationships. + +```json +{ + "media_buy": { + "supported_indicator_types": [ + "creative_fatigue", + "creative_quality_opportunity", + "creative_diversity_low", + "audience_saturation", + "inventory_shortfall_forecast", + "pacing_risk", + "budget_constrained" + ], + "relationship_notifications": { + "supported": true, + "registration_task": "sync_accounts", + "event_types": ["indicators.changed", "creative.assignment_changed"], + "repair_tasks": ["get_media_buys"], + "projection_tasks": ["list_creatives"], + "supports_webhook_activity": true + } + }, + "webhook_signing": { + "supported": true, + "profile": "adcp/webhook-signing/v1", + "algorithms": ["ed25519"], + "legacy_hmac_fallback": false + } +} +``` + +Indicator meaning follows the negotiated AdCP release rather than an independent version. This capability does not promise complete upstream coverage. Each present array names exact type coverage in `indicator_types_evaluated`. + +`supported_indicator_types` declares polling readback and does not require webhook infrastructure. A poll-only seller exposes those types through `get_media_buys` and omits `relationship_notifications`. When a seller does declare `relationship_notifications`, `indicators.changed` requires `supported_indicator_types`; a seller without an indicator catalog may instead declare `creative.assignment_changed` alone for assignment and approval changes, including when it is inline-only. Every notification declaration names `get_media_buys` as the complete authoritative repair read. A creative-library seller may include [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) as a bounded reverse projection; it mirrors relationship identity and scoped approval, while evaluated indicator snapshots reconcile toward the strictly newer `indicators_as_of`. Because this optional block advertises outbound invalidations, `webhook_signing` MUST include `supported: true`, `profile`, `algorithms`, and `legacy_hmac_fallback`. + +Subscriptions, when supported, are prospective: activation does not replay current conditions. Buyers establish a complete `get_media_buys` baseline by enumerating known IDs or requesting all seven statuses and following pagination to exhaustion, without `indicator_types`. Sellers then fire the applicable invalidation after observing a semantic change. Poll-only buyers simply repeat direct reads. See [Indicators and Warnings](/dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators). + +An inline-only declaration is therefore valid with `event_types: ["indicators.changed", "creative.assignment_changed"]` and `repair_tasks: ["get_media_buys"]`. Conversely, a creative-library seller may advertise `projection_tasks: ["list_creatives"]` without the assignment event when it cannot detect those changes; that declaration also requires `supported_protocols` to contain `creative`. Both additions are independent of each other, and `repair_tasks` remains the complete repair contract. + +#### features + +Optional media-buy features. Boolean declarations are commitments when true. Structured declarations commit only to the explicitly advertised sub-capabilities. + +| Feature | Description | +|---------|-------------| +| `inline_creative_management` | Deprecated 3.x compatibility capability for inline creatives in `create_media_buy` and `update_media_buy`; compact lifecycle tools never accept them | +| `property_list_filtering` | Honors `property_list` parameter in `get_products` | +| `catalog_management` | Supports [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) for catalog feed management | +| `catalog_item_availability_updates` | Supports buyer-pushed [`sync_catalogs` availability updates and queries](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs#immediate-item-availability) for revision-guarded suppression, restoration, and current-state readback in buyer-managed catalogs | +| `seller_optimized_budget` | Supports shared media-buy budgets and cross-package allocation goals | +| `bidding_policy` | Structured canonical bidding support by authored scope, allocation context, modes, strengths, and supported combinations | + +`bidding_policy` is intentionally not a boolean. Each `media_buy` or `package` scope contains independent `fixed` and/or `seller_optimized` profiles. Every profile's `modes` lists standalone support from `automatic`, `bid_amount`, `max_bid`, `cost_per`, and `roas`. A profile advertising standalone `cost_per` also declares `cost_per_strengths`; `roas` similarly declares `roas_strengths`. Optional `supported_combinations` entries independently identify `max_bid_with_cost_per` or `max_bid_with_roas` and list the strengths supported in that combination; a combination-only component need not appear in `modes`. Presence of one scope, allocation context, mode, strength, or combination makes no claim about another. + +```json +{ + "features": { + "bidding_policy": { + "media_buy": { + "fixed": { + "modes": ["max_bid", "cost_per"], + "cost_per_strengths": ["cap", "target"], + "supported_combinations": [ + { + "kind": "max_bid_with_cost_per", + "cost_per_strengths": ["cap"] + } + ] + } + }, + "package": { + "seller_optimized": { + "modes": ["automatic", "cost_per"], + "cost_per_strengths": ["cap"] + } + } + } + } +} +``` + +#### content_standards + +Content standards implementation details. Presence of this object indicates the seller supports content_standards configuration including sampling rates and category filtering. Gives buyers pre-buy visibility into local evaluation and artifact delivery capabilities. + +| Field | Type | Description | +|-------|------|-------------| +| `supports_local_evaluation` | boolean | Whether the seller runs a local evaluation model. When `false`, `local_verdict` will always be `unevaluated` and the `failures_only` filter on [`get_media_buy_artifacts`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts) is not useful. | +| `supported_channels` | string[] | Channels for which the seller can provide content artifacts. Helps buyers understand which parts of a mixed-channel buy will have content standards coverage. | +| `supports_webhook_delivery` | boolean | Whether the seller supports push-based artifact delivery via `artifact_webhook` configured at buy creation time. | + +**Example:** + +```json +{ + "content_standards": { + "supports_local_evaluation": true, + "supported_channels": ["display", "olv", "podcast"], + "supports_webhook_delivery": true + } +} +``` + +If `supports_local_evaluation` is `false`, the `failures_only` filter on `get_media_buy_artifacts` will return an empty result set — all verdicts will be `unevaluated`. + +#### execution + +Technical execution capabilities: + +| Field | Type | Description | +| ------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `trusted_match` | object | [TMP](/dist/docs/3.2.0-beta.4/trusted-match) support. When present, this seller supports real-time contextual and/or identity matching. Check individual products for per-product TMP capabilities. | +| `axe_integrations` | string[] | Deprecated. Legacy AXE URLs this seller can execute through. Use `trusted_match` for new integrations. | +| `creative_specs` | object | Creative specification support (VAST versions, MRAID, etc.) | +| `targeting` | object | Targeting capabilities (geo granularity) | + +##### axe_integrations + +`axe_integrations` is an array of Agentic Ad Exchange (AXE) endpoint URLs that this seller can execute through. AXE is the real-time execution layer for AdCP campaigns — it connects buyer agents to programmatic inventory via standardized exchanges. + +When a seller declares AXE URLs in their capabilities, buyers can: + +- Route impression-level execution through the declared exchange +- Use the exchange's targeting, optimization, and measurement capabilities +- Execute alongside the seller's direct-sold inventory + +Buyers discover AXE support via `get_adcp_capabilities` and filter products to AXE-enabled sellers using `required_axe_integrations` on [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products). + +##### creative_specs + +| Field | Type | Description | +|-------|------|-------------| +| `vast_versions` | string[] | VAST versions supported (e.g., `["4.0", "4.1", "4.2", "4.3"]`) | +| `mraid_versions` | string[] | MRAID versions supported | +| `vpaid` | boolean | VPAID support | +| `simid` | boolean | SIMID support | + +##### targeting + +| Field | Type | Description | +|-------|------|-------------| +| `geo_countries` | boolean | Country-level targeting using ISO 3166-1 alpha-2 codes | +| `geo_regions` | boolean or object | ISO 3166-2 subdivision inclusion targeting. Structured entries declare individual country/value support; a boolean is the legacy coarse rollup. | +| `geo_regions_exclude` | boolean or object | ISO 3166-2 subdivision exclusion targeting, declared independently from inclusion, with structured entries declaring individual country/value support. | +| `geo_metros` | object | Metro area targeting with system-specific support | +| `geo_postal_areas` | object | Postal area targeting with country and precision support | +| `geo_places` | object | Named-place targeting keyed by collision-safe identifier system, with exact country/type support, catalog versions, and resolver metadata | +| `age_restriction` | object | Age restriction capabilities with `supported` flag and `verification_methods` | +| `demographics` | object | Seller-wide discovery rollup for canonical demographic targeting. `supported: true` means at least one product supports the surface; inspect each product's `demographic_targeting` declaration for exact execution. | +| `language` | boolean or object | Language-preference targeting. The structured form may declare `supported` and exact selectable BCP 47 ranges in `supported_languages`; the boolean is the legacy coarse declaration. | +| `keyword_targets` | object | Keyword targeting with `supported_match_types` array (`broad`, `phrase`, `exact`). Presence indicates support. | +| `negative_keywords` | object | Negative keyword targeting with `supported_match_types` array. Presence indicates support. | +| `collection_list` | boolean | Collection list inclusion targeting. `true` is a seller-wide rollup; inspect each product's `overlay_support`. | +| `collection_list_exclude` | boolean | Collection list exclusion targeting. `true` is a seller-wide rollup; inspect each product's `overlay_support`. | +| `property_list` | boolean | Property list inclusion targeting. `true` is a seller-wide rollup; inspect each product's `overlay_support`. | +| `property_list_exclude` | boolean | Property list exclusion targeting. `true` is a seller-wide rollup; inspect each product's `overlay_support`. | +| `placement_selection` | boolean | Placement selection targeting. `true` is a seller-wide rollup; inspect each product's targetable placements and `overlay_support`. | +| `geo_proximity` | object | Proximity targeting from arbitrary coordinates (see below) | + +Device platform and device type targeting are implied by `media_buy` support. Audience include/exclude targeting is implied by the presence of the `audience_targeting` capabilities object. + +Subdivision inclusion and exclusion are declared independently through `geo_regions` and `geo_regions_exclude`. Seller-wide structured values are individual routing claims within the capability response's scope; they do not promise that multiple values are jointly composable or available through the same execution route or account. Only Product `overlay_support` supplies the binding set of executable targeting permissions for that Product. For other geographic levels that retain a combined legacy rollup, sellers SHOULD support both directions. For **any targeting-overlay list dimension** declared in this table — geo, `collection_list`, or `property_list` — if a seller only supports one direction, it MUST return a validation error for unsupported fields rather than silently ignoring them; silently dropping an exclusion is an unsafe failure mode. See [Targeting Overlays](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting) for exclusion semantics. + +**geo_proximity** specifies which proximity targeting methods are supported: + +| Field | Type | Description | +| ----------------- | -------- | --------------------------------------------------------------------------------------------- | +| `radius` | boolean | Simple radius targeting (distance circle from a point) | +| `travel_time` | boolean | Travel time isochrone targeting (requires a routing engine) | +| `geometry` | boolean | Pre-computed GeoJSON geometry (buyer provides the polygon) | +| `transport_modes` | string[] | Transport modes supported for isochrones: `driving`, `walking`, `cycling`, `public_transport` | + +**geo_metros** specifies which metro classification systems are supported: + +| System | Description | +| ---------------- | -------------------------------------------------- | +| `nielsen_dma` | Nielsen DMA codes (US market, e.g., `501` for NYC) | +| `uk_itl1` | UK ITL Level 1 regions | +| `uk_itl2` | UK ITL Level 2 regions | +| `eurostat_nuts2` | Eurostat NUTS Level 2 regions (EU) | + +**geo_postal_areas** specifies which country-local postal code systems are supported. The preferred shape is keyed by ISO 3166-1 alpha-2 country, with each country listing supported systems: + +```json +{ + "us_zip": true, + "us_zip_plus_four": true, + "US": ["zip", "zip_plus_four"], + "GB": ["outward", "full"], + "CA": ["fsa", "full"], + "ZA": ["postal_code"] +} +``` + +Use `postal_code` for the normal postal code string in countries without a more specific registered local system. During the 3.x migration, sellers SHOULD emit equivalent deprecated aliases such as `us_zip` alongside native country keys where an alias exists. Buyers and SDKs SHOULD normalize both shapes before making capability decisions. + +**geo_places** is keyed by place identifier system. Registered keys are `geonames`, `google_ads`, and `microsoft_ads`; private or additional catalogs use an owner-controlled absolute HTTPS URI. Each system declares exact country-to-place-type support, exact accepted versions, and a machine-readable resolver: + +```json +{ + "geonames": { + "countries": { + "US": ["city", "county"], + "NL": ["city", "municipality"], + "GB": ["city", "post_town"] + }, + "catalog": { + "source": "https://seller.example/data-sources/geonames-mirror", + "current_version": "2026-05", + "supported_versions": ["2026-05", "2026-04"], + "resolver": { + "url": "https://seller.example/adcp/geo/resolve/geonames", + "auth": "seller_credentials", + "protocol": "adcp_geo_place_resolver_v1" + } + } + }, + "https://seller.example/geo/catalogs/places": { + "countries": { + "NL": ["city"] + }, + "catalog": { + "current_version": "2026-q2", + "supported_versions": ["2026-q2"], + "resolver": { + "url": "https://seller.example/adcp/geo/resolve/private", + "auth": "seller_credentials", + "protocol": "adcp_geo_place_resolver_v1" + } + } + } +} +``` + +If `geo_places` is absent, buyers MUST NOT assume place targeting is available. If present, the seller MUST honor only the explicitly declared country/type pairs and exact `supported_versions`, or return a validation error. `current_version` MUST appear in `supported_versions` and is applied when the buyer omits `system_version` on new targeting. `supported_versions` describes versions accepted for new targets and target-changing updates; removing a version MUST NOT silently mutate, drop, or invalidate existing packages already pinned to that version. Optional `source` identifies a dataset or derivative without creating a new ID namespace—for example, a MaxMind-derived catalog still uses `system: "geonames"`. The resolver accepts an HTTPS GET with `get-geo-place-resolution-request.json` query fields and returns `get-geo-place-resolution-response.json`, including lifecycle status and replacement IDs. Unsupported or deprecated identifiers must be rejected rather than silently ignored or replaced. Display labels are never authoritative targeting keys. + +Registered system semantics are exact: + +| System | Authoritative `values` namespace | Type mapping | +|---|---|---| +| `geonames` | GeoNames `geonameId` integers encoded as strings. MaxMind `geoname_id` uses this same namespace. | The resolver maps GeoNames feature class/code into the registered AdCP type. Populated-place targets such as `PPL`, `PPLA`, `PPLC`, and `PPLG` map to `city`; administrative features map according to their official country-specific meaning. | +| `google_ads` | Google Ads geo target Criterion IDs encoded as strings | Lowercase snake-case mapping of Google target types to the registered AdCP type when one exists; otherwise use an owner-controlled HTTPS type URI. | +| `microsoft_ads` | Microsoft Advertising Location IDs encoded as strings | Lowercase snake-case mapping of Microsoft location types to the registered AdCP type when one exists; otherwise use an owner-controlled HTTPS type URI. | + +Registered place types are semantic classes, not a universal hierarchy. `city`, `municipality`, and `post_town` are distinct; likewise `borough`, `neighborhood`, `quarter`, and `ward` are not interchangeable. The resolver's country-specific mapping is authoritative for the system/version it serves. Sellers MUST NOT claim a country/type pair unless their resolver returns that type and their execution platform can honor it. + +Resolver calls use HTTPS GET. Supply exactly one of `q` for name search or `value` to refresh an existing identifier against a catalog version. For example: + +```text +GET https://seller.example/adcp/geo/resolve/geonames?q=Springfield&country=US&subdivision=US-IL&place_type=city&system_version=2026-05&limit=20 +``` + +`auth: "seller_credentials"` means the buyer uses the same authorization credentials as the seller's AdCP endpoint and is valid only when the resolver has the same origin as that endpoint. Buyers MUST NOT forward seller credentials cross-origin and MUST apply normal SSRF protections to resolver requests. `auth: "none"` declares a public resolver. A URI-valued `system` is an opaque namespace identifier and is not automatically fetched. Results identify the exact system version and lifecycle state: + +```json +{ + "request": { + "q": "Springfield", + "country": "US", + "subdivision": "US-IL", + "place_type": "city", + "system_version": "2026-05", + "limit": 20 + }, + "system": "geonames", + "system_version": "2026-05", + "matches": [{ + "value": "4250542", + "country": "US", + "subdivision": "US-IL", + "place_type": "city", + "label": "Springfield", + "canonical_name": "Springfield, Illinois, United States", + "parent_labels": ["Illinois", "United States"], + "status": "active" + }] +} +``` + +The response `system` MUST equal the capability-map key that advertised the resolver. Its version MUST equal the requested `system_version`, or the advertised `current_version` when omitted. The response echoes the normalized request, and every match MUST equal its `country` and any requested `subdivision` and `place_type`. `canonical_name` and `parent_labels` are required so same-named results remain distinguishable; `subdivision` is also required on a match when the request constrained it. Registered numeric systems reject non-numeric values and replacement IDs. + +Successful searches, including zero matches, return `200` with `Content-Type: application/json` and the response schema above. Invalid queries return `400`; missing or invalid credentials return `401` or `403`; throttling returns `429`; and resolver failures return an appropriate `5xx`. Non-`200` responses MUST NOT be interpreted as an empty result set. Pagination repeats the normalized original request and uses `cursor`/`next_cursor`. + +Buyers MUST traffic only an unambiguous `active` result. `removal_planned` results may still describe an existing target but should not be used for a new buy. `deprecated` results are invalid for new targeting; `replaced_by_values` may guide a new resolution, but sellers MUST require the buyer to submit the replacement rather than silently changing intent. To refresh a persisted ID after catalog rollover, query `value=<existing ID>` against the current version. Existing packages remain pinned to their echoed applied version until the buyer intentionally changes targeting; unrelated updates preserve that overlay. If the seller can no longer execute it, `get_media_buys` MUST preserve the echoed target and return nonfatal [`PLACE_TARGET_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-place-target-unavailable) in response-level `errors[]`, with `recovery: "correctable"`, an exact package-target `field` path, and target identity in `details`, rather than silently changing geography. +#### rights_attestations + +Declares how this seller evaluates portable rights-grant credentials carried in creative `rights[]`. Presence requires `adcp.attestations`, and its `accepted_claim_types` MUST include `https://adcontextprotocol.org/claims/rights/grant`. + +| Field | Type | Required | Description | +|---|---|---|---| +| `requirement` | `optional \| required` | yes | `required` makes a current verified seller evaluation a serving-eligibility condition. `optional` permits an independent legacy contractual path, but unattested constraints remain machine-unverified. | + +```json +{ + "media_buy": { + "rights_attestations": { + "requirement": "required" + } + } +} +``` + +The buyer carries `AttestationReference` values and never supplies a trusted outcome. The seller evaluates the exact reference, holder issuer, authorized rights-agent key, subject, grant digest, validity, and fresh revocation status and returns seller-produced `rights_attestation_evaluations` on creative readback. Sparse [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) reads request `rights_attestation_evaluations`; the seller automatically includes `creative_id` and `rights` so each result can be paired with the retained constraint. Neither capability mode permits fallback to `rights_constraint.verification_url`; that deprecated URL has no authorization meaning. + +#### audience_evidence + +Structured product audience-evidence support. Presence means the seller publishes immutable `Product.audience_evidence` snapshots, evaluates the declared buyer policy modes in `get_products.filters.audience_evidence_requirements`, and retains digest-pinned package readback. This is discovery and planning support, not audience targeting. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `supported_requirement_modes` | string[] | **Required** | Supported policy modes: `required`, `preferred`, or both. Unsupported hard modes must be rejected, never silently ignored. | +| `supported_presence_modes` | string[] | **Required** | Supported presence semantics: `required`, `when_available`, or both. | +| `supports_attestation_evaluation` | boolean | **Required** | Whether the seller evaluates evidence `attestation_refs[]` under `adcp.attestations` and preserves the exact reference and evaluation in package readback. | + +```json +{ + "media_buy": { + "audience_evidence": { + "supported_requirement_modes": ["required", "preferred"], + "supported_presence_modes": ["required", "when_available"], + "supports_attestation_evaluation": true + } + } +} +``` + +See [Audience evidence](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#audience-evidence) and [`get_products` evidence requirements](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#audience-evidence-requirements). + +#### audience_targeting + +Audience targeting capabilities. Presence of this object indicates the seller supports audience targeting, including [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) and `audience_include`/`audience_exclude` in targeting overlays. Describes what identifier types the seller accepts for audience matching, size constraints, and expected matching latency. + +| Field | Type | Required | Description | +| ------------------------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `supported_identifier_types` | string[] | **Required** | PII-derived identifier types accepted for audience matching. Buyers should only send identifiers the seller supports. Values: `hashed_email`, `hashed_phone`. | +| `minimum_audience_size` | integer | **Required** | Minimum matched audience size required for targeting. Audiences below this threshold will have `status: too_small`. Varies by platform (100–1000 is typical). | +| `supports_platform_customer_id` | boolean | | When `true`, the seller accepts the buyer's CRM/loyalty ID as a matchable identifier. Only applicable when the seller operates a closed ecosystem with a shared ID namespace (e.g., a retailer matching against their loyalty program). Buyers can include `platform_customer_id` values in `AudienceMember.identifiers`. Reporting on matched IDs typically requires a clean room or the seller's own reporting surface. | +| `supported_uid_types` | string[] | | Universal ID types accepted for audience matching (MAIDs, RampID, UID2, etc.). MAID support varies significantly by platform — check this field before sending `uids` with `type: maid`. | +| `matching_latency_hours` | object | | Expected matching latency range in hours after upload. Use to calibrate polling cadence and set appropriate expectations before configuring `push_notification_config`. Shape: `{ min: integer, max: integer }`. | + +#### conversion_tracking + +Seller-level conversion tracking capabilities. Declares what the seller supports for `kind: "event"` optimization goals. + +| Field | Type | Description | +| ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `multi_source_event_dedup` | boolean | Whether the seller can deduplicate events across multiple event sources within a single goal. When `true`, the same `event_id` from multiple sources counts once. When `false` or absent, buyers should use a single event source per goal. | +| `supported_event_types` | string[] | Event types this seller can track. If omitted, all standard event types are supported. | +| `supported_uid_types` | string[] | Universal ID types accepted for user matching. | +| `supported_hashed_identifiers` | string[] | Hashed PII types accepted (`hashed_email`, `hashed_phone`). Buyers must hash before sending (SHA-256, normalized). | +| `supported_action_sources` | string[] | Action sources this seller accepts events from. | +| `attribution_windows` | object[] | Available attribution windows. Single-element arrays indicate fixed windows; multi-element arrays indicate configurable options the buyer can choose from via `attribution_window` on optimization goals. | + +#### portfolio + +Inventory portfolio information. Media-buy sellers SHOULD declare both routing +arrays. The existing `primary_*` names are retained for 3.x compatibility, but +a present array is exhaustive for brief routing: buyers MAY skip the agent when +a brief's requested countries or channels do not intersect it. Omission means +unknown scope, never global coverage. These are routing pre-filters—not promises +that a matching product is currently available. + +`primary_countries` is not executable geo-targeting capability. It answers +whether the sales agent accepts a country-scoped discovery brief; the structured +fields under `media_buy.execution.targeting` and each product's +`overlay_support` determine whether and how a returned product can execute +geographic targeting. + +| Field | Type | Description | +| ---------------------- | -------- | ------------------------------------------------------ | +| `publisher_domains` | string[] | **Required.** Publisher domains this seller represents | +| `primary_channels` | string[] | Complete AdCP channel allowlist for briefs this agent accepts; omission means unknown | +| `primary_countries` | string[] | Complete ISO 3166-1 alpha-2 country allowlist for briefs this agent accepts; omission means unknown | +| `description` | string | Markdown portfolio description | +| `advertising_policies` | string | Content policies and restrictions | + +### signals + +Signals protocol capabilities. Only present if `signals` is in `supported_protocols`. + +| Field | Type | Description | +|-------|------|-------------| +| `data_provider_domains` | string[] | Data provider domains this signals agent is authorized to resell. Buyers should fetch each provider's `adagents.json` for signal definitions and to verify authorization. | +| `discovery_modes` | string[] | Discovery modes the agent supports on [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals). `"brief"` (semantic discovery via `signal_spec` / `signal_refs`, with deprecated `signal_ids` accepted for older clients) is implicit and always supported. Declare `"wholesale"` to advertise that callers can omit `signal_spec` / `signal_refs` / `signal_ids` and enumerate the full priced signals feed. Agents not declaring `"wholesale"` MAY return [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) for wholesale calls. Absent declaration is treated as `["brief"]`. | +| `features.catalog_signals` | boolean | **Deprecated.** Legacy wire flag for structured `signal_ref` references to provider-published signal definitions in adagents.json `signals[]`. | + +<Note> + `catalog_signals` is deprecated. Existing 3.x agents may continue to emit it + for compatibility, but new agents SHOULD omit it and callers MUST NOT require + it before using `signal_ref`. Treat `supported_protocols: ["signals"]`, + `signals.data_provider_domains`, `signals.discovery_modes`, and the actual + `get_signals` response as the capability surface. +</Note> + +### creative + +Creative protocol capabilities. Only present if `creative` is in `supported_protocols`. + +| Field | Type | Description | +|-------|------|-------------| +| `supports_compliance` | boolean | When `true`, this creative agent can process briefs with compliance requirements and validate them against its canonical supported-format declarations. | +| `supported_formats` | object[] | Canonical creative operation catalog. New 3.2 producers MUST emit a stable `capability_id`, a full canonical `format` declaration, and explicit `operations` (`build`, `validate`, `preview`). Exact publisher support carries `{publisher_domain, format_option_id}` inside `format`; generic capabilities declare a satisfiable canonical parameter envelope. For 3.x compatibility, consumers accept entries without `capability_id` and interpret absent `operations` as `build`; such entries can be matched by contract but not selected through a capability-ID route. Replaces [`list_creative_formats`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats) in 3.2. | +| `preview` | object | Per-route [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) declaration. `routes[].capability_id` names `supported_formats[]` entries whose `operations` includes `preview`; `rendering_origin` reports `platform_native` or `agent_approximation` per route. This self-description is informational and never grants authority; only a matching publisher placement `preview_provider` delegation does. See [rendering authority](/dist/docs/3.2.0-beta.4/creative/canonical-formats#rendering-authority-and-fallback-order). | +| `supports_transformers` | boolean | When `true`, this creative agent offers account-scoped transformers — the selectable units of build capability (voices, models, styles) discovered via [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers) and selected with `transformer_id` (plus the typed `config` bag) on [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). When `false` or absent, the agent does not expose transformers; `list_transformers` is unavailable and `build_creative` ignores `transformer_id`/`config`. Pre-call discriminator for routing across creative agents. | +| `supports_refinement` | boolean | When `true`, this creative agent retains produced `build_variant` leaves (for an agent-defined window) and can re-build from one via `refine_from_build_variant_id` on [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) — applying a natural-language instruction in `message` plus an optional `config` delta, returning new lineage-linked variants. A build-time capability independent of generation/transformation. When `false` or absent, `refine_from_build_variant_id` returns [`UNSUPPORTED_FEATURE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-feature); refine via the transform path (`creative_manifest` + `message`) instead. | +| `refinable_retention_seconds` | integer | When `supports_refinement` is `true`, the **guaranteed-minimum** window (a floor, not a ceiling) during which a produced `build_variant_id` stays refinable via `refine_from_build_variant_id`. A ref within the window SHOULD resolve; the agent MAY retain longer. Omit to leave the window agent-defined (buyers treat refinability as best-effort and handle [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found)). | +| `multiplicity` | object | Pre-call fan-out discriminators so a buyer knows before sending `max_creatives`/`max_variants`: `supports_catalog_fanout` + `max_creatives_limit`, `supports_variants` + `max_variants_limit`, and `variant_dimensions[]` (which `variant_axis.dimension` values are supported). Over-limit requests are **clamped** to the ceilings (shortfall shown via `items_returned` < `items_total`), not rejected. Absent means no fan-out — `build_creative` produces a single creative. Individual transformers may narrow this via `transformer.multiplicity`. | +| `supports_spend_controls` | boolean | When `true`, `build_creative` honors a per-call `max_spend` ceiling (returns a partial paid build with `budget_status: "capped"` + a [`BUDGET_CAP_REACHED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-budget-cap-reached) advisory rather than overspending) and supports `mode: "estimate"` dry-runs (a projected cost band, producing/billing nothing). When `false` or absent, both are rejected with `UNSUPPORTED_FEATURE`. Meaningful only with `bills_through_adcp: true`. | +| `localization` | object | Presence advertises materialized source-only or source-plus-target locale topology on [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives)/`list_creatives` and therefore requires `has_creative_library: true`. `locale_matching` is always `rfc4647_lookup`; optional per-creative `locale_fallbacks` provide explicit buyer-approved language-family substitutions, and `max_target_variants` optionally narrows the protocol ceiling of 50 (`0` means source-only). This is a coarse structural capability, not an all-locales promise: accepted ranges are published per product format through `locale_policy`, and the seller validates locale/format/account support per assignment. Advertised support commits the agent to explicit fallback/default/unmatched behavior, creative-wide review, transactional replacement, exact readback, seller-policy precedence, and delivery attribution. It does not request or advertise translation generation. | +| `bills_through_adcp` | boolean | When `true`, this creative agent bills through the AdCP rate-card surface — `list_creatives` returns `pricing_options` (with `include_pricing=true` and an authenticated account), `build_creative` populates `pricing_option_id` and `vendor_cost`, and [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) accepts records against the rate card. When `false` or absent, the agent bills out of band (flat license, SaaS contract, bundled enterprise agreement); buyers should skip pricing fields and tolerate `report_usage` returning `accepted: 0` with [`BILLING_OUT_OF_BAND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-billing-out-of-band) errors. Pre-call discriminator for routing across creative agents. | + +### governance + +Governance protocol capabilities. Only present if `governance` is in `supported_protocols`. Governance agents declare capabilities across four domains: property evaluation, creative evaluation, content standards verification, and policy registry integration. + +#### runtime_attestations + +Signal-activation policy layered on the shared `adcp.attestations` allowlist. Presence means this governance agent accepts `check_governance.runtime_attestations[]` when `purchase_type` is `signal_activation`. + +| Field | Type | Description | +|---|---|---| +| `signal_activation.requirement` | string | `optional` permits a signal-activation check with no runtime evidence; `required` means omission cannot approve the check. Optional means evidence may be absent, not that supplied invalid evidence becomes trusted. | +| `signal_activation.claim_types` | URI[] | Signal-quality claims accepted for this action. MUST be a subset of `adcp.attestations.accepted_claim_types`; issuer, resolver, verifier, proof, and delivery policy remains in the shared block. | + +See [`check_governance` runtime signal attestations](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance#runtime-signal-attestations) for request, evaluation, signed-context, and audit binding. + +#### property_features + +Array of property features this governance agent can evaluate. See [Property Governance](/dist/docs/3.2.0-beta.4/governance/property/index). + +| Field | Type | Description | +| ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `feature_id` | string | **Required.** Unique identifier (e.g., `mfa_score`, `coppa_certified`). Use `registry:{policy_id}` prefix for features mapped to [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) entries. | +| `type` | string | **Required.** Data type: `binary`, `quantitative`, or `categorical` | +| `range` | object | For quantitative: `{ min, max }` | +| `categories` | string[] | For categorical: valid values | +| `description` | string | Human-readable description | +| `methodology_url` | string | URL to methodology documentation | + +#### creative_features + +Array of creative features this governance agent can evaluate. Same field schema as `property_features`. See [Creative Governance](/dist/docs/3.2.0-beta.4/governance/creative/index). + +Creative governance agents evaluate creatives for security, content categorization, and regulatory compliance. Buyers filter creatives by feature requirements — for example, blocking creatives flagged for `auto_redirect` or requiring `registry:eu_ai_act_article_50` compliance. + +#### content_standards + +Content standards verification capabilities. See [Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). + +| Field | Type | Description | +| --------------------- | -------- | -------------------------------------------------------------------------------------- | +| `supported` | boolean | Whether this agent can serve as a content standards verification agent | +| `calibration_formats` | string[] | Artifact asset types this agent can evaluate (e.g., `text`, `image`, `video`, `audio`) | + +#### policy_registry + +Policy registry integration capabilities. See [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry). + +| Field | Type | Description | +| ----------- | -------- | ---------------------------------------------------------------------------------------------------- | +| `supported` | boolean | Whether this agent consumes policies from the AdCP Policy Registry | +| `domains` | string[] | Governance domains this agent covers (e.g., `campaign`, `property`, `creative`, `content_standards`) | + +**Example governance agent response:** + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["governance"], + "governance": { + "property_features": [ + { + "feature_id": "mfa_score", + "type": "quantitative", + "range": { "min": 0, "max": 100 }, + "description": "Made For Advertising detection (0=quality content, 100=likely MFA)", + "methodology_url": "https://vendor.example.com/methodology/mfa" + }, + { + "feature_id": "coppa_certified", + "type": "binary", + "description": "COPPA compliance certification" + }, + { + "feature_id": "registry:uk_hfss", + "type": "binary", + "description": "UK HFSS advertising restrictions compliance" + }, + { + "feature_id": "carbon_score", + "type": "quantitative", + "range": { "min": 0, "max": 100 }, + "description": "Carbon footprint sustainability score", + "methodology_url": "https://vendor.example.com/methodology/carbon-score" + } + ], + "creative_features": [ + { + "feature_id": "registry:eu_ai_act_article_50", + "type": "binary", + "description": "EU AI Act Article 50 — AI-generated content disclosure" + }, + { + "feature_id": "registry:ca_sb_942", + "type": "binary", + "description": "California SB 942 — AI transparency compliance" + }, + { + "feature_id": "auto_redirect", + "type": "binary", + "description": "Detects auto-redirect behavior in creative code" + }, + { + "feature_id": "credential_harvest", + "type": "binary", + "description": "Detects credential harvesting patterns" + } + ], + "content_standards": { + "supported": true, + "calibration_formats": ["text", "image", "video"] + }, + "policy_registry": { + "supported": true, + "domains": ["campaign", "property", "creative", "content_standards"] + } + } +} +``` + +### measurement_gateway + +Experimental buyer-orchestrator role within the measurement protocol. Presence means the orchestrator exposes a controlled task boundary to providers without granting them seller credentials. Orchestrators implementing it include `measurement` in `supported_protocols` and `measurement.gateway` in `experimental_features`. + +The first experimental tier deliberately has one interoperable path: providers pull buyer-approved delivery from the orchestrator's `get_media_buy_delivery` task and return one compact assertion through its `provide_performance_feedback` task. Webhook and offline interchange remain future work until their registration, credential, payload, and receipt contracts are defined. + +| Field | Type | Description | +| --------------- | ------ | ----------------------------------------------------------------------------------------------- | +| `delivery_task` | string | Required constant: `get_media_buy_delivery`. Providers call it on the orchestrator gateway. | +| `feedback_task` | string | Required constant: `provide_performance_feedback`. Providers call it on the orchestrator gateway. | + +```json +{ + "supported_protocols": ["measurement"], + "experimental_features": ["measurement.gateway"], + "measurement_gateway": { + "delivery_task": "get_media_buy_delivery", + "feedback_task": "provide_performance_feedback" + } +} +``` + +The gateway reuses `get_media_buy_delivery` and `provide_performance_feedback` shapes without claiming `supported_protocols: ["media_buy"]`; the orchestrator is not a seller and does not commit to the seller compliance storyboard. + +### measurement + +Experimental measurement protocol capabilities. Only present if `measurement` is in `supported_protocols`; agents implementing it must also list `measurement.core` in `experimental_features`. The provider-side surface is currently scoped to catalog discovery plus declaration of compact performance-feedback output. Measurement agents exchange data with a buyer-controlled orchestrator gateway rather than receiving seller credentials. Additional provider tasks and a baseline compliance storyboard should land only for concrete workflows that cannot use the gateway's existing delivery paths. + +**Scope.** An agent claiming `measurement` computes one or more quantitative metrics about ad delivery, exposure, or effect (impression verification, viewability, IVT, attention, brand lift, incrementality, outcomes, emissions — vendors define the surface in `metrics[]`). It returns metric definitions and may declare optimizer-ready feedback production, not pricing or coverage (negotiated per buy via `measurement_terms`) or raw/live datasets. Per-buy measured values remain on delivery reports; compact decision signals use `provide_performance_feedback`. + +Measurement agents publish a per-metric catalog so buyers know which metrics each vendor offers. This is the canonical source of truth — AgenticAdvertising.org crawls it to populate the federated [measurement-vendor index](/dist/docs/3.2.0-beta.4/registry/index#measurement-vendor-discovery). + +| Field | Type | Description | +| ------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `produces_performance_feedback` | boolean | Whether the agent produces compact `provide_performance_feedback` assertions for a buyer-controlled orchestrator gateway. The orchestrator authenticates the provider and decides what to forward to sellers. | +| `metrics` | object[] | **Required.** Per-metric catalog described below. | + +Providers using the first gateway tier consume `get_media_buy_delivery` and produce `provide_performance_feedback`; there are no method-negotiation arrays in this release. + +#### metrics + +Array of metrics this measurement agent computes. + +| Field | Type | Description | +| --------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `metric_id` | string | **Required.** Vendor-scoped identifier (`attention_units`, `gco2e_per_impression`, etc.) — matches the `metric_id` populated in `vendor_metric_values` on delivery. The full identity is the tuple `(vendor.domain, vendor.brand_id, metric_id)`. Each `metric_id` MUST be unique within a single agent's catalog. | +| `standard_reference` | string (URI) | Optional URI pointing at the published standard this metric **implements** (IAB Attention Measurement Guidelines, MRC Viewable Impression Measurement, GARM emissions framework). Distinct from `accreditations` below — `standard_reference` is what the metric is built against; `accreditations` is third-party certification of conformance. | +| `accreditations` | object[] | Optional list of third-party accreditations this metric holds (MRC, ARF, JIC bodies, ABC, BARB, AGOF, etc.). Each entry: `accrediting_body` (required), optional `certification_id`, `valid_until`, `evidence_url`. Buyers asking "is this MRC-accredited?" SHOULD check this array — implementing a standard is not the same as being independently accredited. | +| `unit` | string | Unit of the value when reported in `vendor_metric_values.value` (`score`, `seconds`, `persons`, `gCO2e`, `lift_percent`, `USD`, etc.). Sellers populating `vendor_metric_values.unit` MUST match this declaration. | +| `description` | string | Human-readable description of what the metric measures and any methodology notes. AgenticAdvertising.org and buyer agents normalize across catalogs from this field plus the structured fields above; classification facets are not declared at the metric level. | +| `methodology_url` | string (URI) | URL to vendor's full methodology documentation. Mirrors `governance.property_features[].methodology_url`. | +| `methodology_version` | string | Optional version identifier (semver, ISO date, or vendor-defined string) for the methodology. When present, buyer agents can pin a contracted version so silent methodology changes are detectable; absence means the vendor does not version their methodology and buyers MUST treat any change as untracked. | +| `ext` | object | Vendor extensions per the AdCP `ext` convention. | + +```json Response example +{ + "measurement": { + "produces_performance_feedback": true, + "metrics": [ + { + "metric_id": "attention_units", + "standard_reference": "https://iabtechlab.com/standards/attention-measurement", + "accreditations": [ + { + "accrediting_body": "MRC", + "certification_id": "MRC-ATT-2026-001", + "valid_until": "2027-12-31", + "evidence_url": "https://mediaratingcouncil.org/accreditations/attentionvendor" + } + ], + "unit": "score", + "description": "Eye-tracking-based attention score (0-100). Computed from a panel of 25K opted-in households.", + "methodology_url": "https://attentionvendor.example/docs/attention-units", + "methodology_version": "v2.1" + }, + { + "metric_id": "engagement_seconds", + "unit": "seconds", + "description": "Active dwell time in seconds, measured via in-content telemetry." + } + ] + } +} +``` + +**Discovery vs. settlement.** Buyers MAY hit a measurement agent's `get_adcp_capabilities` directly to see its current catalog (live, canonical, no staleness), or query AgenticAdvertising.org's federated index for cross-vendor aggregation. The index trades a TTL refresh window for cross-vendor speed; live calls trade speed for currency. Both are valid — typically planning queries hit the index, settlement/audit queries hit the agent. + +**This is a discovery surface, not a rate card.** The catalog tells buyers _what_ a vendor measures and _what standards/accreditations_ back it. Pricing per impression, minimum measurable inventory, attribution windows, geographic coverage, and data-freshness SLAs are negotiated per buy through the seller's `measurement_terms` on `create_media_buy` — not through this catalog. + +### compliance_testing + +Compliance testing capabilities. The presence of this block declares that the agent supports deterministic testing via [`comply_test_controller`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller). Omit the block if the agent does not support compliance testing. + +**Production deployments MUST NOT include this block.** `comply_test_controller` is sandbox-only at the deployment level; advertising the capability on a production endpoint is non-conformant even if dispatch is gated. See [Compliance test controller § Sandbox gating](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#sandbox-gating). + +| Field | Type | Description | +| ----------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `scenarios` | string[] | Compliance testing scenarios this agent supports. Values SHOULD include every canonical controller scenario the agent implements, excluding `list_scenarios` because that value is a discovery operation rather than a test capability. Current canonical values include `force_creative_status`, `force_account_status`, `force_media_buy_status`, `force_create_media_buy_arm`, `force_task_completion`, `force_session_status`, `simulate_delivery`, `simulate_budget_spend`, `seed_rights_grant`, `seed_product`, `seed_pricing_option`, `seed_creative`, `seed_plan`, `seed_media_buy`, `seed_creative_format`, `seed_measurement_catalog`, `query_upstream_traffic`, `query_provenance_audit_observations`, and `force_upstream_unavailable`. Values MAY also include implementation-specific scenarios. Runners MUST treat scenario names as open strings — new scenarios may be added in additive releases. | + +Storyboard runners check for the `compliance_testing` block before running deterministic testing steps. If the agent does not include the block, controller-dependent storyboard steps cannot be validated. + +Agents that implement `comply_test_controller` SHOULD include the `compliance_testing` capability block and list supported scenarios. Agents that only support a subset of scenarios (e.g., media buy status but not SI sessions) declare only those scenarios — the runner reports unsupported scenario coverage as skipped or partial rather than as a hidden pass. + +:::note +Compliance testing is sandbox-only at the deployment level — production deployments MUST NOT advertise this block or expose `comply_test_controller` on any surface. [`FORBIDDEN`](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#error-codes) is returned only when an in-sandbox caller passes `params` that reference a non-sandbox account; live-mode probes for the tool by name receive the transport's standard unknown-tool error. See [Sandbox gating](/dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller#sandbox-gating). +::: + +### webhook_signing + +Declares a seller's webhook-signing posture. Any seller whose capability surface advertises mutating-webhook emission — including but not limited to `media_buy.reporting_delivery_methods` containing `webhook`, `media_buy.content_standards.supports_webhook_delivery: true`, `media_buy.relationship_notifications.supported: true`, `wholesale_feed_webhooks.supported: true`, `adcp.capability_changes.notifications.supported: true`, or `account.notifications.supported: true` — MUST include this block with `supported: true`. A seller that emits no webhooks at all MAY omit the block entirely; the absence of both mutating-webhook emission in other capabilities and this block is an unambiguous "does not emit webhooks" posture. Buyers read the block at onboarding to determine which algorithms to expect per the [AdCP webhook-signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks). Buyers integrating with a seller that advertises mutating-webhook emission while advertising `supported: false` or omitting this block MUST fail onboarding with a user-actionable error; silent integration with a non-signing-but-webhook-emitting seller is unsafe for any mutating-webhook use case. + +| Field | Type | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `supported` | boolean | **Required when the seller advertises mutating-webhook emission elsewhere in its capability surface.** `true` iff the seller signs outbound webhooks. `false` means the seller emits webhooks but does not sign them; buyers MUST fail onboarding. Sellers that emit no webhooks SHOULD omit the entire block rather than set `supported: false` — `false` is reserved for the unsafe posture of unsigned-webhook emission, not absence-of-webhooks. | +| `profile` | string | **Required when `supported: true`.** The profile version string. Currently `"adcp/webhook-signing/v1"`. Future versions bump the string. | +| `algorithms` | string[] | **Required when `supported: true`.** Subset of `["ed25519", "ecdsa-p256-sha256"]` — the algorithms this seller will sign webhooks with. Matches the webhook-signing verifier allowlist (see [Verifier checklist for webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-callbacks), step 4). Buyers MUST be prepared to verify any algorithm listed AND MUST reject onboarding with a user-actionable error if an advertised algorithm is outside this enumerated set — a seller advertising an out-of-set algorithm (e.g., `hs256`) is either misconfigured or signalling a non-conforming profile. | +| `legacy_hmac_fallback` | boolean | **Required when `supported: true`.** `true` iff the seller supports the legacy HMAC-SHA256 scheme when the buyer populates `push_notification_config.authentication.credentials`, `accounts[].notification_configs[].authentication.credentials`, or `sync_agent_notification_configs.notification_configs[].authentication.credentials`. `false` is the recommended posture in 3.x — the HMAC scheme is removed in AdCP 4.0. | + +**Example:** + +```json +{ + "webhook_signing": { + "supported": true, + "profile": "adcp/webhook-signing/v1", + "algorithms": ["ed25519", "ecdsa-p256-sha256"], + "legacy_hmac_fallback": false + } +} +``` + +The webhook-signing block is parallel to `request_signing` (inbound) and the two blocks cover the two signing directions between buyer and seller. Buyers SHOULD validate both at onboarding; a seller that signs one direction but not the other has a lopsided security posture that operators need to notice explicitly. + +### extensions_supported + +Array of extension namespaces this agent supports. Buyers can expect meaningful data in `ext.{namespace}` fields on responses from this agent. + +| Field | Type | Description | +| ---------------------- | -------- | ----------------------------------------------------- | +| `extensions_supported` | string[] | Extension namespaces (e.g., `["iab_tcf", "iab_gpp"]`) | + +Extension schemas are published in the [AdCP extension registry](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#extensions). When an agent declares support for an extension, buyers know to look for and process `ext.{namespace}` data in responses. + +**Example:** + +```json +{ + "extensions_supported": ["iab_tcf", "iab_gpp", "acmecorp"] +} +``` + +This tells buyers: + +- Responses may include `ext.iab_tcf` with IAB TCF consent data +- Responses may include `ext.iab_gpp` with IAB GPP (Global Privacy Platform) signals +- Responses may include `ext.acmecorp` with vendor-specific data from Acme Corp + +### experimental_features + +Array of experimental AdCP surfaces this agent implements. A surface is experimental when its schema carries `x-status: experimental` — it is part of the core protocol but not yet frozen and may break between 3.x releases with 6 weeks' notice. Sellers that implement any experimental surface MUST list its feature id here. + +| Field | Type | Description | +| ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `experimental_features` | string[] | Experimental feature ids (e.g., `["brand.rights_lifecycle", "governance.campaign", "measurement.core", "trusted_match.core", "sponsored_intelligence.core"]`) | + +Buyers should inspect `experimental_features` before relying on an experimental surface. A seller that does not list a surface is asserting it does not implement it — there is no "silently experimental" mode. + +**Example:** + +```json +{ + "experimental_features": [ + "brand.rights_lifecycle", + "measurement.core", + "trusted_match.core" + ] +} +``` + +See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full stability contract, graduation criteria, and client guidance. + +### wholesale_feed_versioning + +Conditional-fetch token capabilities for [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#wholesale-feed-versioning) and [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals#wholesale-feed-versioning). Independent of wholesale feed webhooks: an agent MAY support cheap version probes without pushing change payloads, and an agent MAY push change payloads while still requiring reconciliation reads for repair. + +| Field | Type | Description | +| -------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `supported` | boolean | **Required.** Whether the agent returns `wholesale_feed_version` on responses and honors `if_wholesale_feed_version` on requests. When absent or `false`, buyers can still probe by reading the response (the field-presence detection path) but can't pre-flight-decide which agents to cache versions for. | +| `pricing_version_separate` | boolean | Whether the agent tracks `pricing_version` independently of `wholesale_feed_version`. When `true`, callers can send `if_pricing_version` alongside `if_wholesale_feed_version` for finer-grained "did prices change?" probes. When `false` or absent, the agent collapses both into `wholesale_feed_version` — sending `if_pricing_version` is wasted bytes. | +| `cache_scope_account` | boolean | Whether the agent ever returns `cache_scope: "account"` (i.e., publishes per-account overlays distinct from the public rate card). When `true`, buyers MUST be prepared to maintain account-overlay caches alongside the public layer. When `false` or absent, all responses are `cache_scope: "public"` — the agent's rate card is universal across accounts. Note: declaring `true` advertises that the agent runs custom-pricing deals, which is itself a small market-posture signal; agents preferring confidentiality MAY omit the field and detect-on-call instead. | + +**Example:** + +```json +{ + "wholesale_feed_versioning": { + "supported": true, + "pricing_version_separate": true, + "cache_scope_account": true + } +} +``` + +### wholesale_feed_webhooks + +Per-agent wholesale product-feed and wholesale signals-feed webhook capabilities. Declared by sales agents (products) and signals agents (signals). When `supported` is `true`, consumers can register `sync_accounts.accounts[].notification_configs[]` entries for `product.*`, `signal.*`, and `wholesale_feed.bulk_change` events and receive the actual change payload in each webhook. See `specs/wholesale-feed-webhooks.md` for the full spec. + +**Terminology.** Here "wholesale feed" means the agent's buyable wholesale product feed and wholesale signals feed exposed by `get_products` and `get_signals`. It is distinct from `sync_catalogs`, which pushes buyer-provided campaign input feeds into a seller account for campaign execution. + +Complementary to (and independent of) [`wholesale_feed_versioning`](#wholesale_feed_versioning): webhooks push changed products/signals or bulk-change summaries; version tokens give a cheap repair and reconciliation probe. Adopters MAY ship either, both, or neither. + +Agents that declare `supported: true` MUST apply the same account/caller authorization and scope predicate used by the corresponding wholesale read before emitting each webhook. A caller that could not see a product, signal, price, or account overlay through `get_products buying_mode: "wholesale"` or `get_signals discovery_mode: "wholesale"` MUST NOT receive a webhook revealing that change. Agents unable to guarantee per-principal filtering MUST NOT declare support. + +**Capability consistency.** Agents listing any `product.*` value in `event_types[]` MUST declare and support wholesale `get_products` (`media_buy.buying_modes` includes `"wholesale"`). Agents listing any `signal.*` value MUST declare and support wholesale `get_signals` (`signals.discovery_modes` includes `"wholesale"`). Agents listing `wholesale_feed.bulk_change` MUST have at least one of those wholesale repair paths, and each bulk-change payload's `affected_entity_type` MUST name only a feed family the agent can repair through a declared wholesale read. + +**Consumer precedence.** When more than one mechanism is declared, consumers SHOULD prefer them in this order: (1) `wholesale_feed_webhooks` when maintaining a long-lived mirror (lowest latency, lowest seller cost); (2) `wholesale_feed_versioning` conditional fetch for occasional polling and webhook repair; (3) wholesale enumeration via `buying_modes` / `discovery_modes` for cold start, `wholesale_feed.bulk_change`, or any missed/distrusted push. + +| Field | Type | Description | +| ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `supported` | boolean | **Required.** Whether this agent can push wholesale feed change payloads through account-level `sync_accounts.accounts[].notification_configs[]`. When `false` or this stanza is absent, consumers fall back to wholesale polling, optionally with `if_wholesale_feed_version` probes. | +| `event_types` | string[] | Event types this agent can emit. Sales agents emit `product.*` events; signals agents emit `signal.*` events; agents that are both can emit both event families. `product.*` requires wholesale `get_products`; `signal.*` requires wholesale `get_signals`; `wholesale_feed.bulk_change` requires at least one declared wholesale repair path and names one affected feed the consumer repairs by re-reading via `get_products` or `get_signals`. | + +**Example (sales + signals agent):** + +```json +{ + "wholesale_feed_webhooks": { + "supported": true, + "event_types": [ + "product.created", + "product.updated", + "product.priced", + "product.removed", + "signal.created", + "signal.updated", + "signal.priced", + "signal.removed", + "wholesale_feed.bulk_change" + ] + } +} +``` + +## The Capability Contract + +**If a capability is declared, the seller MUST honor it.** + +- `media_buy.execution.targeting.geo_postal_areas.US` contains `zip` → Buyer can send `{ country: "US", system: "zip", values: [...] }`, seller MUST honor it +- `media_buy.execution.targeting.geo_postal_areas.us_zip: true` → Buyer can send the deprecated `{ system: "us_zip", values: [...] }` form, and SDKs can backfill the native `{ country: "US", system: "zip", values: [...] }` form +- `media_buy.execution.targeting.geo_postal_areas.ZA` contains `postal_code` → Buyer can send normal South African postal codes, seller MUST honor them +- `media_buy.execution.targeting.geo_metros.nielsen_dma: true` → Buyer can send DMA codes, seller MUST honor them +- `media_buy.execution.targeting.demographics.supported: true` → At least one product supports canonical demographic targeting; this rollup does not authorize the field on every product, so buyers MUST inspect `Product.demographic_targeting` +- `media_buy.execution.targeting.collection_list: true` → At least one product supports collection inclusion; inspect that product's `overlay_support.collection_list` before selecting values later +- `media_buy.execution.targeting.collection_list_exclude: true` → At least one product supports collection exclusion; inspect that product's `overlay_support.collection_list_exclude` +- `media_buy.execution.targeting.property_list: true` → At least one product supports property inclusion; inspect that product's `overlay_support.property_list` +- `media_buy.execution.targeting.property_list_exclude: true` → At least one product supports property exclusion; inspect that product's `overlay_support.property_list_exclude` +- `media_buy.execution.targeting.placement_selection: true` → At least one product supports purchased-placement selection; inspect that product's targetable placements and `overlay_support.placement_selection` +- `media_buy.content_standards` object present → Seller MUST apply content standards when provided +- `media_buy.audience_targeting` object present → Seller MUST support [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) and audience targeting overlays +- `media_buy.conversion_tracking` object present → Seller MUST support [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) and [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) +- AXE URL in `media_buy.execution.axe_integrations` → Seller can execute through that exchange (legacy — new integrations use [TMP](/dist/docs/3.2.0-beta.4/trusted-match)) + +No silent ignoring. If a seller can't support a capability, they should declare `false` or omit it. + +## Common Scenarios + +### Basic Capability Discovery + +```javascript +import { AdcpClient } from "@adcp/sdk"; + +const client = new AdcpClient({ baseUrl: "https://seller.example.com/mcp" }); + +// Get seller capabilities +const result = await client.getAdcpCapabilities({}); + +if (result.errors) { + throw new Error(`Request failed: ${result.errors[0].message}`); +} + +// Check protocol support +console.log(`AdCP versions: ${result.adcp.major_versions.join(", ")}`); +console.log(`Supported protocols: ${result.supported_protocols.join(", ")}`); + +// Check media-buy capabilities +if (result.supported_protocols.includes("media_buy")) { + const mediaBuy = result.media_buy; + + // Check content standards support (object presence = signal) + if (mediaBuy.content_standards) { + console.log("Content standards supported"); + } + + // Check AXE integrations (legacy — new integrations use TMP via trusted_match on products) + if ( + mediaBuy.execution?.axe_integrations?.includes("https://axe.example.com") + ) { + console.log("AXE integration available"); + } + + // Check geo targeting (normalize native country keys and deprecated aliases) + const postalSupport = mediaBuy.execution?.targeting?.geo_postal_areas; + if (postalSupport?.US?.includes("zip") || postalSupport?.us_zip === true) { + console.log("US ZIP code targeting supported"); + } + + // Portfolio overview + console.log(`Publishers: ${mediaBuy.portfolio.publisher_domains.length}`); + console.log(`Channels: ${mediaBuy.portfolio.primary_channels?.join(", ")}`); +} +``` + +### Check multi-protocol support + +```javascript +const caps = await client.getAdcpCapabilities({}); + +const sellsMedia = caps.supported_protocols.includes("media_buy"); +const managesCreatives = caps.supported_protocols.includes("creative"); + +if (sellsMedia && managesCreatives) { + // Single agent handles both protocols — no need to discover a separate service + const formats = await client.listCreativeFormats({}); + const delivery = await client.getCreativeDelivery({ + media_buy_ids: ["mb_12345"], + }); +} +``` + +### Filter sellers by capability + +```javascript +// Find sellers that support specific requirements +async function findCompatibleSellers(sellers, requirements) { + const compatible = []; + + for (const sellerUrl of sellers) { + const client = new AdcpClient({ baseUrl: sellerUrl }); + const caps = await client.getAdcpCapabilities({}); + + if (caps.errors) continue; + + // Must support media_buy protocol + if (!caps.supported_protocols.includes("media_buy")) continue; + + const mediaBuy = caps.media_buy; + + // Check AXE integration requirement (legacy — new integrations use TMP) + if (requirements.axeIntegration) { + if ( + !mediaBuy.execution?.axe_integrations?.includes( + requirements.axeIntegration + ) + ) { + continue; + } + } + + // Check geo targeting requirement + if (requirements.postalCodeTargeting) { + const postalSupport = mediaBuy.execution?.targeting?.geo_postal_areas; + if ( + !(postalSupport?.US?.includes("zip") || postalSupport?.us_zip === true) + ) { + continue; + } + } + + // Check content standards requirement (object presence = signal) + if (requirements.contentStandards) { + if (!mediaBuy.content_standards) { + continue; + } + } + + compatible.push({ url: sellerUrl, capabilities: caps }); + } + + return compatible; +} + +// Usage +const sellers = await findCompatibleSellers( + ["https://seller1.com/mcp", "https://seller2.com/mcp"], + { + axeIntegration: "https://axe.example.com", + postalCodeTargeting: true, + contentStandards: true, + } +); +``` + +### Use Capabilities to Build Targeting + +Seller capabilities are a routing rollup. Use `required_overlay_support` to +request the product-scoped targeting surface that must be selectable later, and +`targeting_overlay` for concrete constraints that must affect discovery: + +```javascript +// First, check capabilities +const caps = await client.getAdcpCapabilities({}); + +if (!caps.supported_protocols.includes("media_buy")) { + throw new Error("Seller does not support media_buy protocol"); +} + +const mediaBuy = caps.media_buy; +const postalSupport = mediaBuy.execution?.targeting?.geo_postal_areas; + +// Filter products to sellers with specific geo targeting capabilities +const products = await client.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442047', + buying_mode: 'brief', + brief: "Premium video inventory in US for ZIP-targeted campaign", + filters: { channels: ['olv', 'ctv'] }, + targeting_overlay: { geo_countries: ['US'] }, + required_overlay_support: { + geo_postal_areas: { US: ['zip'] } + } +}); + +// Then, create media buy with fine-grained targeting +// (if seller supports postal areas, we can target specific ZIP codes) +const buy = await client.createMediaBuy({ + brand: { domain: 'mybrand.com' }, + packages: [{ + product_id: products.products[0].product_id, + pricing_option_id: products.products[0].pricing_options[0].id, + budget: 10000, + // The configured product already represents US targeting. Add the ZIP + // selection the buyer deferred during discovery. + targeting_overlay: { + geo_countries: ['US'], + // Only specify ZIP targeting if seller supports it + ...((postalSupport?.US?.includes('zip') || postalSupport?.us_zip === true) && { + geo_postal_areas: [{ + country: 'US', + system: 'zip', + values: ['10001', '10002', '10003', '10004', '10005'] + }] + }) + } + }], + start_time: { type: 'asap' }, + end_time: '2025-03-01T00:00:00Z' +}); +``` + +**Two models for product geography:** + +| Inventory Type | Filter By | Example | +| ----------------------------- | ------------------------------------ | ------------------------------------------------ | +| Digital (display, OLV, CTV) | Capability: `required_geo_targeting` | Products have broad coverage, target at buy time | +| Local (radio, DOOH, local TV) | Coverage: `metros`, `regions` | Products ARE geographically bound | + +- **Digital inventory**: Use `countries` + `required_geo_targeting` (capability), apply fine-grained targeting in [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) +- **Local inventory**: Use `metros`/`regions` (coverage) to find products with coverage in your target markets + +### Local Inventory Example (Radio, DOOH) + +For locally-bound inventory, products ARE geographically specific. A radio station in NYC DMA only covers NYC. + +```javascript +// Find radio products in specific DMAs +const radioProducts = await client.getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442048', + buying_mode: 'brief', + brief: "Radio inventory in NYC and LA markets", + filters: { + channels: ["radio"], + // Coverage filter: products must cover these metros + metros: [ + { system: "nielsen_dma", code: "501" }, // NYC + { system: "nielsen_dma", code: "803" }, // LA + ], + }, +}); + +// For local inventory, targeting_overlay is optional - +// the product's coverage IS the geography +const buy = await client.createMediaBuy({ + brand: { domain: "mybrand.com" }, + packages: [ + { + product_id: radioProducts.products[0].product_id, + pricing_option_id: radioProducts.products[0].pricing_options[0].id, + budget: 5000, + // No targeting_overlay needed - product covers NYC DMA + }, + ], + start_time: { type: "asap" }, + end_time: "2025-03-01T00:00:00Z", +}); +``` + +## Response Example + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"], + "timezone": { "mode": "seller_fixed", "fixed_timezone": "UTC" } + }, + "media_buy": { + "creative_approval_mode": "auto_approve", + "features": { + "inline_creative_management": true, + "property_list_filtering": true, + "seller_optimized_budget": true, + "bidding_policy": { + "media_buy": { + "fixed": { + "modes": ["max_bid", "cost_per"], + "cost_per_strengths": ["cap", "target"], + "supported_combinations": [ + { + "kind": "max_bid_with_cost_per", + "cost_per_strengths": ["cap"] + } + ] + }, + "seller_optimized": { + "modes": ["cost_per"], + "cost_per_strengths": ["cap"] + } + }, + "package": { + "fixed": { + "modes": ["automatic", "bid_amount", "cost_per"], + "cost_per_strengths": ["cap"] + }, + "seller_optimized": { + "modes": ["automatic"] + } + } + } + }, + "execution": { + "axe_integrations": ["https://axe.example.com"], + "creative_specs": { + "vast_versions": ["4.0", "4.1", "4.2", "4.3"], + "mraid_versions": ["3.0"], + "vpaid": false, + "simid": true + }, + "targeting": { + "geo_countries": true, + "geo_regions": true, + "geo_metros": { + "nielsen_dma": true + }, + "geo_postal_areas": { + "us_zip": true, + "us_zip_plus_four": true, + "US": ["zip", "zip_plus_four"], + "GB": ["outward", "full"], + "CA": ["fsa", "full"], + "ZA": ["postal_code"] + }, + "geo_places": { + "geonames": { + "countries": { + "US": ["city", "county"], + "NL": ["city", "municipality"], + "GB": ["city", "post_town"] + }, + "catalog": { + "source": "https://seller.example/data-sources/geonames-mirror", + "current_version": "2026-05", + "supported_versions": ["2026-05", "2026-04"], + "resolver": { + "url": "https://seller.example/adcp/geo/resolve/geonames", + "auth": "seller_credentials", + "protocol": "adcp_geo_place_resolver_v1" + } + } + }, + "https://seller.example/geo/catalogs/places": { + "countries": { + "NL": ["city"] + }, + "catalog": { + "current_version": "2026-q2", + "supported_versions": ["2026-q2"], + "resolver": { + "url": "https://seller.example/adcp/geo/resolve/private", + "auth": "seller_credentials", + "protocol": "adcp_geo_place_resolver_v1" + } + } + } + }, + "language": { + "supported": true, + "supported_languages": ["en", "fr-CA", "es"] + }, + "keyword_targets": { + "supported_match_types": ["broad", "phrase", "exact"] + }, + "negative_keywords": { + "supported_match_types": ["broad", "exact"] + } + } + }, + "content_standards": { + "supports_local_evaluation": true, + "supported_channels": ["display", "olv"], + "supports_webhook_delivery": false + }, + "audience_targeting": { + "supported_identifier_types": ["hashed_email", "hashed_phone"], + "supports_platform_customer_id": false, + "supported_uid_types": ["uid2", "rampid"], + "minimum_audience_size": 500, + "matching_latency_hours": { "min": 1, "max": 24 } + }, + "conversion_tracking": { + "multi_source_event_dedup": false, + "supported_event_types": [ + "purchase", + "lead", + "add_to_cart", + "view_content" + ], + "supported_action_sources": ["website", "app"], + "attribution_windows": [ + { + "post_click": [ + { "interval": 7, "unit": "days" }, + { "interval": 28, "unit": "days" } + ], + "post_view": [ + { "interval": 1, "unit": "days" }, + { "interval": 7, "unit": "days" } + ] + } + ] + }, + "portfolio": { + "publisher_domains": ["example.com", "news.example.com"], + "primary_channels": ["display", "olv"], + "primary_countries": ["US", "CA"] + } + }, + "extensions_supported": ["acmecorp"], + "last_updated": "2025-01-23T10:00:00Z" +} +``` + +This tells buyers: + +- **AdCP versions**: Version 1 +- **Protocols**: Media buy only +- **Auth model**: Agent-trusted (`require_operator_auth: false`) — authenticate once and use natural-key accounts, normally declared via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) +- **Billing**: Operator or agent billing; default is operator +- **Country targeting**: Available (ISO 3166-1 alpha-2: `US`, `GB`, etc.) +- **Region targeting**: Available (ISO 3166-2: `US-NY`, `GB-SCT`, etc.) +- **Metro targeting**: Nielsen DMA only (US market) +- **Postal targeting**: US ZIP, UK outward codes, Canadian FSA +- **Audience targeting**: Accepts hashed email, hashed phone, UID2, and RampID; minimum matched audience size of 500; matching latency 1–24 hours +- **Conversion tracking**: Accepts purchase, lead, add_to_cart, view_content events from website/app; no multi-source dedup +- **Extensions**: Vendor-specific data in `ext.acmecorp` + +### Multi-protocol agent + +An agent can implement multiple protocols from a single endpoint. This is common for sellers that manage both media buying and creative generation — the buyer calls all tasks on the same URL. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 }, + "capability_changes": { + "capabilities_version": "rev_20260702_091455", + "last_modified": "2026-07-02T09:14:55Z", + "cache_ttl_seconds": 3600, + "notifications": { + "supported": true, + "registration_task": "sync_agent_notification_configs", + "event_types": ["capabilities.changed"] + } + } + }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator"], + "supported_account_currency_modes": ["fixed"], + "timezone": { "mode": "seller_fixed", "fixed_timezone": "UTC" } + }, + "media_buy": { + "creative_approval_mode": "require_human", + "features": { + "inline_creative_management": true + }, + "portfolio": { + "publisher_domains": ["news.example.com"], + "primary_channels": ["display", "olv"] + } + }, + "creative": { + "has_creative_library": true, + "supports_generation": true, + "supports_transformation": false, + "supports_compliance": false, + "bills_through_adcp": true, + "supported_formats": [ + { + "capability_id": "display_image_generator", + "operations": ["build", "validate", "preview"], + "format": { + "format_kind": "image", + "params": { "width": 300, "height": 250 } + } + } + ], + "preview": { + "routes": [{ + "capability_id": "display_image_generator", + "rendering_origin": "platform_native" + }] + } + } +} +``` + +This agent supports: + +- **Media Buy Protocol**: Product discovery, media buying, delivery reporting +- **Creative Protocol**: Creative library management, AI-powered creative generation, variant-level delivery analytics via [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery) +- **Shared account**: A single account established via `sync_accounts` applies to both protocols + +When `supported_protocols` includes `"creative"`, inspect the `creative` capability block for the tasks and canonical formats this endpoint actually supports. [`list_creative_formats`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats) is deprecated in 3.2. See [Creative capabilities on sales agents](/dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities). + +### Geo Standards Reference + +| Level | System | Examples | +| ----------- | ---------------------- | ---------------------------------------- | +| Country | ISO 3166-1 alpha-2 | `US`, `GB`, `DE`, `CA` | +| Region | ISO 3166-2 | `US-NY`, `GB-SCT`, `DE-BY`, `CA-ON` | +| Metro (US) | `nielsen_dma` | `501` (NYC), `803` (LA), `602` (Chicago) | +| Metro (UK) | `uk_itl2` | `UKI` (London), `UKD` (North West) | +| Metro (EU) | `eurostat_nuts2` | `DE30` (Berlin), `FR10` (Île-de-France) | +| Postal (US) | `US` / `zip` | `10001`, `90210` | +| Postal (US) | `US` / `zip_plus_four` | `10001-1234` | +| Postal (UK) | `GB` / `outward` | `SW1`, `EC1`, `M1` | +| Postal (UK) | `GB` / `full` | `SW1A 1AA` | +| Postal (CA) | `CA` / `fsa` | `K1A`, `M5V` | + +## Migration from list_authorized_properties (v2) + +The `list_authorized_properties` task was removed in v3. If migrating from v2: + +| Old Field | New Location | +| ----------------------- | ------------------------------------------ | +| `publisher_domains` | `media_buy.portfolio.publisher_domains` | +| `primary_channels` | `media_buy.portfolio.primary_channels` | +| `primary_countries` | `media_buy.portfolio.primary_countries` | +| `portfolio_description` | `media_buy.portfolio.description` | +| `advertising_policies` | `media_buy.portfolio.advertising_policies` | +| `last_updated` | `last_updated` (top level) | + +New fields: + +- `adcp.major_versions` - Version compatibility +- `supported_protocols` - Which domain protocols are supported +- `media_buy.features` - Optional feature support +- `media_buy.execution.axe_integrations` - Ad exchange support +- `media_buy.execution.creative_specs` - VAST/MRAID versions +- `media_buy.execution.targeting` - Geo targeting granularity + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) | No credentials presented | Provide credentials via auth header | +| [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) | Credentials rejected (expired / revoked) | Human credential rotation required | +| [`VERSION_UNSUPPORTED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-version-unsupported) | Declared `adcp_major_version` not in seller's `major_versions` | Call without `adcp_major_version` to discover supported versions, then retry | +| [`SERVICE_UNAVAILABLE`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-service-unavailable) | Temporary service or dependency failure | Retry with backoff | + +## Best Practices + +**1. Cache Capabilities** +Capabilities rarely change. Cache results for no longer than `adcp.capability_changes.cache_ttl_seconds` when present, compare `capabilities_version` on refresh when present, and subscribe to `capabilities.changed` if the seller advertises notification support. When notifications are enabled, `capabilities_version` is the required read-after-notify fence; retry refresh if a webhook revision is not yet observable. Fall back to `last_modified` or legacy `last_updated` only when `capability_changes.notifications.supported` is absent or false. + +**2. Check Protocol Support First** +Before accessing protocol-specific fields, verify the protocol is in `supported_protocols`. + +**3. Check Before Requesting** +Don't send postal areas for a system the seller doesn't support. Don't request features the seller doesn't support. + +**4. Fail Fast on Incompatibility** +If a seller doesn't support required capabilities, skip them early rather than discovering failures later. + +**5. Read the Auth Model Before Proceeding** +Check `account.require_operator_auth` immediately after discovery. Agent-trusted and operator-scoped flows diverge significantly: the former uses a single credential for all brands and operators, the latter requires per-operator credentials and sessions. + +**6. Use Protocol Version for Routing** +Route requests to appropriate API versions based on `adcp.major_versions`. + +## Next Steps + +After discovering capabilities: + +1. **Set up accounts**: Follow the auth model from `account.require_operator_auth` — see [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#what-sellers-declare) +2. **Filter products**: Use [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with capability-aware filters +3. **Validate properties**: Fetch publisher `adagents.json` files for property definitions +4. **Create buys**: Use [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) with supported features + +## Learn More + +- [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) - Auth models, account setup, billing +- [adagents.json Specification](/dist/docs/3.2.0-beta.4/governance/property/adagents) - Publisher authorization files +- [Product Filters](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#filters) - Capability-aware filtering +- [Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards) - Brand safety configuration diff --git a/dist/docs/3.2.0-beta.4/protocol/language-and-localization.mdx b/dist/docs/3.2.0-beta.4/protocol/language-and-localization.mdx new file mode 100644 index 0000000000..b53acb0164 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/language-and-localization.mdx @@ -0,0 +1,114 @@ +--- +title: Language and localization +sidebarTitle: Language and localization +description: "The shared language-tag contract and the distinct patterns AdCP uses for agent input, agent responses, published multilingual content, and executable creative." +"og:title": "AdCP — Language and localization" +--- + +# Language and localization + +AdCP uses one shared language-identity primitive, but it does not use one +universal localization topology. An agent declaring what language it can parse, +a caller requesting response text, a publisher releasing multilingual content, +and a seller trafficking executable creative have different lifecycle and +failure requirements. + +This page defines the reusable architecture for those surfaces. It does not add +the pending negotiation or published-content fields tracked in +[#3658](https://github.com/adcontextprotocol/adcp/issues/3658) and +[#3668](https://github.com/adcontextprotocol/adcp/issues/3668). The materialized +creative contract is the first implementation of these shared rules, not a +template that every other localization concern must copy. + +## One language-tag primitive + +`/schemas/core/locale-tag.json` is the shared AdCP schema for BCP 47 language +identity. The historical file name is retained for wire compatibility, but the +concept is a **language tag**, not a general locale-settings object. It does not +determine currency, time zone, number or date formatting, market, or legal +jurisdiction. + +Every new AdCP field that carries a BCP 47 language identity or concrete +language range MUST reference this schema. A surface MUST NOT redeclare a plain +string with its own BCP 47 wording, pattern, or casing behavior. This prevents a +tag such as `FR-ca` from being accepted by one task and rejected by another. + +The shared schema applies the AdCP canonical wire profile: lower-case language +and variants, title-case script, and upper-case region. This is intentionally +stricter than RFC 5646, where comparison is case-insensitive and case +regularization is optional. Receivers reject a non-profile spelling instead of +silently rewriting it. + +Existing fields that describe language with unconstrained strings are legacy +compatibility boundaries. This rule does not retroactively make their old +payloads invalid. When a new contract consumes one of those values, it must +either migrate the field through a versioned change or apply the shared schema +contextually, as localized creative does for text and markdown assets. + +## Name the matching operation + +"Language matching" is not a complete interoperability rule. Every surface +MUST name the RFC 4647 operation and the direction in which it is applied. + +| Purpose | Operation | Direction | Example | +| --- | --- | --- | --- | +| Declare which tagged values are eligible | RFC 4647 §3.3.1 Basic Filtering | Declared range filters a candidate tag | Seller range `fr` accepts `fr-CA`; seller range `fr-CA` does not accept `fr` | +| Select one representation from available tags | RFC 4647 §3.4 Lookup | Requested range is progressively truncated and compared by equality | Request `fr-CA` can select available `fr`; it does not select sibling `fr-FR` | + +Eligibility is a set-membership question; selection chooses one value. A +surface must not call an eligibility set "Lookup" merely because a simple test +case happens to produce the same result. + +## Four distinct localization patterns + +| Concern | Contract pattern | +| --- | --- | +| Agent input comprehension | An adjacent authoritative `*_language` declaration plus a supported-input capability. Treat capability entries as eligibility ranges using Basic Filtering and fail closed when the declared input language is not eligible. Language detection may validate content, but it must not silently replace the sender's declaration or determine a different eligibility result. | +| Agent response language | Requested language preference plus an echo of the language actually used. Select from supported response languages with Lookup so any fallback is deterministic and observable. | +| Published multilingual content | Whole-value language maps plus an explicit default. Localize ordered collections as complete values rather than independently translating elements and producing a mixed-language array. This is content selection, not an unsupported-input error flow. | +| Executable creative | Materialized source and target variants, exact readback, seller eligibility, buyer selection, explicit fallback, and `do_not_serve`. Translation or generation remains a separate production operation. | + +The first three patterns do not inherit creative's variant IDs, atomic +replacement, review state, or delivery attribution. Those exist because an +executable asset must be trafficked and later identified exactly. A brief, +response description, or brand guidance value needs a language declaration and +the matching rule appropriate to its surface—not a creative variant graph. + +## Current protocol boundaries + +Native creative localization implements the executable-creative pattern and +uses the shared tag schema throughout. Its product and placement eligibility +uses Basic Filtering; delivery selection uses Lookup. + +Future agent-input and response-language work should reuse the same tag schema, +use Basic Filtering for declared comprehension eligibility, make the adjacent +input-language declaration authoritative, and echo the actual response +language. Published-content work should reuse the tag profile while defining +whole-value maps and explicit defaults rather than agent capability or error +semantics. + +**`targeting.language` uses the shared BCP 47 wire profile.** The language +filter in [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) and related tasks carries canonical language ranges and applies RFC 4647 §3.3.1 +Basic Filtering in the direction buyer range → user language-preference tag. +Thus `fr` accepts `fr`, `fr-CA`, and `fr-FR`, while `fr-CA` accepts only +`fr-CA` and its more-specific descendants. Capability discovery is deliberately +stricter: `media_buy.execution.targeting.language.supported_languages` lists +exact selectable request values, so a seller declaring `fr` has not also +declared that it accepts `fr-CA` as a request value. This exact capability +membership prevents buyers from inferring narrower execution controls that the +seller did not advertise. + +**`locale_policy` absence, populated array, and `und` have distinct semantics.** +Omitting `locale_policy` entirely means unconstrained — no locale restriction, +and any creative variant is eligible for assignment. A populated +`accepted_language_ranges` array means a closed set — at least one materialized +creative variant must match a seller range via Basic Filtering. Including `und` +in that array means unknown language: `und` is not a wildcard and matches only +creative variants explicitly tagged `und`, not untagged or generic creatives. +Use `zxx` explicitly when a creative has no linguistic content (for example, an +animation with no text or speech); `zxx` must appear in `accepted_language_ranges` +for the policy to cover it. + +Legacy underscore keys such as `en_US` in `brand.json` are not shared language +tags. A bridge replaces `_` with `-`, applies the AdCP wire profile, and +validates the result; it does not pass the legacy key through unchanged. diff --git a/dist/docs/3.2.0-beta.4/protocol/required-tasks.mdx b/dist/docs/3.2.0-beta.4/protocol/required-tasks.mdx new file mode 100644 index 0000000000..60f2ca60dd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/required-tasks.mdx @@ -0,0 +1,216 @@ +--- +title: Required tasks by protocol +sidebarTitle: Required tasks +description: "Consolidated reference of required and optional tasks for each AdCP protocol, organized by agent role." +"og:title": "AdCP — Required tasks by protocol" +--- + +# Required tasks by protocol + +Each AdCP protocol defines tasks that agents implement depending on their role. This page consolidates the requirements from each protocol specification into a single reference. + +**Legend**: **Required** — the specification mandates implementation. **Conditional** — required when the agent has a specific capability. **Optional** — the specification recommends but does not mandate. + +Some tasks span protocols. For example, [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) is defined in the Creative Protocol but may also be implemented by Media Buy sales agents. Canonical format discovery itself is no longer a shared task: each owning surface publishes its declaration directly. + +## Shared + +Every AdCP agent, regardless of protocol, implements: + +| Task | Requirement | Reference | +|------|------------|-----------| +| [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | Required | [Capability discovery](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | +| [`sync_agent_notification_configs`](/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs) | Conditional | Required when `get_adcp_capabilities.adcp.capability_changes.notifications.supported` is `true`; registers caller-scoped agent-level `capabilities.changed` webhooks. Sellers MUST reject registrations without a stable authenticated principal. | + +Caller-scope RBAC introspection is not a standalone task. Sellers that support scope introspection return a per-account `authorization` object on [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) responses. See [Accounts Protocol — Caller authorization](/dist/docs/3.2.0-beta.4/accounts/overview#caller-authorization). + +AdCP task lifecycle state is application-layer state, not MCP-native or A2A-native task state. 3.x sellers MAY advertise non-colliding AdCP aliases for polling and reconciliation: [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) for legacy `tasks/get`, and [`list_tasks`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/list-tasks-request.json) for legacy `tasks/list`. These aliases remain optional compatibility surfaces generally in 3.x; callers MUST continue to support the legacy names through the 3.x line. The [AdCP A2A Profile Extension v3](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-profile-extension) is the scoped exception: an agent that can return an AdCP Submitted response on that profile MUST expose `get_task_status`, and the A2A caller uses that non-colliding task. Alias and legacy request payloads use the same snake_case shape, including the optional `account` scope used to keep task visibility within the caller's authenticated account + principal pair. + +## Media Buy Protocol + +### Sales agent (seller) + +| Task | Requirement | Notes | +|------|------------|-------| +| [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | Required | Inventory discovery | +| [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | Required | Agent capabilities; sellable formats remain product-scoped in `get_products` | +| [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) | Required | Campaign creation and order confirmation | +| [`update_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy) | Required | Budget, targeting, pause, cancel | +| [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) | Required | Operational state retrieval | +| [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) | Required | Delivery metrics at the package level; `reporting_capabilities` MUST be included on every product | +| [`provide_performance_feedback`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback) | Required | Accept buyer optimization signals | +| [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) | Conditional | Required when the sales agent hosts a creative library (Creative Protocol task) | +| [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) | Optional | Creative catalog browsing (Creative Protocol task) | +| [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) | Optional | Product/inventory catalog sync | +| [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) | Optional | Conversion tracking setup | +| [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) | Conditional | Required when event sources are configured | +| [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) | Optional | First-party CRM audience upload | + +Sales agents MUST also support at least one transport (MCP or A2A) and declare `media_buy` in `supported_protocols`. + +**Reference**: [Media Buy Specification](/dist/docs/3.2.0-beta.4/media-buy/specification) · [Seller integration guide](/dist/docs/3.2.0-beta.4/building/operating/seller-integration) + +### Orchestrator (buyer) + +Orchestrators are not MCP/A2A servers — they call sales agent tasks. Conformant orchestrators MUST: + +1. Authenticate with sales agents +2. Include required fields per request schemas +3. Handle asynchronous task-level responses (`submitted`, `working`, `input-required`) and webhook delivery of completion artifacts +4. Use `media_buy_id` for all subsequent operations +5. Respect `creative_deadline` for creative uploads + +**Reference**: [Media Buy Specification — Orchestrator conformance](/dist/docs/3.2.0-beta.4/media-buy/specification#orchestrator-conformance) + +## Creative Protocol + +### Creative agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | Required | Canonical creative capability discovery through `creative.supported_formats[]` | +| [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers) | Conditional | Required when the agent advertises `creative.supports_transformers: true` | +| [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) | Optional | Generation, transformation, or library retrieval | +| [`preview_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative) | Optional | Preview rendering | +| [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) | Conditional | Required when `has_creative_library: true` | +| [`sync_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives) | Conditional | Required when the agent accepts creative uploads | +| [`get_creative_delivery`](/dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery) | Optional | Variant-level delivery metrics | + +Creative agents MUST publish accurate canonical capability declarations. Exact publisher-format claims carry publisher identity; generic claims carry an honest parameter envelope. + +**Reference**: [Creative Specification](/dist/docs/3.2.0-beta.4/creative/specification) + +## Signals Protocol + +### Signal agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) | Required | Signal discovery | +| [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) | Required | Signal activation on decisioning platforms | + +Signal agents MUST enforce access control for private signals and activation keys. + +**Reference**: [Signals Specification](/dist/docs/3.2.0-beta.4/signals/specification) + +## Brand Protocol + +### Brand agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`get_brand_identity`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity) | Required | Core identity is public; authorized callers get deeper data | +| [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) | Conditional | Required when the agent manages brand rights | +| [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights) | Conditional | Required when the agent manages brand rights | +| [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights) | Conditional | Required when the agent manages brand rights | + +Brand agents MUST declare `brand` in `supported_protocols`. + +Creative approval is delivered to the `approval_webhook` declared by +[`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights); its +`creative-approval-request.json` shape is a webhook payload, not an AdCP task. + +**Reference**: [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol) · [Building a brand agent](/dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent) + +## Accounts Protocol + +### Any agent accepting accounts + +| Task | Requirement | Notes | +|------|------------|-------| +| [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts) | Conditional | Buyer-declared accounts (`require_operator_auth: false`) use this when the buyer must select billing, terms, sandbox setup, notifications, or other settings before use. It MAY be omitted only for unambiguous lazy provisioning from the natural key when [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) is exposed. Account-id namespaces may use it only for settings updates unless a future explicit capability declares provisioning. | +| [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) | Conditional / recommended | Account-id namespaces (`require_operator_auth: true`) MUST expose it when a credential can access multiple accounts and SHOULD return a singleton otherwise. Buyer-declared-account sellers (`require_operator_auth: false`) SHOULD expose it as the cold-start recovery read and MUST expose it when they lazily provision instead of implementing `sync_accounts`. | +| [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) | Conditional | Required when the buyer uses campaign governance | +| [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) | Conditional | Required when the agent charges for services | +| [`get_account_financials`](/dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials) | Optional | Financial summary per account | + +Agents MUST implement at least one of `sync_accounts` or `list_accounts` depending on their account model. An agent MAY implement both. Buyer-declared-account sellers SHOULD implement both: `sync_accounts` establishes the relationship, while `list_accounts` lets a stateless buyer recover the seller's acknowledged `(brand, operator, sandbox)` portfolio without already possessing the natural keys it lost. A buyer-declared seller that exposes only `list_accounts` is conformant only when it lazily provisions on the first natural-key account-scoped request and can determine every required account setting without additional buyer input. + +**Reference**: [Accounts Protocol](/dist/docs/3.2.0-beta.4/accounts/overview) + +## Governance: Campaign + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans) | Required | Plan creation and amendment | +| [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) | Required | Validation at purchase, modification, and delivery phases | +| [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome) | Required | Outcome reporting and budget commitment | +| [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) | Required | Audit trail retrieval | + +**Reference**: [Campaign Governance Specification](/dist/docs/3.2.0-beta.4/governance/campaign/specification) + +## Governance: Property + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`create_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#create_property_list) | Required | List creation with filters | +| [`get_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#get_property_list) | Required | Resolved property retrieval | +| [`update_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#update_property_list) | Required | List modification | +| [`delete_property_list`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#delete_property_list) | Required | List removal | +| [`list_property_lists`](/dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists#list_property_lists) | Required | List enumeration | +| [`validate_property_delivery`](/dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery) | Optional | Post-campaign compliance validation | + +**Reference**: [Property Governance Specification](/dist/docs/3.2.0-beta.4/governance/property/specification) + +## Governance: Collection + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`create_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#create_collection_list) | Required | List creation with collection sources and filters | +| [`get_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#get_collection_list) | Required | Resolved collection retrieval | +| [`update_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#update_collection_list) | Required | List modification | +| [`list_collection_lists`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#list_collection_lists) | Required | List enumeration | +| [`delete_collection_list`](/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists#delete_collection_list) | Required | List removal | + +**Reference**: [Collection Governance](/dist/docs/3.2.0-beta.4/governance/collection) + +## Governance: Content Standards + +### Content standards agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`create_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards) | Required | Standards creation | +| [`get_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards) | Required | Standards retrieval | +| [`list_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards) | Required | Standards enumeration | +| [`update_content_standards`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards) | Required | Standards modification | +| [`calibrate_content`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content) | Optional | Seller calibration against standards | +| [`validate_content_delivery`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery) | Optional | Post-delivery content compliance | +| [`get_media_buy_artifacts`](/dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts) | Optional | Artifact retrieval for validation | + +**Reference**: [Content Standards](/dist/docs/3.2.0-beta.4/governance/content-standards) + +## Governance: Creative + +### Creative governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`get_creative_features`](/dist/docs/3.2.0-beta.4/governance/creative/get_creative_features) | Required | Security scanning, content categorization | + +**Reference**: [Creative Governance](/dist/docs/3.2.0-beta.4/governance/creative) + +## Sponsored Intelligence Protocol + +### Brand agent + +| Task | Requirement | Notes | +|------|------------|-------| +| [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering) | Optional | Pre-session offering lookup | +| [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) | Required | Session creation with consent | +| [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message) | Required | Conversational messaging | +| [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session) | Required | Session cleanup | + +Brand agents MUST declare `sponsored_intelligence` in `supported_protocols`. + +**Reference**: [Sponsored Intelligence Specification](/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification) + +## Trusted Match Protocol + +TMP uses a different communication model (direct HTTP, not MCP/A2A tasks). See the [TMP Specification](/dist/docs/3.2.0-beta.4/trusted-match/specification) for message types and conformance requirements. diff --git a/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log.mdx b/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log.mdx new file mode 100644 index 0000000000..1a5486aecd --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log.mdx @@ -0,0 +1,208 @@ +--- +title: Snapshot and log +description: "The contract for AdCP state surfaces that pair a read API with a push channel — authoritative state, event identity, and recovery after missed notifications." +"og:title": "AdCP — Snapshot and log" +--- + +# Snapshot and log + +AdCP state surfaces that pair a read API with push notifications have two faces: a **snapshot** read from a task and a **log** of events fired against a registered webhook URL. The snapshot says *what is true now*. The log says *what fired, when, with what id*. This page is the contract that keeps those paired surfaces coherent. A read API is not automatically a snapshot/log pair merely because its result contains state. + +You don't need to read this page to call an AdCP task. You do need to read it to build a webhook receiver, to propose a new notification type, or to argue that a missing-event scenario is a spec gap rather than a buyer-side bug. + +## The two faces + +### Snapshot + +The current truth, exposed on a read API: + +- [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) returns each buy's `status`, `health`, open `impairments[]`, and optional `webhook_activity[]`. +- [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) returns delivery data for the same reporting windows carried by delivery-report fires. +- [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) returns each creative's current lifecycle state, including soft-purge tombstones when requested. +- [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) returns each account's current status. +- Wholesale [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) and [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) reads return versioned feed snapshots. +- [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) returns the agent's current capability revision. + +A snapshot is always re-readable. It carries no history — only what's true at the moment of the read. + +### Log + +A stream of push events fired to the buyer's registered webhook URL: + +- Delivery report fires (`notification_type: scheduled | final | delayed | adjusted | window_update`). +- Dependency impairment fires (`notification_type: impairment`). +- Creative and account lifecycle fires. +- Wholesale product and signal feed-change fires. +- Agent capability-change fires. +- Future event types that adopt this contract are added the same way: a new `notification-type` value, a defined payload, and a named repair read. + +Each state-shaped event carries a stable logical-event `notification_id` and names the resource or revision needed for a repair read. Point-in-time delivery-report events have no persistent event id and use only `idempotency_key`. + +## The five rules + +These rules apply across every snapshot/log pair in the protocol. A new notification type can claim this contract only if its design satisfies all five. + +### 1. Separate transport, event, and resource identity + +**Dedupe transport retries by `idempotency_key`. Recognize a logical event by `notification_id`. Repair through the resource key defined by that notification type.** These identifiers serve different purposes, and receivers MUST NOT substitute one for another. + +- **`idempotency_key`** — transport-layer, **per logical fire**. Issued by the seller and reused across delivery attempts of that fire. Receivers dedupe on this to suppress transport retries. A deliberate re-emission is a new fire with a new `idempotency_key`. Defined in the [webhooks transport contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks). +- **`notification_id`** — event-layer, **per logical event**. Stable across re-emissions of that event. It is not generally a resource id: creative and account notifications use transition ids, wholesale notifications use `event.event_id`, and capability notifications use revision-event ids. Impairment is the special case where `notification_id` equals `impairment_id`. Typed at the envelope level on [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/mcp-webhook-payload.json); each [`notification-type`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/notification-type.json) description defines its population. Point-in-time delivery events do not define it. +- **Repair key** — the resource identifier or revision used on the authoritative read: for example, `creative_id`, `account_id`, a media buy and reporting range, wholesale feed scope/version, or `capabilities_version`. The event payload for every conforming pair MUST expose enough information to select that read. + +The split is intentional. A receiver seeing the same `idempotency_key` twice is observing a transport retry — uninteresting, dedupe and move on. A receiver seeing the same `notification_id` twice under **different** `idempotency_key`s is observing a re-emission — signal. The seller is repeating itself, usually because the buyer's receiver was unreachable for long enough that the seller wants to make sure the state was delivered. That's a missed-events warning the receiver should not collapse. + +For point-in-time delivery events there is no persistent logical-event id — the per-fire `idempotency_key`, reporting range, and optional `sequence_number` are the available identity and recovery coordinates. That asymmetry is intentional. + +### 2. Every push event points to readable authoritative state + +There is no webhook-only **authoritative current state** within a snapshot/log pair. If an `impairment` webhook fires, a pair that declares both propagation surfaces exposes the current open impairment set through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys). If a delivery report fires inside the seller's declared parity set, [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) can reproduce the reporting data for that range and granularity. + +State-change pushes MAY include transition metadata useful for routing or diagnostics—such as prior status, reason, initiator, changed paths, or feed-event metadata—that a current snapshot does not retain. That metadata is advisory history, not authoritative current state, and is not recoverable after a missed event in 3.2. Push-only events and data outside a declared pull-parity set are outside this contract and MUST be identified as such. + +### 3. Push is at-least-once; the snapshot is authoritative + +When push and snapshot disagree, the snapshot wins. A transport retry (same `idempotency_key`) is expected under at-least-once delivery — buyer agents dedupe and continue. A re-emission (same `notification_id`, new `idempotency_key`) is a missed-events warning, so receivers reconcile the snapshot instead of collapsing it as a retry. A stale webhook fire (the push reports a state that the snapshot no longer reflects because the resource moved on) is also expected — buyer agents re-read the snapshot rather than acting on the push payload. + +This is why receivers MUST verify against the snapshot before taking irreversible action on a push. + +### 4. The read path provides the declared recovery guarantee + +Snapshot/log pairs make one of two recovery guarantees. A notification type MUST state which guarantee applies; implementations and reviewers MUST NOT infer historical replay from current-state convergence. + +- **State convergence** — for impairment, lifecycle, feed, and capability-change events, the named read returns the complete authoritative state *now*. Missing a push may lose its transition-only metadata, but it cannot prevent the receiver from converging on the resource's current state. Recovery is complete for current state, not for event history. +- **Data parity** — for delivery-report events, `get_media_buy_delivery` MUST reproduce the reporting data and windowing at every granularity the seller lists in `reporting_capabilities.windowed_pull_granularities`. The pull uses `time_granularity` plus `include_window_breakdown: true`; `window_update` recovery also uses `measurement_window` and `supersedes_window` to replace the superseded slice. + +Sellers MUST declare the data-parity set honestly. A seller that declares `["hourly", "daily"]` MUST honor both hourly and daily windowed pulls. Pulls outside the set return [`UNSUPPORTED_GRANULARITY`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-unsupported-granularity) with `error.details.supported_granularities`. A seller MAY emit a higher-frequency webhook outside the declared set, but that fire does not claim snapshot/log recovery at that frequency. + +### 5. Push events and log entries share an id space + +When a read surface exposes `webhook_activity[]`, it reuses wire identifiers rather than minting a parallel namespace: `idempotency_key` MUST equal the push value, and a populated `notification_id` MUST equal the push value. Sellers SHOULD populate `notification_id` on newly recorded attempts for event types that define it. The field remains optional in 3.2 so retained activity created before event identity was persisted can still be returned for the required 30-day window. Point-in-time delivery events do not define `notification_id` and omit it. + +## Current conforming pairs + +The table below is the durable catalog of pairs that claim this contract. "Guarantee" distinguishes current-state convergence from delivery-data parity; a pair does not acquire replay history merely because its push payload has a timestamp. + +| Pair | Snapshot and repair key | Push identity | Ordering / schema | Missed-event recovery | Guarantee | +|---|---|---|---|---|---| +| Media-buy dependency health | [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys) by `media_buy_id`; read `health` and the open `impairments[]` set | `impairment`; `notification_id = impairment_id` | Order open impairments by `observed_at`, not arrival time. The MCP envelope and impairment object allow additive fields. | Re-read `get_media_buys`; the open set is authoritative. | Current-state convergence, only when `propagation_surfaces` declares both `snapshot` and `webhook`. | +| Delivery reporting | [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) by media buy, reporting range, and declared granularity | `scheduled`, `final`, `delayed`, `adjusted`, `window_update`; no `notification_id` | `sequence_number` detects a gap but does not identify every missing range. Delivery payloads allow additive fields. | Pull from the last reconciled reporting-period boundary through the current range at a declared granularity. Reconcile every returned window; for measurement progression, replace `supersedes_window` with `measurement_window`. | Data parity within `windowed_pull_granularities`; higher-frequency fires outside that set are excluded. | +| Creative lifecycle | [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) by `creative_id`; use `include_purged: true` for soft-purge tombstones | `creative.status_changed` and soft `creative.purged`; stable transition/event `notification_id` | No global sequence. Transition time, prior status, reason, and initiator are advisory event metadata. Top-level payloads are closed schemas; version against the advertised AdCP schema. | Re-read `list_creatives`; current status or the soft-purge tombstone is authoritative. | Current-state convergence. Transition metadata is not replayed; hard purge is excluded. | +| Account lifecycle | [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts) by `account_id` | `account.status_changed`; stable transition `notification_id` | No global sequence. `observed_at`, prior status, reason, and detail describe the event; the snapshot decides current state. The payload is a closed schema. | Re-read `list_accounts`; use its status, setup hints, billing terms, and authorization state. | Current-state convergence. Transition metadata is not replayed. | +| Wholesale product feed | [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) with `buying_mode: wholesale`, cache scope, and `wholesale_feed_version` | `product.*` and `wholesale_feed.bulk_change`; `notification_id = event.event_id` | No durable event cursor. `previous_wholesale_feed_version` exposes some gaps; the webhook is a closed schema. Changed fields, retired pricing ids, effective times, retractions, and removal reasons are event metadata. | Reconcile from the last trusted `if_wholesale_feed_version`; restart from an unversioned bootstrap when the version chain cannot be trusted. | Current-feed convergence when product reads and `wholesale_feed_webhooks.supported` are both declared; event metadata is not replayed. | +| Wholesale signal feed | [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) with `discovery_mode: wholesale`, cache scope, and `wholesale_feed_version` | `signal.*` and `wholesale_feed.bulk_change`; `notification_id = event.event_id` | No durable event cursor. `previous_wholesale_feed_version` exposes some gaps; the webhook is a closed schema. Changed fields, retired pricing ids, effective times, retractions, and removal reasons are event metadata. | Reconcile from the last trusted `if_wholesale_feed_version`; restart from an unversioned bootstrap when the version chain cannot be trusted. | Current-feed convergence when signal reads and wholesale signal webhooks are both declared; event metadata is not replayed. | +| Agent capabilities | [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities); repair fence is `adcp.capability_changes.capabilities_version` | `capabilities.changed`; stable logical-event `notification_id`, plus the target `capabilities_version` | No global sequence; compare the opaque capability revision only for equality. `reason` and `changed_paths` are advisory event metadata. The payload is a closed schema. | Retain the prior cache, re-read, and adopt the response only when its `capabilities_version` equals the pushed revision. If the revision is not yet observable, keep the prior cache and retry with normal transient-error backoff. | Current-state convergence; advisory change metadata is not replayed. | + +The following surfaces are deliberately outside the catalog: + +- Webhook-only impairment propagation—`propagation_surfaces: ["webhook"]` without `snapshot`—has no repair read and does not claim this contract. +- Delivery fires at a granularity absent from `windowed_pull_granularities` have no promised data-parity recovery at that frequency. +- [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) and event-source health remain pull-only because 3.2 defines no matching lifecycle notification. +- Hard `creative.purged` is reserved for compelled legal erasure and deliberately retains no read-side tombstone. It is a push-only exception, not a conformant snapshot/log pair; receivers that require durable evidence must persist the signed fire themselves. + +## Webhook activity log pattern + +The transport half of Rule 5. Any AdCP resource that exposes a snapshot read API and has webhook fires associated with it MAY also surface a `webhook_activity[]` array on that read API — recent per-fire transport records, scoped to the calling principal, useful for buyer-side debugging when a fire didn't land or a retry trail looks suspect. This section is the contract any resource adopting that surface MUST follow. + +### Canonical record shape + +The record shape is fixed at [`/schemas/core/webhook-activity-record.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/webhook-activity-record.json). Read schemas adopting this surface MUST `$ref` the canonical record rather than inline it — the shape is intentionally uniform across resources so a buyer's debug tooling can consume `webhook_activity[]` from any read API without resource-specific parsing. + +Each record carries `idempotency_key` (equals the payload's `idempotency_key` per Rule 5 — no parallel `delivery_id`), optional `notification_id`, `subscriber_id`, `fired_at`, `completed_at`, `notification_type`, `sequence_number`, `attempt` (1-indexed; one record per attempt), `status` (`success` / `failed` / `timeout` / `connection_error` / `pending`), `url` (query string and fragment stripped, secret-shaped path segments redacted), `http_status_code`, `response_time_ms`, `payload_size_bytes`, and `error_message` (server-side classification only — never request/response bodies or headers). + +For a fire whose payload defines `notification_id`, sellers SHOULD populate it on newly recorded attempts and MUST copy the payload value exactly when they do. Sellers MAY omit it on retained records created before 3.2 so adopting the field does not invalidate the existing 30-day activity window. Delivery-report fires do not define `notification_id` and omit it. + +### Request-field convention + +Read schemas that surface `webhook_activity[]` MUST use the same two request-field names so callers can opt in uniformly across resources: + +- **`include_webhook_activity`** — boolean, default `false`. When true, the seller MAY return a `webhook_activity[]` array on each item (subject to the three-state presence semantics below). +- **`webhook_activity_limit`** — integer, range 1–200, default 50. Per-item cap on returned records, most-recent first. + +### Scoping (normative) + +`webhook_activity[]` MUST be scoped to the **calling principal**. When multiple principals share visibility into the same resource via account-level access, each principal sees only fires targeting its own registered endpoint. This is the same scoping rule that applies to push delivery itself. + +### Retention (normative) + +Sellers that surface `webhook_activity[]` **MUST** retain records for at least 30 days from each record's `completed_at`. This applies uniformly to every terminal status — `success`, `failed`, `timeout`, and `connection_error` all populate `completed_at` (for `timeout` and `connection_error` it is the moment the seller declared the attempt terminal) and the 30-day clock runs from there. For records still in `pending` status (the attempt is in flight or queued for retry, `completed_at` is null), the clock runs from `fired_at` until the attempt terminates and then transitions to 30 days from `completed_at` — so a retry trail does not age out mid-flight just because the initial fire happened 29 days ago. + +The 30-day floor is a hard contract — sellers unable to honor it MUST omit the field entirely (see three-state presence below) rather than return a shorter window. This gives buyers a single retention guarantee they can build debug tooling against, and gives sellers with thin storage a clean opt-out via the three-state semantics rather than forcing the spec to negotiate per-seller retention floors. + +### Three-state presence semantics + +| State | Meaning | +|-------|---------| +| Field **omitted** | Seller does not surface webhook activity for this resource. Causes are resource-specific (see "Adoption checklist" below) but typically include: the seller does not persist fire history; the resource has no registered webhook endpoint for the calling principal; the seller's declared capability surface excludes the webhook channel for the relevant notification types. Buyers MUST NOT infer "no fires occurred" from omission. | +| Empty array `[]` | Seller persists fire history but has fired nothing recent for this principal. | +| Non-empty array | Actual fire records, most-recent first. | + +Sellers MUST NOT collapse these into a single state. Opting in via `include_webhook_activity: true` does not override the seller's intrinsic capability — a seller that cannot meet the retention floor returns omission regardless of the request. + +Buyers diagnosing an unexpected omission have two readily observable signals to discriminate the cause without needing operator help: (1) their own `push_notification_config` registration state for the resource (rules out "no registered endpoint") and (2) the seller's capability declaration (rules out "capability surface excludes the channel"). When both check out, "seller does not persist fire history" is the remaining cause and no further protocol-side fix is available — escalate. + +### Record cardinality + +One record per attempt. A successful first-attempt fire appears as a single record with `attempt: 1`. A 3-attempt retry trail (e.g., two failures then a success) appears as three records sharing `idempotency_key` — the trail is reconstructed by the buyer grouping records on that key. + +### Privacy + +- `url` MUST have query string and fragment stripped, and high-entropy / token-shaped path segments SHOULD be further redacted. +- `error_message` is a server-side classification string only — never request headers, response bodies, or buyer-endpoint stack traces. +- Request and response bodies are out of scope for the basic surface. A future `include_webhook_payloads` extension may add them under stricter access controls, and would use the [universal truncation sentinel](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/truncation-sentinel.json) at `/schemas/core/truncation-sentinel.json` when bodies exceed a configured cap. + +### Adoption checklist + +Resources adopting `webhook_activity[]` MUST satisfy all of the following. The list is intentionally explicit so the "MUST" hooks are unambiguous; everything not on this list is at adopter discretion (e.g., per-resource cardinality tuning within the 1–200 range). + +1. **Notification channel (prerequisite).** Adoption requires a registered notification channel for the relevant fire types. Media buys use per-buy `push_notification_config` and `reporting_webhook`; account-scoped resources use `notification_configs[]` managed through [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts); agent capability changes use [`sync_agent_notification_configs`](/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs). Without a channel there are no fires for `webhook_activity[]` to log. Adopters MUST cite the specific channel in their call-site documentation. +2. **Record shape.** Item schema MUST `$ref` `/schemas/core/webhook-activity-record.json`. Resource-specific cross-references (e.g., a parent-resource id when records are nested inside an account-level read) go on the canonical record's `ext` envelope, not as top-level record fields. +3. **Request fields.** The opt-in field names MUST be `include_webhook_activity` (boolean, default `false`) and `webhook_activity_limit` (integer, 1–200, default 50). The 200 ceiling is the canonical cap; adopters MAY narrow the maximum on a per-resource basis but MUST NOT exceed 200 or rename the fields. +4. **Scoping.** MUST be calling-principal only, per § Scoping above. +5. **Retention floor.** MUST honor the 30-day floor per § Retention above. The pivot (`completed_at`, with carve-out for `pending`) is the same across resources. +6. **Three-state presence cardinality.** Omitted / `[]` / non-empty are the three states; adopters MUST NOT collapse them. +7. **Capability gate.** Adopters MUST document which resource-specific capability declaration gates the field (for media buys this is `capabilities.media_buy.propagation_surfaces` including `webhook`). The specific *causes* of the "field omitted" state ARE resource-specific and adopters MUST enumerate them in their call-site documentation; the cardinality and the rule that omission is not "no fires occurred" are universal. +8. **Notification type registry.** Adopters whose webhook fires carry notification types not in [`/schemas/enums/notification-type.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/notification-type.json) MUST add those types to that shared enum rather than minting a parallel enum on the canonical record. The enum is the cross-resource registry. + +### Consumers and the dependency chain + +#### Media-buy consumer + +- `get_media_buys.media_buys[].webhook_activity[]` uses the per-buy `push_notification_config`. Capability gate: `capabilities.media_buy.propagation_surfaces` MUST include `webhook` for the field to be surfaced on a buy. See [get_media_buys § Webhook activity](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys#webhook-activity) for the call-site documentation and the [persistent webhook contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#persistent-channel-contract) for the transport-side rules this surface debugs against. + +#### Account-level consumers + +Resources that outlive a single media buy register their push channel on the account, not on any one buy. The account-level surface is `notification_configs[]` — an array of per-subscriber registrations carried on [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts#account-level-webhook-subscriptions) and echoed on [`list_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts). Each entry filters by `event_types[]` so a subscriber only receives the types its endpoint handles, and multiple entries with distinct `subscriber_id`s fan a single event out to multiple endpoints (multi-subscriber composition). + +- **[#2261](https://github.com/adcontextprotocol/adcp/issues/2261) creative lifecycle, assignment, and indicator webhooks** — `list_creatives.creatives[].webhook_activity[]` adopts this pattern for `creative.status_changed`, `creative.purged`, `creative.assignment_changed`, and assignment-level `indicators.changed`. The notification channel is the account's `notification_configs[]` set, registered via `sync_accounts` in either provisioning or settings-update mode. Supported event types and per-type coalescence windows are declared via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). The parent creative is unambiguous, so `ext.creative_id` MAY be omitted on inner records. Assignment and indicator events are invalidations repaired completely through [`get_media_buys`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys); [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) is an optional bounded reverse projection, and neither its rows nor the webhook payload replaces the authoritative snapshot. See [list_creatives § Webhook activity](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives#webhook-activity) for the call-site documentation. +- **[#5915](https://github.com/adcontextprotocol/adcp/issues/5915) account status webhooks** — `list_accounts.accounts[].webhook_activity[]` uses the same pattern for `account.status_changed`. The webhook invalidates the account snapshot; buyers re-read `list_accounts` for the authoritative status, setup hints, billing terms, and authorization state. The payload intentionally omits `setup.url` so single-use setup links are fetched through the authenticated read path instead of fanned out to every subscriber. +- **Future account-scoped resources** follow the same chain only after defining both halves: subscribe through `sync_accounts.accounts[].notification_configs[]`, name an authoritative repair read, and adopt `webhook_activity[]` on that read when transport observability is supported. + +Adopters follow this checklist verbatim regardless of whether the notification channel is per-buy, per-account, or agent-level. + +## What this rules out + +- **A push channel for suggestions that don't change state.** If "the seller wants you to know X" doesn't correspond to a readable field, it's not a snapshot/log event. Build a pull tool instead. (See the indicator proposal.) +- **A replay tool that re-fires past webhooks.** Snapshot reads are the replay. A replay tool is an operator-side debug feature; it's not part of the buyer-facing protocol contract. +- **Per-event subscription filtering on per-buy push.** A buyer who registers `push_notification_config` on a media buy receives every event type fired against that buy. Filtering at the receiver is fine; filtering at the per-buy protocol surface is out of scope. Account-level subscriptions (`notification_configs[]`) are the exception — they filter by `event_types` at registration time because that surface is heterogeneous and an endpoint that handles only one resource family would otherwise receive events it cannot interpret. +- **A "did you receive my webhook?" confirmation step.** Receivers acknowledge via HTTP 2xx; senders retry on non-2xx per the [persistent webhook contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#persistent-channel-contract). Sellers do not poll buyers for receipt. + +## Current limits + +- **Transition history is not a 3.2 replay surface.** Current-state pairs recover the resource as it exists now; event-only reason, prior-state, initiator, and changed-field metadata can be lost when a push is missed. +- **Delivery parity is capability-scoped.** [`get_media_buy_delivery`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) reproduces reporting data only at declared `windowed_pull_granularities`; buyers must persist higher-frequency webhook data when the frequency is outside that set. +- **Activity identity is migration-safe.** `notification_id` is optional on `webhook_activity[]` records in 3.2 so sellers can return retained pre-adoption records. Strict presence for identity-bearing event types requires a major-version migration contract. +- **Audience lifecycle remains pull-only.** A fresh [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences) is the reliable signal when an audience is not represented by an active media-buy impairment. + +## When you'd be right to push back + +<Note> +This section is non-normative. It describes when raising an exception is reasonable, not when one is sanctioned. +</Note> + +When a use case genuinely needs an event with no snapshot half — a high-frequency signal where polling cost dominates and recovery isn't critical (e.g., a metrics stream). AdCP doesn't have one of these today. If you're proposing one, name it explicitly and argue why pull-via-snapshot doesn't fit; reviewers will weigh that against the contract this page commits to. + +## Related + +- [Push notifications](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) — the transport contract that this page sits on top of. +- [Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle) — applies snapshot/log to `status` + `health` + `impairments[]`. diff --git a/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs.mdx b/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs.mdx new file mode 100644 index 0000000000..b70bf1151a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs.mdx @@ -0,0 +1,131 @@ +--- +title: sync_agent_notification_configs +description: "Register agent-level webhook subscribers, starting with capabilities.changed notifications that invalidate cached get_adcp_capabilities responses." +"og:title": "AdCP — sync_agent_notification_configs" +--- + +Register, replace, pause, or clear caller-scoped agent-level webhook subscribers. This task manages notifications whose lifecycle belongs to the seller agent itself rather than to an account, media buy, creative, or other account-scoped resource. + +The initial event type is `capabilities.changed`, an invalidation signal for cached [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) responses. + +**Request Schema**: [`/schemas/3.2.0-beta.4/protocol/sync-agent-notification-configs-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/sync-agent-notification-configs-request.json) +**Response Schema**: [`/schemas/3.2.0-beta.4/protocol/sync-agent-notification-configs-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/sync-agent-notification-configs-response.json) + +## When to call + +First call [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). Only call this task when the seller advertises: + +```json +{ + "adcp": { + "capability_changes": { + "capabilities_version": "rev_20260702_091455", + "cache_ttl_seconds": 3600, + "notifications": { + "supported": true, + "registration_task": "sync_agent_notification_configs", + "event_types": ["capabilities.changed"] + } + } + } +} +``` + +Sellers that do not advertise support MUST reject the task rather than silently accepting a subscriber that will never fire. When `notifications.supported: true`, the same `capability_changes` block MUST include `cache_ttl_seconds` and `capabilities_version` so receivers have a bounded polling fallback and a stable comparison after missed webhooks. + +## Authentication and Caller Scope + +This task MUST only be accepted when the transport request resolves to a stable authenticated principal. The principal can be an OAuth client subject, API-key subject, verified signed-request subject, registry identity, or equivalent deployment identity, but it MUST be stable across retries and future replacements. Sellers MUST reject NO_AUTH, anonymous, or otherwise unbound registrations with [`AUTH_MISSING`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-missing) when no credentials are present, [`AUTH_INVALID`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-auth-invalid) when presented credentials fail validation, or [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) when the transport exposes anonymous registration as a malformed request. + +The authenticated principal is the owner key for declarative replacement. Sellers MUST NOT key agent-level subscribers only by `subscriber_id` or URL, because two callers can legitimately choose the same local subscriber ID. One caller's replacement set MUST NOT read, delete, pause, overwrite, or infer subscribers owned by another principal. + +## Request Parameters + +| Field | Type | Description | +|-------|------|-------------| +| `idempotency_key` | string | **Required.** Unique key for at-most-once replacement. Reuse the same key and same payload on retry. | +| `notification_configs` | array | **Required.** Complete desired agent-level subscriber set for the authenticated principal. Send `[]` to clear this principal's subscribers. | +| `dry_run` | boolean | Optional. Validate without applying changes or sending endpoint proof challenges. | + +Each `notification_configs[]` entry has: + +| Field | Type | Description | +|-------|------|-------------| +| `subscriber_id` | string | **Required.** Stable logical key for this caller's endpoint. Re-sending the same ID replaces that caller's subscriber. | +| `url` | URI | **Required.** HTTPS webhook endpoint. Sellers apply the same SSRF protections and proof-of-control rules as other webhook configs. | +| `event_types` | string[] | **Required.** Currently only `capabilities.changed` is valid. | +| `authentication` | object | Optional legacy Bearer or HMAC-SHA256 selector. Omit for the default RFC 9421 webhook profile. Credentials are write-only. | +| `active` | boolean | Optional, default `true`. Set `false` to pause a subscriber without removing it. | + +## Endpoint proof + +Before activating a new or changed active subscriber, the seller MUST validate the URL and complete endpoint proof of control. The challenge POST is signed with the seller's RFC 9421 webhook profile key and uses [`agent-webhook-challenge.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/agent-webhook-challenge.json). The receiver echoes the challenge with [`webhook-challenge-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/webhook-challenge-response.json). + +Agent-level challenges intentionally do not carry `account_id` because capability notifications are valid before any account exists. The proof scope is `(authenticated caller identity, seller_agent_url, subscriber_id, normalized url, authentication mode/credential binding, normalized event_types)`. Changing any element of that tuple requires fresh proof before the subscriber can become active. + +## Replacement Semantics + +The submitted array is declarative and complete for the authenticated principal: + +- Omit `notification_configs` is invalid. +- Send `notification_configs: []` to remove every agent-level subscriber owned by this caller. +- Send a non-empty array to replace this caller's current set with exactly those entries. +- `subscriber_id` is the match key within the caller scope. Existing IDs owned by this caller are replaced; this caller's persisted IDs missing from the submitted array are removed. +- Duplicate `subscriber_id` values in one request are invalid within that caller-scoped array. +- If any entry fails validation or endpoint proof, the seller rejects the replacement and leaves the caller's prior set unchanged. + +One caller's replacement MUST NOT delete, pause, or mutate subscribers registered by another authenticated caller. Sellers that host shared registry and buyer subscribers on the same agent therefore need an owner key in storage even though that owner is not exposed in the webhook payload. + +## Webhook Payload + +When the seller's advertised capability document materially changes, it publishes the new [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) snapshot first, then fires `capabilities.changed` to active subscribers: + +```json +{ + "idempotency_key": "whk_01J1T3K6YZR7V5P9Q2M4N6B8CD", + "notification_id": "capchg_20260702_0001", + "notification_type": "capabilities.changed", + "fired_at": "2026-07-02T09:15:30Z", + "subscriber_id": "registry-cache", + "agent_url": "https://seller.example/adcp", + "changed_at": "2026-07-02T09:14:55Z", + "reason": "capability_enabled", + "capabilities_version": "rev_20260702_091455", + "changed_paths": ["/account/sandbox"] +} +``` + +The webhook does not carry the full capability document. The `capabilities_version` in the webhook is the post-change revision token and MUST be observable in `get_adcp_capabilities` before the seller sends the webhook. Receivers SHOULD re-run `get_adcp_capabilities`, compare `adcp.capability_changes.capabilities_version` with the webhook's `capabilities_version`, and replace their local cache with the fresh response. If the webhook's `capabilities_version` is not yet observable, receivers SHOULD retry `get_adcp_capabilities` with normal transient-error backoff and MUST retain their prior cached snapshot until a fresher authoritative snapshot is read or the cache TTL expires. + +## Example + +```json +{ + "idempotency_key": "b6aa9428-9d5f-4d16-a6d2-1a27db67ef5b", + "notification_configs": [ + { + "subscriber_id": "registry-cache", + "url": "https://registry.example/webhooks/adcp/capabilities", + "event_types": ["capabilities.changed"], + "active": true + } + ] +} +``` + +Response: + +```json +{ + "status": "completed", + "action": "updated", + "notification_configs": [ + { + "subscriber_id": "registry-cache", + "url": "https://registry.example/webhooks/adcp/capabilities", + "event_types": ["capabilities.changed"], + "active": true + } + ] +} +``` diff --git a/dist/docs/3.2.0-beta.4/quickstart.mdx b/dist/docs/3.2.0-beta.4/quickstart.mdx new file mode 100644 index 0000000000..dde51f7917 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/quickstart.mdx @@ -0,0 +1,311 @@ +--- +title: Quickstart +description: "Pick your path — buyers call an AdCP agent in 5 minutes, publishers and sellers stand up their own agent." +"og:title": "AdCP — Quickstart" +--- + +Pick your path. Buyers call the public test agent in 5 minutes. Publishers and sellers stand up an agent buyers can call. + +<CardGroup cols={2}> + <Card title="I'm calling an agent" icon="plug"> + Buyer side. The rest of this page walks through calling the public test agent — no signup, copy-pasteable curl. + </Card> + <Card title="I'm building an agent" icon="server" href="/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent"> + Publisher or seller side. Stand up an agent buyers can call. + </Card> +</CardGroup> + +## Setup + +Use the public test token to get started immediately — no signup required: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/sales/mcp" +``` + +The test agent is path-routed: `/sales/mcp` serves media-buy tools (this quickstart's path), and sibling URLs serve the other specialisms — `/signals/mcp`, `/governance/mcp`, `/creative/mcp`, `/creative-builder/mcp`, `/brand/mcp`. Hit [`/.well-known/adagents.json`](https://test-agent.adcontextprotocol.org/.well-known/adagents.json) for the full tenant + tool list. + +For your own API key (org-scoped, usage tracking), create one at the [AAO dashboard](https://agenticadvertising.org/dashboard/api-keys). + +## 1. Discover products + +AdCP over MCP uses JSON-RPC 2.0. The transport is [Streamable HTTP](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) — responses arrive as server-sent events. + +```bash +curl -X POST $AGENT_URL \ + -H "Content-Type: application/json" \ + -H "Accept: application/json, text/event-stream" \ + -H "Authorization: Bearer $ADCP_AUTH_TOKEN" \ + -d '{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { + "name": "get_products", + "arguments": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655442067", + "buying_mode": "brief", + "brief": "Video ads for pet food brand", + "brand": { "domain": "premiumpetfoods.com" } + } + } + }' +``` + +**Response** (SSE envelope omitted for clarity): + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "content": [ + { + "type": "text", + "text": "{\"products\":[{\"product_id\":\"pinnacle_news_video_premium\",\"name\":\"Pinnacle News Group video guaranteed\",\"channels\":[\"olv\",\"ctv\"],\"pricing_options\":[{\"pricing_option_id\":\"pinnacle_news_video_premium_pricing_0\",\"pricing_model\":\"cpm\",\"currency\":\"USD\",\"fixed_price\":15}],\"delivery_type\":\"guaranteed\"}, ...],\"sandbox\":true}" + } + ] + } +} +``` + +**Extract the result** — the AdCP payload is JSON-encoded inside `content[0].text`: + +```javascript +const response = /* parsed JSON-RPC response */; +const payload = JSON.parse(response.result.content[0].text); + +console.log(payload.products[0].product_id); // "pinnacle_news_video_premium" +console.log(payload.products[0].channels); // ["olv", "ctv"] +console.log(payload.products[0].pricing_options[0].pricing_option_id); // "pinnacle_news_video_premium_pricing_0" +console.log(payload.products[0].pricing_options[0].fixed_price); // 15 +``` + +## 2. Handle errors + +Send an invalid tool name to see what errors look like: + +```bash +curl -X POST $AGENT_URL \ + -H "Content-Type: application/json" \ + -H "Accept: application/json, text/event-stream" \ + -H "Authorization: Bearer $ADCP_AUTH_TOKEN" \ + -d '{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { + "name": "nonexistent_tool", + "arguments": {} + } + }' +``` + +**Response:** + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "content": [ + { + "type": "text", + "text": "{\"code\":\"INVALID_REQUEST\",\"message\":\"Unknown tool: nonexistent_tool\"}" + } + ], + "isError": true + } +} +``` + +**Handle it** — check `isError`, then parse the error payload: + +```javascript +const response = /* parsed JSON-RPC response */; + +if (response.result.isError) { + const err = JSON.parse(response.result.content[0].text); + console.log(err.code); // "INVALID_REQUEST" + console.log(err.message); // "Unknown tool: nonexistent_tool" +} +``` + +Common error codes: `INVALID_REQUEST` (bad input), `RATE_LIMITED` (retry with backoff), `UNAUTHORIZED` (check credentials). + +## 3. Create a media buy (idempotently) + +Use the product IDs from step 1 to create a campaign. Every mutating request MUST carry an `idempotency_key` — a client-generated UUID v4 that makes retries safe. Send the same key with the same payload and the seller returns the original result instead of creating a duplicate buy: + +```bash +export IDEMPOTENCY_KEY="$(uuidgen | tr '[:upper:]' '[:lower:]')" + +curl -X POST $AGENT_URL \ + -H "Content-Type: application/json" \ + -H "Accept: application/json, text/event-stream" \ + -H "Authorization: Bearer $ADCP_AUTH_TOKEN" \ + -d "{ + \"jsonrpc\": \"2.0\", + \"id\": 1, + \"method\": \"tools/call\", + \"params\": { + \"name\": \"create_media_buy\", + \"arguments\": { + \"idempotency_key\": \"$IDEMPOTENCY_KEY\", + \"account\": { \"account_id\": \"test_account\" }, + \"brand\": { \"domain\": \"premiumpetfoods.com\" }, + \"start_time\": \"asap\", + \"end_time\": \"2026-04-30T00:00:00Z\", + \"packages\": [{ + \"product_id\": \"pinnacle_news_video_premium\", + \"budget\": 5000, + \"pricing_option_id\": \"pinnacle_news_video_premium_pricing_0\" + }] + } + } + }" +``` + +Replay the same request (same key, same payload) and the seller returns the original response with `replayed: true`. Send the same key with a different payload and you get `IDEMPOTENCY_CONFLICT`. Check a seller's window via `get_adcp_capabilities`: + +```json +{ "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } } +``` + +See the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for the full retry model, including `IDEMPOTENCY_CONFLICT`, `IDEMPOTENCY_EXPIRED`, and UUID v4 guidance for AdCP Verified agents. + +**Response** (IDs will differ on each call): + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "content": [ + { + "type": "text", + "text": "{\"media_buy_id\":\"mb_f4139524\",\"status\":\"active\",\"revision\":1,\"packages\":[{\"package_id\":\"pkg_3df649f0\",\"product_id\":\"pinnacle_news_video_premium\",\"budget\":5000,\"pricing_option_id\":\"pinnacle_news_video_premium_pricing_0\"}],\"valid_actions\":[\"pause\",\"cancel\",\"update_budget\",\"update_dates\",\"update_packages\",\"add_packages\",\"sync_creatives\"],\"sandbox\":true}" + } + ] + } +} +``` + +**Extract the result:** + +```javascript +const response = /* parsed JSON-RPC response */; +const buy = JSON.parse(response.result.content[0].text); + +console.log(buy.media_buy_id); // "mb_f4139524" +console.log(buy.status); // "active" +console.log(buy.packages[0].budget); // 5000 +console.log(buy.valid_actions); // ["pause", "cancel", "update_budget", ...] +``` + +## 4. Push notifications (signed webhooks) + +Production agents send webhooks for long-running operations. AdCP 3.0 signs webhooks with the **same RFC 9421 HTTP Message Signatures profile used for agent-to-agent requests** — one verifier, one JWKS, one trust surface. No shared HMAC secrets. + +Point the agent at your webhook endpoint and advertise your JWKS. The agent signs each POST with a key it trusts; you fetch the agent's JWKS and verify the signature before acting on the payload: + +```json +{ + "name": "create_media_buy", + "arguments": { + "idempotency_key": "5c4c6f29-...", + "account": { "account_id": "your_account" }, + "brand": { "domain": "premiumpetfoods.com" }, + "push_notification_config": { + "url": "https://you.example.com/webhooks/adcp", + "authentication": { + "schemes": ["HTTP_MESSAGE_SIGNATURES"] + } + } + } +} +``` + +When the operation completes, the agent POSTs a signed request to your URL. The payload carries its own `idempotency_key` so your receiver can dedupe retries: + +```json +{ + "task_id": "task_456", + "idempotency_key": "webhook_evt_8f2a...", + "task_type": "create_media_buy", + "status": "completed", + "timestamp": "2026-04-22T10:30:00Z", + "result": { + "media_buy_id": "mb_12345", + "packages": [{ "package_id": "pkg_001" }] + } +} +``` + +Verify the signature before trusting the payload — resolve the `keyid` via the seller operator's `brand.json` `agents[].jwks_uri`, apply any publisher `adagents.json` `signing_keys[]` pin when present, run the AdCP webhook verifier checklist, and reject unknown keys, expired dates, or mismatched digests with a typed `webhook_signature_*` reason code: + +```typescript +app.post('/webhooks/adcp/*', async (req, res) => { + try { + await verifyAdcpWebhookSignature(req, { + sellerAgentUrl: req.sellerContext.agentUrl, + requiredTag: 'adcp/webhook-signing/v1', + allowedAlgs: ['ed25519', 'ecdsa-p256-sha256'], + }); + } catch (err) { + return res.status(401) + .setHeader('WWW-Authenticate', `Signature error="${err.code}"`) + .end(); + } + + const { idempotency_key } = req.body; + if (await seen(idempotency_key)) return res.status(200).end(); + await process(req.body); + res.status(200).end(); +}); +``` + +See the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) and [Webhooks guide](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) for the full verification profile — required headers, covered components, nonce and date windows, and the negative-vector suite the compliance runner exercises. + +## Using the client library + +The examples above use raw HTTP for clarity. In practice, use the AdCP client library which handles SSE parsing, retries, and authentication: + +```bash +npm install @adcp/sdk # JavaScript/TypeScript +pip install adcp # Python +``` + +```javascript +import { ADCPMultiAgentClient } from '@adcp/sdk'; + +const client = new ADCPMultiAgentClient([{ + id: 'test', + name: 'Test Agent', + agent_uri: 'https://test-agent.adcontextprotocol.org/sales/mcp', + protocol: 'mcp', + auth_token: process.env.ADCP_AUTH_TOKEN, +}]); + +const result = await client.agent('test').getProducts({ + idempotency_key: '550e8400-e29b-41d4-a716-446655442043', + buying_mode: 'brief', + brief: 'Video ads for pet food brand', + brand: { domain: 'premiumpetfoods.com' }, +}); + +console.log(result.data.products); +``` + +## What's next + +- **[Build an agent](/dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent)** — use skill files to generate a storyboard-compliant agent with a coding agent +- **[Validate your agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent)** — test your agent with storyboards and compliance checks +- **[Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog)** — the domains and specialisms an agent can claim, and the storyboards that verify each claim +- **[MCP integration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide)** — transport, sessions, auth details +- **[A2A integration guide](/dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide)** — streaming, artifacts, push notifications +- **[Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle)** — state machine, sequenced flow, guaranteed deal IO path, creative sync timing +- **[Task reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference)** — all available tasks with testable examples +- **[Error handling](/dist/docs/3.2.0-beta.4/building/operating/transport-errors)** — error codes, recovery strategies +- **[Authentication](/dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication)** — production credential setup diff --git a/dist/docs/3.2.0-beta.4/reference/3-2-beta.mdx b/dist/docs/3.2.0-beta.4/reference/3-2-beta.mdx new file mode 100644 index 0000000000..3e8f7a4815 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/3-2-beta.mdx @@ -0,0 +1,237 @@ +--- +title: AdCP 3.2 beta program +sidebarTitle: 3.2 beta program +description: "How to test the current AdCP 3.2 beta with an exactly matched SDK or signed protocol bundle and report integration feedback." +"og:title": "AdCP — 3.2 beta program" +--- + +# AdCP 3.2 beta program + +<Warning> +**Use the beta in development and staging, not production.** New production +integrations should remain on AdCP 3.1 until 3.2 reaches general availability. +Every beta is an immutable checkpoint, but later betas may change 3.2 surfaces +before GA. +</Warning> + +The 3.2 beta cycle started with a protocol-first checkpoint. The current +TypeScript SDK beta now consumes the exact signed beta.3 bundle: + +| Checkpoint | Purpose | Who should test | +|---|---|---| +| `3.2.0-beta.0` | Canonical schemas, compliance assets, skills, and protocol manifest for SDK implementation | SDK maintainers, code-generator maintainers, raw-wire implementers, and agent teams that can validate without generated 3.2 SDK types | +| `3.2.0-beta.1` | First integration-correction checkpoint | Pinned adopters comparing beta.0 and beta.1 behavior | +| `3.2.0-beta.2` | Second integration-correction checkpoint | Pinned adopters comparing beta.1 and beta.2 behavior | +| `3.2.0-beta.3` | Current protocol checkpoint | Buyer and seller teams running end-to-end integrations | +| SDK wave | `@adcp/sdk@14.0.0-beta.4` embeds `3.2.0-beta.3`; Python and Go remain pending | TypeScript adopters, Python and Go maintainers, and early integration teams | + +Earlier betas remain useful as pinned implementation checkpoints. For new +TypeScript testing, pair SDK beta.4 with protocol beta.3. Do not combine a newer +wire pin with an SDK generated from an older bundle unless the SDK maintainer +explicitly documents forward compatibility. + +## Know which version string to use + +The artifact version, wire pin, and documentation selector are related but not +interchangeable: + +| Surface | beta.0 | beta.1 | beta.2 | beta.3 | +|---|---|---|---|---| +| Protocol artifact | `3.2.0-beta.0` | `3.2.0-beta.1` | `3.2.0-beta.2` | `3.2.0-beta.3` | +| Git tag | `v3.2.0-beta.0` | `v3.2.0-beta.1` | `v3.2.0-beta.2` | `v3.2.0-beta.3` | +| `adcp_version` wire pin | `"3.2-beta.0"` | `"3.2-beta.1"` | `"3.2-beta.2"` | `"3.2-beta.3"` | +| Documentation selector | `3.2-beta` | `3.2-beta` | `3.2-beta` | `3.2-beta` | + +Only send a prerelease wire pin to a peer that advertises that exact value in +`get_adcp_capabilities.adcp.supported_versions`. Prerelease pins are exact: a +buyer pinned to `"3.2-beta.3"` must not silently negotiate to another beta, and +a stable `"3.2"` pin must not silently negotiate to a beta. + +## Use the TypeScript SDK beta + +The TypeScript SDK is the first package with exact beta.3 support. The npm +`latest` tag remains on SDK 13, so opt into the preview explicitly: + +```bash +npm install @adcp/sdk@14.0.0-beta.4 +``` + +SDK 14 includes typed caller and server support for the compact media-buy +lifecycle, the beta.3 schemas and compliance assets, version-aware request +signing, governance plan-adjustment reporting, and agent notification +configuration. It retains 3.0 and 3.1 adaptation for mixed-version testing. +See [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk) for the support +matrix and install guidance. + +## Use the beta.3 artifact directly + +Download the signed beta.3 protocol bundle rather +than copying schemas from `main` or from the moving `/schemas/3.2.0-beta.4/` path: + +```bash +curl -fLO https://adcontextprotocol.org/protocol/3.2.0-beta.3.tgz +curl -fLO https://adcontextprotocol.org/protocol/3.2.0-beta.3.tgz.sha256 +shasum -a 256 -c 3.2.0-beta.3.tgz.sha256 +tar -xzf 3.2.0-beta.3.tgz +``` + +The extracted `adcp-3.2.0-beta.3/` directory contains: + +- `manifest.json` — release version, bundle contents, skills, and file count; +- `schemas/` — source-shaped and bundled request/response schemas, including + `schemas/manifest.json` for the task and capability inventory; +- `compliance/` — storyboards, test kits, vectors, and runner contracts; +- `skills/` — role guidance for coding agents; +- `openapi/` — published OpenAPI artifacts. + +Verify the Sigstore signature before using the bundle as a build input. See +[Verifying protocol tarballs](/dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs) for +the certificate-identity and issuer checks. + +Useful direct-artifact tests are: + +1. Generate or refresh types from the pinned bundled schemas. +2. Validate representative requests and responses for the roles you implement. +3. Compare your advertised tools with `schemas/manifest.json`. +4. Exercise raw MCP or A2A calls with `adcp_version: "3.2-beta.3"` against a + staging peer that advertises the same pin. +5. Run the compliance assets with a source-compatible runner if you maintain + one. Do not weaken production authentication to accommodate a beta runner. + +<Note> +**No 3.2 verification badge is currently issued for beta.3.** Treat it as an +implementation input, not a certification target. +</Note> + +## SDK support contract + +An SDK support claim must name all of the following: + +- exact SDK package version; +- exact AdCP prerelease bundle used to generate or load schemas; +- supported roles and transports; +- known unsupported or raw-only surfaces; +- install command and one tested validation command. + +The SDK compatibility matrix lives in [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk). +Only the TypeScript row currently names exact beta.3 support. Treat generated +3.2 types and validators in every other SDK as unavailable until its row names +an exact package and protocol checkpoint. Raw JSON calls may still be possible, +but they are not equivalent to SDK support. + +SDK maintainers should report protocol ambiguities against the +[AdCP repository](https://github.com/adcontextprotocol/adcp/issues). Report +SDK implementation bugs in the SDK's own repository. Accepted protocol fixes +receive a changeset and ship in a later beta; published betas are never rebuilt +in place. + +## Current beta.3 checkpoint + +Protocol beta.1, beta.2, and beta.3 are published, and TypeScript SDK beta.4 embeds the +exact beta.3 bundle. Before treating a test result as beta.3 integration +evidence, confirm that: + +- the support matrix names the exact SDK package and beta.3 protocol bundle; +- both peers advertise `"3.2-beta.3"` before calls use that pin; +- the integration scenarios below run against beta.3 and retain the exact + package and bundle versions; +- copy/paste installation and validation commands have been executed as + published; +- any unsupported Python or Go surface is reported as unavailable or raw-only, + rather than inferred from TypeScript support. + +Later protocol betas repeat the same protocol-tag-then-SDK-confirmation flow. +The current TypeScript pairing does not make future beta ordinals compatible by +default. + +## Required integration evidence + +Retain the exact protocol bundle, SDK package versions, capability responses, +redacted requests/responses, task IDs, proposal and MediaBuy revisions, +creative IDs, warnings, and delivery readbacks for each run. + +### Buyer and seller lifecycle + +1. Discover the exact prerelease and capability gates. +2. Use `list_products` or the advertised proposal flow, preserving the returned + targeting and canonical `format_options[]` contract. +3. Validate or preview a matching creative when the relevant capability is + advertised. +4. Commit with `buy_products` or `accept_proposal`; do not put creative bodies + into either compact purchase call. +5. Traffic and assign the creative through `sync_creatives` for a library-backed + seller, or the seller's advertised inline compatibility path. +6. Exercise one revision-checked operational action with `control_media_buy`. +7. Reconcile `get_media_buys`, `get_media_buy_delivery`, and, when advertised, + `get_creative_delivery` through a non-zero delivery result or a documented + no-delivery state. + +### Generative creative lifecycle + +1. Discover a build capability and, when applicable, an account-scoped + transformer. +2. Run brief → `build_creative` → validation → `preview_creative`, retaining the + selected capability and generated manifest lineage. +3. Run a pre-flight seller validation or dry-run sync, then purchase/accept and + sync the materialized creative with its package assignment. +4. Observe the live campaign readback and fetch MediaBuy delivery plus + `get_creative_delivery` when the seller advertises it. Pass the served + `creatives[].variants[].manifest` back to `preview_creative` for a post-flight + re-render, retaining `creative_id`, `variant_id`, and manifest lineage. Do not + claim pixel-identical replay unless the renderer explicitly guarantees it. + +Run at least one context-rendered or conversational format and one multi-format, +locale, or placement-eligibility mismatch. The matching path must preserve its +preview-to-delivery identity; the mismatch path must reject before serve and +leave auditable evidence rather than silently substituting another format. + +## What may still change + +The [3.2.0 milestone](https://github.com/adcontextprotocol/adcp/milestone/7) is +the live scope record for work that may still land during the beta cycle. + +Use these maintained GitHub views instead of a copied issue list: + +- [Open 3.2 issues](https://github.com/adcontextprotocol/adcp/issues?q=is%3Aopen+is%3Aissue+milestone%3A3.2.0) +- [Open 3.2 pull requests](https://github.com/adcontextprotocol/adcp/pulls?q=is%3Aopen+milestone%3A3.2.0) +- [Closed 3.2 milestone work](https://github.com/adcontextprotocol/adcp/milestone/7?closed=1) + +Milestone assignment means **candidate for the 3.2 line**, not a commitment to +the next beta or GA. A change is included in a beta only when it is merged +before that beta's tag. Items may be deferred, split, or moved to a later +release as working groups resolve scope and interoperability risk. + +## Known beta boundaries + +- Targeting-aware behavior may be present in schemas before every reference or + training agent implements it. Capability declarations remain authoritative. +- Experimental surfaces retain their [experimental-status contract](/dist/docs/3.2.0-beta.4/reference/experimental-status). + A 3.2 beta does not graduate them to stable. +- The `3.2-beta` documentation selector moves forward; pinned semver artifacts + and documentation snapshots remain immutable. +- Stable schema aliases continue to resolve to stable releases during beta. + Use pinned prerelease URLs when validating beta behavior. + +## Report useful feedback + +Include this information in a beta issue: + +- protocol artifact version and wire pin; +- SDK name/version, or `raw wire`; +- buyer, seller, creative, signals, brand, measurement, or governance role; +- transport and task name; +- schema path or JSON Pointer involved; +- expected and actual behavior; +- minimal redacted payload and validation error; +- whether the problem blocks beta.3 interoperability. + +Never include credentials, signed URLs, bearer tokens, private keys, or live +customer payloads. + +## Related + +- [What's New in AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2) +- [Migrating from 3.1 to 3.2](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2) +- [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-2-0) +- [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions) +- [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk) diff --git a/dist/docs/3.2.0-beta.4/reference/changelog.mdx b/dist/docs/3.2.0-beta.4/reference/changelog.mdx new file mode 100644 index 0000000000..6ca6fefedc --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/changelog.mdx @@ -0,0 +1,12 @@ +--- +title: Changelog +description: "Link to the AdCP changelog on GitHub, covering breaking changes, new features, and schema updates for every release." +"og:title": "AdCP — Changelog" +--- + + +The detailed technical changelog is maintained in the repository. For the at-a-glance status of every published version, see [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions). For high-level summaries and migration guides, see [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes). + +[**View Changelog on GitHub →**](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md) + +AdCP uses [Changesets](https://github.com/changesets/changesets) for protocol package version management. Pull requests that change the published protocol surface include an `adcontextprotocol` changeset compiled into the changelog at release time. App, site, billing, admin, infrastructure, and other non-protocol changes do not appear in the protocol package changelog. Protocol changes follow [semantic versioning](https://semver.org/). diff --git a/dist/docs/3.2.0-beta.4/reference/experimental-status.mdx b/dist/docs/3.2.0-beta.4/reference/experimental-status.mdx new file mode 100644 index 0000000000..7f54acaeaa --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/experimental-status.mdx @@ -0,0 +1,125 @@ +--- +title: Experimental Status +sidebarTitle: Experimental status +description: "How AdCP marks surfaces that are in the spec but not yet frozen. What experimental means for implementers, what changes inside 3.x, and how an experimental surface graduates to stable." +"og:title": "AdCP — Experimental Status" +--- + +Some AdCP surfaces are published in a release but not yet frozen. They are shipped so implementers can begin building against them, but they carry a weaker stability contract than stable surfaces. This page defines that contract. + +Experimental status is the escape valve that keeps the [3.x stability guarantees](/dist/docs/3.2.0-beta.4/reference/versioning#3x-stability-guarantees) credible. A surface is either stable — in which case it cannot break inside 3.x — or explicitly experimental, in which case it can. There is no undeclared middle ground. For a list of the protocol's non-goals and deferred items, see [Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations). + +--- + +## What counts as experimental + +An AdCP surface is experimental when both of the following are true: + +1. Its schema carries `x-status: experimental` at the schema root or on the specific property. +2. A seller implementing it declares the surface in `experimental_features` on its `get_adcp_capabilities` response. + +Both markers are required. The first tells the ecosystem the surface is not frozen; the second tells a specific buyer that this specific seller has opted in to the experimental contract for this surface. + +A seller that implements any experimental surface MUST list it in `experimental_features`. Sellers that do not list an experimental surface MUST NOT implement it — there is no "silently experimental" mode. + +An experimental feature id covers a cluster of related tasks. A seller that implements any task in the cluster (e.g., `get_rights` but not `acquire_rights` or `update_rights`) MUST still declare the cluster's feature id (`brand.rights_lifecycle`). Partial implementation is allowed; silent implementation is not. + +<Note> +`x-status: experimental` is a schema-local annotation. It is not inherited through `$ref` — a stable schema that references an experimental sub-schema does not automatically become experimental. The `experimental_features` declaration on `get_adcp_capabilities` is the authoritative runtime signal; `x-status` is an authoring hint for schema readers and tooling. +</Note> + +## Contract for experimental surfaces + +**Inside 3.x, experimental surfaces MAY change in ways that stable surfaces cannot:** + +- Fields may be renamed, removed, or have their type changed +- Required fields may become optional and vice versa +- Enums may have values removed or renamed +- Task names may be renamed or removed +- Error codes introduced for an experimental surface may be renamed or removed + +**Notice requirements for breaking changes to experimental surfaces:** + +- At least **6 weeks** published in release notes and the changelog before the change lands +- A migration note describing the change, with before/after examples where possible +- Where feasible, an alias accepting both old and new forms in the release that introduces the change + +This is a deliberate relaxation of the [6-month deprecation notice](/dist/docs/3.2.0-beta.4/reference/versioning#deprecation-policy) that applies to stable surfaces. + +<Tip> +**Why experimental exists.** The architecture committee uses this label on surfaces that are genuinely part of the core protocol but not yet field-tested. Without an iteration path, AdCP would either ship rigid schemas nobody has deployed or hold features back until they are perfect. Neither serves implementers. +</Tip> + +**What does not change for experimental surfaces:** + +- Authentication, transport, and core security requirements. These are version-level concerns and never change inside 3.x, experimental or not. +- Idempotency semantics. A seller's declared idempotency contract applies to experimental surfaces the same way it applies to stable ones. +- Error envelope shape. Experimental surfaces return errors using the same envelope as stable surfaces; only the specific codes may shift. + +## Graduation to stable + +An experimental surface graduates to stable when ALL of the following are met: + +| Criterion | Requirement | +|---|---| +| **Production signal** | At least one implementation running in **production** (not sandbox) for **≥45 days**. | +| **Cross-party validation** | Either (a) a second implementation exists and has been running for ≥45 days, with at least one of the two in production, OR (b) at least one buyer has successfully integrated against the surface in production. Solo-implementer graduation without buyer integration is not allowed. | +| **Schema stability** | No open breaking-change issues against the surface for **≥30 days** prior to graduation. | +| **Deliberate promotion** | A graduation PR removes `x-status: experimental` from the schema and removes the feature id from the canonical experimental list, called out in the release notes for the 3.x release that carries the change. | + +Two implementers is a lower bar than one because cross-implementation friction is what shakes out spec ambiguity. A single implementer can match their own schema by reflex; two cannot. When only one implementer is ready, buyer-integration signal substitutes — that signal covers the buyer-side ergonomic bugs that a solo implementer would otherwise miss. + +Graduation is never automatic. The architecture committee reviews graduation PRs and may require additional cycles if the surface still shows signs of instability. + +### Graduation cadence + +The architecture committee reviews experimental surfaces at each 3.x release. Every release's notes include, for each experimental surface: + +- Current status (still experimental / on track to graduate / under active breaking revision) +- A list of changes the next release is expected to carry +- A pointer to the most recent breaking-change notice for the surface, when applicable + +Enterprise procurement teams can subscribe to release notes to track experimental surfaces on a predictable review cadence; there is no separate mailing list or ticketing process. + +## Client behavior + +Buyers integrating against AdCP sellers SHOULD: + +- **Inspect `experimental_features` before relying on experimental surfaces.** A seller that does not list an experimental surface is asserting it does not implement that surface. +- **Pin to specific 3.x releases** when depending on experimental surfaces, or subscribe to release notes for the features they consume. +- **Design retry and error handling to tolerate new error codes** added to experimental surfaces between releases. +- **Treat experimental surfaces as unsuitable for regulated workflows** without additional vendor assurance. Experimental is not a claim of compliance-grade stability. + +### Buyer-side refusal + +Buyers that do not want to interact with experimental surfaces — typically for regulated workflows, compliance-sensitive deployments, or procurement policies that forbid non-frozen features — enforce this client-side. The pattern: + +1. **At capability discovery**, read `experimental_features` from the seller's `get_adcp_capabilities` response. +2. **Filter before invocation.** Do not call tasks that belong to experimental feature ids your policy rejects. The list of tasks per feature id is published in the canonical experimental-surfaces list below. +3. **Short-circuit upstream.** When an orchestrator or upstream caller requests behavior that would require an experimental surface, return a policy-level error (e.g., the caller's own `POLICY_EXPERIMENTAL_REFUSED`) rather than attempting the call. The refusal is the buyer's concern, not the seller's — sellers MUST NOT be expected to infer buyer policy. + +There is no wire-level refusal field in 3.0. Buyer-side filtering is sufficient and keeps the contract asymmetric (sellers declare; buyers decide). A reciprocal wire mechanism may be revisited in a future release if multi-party refusal handoff patterns emerge from real integrations. + +## Current experimental surfaces + +Schemas marked with `x-status: experimental` are the authoritative source. The canonical list of feature ids for `experimental_features` in AdCP 3.x: + +| Feature id | Surface | Why experimental | +|---|---|---| +| `brand.rights_lifecycle` | [`get_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights), [`acquire_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights), [`update_rights`](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights); the `brand.rights`, `brand.right_types`, `brand.available_uses`, and `brand.generation_providers` capability fields on `get_adcp_capabilities`; and the `right-use` and `right-type` enums that these surfaces reference | Legal-construct surface added late in the 3.0 cycle. First enterprise deployments will expose edge cases in partial rights, sublicensing, revocation, and dispute resolution. The two enums are marked experimental because their values are expected to evolve as new licensable-use categories surface (e.g. embodiment, hologram, generative-music-style). | +| `governance.campaign` | [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans), [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance), [`report_plan_outcome`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome), [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs), and the cross-role `adcp.governance_enforcement` capability and signed-context consumption contract | Multi-party governance semantics (buyer vs service approval conflicts, audit provenance verification, task-scoped enforcement, and tie-breaking under Embedded Human Judgment) are not yet settled. | +| `measurement.core` | The `measurement` capability block and seller `media_buy.performance_feedback` block on [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), compact performance-feedback assertion and receipt fields, and the `measurement` value in `supported_protocols` | Measurement currently exposes vendor metric catalog discovery and task-based compact feedback production. Attribution, pricing/coverage, seller application disposition, and baseline compliance storyboards are not frozen, so the surface remains experimental in 3.1. | +| `measurement.gateway` | The `measurement_gateway` capability block on [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#measurement_gateway) and its task-based provider interchange contract | The buyer-orchestrator gateway initially reuses `get_media_buy_delivery` and `provide_performance_feedback`. Authorization, identifier mapping, and cross-seller disclosure need implementation experience before the role can freeze; webhook and offline paths are explicitly deferred. | +| `trusted_match.core` | [TMP](/dist/docs/3.2.0-beta.4/trusted-match/) | Privacy architecture is thinly specified relative to what a regulator deep-dive will demand. Exposure tokens, country-partitioned identity, and Offer creative data are expected to change. | +| `trusted_match.verified_identity` | The `attestation` object on `identity-match-request` entries, the top-level `sealed_credentials[]` array, the `world_id_nullifier` value in the `uid-type` enum, the `attestation-claim` enum, and `brand.json` `identity_relying_parties[]` — see [Verified Identity Attestation](/dist/docs/3.2.0-beta.4/trusted-match/specification#verified-identity-attestation) | Verifiable proof-of-personhood / age forwarded into Identity Match so buyers verify rather than trust an assertion. Issuer-agnostic, but only the World ID scheme is specified so far; the `signal_binding` freshness policy, the issuer/scheme registry-vs-free-form decision, and the `brand.json` variant placement are WG-open. The widening of the otherwise-`additionalProperties:false` identity-match-request schema is contract-bearing and may be revised under experimental. | +| `sponsored_intelligence.core` | [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering), [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message), [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session); the `sponsored_intelligence` capability field on `get_adcp_capabilities`; the SI identity, capability negotiation, and UI component surfaces defined in the [SI specification](/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification) | Conversational brand experiences are a new advertising model. Session lifecycle, UI components, identity/consent object shape, and capability negotiation are expected to evolve as first-party AI hosts and brand agents integrate. Planned changes track the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201). | +| `creative.evaluator` | The `evaluator` input on [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative), the per-leaf `eval` block on the build response, and the `creative.supports_evaluator` capability field on `get_adcp_capabilities` (schema: `core/evaluator-spec.json`) | New gate-then-rank creative-feature-oracle surface (#5241 / #5311), not yet field-tested across parties. Evaluator ranking intentionally reuses the existing stable creative-feature catalog rather than minting a parallel evaluator catalog: `rank_by`, `feature_requirement`, and `eval.features[]` all refer to feature IDs from `governance.creative_features`. `evaluator_id` is separate from that catalog: it is a pre-provisioned/account-arranged preset whose outputs still resolve to creative-feature results. A separate `supports_evaluator_gate` capability and a hard MUST-enforce-gate semantic are reserved follow-ons that may reshape the evaluator fields. | +| `creative.signal_fanout` | The `signal_conditions[]` and `selection_strategy` inputs on [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative), the `creatives[].signal_condition` / `selection_strategy_applied` / `estimate.conditions_total` fields on its response, the `creative.multiplicity.supports_signal_fanout` / `max_signal_conditions_limit` / `selection_strategies` capability fields on `get_adcp_capabilities`, the `enums/creative-selection-strategy.json` enum, and the `SIGNAL_TARGETING_INCOMPATIBLE` error code (#5240 / #5304, folds #5262) | New signal-driven creative fan-out surface introducing a cross-agent reject-at-trafficking MUST (`SIGNAL_TARGETING_INCOMPATIBLE`) spanning creative agent + sales agent — not yet field-tested across parties. The numeric (`value_type: numeric`) condition-compatibility comparison (range-overlap vs exact-match) is still WG-open, and the `proximity` selection strategy's geo-input binding is not yet settled — both stay revisable under experimental. Condition identity itself is resolvable today (`signal_agent_segment_id` / `signal_ref` via `get_signals`), so there is no frozen-identifier problem. | + +Graduation progress and notice of upcoming breaking changes will be called out in the [release notes](/dist/docs/3.2.0-beta.4/reference/release-notes) for each 3.x release starting with 3.0 GA. + +## Relationship to extensions + +Experimental status is not the same as an [extension](/dist/docs/3.2.0-beta.4/reference/versioning#extensibility). Extensions live in the `ext.{namespace}` field and are governed by the extension registry; they are permanently out-of-band for the core protocol. Experimental surfaces are in the core protocol — they are candidates for promotion to stable, not third-party additions. + +A surface should be experimental when the architecture committee intends it as part of the core protocol but is not yet willing to freeze it. A surface should be an extension when it is domain-specific, maintained outside the core protocol, or unlikely to apply to the broader AdCP ecosystem. diff --git a/dist/docs/3.2.0-beta.4/reference/glossary.mdx b/dist/docs/3.2.0-beta.4/reference/glossary.mdx new file mode 100644 index 0000000000..80f28bc3e7 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/glossary.mdx @@ -0,0 +1,464 @@ +--- +title: Glossary +description: "AdCP glossary: definitions of agents, accounts, audiences, signals, governance, media buys, creatives, and other Ad Context Protocol terms." +"og:title": "AdCP — Glossary" +--- + + +## A + +**Account** +A billing relationship between a buyer and a seller. The account determines rate cards, payment terms, and billing entity. An agent may have access to multiple accounts (e.g., an agency managing accounts for different clients). See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents). + +**Account Type** +Classification of MCP session credentials as either "platform" (aggregator) or "customer" (direct advertiser/agency). + +**Audience** (AdCP context) +A named group of users uploaded by a buyer for targeted advertising. Distinct from signals: audiences are buyer-owned first-party CRM data uploaded via `sync_audiences`; signals are named targeting dimensions discovered through product signal options, provider-published signal definitions, or `get_signals`. Audiences are account-scoped — an `audience_id` cannot be used across sellers. Reference audiences in `targeting_overlay.audience_include` or `audience_exclude` in `create_media_buy`. See also [Audience Member](#audience-member) and [Hashed Identifier](#hashed-identifier). + +**Audience Member** +A hashed identifier record representing one person in a CRM audience. Contains at least one of: `hashed_email`, `hashed_phone`, or `uids`. All PII is normalized and hashed (SHA-256) by the buyer before transmission — the wire format never carries cleartext email or phone. Hashing is data minimization at the transport boundary, not anonymization: see [Hashed Identifier](#hashed-identifier) for the pseudonymous-PII caveat that governs retention and consent. Providing multiple identifiers for the same person improves match rates. See also [UID](#uid-universal-id). + +**Audience Constraints** +Plan-level include/exclude rules that structurally prevent prohibited targeting patterns. Each constraint is an [Audience Selector](#audience-selector). The governance agent evaluates `check_governance` requests against these constraints to detect prohibited targeting before any ad is served. + +**Audience Selector** +A discriminated union describing one targeting criterion - either a `signal_ref` or a natural language description. Audience selectors appear in plan audience constraints and `planned_delivery.audience_targeting`. + +**Action Source** +Where an event physically occurred: `website`, `app`, `in_store`, `phone_call`, `chat`, `email`, `offline`, `system_generated`, or `other`. Set on each event in `log_event` and declared at the product level in `conversion_tracking.action_sources`. Use `surface` on events and event sources when this flat value needs structured context such as an owned channel, profile, feed, podcast, or newsletter list. + +**Activation** +The process of making a signal available for targeting on a specific platform and seat. + +**Ad Context Protocol (AdCP)** +An open standard for AI-powered advertising workflows. AdCP defines domain-specific tasks and schemas that work over MCP and A2A as transports, enabling natural language interfaces for advertising operations. + +**Agentic Commerce Protocol (ACP)** +An open standard developed by OpenAI and Stripe for programmatic commerce flows in AI assistants. ACP defines how agents can initiate checkout, delegate payment, and complete transactions without becoming the merchant of record. In the context of Sponsored Intelligence, ACP handles the transaction after a brand agent hands off a user with purchase intent. + +**Agentic eXecution Engine (AXE)** +Deprecated. The original real-time execution layer for impression-time targeting decisions. Replaced by the [Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match), which adds structural privacy separation and multi-surface support. See [AXE documentation](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine) for legacy reference. + +**AgenticAdvertising.org** +The member organization that stewards the Ad Context Protocol (AdCP) and related open standards for AI-powered advertising. + +**Agent** (AdCP Context) +The authenticated entity making API calls—may be a brand's internal team, an agency's trading desk, or an automated buying system. Identified by the authentication token. Distinct from "Sales Agent" (the MCP server exposing inventory) and "AI Agent" (the AI assistant). See [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents). + +## B + +**Budget** +Total monetary allocation for a media buy, which can be distributed across multiple packages. + +## C + +**Context Match** +TMP operation that evaluates available packages against content context. Contains artifact IDs, context signals (topics, sentiment, keywords, embedding), and available packages. Carries no user identity. See [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match). + +**Conversion Tracking** +The mechanism for sending buyer-side marketing events to a seller for attribution. Involves two steps: configure event sources on the seller account (`sync_event_sources`), then send events (`log_event`). Seller-level capabilities (supported event types, UID types, attribution windows) are declared in `get_adcp_capabilities`; product-level support is declared in `product.conversion_tracking`. See also [Event](#event) and [Optimization Goal](#optimization-goal). + +**CPC (Cost Per Click)** +Pricing model based on cost per click on the advertisement. + +**CPCV (Cost Per Completed View)** +Pricing model based on cost per 100% video or audio completion. + +**CPM (Cost Per Mille)** +Pricing model based on cost per thousand impressions. Traditional display advertising pricing. + +**CPP (Cost Per Point)** +Pricing model based on cost per Gross Rating Point (GRP), commonly used in TV and audio advertising. + +**CPV (Cost Per View)** +Pricing model based on cost per view at a publisher-defined threshold (e.g., 50% video completion). + +**Completed View** +A video or audio ad that has been viewed to 100% completion. Used for CPCV pricing and completion rate metrics. + +**Completion Rate** +The percentage of video or audio ads that are viewed to 100% completion (completed_views / impressions). + +**Customer Account** +Direct advertiser or agency account with specific seat access and negotiated rates. + +## D + +**Data Provider** +An organization that owns and publishes audience or contextual data (e.g., Polk, Experian, Acxiom). Data providers publish signal definitions via `/.well-known/adagents.json` on their domain, enabling discovery and authorization verification. See [Data Provider Guide](/dist/docs/3.2.0-beta.4/signals/data-providers). + +**Data Provider Domain** +The domain where a data provider publishes adagents.json `signals[]` definitions (e.g., `polk.com`). Used in `signal_ref` objects to reference provider-published signals: `{ "scope": "data_provider", "data_provider_domain": "polk.com", "signal_id": "likely_tesla_buyers" }`. + +**Daypart** +Specific time-of-day segment for time-based advertising, commonly used in DOOH (e.g., morning_commute, evening_prime, overnight). + +**Delegation Type** (`delegation_type`) +Field in adagents.json that describes the commercial relationship between a publisher and an authorized agent: `direct` (publisher treats this as their direct sales path), `delegated` (agent manages monetization on the publisher's behalf), or `ad_network` (inventory sold through a network/package). Corresponds to `relationship` in brand.json for bilateral verification. + +**Deployment** (Signals Protocol) +The availability status of a signal on specific platforms, including activation state and timing. + +**Devices** (Signals Protocol) +Size unit representing unique device identifiers (cookies, mobile IDs) - typically the largest reach metric. + +**Device Type** (Media Buy Protocol) +Targeting and reporting dimension for device form factors: desktop, mobile, tablet, ctv, dooh, unknown. Complements device platform (operating system) with hardware classification. + +**Decisioning Platform** +Technical infrastructure that selects which ad to serve at impression time. Receives activated signals and executes campaigns. Examples: DSPs (The Trade Desk), SSPs (Index Exchange, OpenX, PubMatic), ad servers (Google Ad Manager, Kevel). + +**DOOH (Digital Out-of-Home)** +Digital advertising displayed on screens in public spaces such as billboards, transit stations, airports, and retail locations. Uses CPM or flat_rate pricing with parameters for SOV, duration, and venue targeting. + +**DSP (Demand-Side Platform)** +A type of decisioning platform that allows advertisers to buy advertising inventory programmatically. + +## E + +**Event** +A marketing event logged via `log_event` for attribution and optimization. Covers the full funnel from engagement (`page_view`, `view_content`, `content_view`, `follow`, `watch_milestone`, `search`) through intent (`add_to_cart`, `initiate_checkout`) to conversion (`purchase`, `lead`, `complete_registration`, `subscribe`). Each event has an `event_id` (for deduplication), `event_type`, `event_time`, and optional `user_match`, `custom_data`, `action_source`, and `surface`. Defined in the `event.json` schema. + +**Event Source** +A configured data channel that receives conversion or marketing events from a buyer. Event sources are set up on a seller account via `sync_event_sources` and referenced by `event_source_id` when logging events or setting optimization goals. Can be managed by the buyer (e.g. a website pixel) or by the seller (e.g. Amazon sales attribution). + +**Event Type** +A standardized classification for marketing events (e.g. `purchase`, `lead`, `add_to_cart`, `page_view`, `follow`, `content_view`, `watch_milestone`, `refund`). Covers the full lifecycle: engagement (`select_content`, `share`, `follow`, `content_view`, `watch_milestone`), e-commerce (`add_to_cart`, `remove_from_cart`, `viewed_cart`, `purchase`, `refund`), lead management (`lead`, `qualify_lead`, `close_convert_lead`, `disqualify_lead`), paid subscriptions (`subscribe`), and app events. Used to categorize events logged via `log_event` and to specify optimization goals on packages. Aligned with IAB ECAPI. + +**Estimated Activation Time** +Predicted timeframe for signal deployment, typically 24-48 hours for new activations. + +## F + +**Flat Rate** +Fixed-cost pricing model where a single payment is made regardless of delivery volume. Common for sponsorships and takeovers. + +**Flight** +A time-bounded advertising campaign segment, mapped to line items in ad servers. + +**Frequency** +The average number of times an individual is exposed to an advertisement during a campaign. + +## G + +**GRP (Gross Rating Point)** +A unit of measurement for television and radio advertising representing 1% of the target audience. Used in CPP pricing models. Total GRPs = Reach % × Average Frequency. Measured by third-party providers such as Nielsen, Comscore, iSpot.tv, or Triton Digital. + +## H + +**Hashed Identifier** +Buyer-normalized personally identifiable information (PII) hashed with SHA-256 before transmission. Used in audience uploads (`sync_audiences`) and event attribution (`log_event`). Normalization: emails to lowercase+trim, phone numbers to E.164 format. The seller matches by independently hashing its own user data with the same algorithm. Unsalted SHA-256 of email or phone is **pseudonymous PII, not anonymous**: the input namespace is small enough that precomputed dictionaries recover plaintext, so hashed identifiers MUST be treated as PII for retention, consent, and access-control purposes. See [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations#unsalted-hashed-identifiers-are-pseudonymous-not-anonymous). Distinct from [UIDs](#uid-universal-id), which are tokenized identifiers resolved by identity graph operators (e.g. UID2, RampID) under their own privacy architectures. + +**Households** +Size unit representing unique household addresses, useful for geographic and family-based targeting. + +**Human-in-the-Loop (HITL)** +Protocol feature allowing publishers to require manual approval for operations. + +## I + +**Identity Match** +TMP operation that evaluates user eligibility against package criteria using an opaque user token. Returns a boolean `eligible` flag and optional `intent_score` per package. Carries no page context. The buyer computes eligibility from frequency caps, audience membership, and other signals; the reasons are opaque to the publisher. See [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match). + +**Idempotency** +The property that repeating the same operation produces the same result as running it once, with no extra side effects. Every mutating AdCP request carries a required `idempotency_key`; on retry with the same key and payload, the seller returns the cached response with `replayed: true` instead of re-executing. This is what lets an agent safely retry a `create_media_buy` after a network timeout without creating two buys. See the [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model#layer-3-idempotency--at-most-once-execution) for the narrative and [Security: Request Safety](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency) for the normative rules. + +**Idempotency Key** +A unique, unguessable identifier (UUID v4 or equivalent CSPRNG output) attached to every mutating AdCP request. Scoped per `(authenticated agent, account)`. The seller uses it as the cache key for at-most-once execution within the declared `replay_ttl_seconds` window (minimum 1 hour, recommended 24 hours, maximum 7 days). Same key + same payload = replay; same key + different payload = `IDEMPOTENCY_CONFLICT`. See [Security: Request Safety](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). + +**Impressions** (Media Buy Protocol) +The number of times an ad is displayed, used for pricing and delivery tracking. + +**Included Signals** +Non-selectable signal metadata on a product. `included_signals` describes signals already bundled into, included in, or seller-planned into the product; buyers do not add or remove these signals in package `signal_targeting_groups`. Use `signal_targeting_options` for buyer-selectable signal controls. + +**Individuals** (Signals Protocol) +Size unit representing unique people, best for frequency capping and demographic targeting. + +**Inventory** +Available advertising space on websites, apps, or other media properties. + +## L + +**Line Item** +The basic unit of inventory in ad servers like Google Ad Manager, represented as packages in AdCP. + +**Loop Duration** +The length of time for a complete rotation of ads in a DOOH display, measured in seconds. Used to calculate frequency and share of voice. + +**Loop Plays** +The number of times an ad was displayed in a DOOH loop rotation. Key metric for DOOH delivery reporting. + +## M + +**Marketplace Signal** +Third-party signal available for licensing from data providers. + +**MCP (Model Context Protocol)** +The underlying protocol framework that enables AI assistants to interact with external systems. + +**Media Buy** +A complete advertising campaign containing packages, budget, targeting, and creative assets. + +## N + +**Natural Language Processing** +The AI capability that allows audience discovery through conversational descriptions rather than technical parameters. + +## O + +**Offer** (TMP) +A buyer's response to a TMP context match request. Ranges from simple activation (`package_id` only, for GAM key-value targeting) to rich proposals with brand, price, summary, and inline creative manifest (for AI assistants and dynamic surfaces). See [TMP Specification](/dist/docs/3.2.0-beta.4/trusted-match/specification). + +**Optimization Goal** +A single entry in a package's `optimization_goals` array. Three kinds: `kind: "event"` (optimize for advertiser-tracked conversion events via an `event_sources` array of source-type pairs, with optional `cost_per`, `per_ad_spend`, or `maximize_value` target), `kind: "metric"` (optimize for a seller-native delivery metric — clicks, views, completed views, engagements, etc. — with optional `cost_per` or `threshold_rate` target), and `kind: "vendor_metric"` (optimize for a vendor-attested metric bound to a specific measurement vendor via `(vendor, metric_id)` — attention, panel-based brand lift, emissions, retail-media partner metrics — with optional `cost_per` or `threshold_rate` target). Event goals with `per_ad_spend` or `maximize_value` targets require `value_field` on event source entries. When the seller supports `multi_source_event_dedup` (declared in `get_adcp_capabilities`), they deduplicate by `event_id` across sources; otherwise buyers should use a single event source per goal. Vendor_metric goals require a matching `committed_metrics` entry on the same package — optimization without committed reporting is unverifiable and is rejected at the wire level. When multiple goals are present, `priority` (1 = highest) controls which the seller treats as primary. + +**Owned Signal** +First-party signal data belonging to the advertiser or platform. + +## P + +**Package** +A specific advertising product within a media buy, representing a flight or line item with its own pricing and targeting. + +**Platform Account** +Master account representing an advertising platform that can syndicate signals to multiple customers. + +**Policy Category** +A regulatory regime that applies to a campaign plan (e.g., `children_directed`, `fair_housing`, `fair_lending`, `fair_employment`). Each policy category defines `restricted_attributes` — personal data types that must not be used for targeting when that category applies. Governance agents resolve policy categories from both the plan and the brand's compliance configuration. + +**Pricing Model** +The method by which advertising inventory is priced and billed. AdCP supports CPM, CPC, CPCV, CPV, CPA, CPL, CPP, and flat rate models. + +**Pricing Option** +A specific pricing model offered by a publisher for a product, including rate, currency, and parameters. + +**Principal** +*Deprecated term.* See [Account](#a) (billing relationship) and [Agent](#a) (authenticated caller). Previously used to refer to the authenticated entity with its associated platform mappings. AdCP now splits these responsibilities: the **Agent** handles authentication and API access, while the **Account** handles billing, rate cards, and platform mappings. + +**Product** +Advertising inventory available for purchase, discovered through natural language queries. + +**Product Signal Targeting Option** +A signal a seller makes selectable, defaulted, or fixed for a specific product through `signal_targeting_options`. Product-local options define their name and `value_type` inline; data-provider and signal-source options can use `signal_ref` as a reference to an authoritative external definition. Buyers select eligible options through package `signal_targeting_groups`. + +**Prompt** +Natural language description used to discover relevant signals (e.g., "high-income sports enthusiasts", "premium automotive content", "users in urban areas during evening hours"). + +**Property** +A digital advertising surface: website, mobile app, CTV app, podcast, or other media endpoint. Properties appear in `adagents.json` (publisher-declared inventory) and `brand.json` (operator-declared portfolio with `relationship` field). Identified by type + identifier (domain for websites, bundle ID for apps). + +**Provider** +The company or platform that supplies signal data (e.g., LiveRamp, Experian, Peer39, weather services). + +## Q + +**Quartile (Video)** +Milestones in video ad viewing: Q1 (25% viewed), Q2 (50% viewed), Q3 (75% viewed), Q4 (100% complete). Used to measure video engagement. + +## R + +**Reach** +The number or percentage of unique individuals exposed to an advertisement at least once during a campaign. + +**Relationship** (brand.json field) +Field on brand.json properties declaring how the brand relates to a property: `owned` (default), `direct`, `delegated`, or `ad_network`. Delegated and network values align with `delegation_type` in adagents.json; `owned` is a brand.json-only ownership claim. Non-owned properties create bilateral verification — the operator declares the relationship in brand.json, the publisher confirms by authorizing the operator's agent in adagents.json. The AdCP equivalent of sellers.json. + +**Resolution Model** +Product-level signal targeting rule that tells buyers how selected signals are applied. `direct_targeting` means selected signals behave like targeting predicates on the package inventory. `seller_planned` means selected signals are planning inputs the seller resolves against product-specific inventory, timing, availability, reach, or pacing constraints. + +**Restricted Attribute** +A personal data category (e.g., `health_data`, `racial_ethnic_origin`) that must not be used for targeting under one or more policy categories. Restricted attributes are defined at the registry level (GDPR Article 9 categories) and self-declared on signal definitions. Governance agents match restricted attributes structurally — if a signal carries a restricted attribute that a plan's policy categories prohibit, targeting with that signal is denied. + +**Relevance Score** +Numerical rating (0-1) indicating how well a signal matches the discovery prompt. + +**Relevance Rationale** +Human-readable explanation of why an audience received its relevance score. + +**Revenue Share** +Pricing model based on a percentage of media spend rather than fixed CPM. + +## S + +**Sales Agent** +An MCP server that exposes publisher inventory for discovery and purchase. Handles product discovery, media buy creation, and campaign management. Examples: Publisher ad servers exposing AdCP interfaces, sales house platforms. + +**Seller** +The AdCP participant role that provides advertising inventory. A seller exposes products, accepts media buys, manages creative delivery, and (optionally) provides conversion tracking capabilities. In AdCP schemas, "seller" is the standard term for this role (not "platform"). The seller's technical capabilities are declared via `get_adcp_capabilities`. + +**Selection Group** +A product-defined composability bucket on `signal_targeting_options`. Sellers use `selection_group` and `selection_group_rules` to declare which signals can be OR-combined in one package signal group and which must be represented as separate ANDed clauses. + +**Screen Time** +Total duration an ad was displayed across all DOOH screens, measured in seconds. Used for DOOH delivery reporting. + +**Seat** +A specific advertising account within a decisioning platform, typically representing a brand or campaign. + +**Segment ID** +The specific identifier used for signal activation. This may differ from `signal_ref` because activation handles are destination-specific execution ids, not signal identity. + +**Share of Voice (SOV)** +Percentage of available ad inventory allocated to a specific advertiser in DOOH loops. Expressed as 0.0-1.0 (e.g., 0.15 = 15% SOV). + +**Signal Agent** +A server (via MCP or A2A) that provides signal discovery and activation services. Enables natural language audience discovery and deploys signals to decisioning platforms. Can be private (owned by a single buyer and visible only to that buyer's accounts) or marketplace (licensing data across multiple accounts). Signal agents are authorized by data providers via `adagents.json` to resell specific signals. Examples: LiveRamp, The Trade Desk, Peer39. + +**Signal Definition** +A single signal entry in a data provider's `adagents.json` `signals[]`. The required fields are `id`, `name`, and `value_type` (`binary`, `categorical`, or `numeric`). Optional enrichment can describe taxonomy mappings, DTS-style source and methodology disclosures, modeling disclosures, jurisdiction and consent metadata, governance-sensitive categories, and per-signal rights-routing channels. + +**Signal Discovery** +The process of finding relevant data signals (audiences, contextual, geographical, temporal) using natural language descriptions or structured `signal_ref` lookup. + +**Signal ID** +Deprecated structured identifier previously used by the Signals Protocol for discovery and activation. New discovery, activation, product targeting, and buy-time surfaces use [Signal Ref](#signal-ref). + +**Signal Ref** +A structured signal reference using `scope` as the discriminator. `scope: "data_provider"` references a signal published in adagents.json `signals[]` (`data_provider_domain` + `signal_id`, verifiable). `scope: "signal_source"` references a source-native signal (`signal_source_url` + `signal_id`, trust-based). `scope: "product"` references a product-local signal option meaningful only inside the selected product/package context. + +**Signal Source** +A source that issues or activates signals. Source-native signals that are not published in adagents.json `signals[]` use `signal_ref.scope: "signal_source"` with `signal_source_url`. + +**Signal Tags** +Tags used to group related signals within a data provider's published signal definitions. Enable efficient authorization (authorize "all automotive signals" rather than listing individual IDs). Tags must be lowercase alphanumeric with underscores/hyphens. + +**Signal Targeting Groups** +The package-level grouped expression for buyer-selected seller-offered signals. `targeting_overlay.signal_targeting_groups` has top-level `operator: "all"` and child `any` groups for inclusion or `none` groups for exclusion. + +**Signal Targeting Rules** +Product-level rules that govern package signal selection: resolution model, optional/required/fixed selection, min/max counts, selection group limits, and group-count limits. These rules live on the product because one seller may route different products through different ad servers or planning layers. + +**Signal Targeting Groups** +The package-level grouped expression for buyer-selected seller-offered signals. `targeting_overlay.signal_targeting_groups` has top-level `operator: "all"` and child `any` groups for inclusion or `none` groups for exclusion. + +**Signal Targeting Rules** +Product-level rules that govern package signal selection: resolution model, optional/required/fixed selection, min/max counts, selection group limits, and group-count limits. These rules live on the product because one seller may route different products through different ad servers or planning layers. + +**Signal Type** +Classification of signals as "marketplace" (third-party), "owned" (first-party), "destination" (bundled with media), "contextual", "geographical", or "temporal". + +**Signal Value Type** +The data type of a signal's values: `binary` (user matches or doesn't), `categorical` (user has one of several possible values), or `numeric` (user has a score within a range). Determines the targeting expression format. + +**Size Unit** (Signals Protocol) +The measurement type for signal size: individuals, devices, or households. + +**Specialism** +A specific capability claim an agent declares in `get_adcp_capabilities.specialisms`. Each specialism has a wire ID in `kebab-case` (e.g. `sales-guaranteed`, `property-lists`) and a matching storyboard bundle published at `/compliance/{version}/specialisms/{id}/`. The AAO compliance runner executes the matching storyboards to verify the claim. See [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) for the list of specialism IDs; claim one by adding it to your `get_adcp_capabilities.specialisms` array, then run [Validate Your Agent](/dist/docs/3.2.0-beta.4/building/verification/validate-your-agent) to see how the runner maps it to storyboards. + +**Sponsored Intelligence (SI)** +An open standard for conversational brand experiences in AI assistants. Like VAST defines video ad serving, SI defines how to serve and interact with brand agent endpoints. SI handles the engagement; the Agentic Commerce Protocol (ACP) handles transactions. See [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) for details. + +**SSP (Supply-Side Platform)** +A type of decisioning platform that helps publishers sell advertising inventory programmatically. SSPs connect to multiple demand sources and make ad selection decisions. Examples: Index Exchange, OpenX, PubMatic, Magnite. + +**SSRF (Server-Side Request Forgery)** +A class of attack where an adversary supplies a URL that tricks an agent into making an HTTP request to an address it shouldn't — typically an internal service, a cloud metadata endpoint (e.g., `169.254.169.254`), or a localhost port. Every URL an AdCP counterparty supplies (webhook callbacks, TMP provider endpoints, governance `jwks_uri`, reporting buckets, `adagents.json` `authoritative_location`) is a potential vector. Defense is implemented in code via a 6-point check: HTTPS-only, reserved-IP deny list, IP pinning against DNS rebinding, no redirects, response size and timeout caps, suppressed error detail. See the [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) for the narrative and [Security: Webhook URL validation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) for the normative rules. + +**Storyboard** +A compliance test bundle that verifies a protocol baseline or [specialism](#specialism) claim. Each storyboard is a YAML file under `/compliance/{version}/` that declares an `id`, phases of test steps, sample requests, and validations the agent must pass. Storyboards live in three buckets: `universal/` (applies to every agent), `protocols/{protocol}/` (one baseline per supported protocol), and `specialisms/{id}/` (one per specialism claim). + +**Storyboard Category** +The `snake_case` identifier in a storyboard's `category:` frontmatter field. For specialisms, the category is the specialism's kebab-case wire ID with hyphens swapped to underscores — e.g. specialism ID `sales-streaming-tv` has category `sales_streaming_tv`. Variant scenarios within a specialism use `{category}/{variant}` form (e.g. `governance_spend_authority/denied`). The kebab↔snake split is deliberate: specialism IDs are URL path segments, storyboard categories are wire enums. + +## T + +**Takeover** +Exclusive 100% share of voice placement on DOOH inventory for a specific time period. Priced as flat_rate with sov_percentage: 100. + +**Third-Party Signal** +Signal data licensed from external providers, also known as marketplace signals. + +**Time-Based Pricing** +Pricing structure based on duration (hourly, daily, or daypart) rather than impressions. Common in DOOH advertising using flat_rate model. + +**TMP Router** +Infrastructure that fans out TMP requests to buyer agents and merges responses. A single binary with structurally separate code paths for context and identity. The router enriches requests (adding property registry IDs, signing), enforces privacy constraints (rejecting requests with identity data in the context path), and applies adaptive timeouts. See [Router Architecture](/dist/docs/3.2.0-beta.4/trusted-match/router-architecture). + +**Trusted Match Protocol (TMP)** +AdCP's real-time execution layer. Determines which pre-negotiated packages should activate for a given impression using two structurally separated operations: Context Match (content fit, no user identity) and Identity Match (user eligibility, no page context). The publisher joins both responses locally. Works across web, mobile, CTV, AI assistants, and retail media. Replaces AXE. See [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match). + +## U + +**UID (Universal ID)** +AdCP's schema category for privacy-preserving user tokens. Most are already-resolved identity-graph tokens used for cross-platform matching. `pairid` is the exception: it is a URL-safe Base64-encoded KsKp Publisher Identifier that must be interpreted with the publisher ads.txt `ownerdomain` carried in OpenRTB `EID.matcher`, and it is not comparable across publisher scopes. A PAIR identifier is stable across a publisher's advertiser matches only within a Ks key epoch; Ks rotates every 30 days, with current and prior identifiers potentially overlapping during rollover. Distinct from [Hashed Identifiers](#hashed-identifier): UIDs are tokens (not raw PII); hashed identifiers are buyer-normalized PII hashed before sending. AdCP supports: `rampid` (LiveRamp RampID), `id5` (ID5), `uid2` (Unified ID 2.0), `euid` (European Unified ID), `pairid` (IAB Tech Lab PAIR), and `maid` (Mobile Advertising ID — IDFA/GAID). UIDs are accepted in audience uploads (`sync_audiences` → `audience_member.uids`) and event attribution (`log_event` → `user_match.uids`). Supported types vary by seller — check `get_adcp_capabilities` → `audience_targeting.supported_uid_types`. + +**Universal Commerce Protocol (UCP)** +An open standard developed by Google with Shopify, Walmart, Target, and others for commerce in AI assistants. UCP defines primitives for checkout, payments, and fulfillment. Along with ACP (Agentic Commerce Protocol), UCP represents the commerce layer that complements AdCP's advertising layer. + +**User Match** +The set of identifiers on an event used to attribute it to ad delivery. Includes universal IDs (`uids`), hashed identifiers (`hashed_email`, `hashed_phone` — SHA-256, normalized before hashing), `click_id` (platform-specific click identifiers like fbclid, gclid), and optional `client_ip` + `client_user_agent` for probabilistic matching. At least one identifier is required. + +**Usage Reporting** +Daily reporting of signal utilization for billing and optimization purposes. + +## V + +**Venue** +Physical location where DOOH advertising is displayed (e.g., airport terminal, transit station, retail store). Used for DOOH targeting and delivery reporting. + +**Venue Package** +Named collection of DOOH screens across specific venues (e.g., 'times_square_network', 'airport_terminals'). Used in DOOH pricing parameters. + +## Acronyms + +- **ACP**: Agentic Commerce Protocol +- **AdCP**: Ad Context Protocol +- **API**: Application Programming Interface +- **AXE**: Agentic eXecution Engine +- **CPA**: Cost Per Acquisition +- **CPM**: Cost Per Mille (thousand) +- **DMP**: Data Management Platform +- **DSP**: Demand-Side Platform +- **ECAPI**: Enhanced Conversions API (IAB Tech Lab) +- **EUID**: European Unified ID +- **MCP**: Model Context Protocol +- **PII**: Personally Identifiable Information +- **ROAS**: Return On Ad Spend +- **RTB**: Real-Time Bidding +- **SI**: Sponsored Intelligence +- **SSP**: Supply-Side Platform +- **TMP**: Trusted Match Protocol +- **TTD**: The Trade Desk +- **UCP**: Universal Commerce Protocol +- **UID**: Universal Identifier +- **UTC**: Coordinated Universal Time + +## Units and Measurements + +**Time Formats** +- All timestamps use ISO 8601 format (e.g., "2025-01-20T14:30:00Z") +- Dates use YYYY-MM-DD format +- Activation times expressed as human-readable estimates ("24-48 hours") + +**Currency** +- All pricing in specified currency (typically USD) +- CPM expressed as cost per 1,000 impressions +- Revenue share expressed as decimal (0.15 = 15%) + +**Size Reporting** (Signals Protocol) +- Counts expressed as integers +- Units clearly specified (individuals/devices/households) +- Dated with "as_of" timestamp for freshness + +**Impression Reporting** (Media Buy Protocol) +- Delivery counts by package +- Pacing metrics for optimization +- Dimensional breakdowns available + +## Error Codes Reference + +Common error codes across all AdCP implementations: + +- `REFERENCE_NOT_FOUND`: Invalid or expired segment ID (or any referenced resource that does not exist or is not accessible; `error.field` identifies the failing parameter). Replaces the removed-in-rc.5 codes: `SEGMENT_NOT_FOUND`, `SIGNAL_AGENT_SEGMENT_NOT_FOUND`, `AGENT_NOT_FOUND`, `AUDIENCE_NOT_FOUND`, `CATALOG_NOT_FOUND`, `EVENT_SOURCE_NOT_FOUND`, `FORMAT_NOT_FOUND`, `STANDARDS_NOT_FOUND`, `BRAND_NOT_FOUND`, `CHECK_NOT_FOUND`, `CAMPAIGN_NOT_FOUND`. See [release notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-0-0-rc-5) for the migration. +- `ACTIVATION_FAILED`: Unable to complete activation process +- `ALREADY_ACTIVATED`: Signal already active for platform/seat +- `DEPLOYMENT_UNAUTHORIZED`: Insufficient permissions for platform/seat +- `BUDGET_EXCEEDED`: Operation would exceed allocated budget +- `CREATIVE_REJECTED`: Creative asset failed platform review +- `INVALID_PRICING_MODEL`: Requested pricing model unavailable +- `RATE_LIMITED`: Too many requests in time window +- `AUTHENTICATION_FAILED`: Invalid or expired credentials +- `VALIDATION_ERROR`: Request format or parameter errors diff --git a/dist/docs/3.2.0-beta.4/reference/gmsf-reference.mdx b/dist/docs/3.2.0-beta.4/reference/gmsf-reference.mdx new file mode 100644 index 0000000000..6c5eae0582 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/gmsf-reference.mdx @@ -0,0 +1,167 @@ +--- +title: GMSF Reference +description: "GMSF reference for AdCP: Global Media Sustainability Framework carbon measurement standards, metrics, and how they apply to agentic advertising campaigns." +"og:title": "AdCP — GMSF Reference" +--- + +# GMSF Reference + +Token-efficient reference for the Global Media Sustainability Framework. Designed for AI agents discussing advertising sustainability. + +## What is GMSF? + +The **Global Media Sustainability Framework (GMSF)** is an industry standard for measuring and reducing carbon emissions from media and advertising. Developed by Ad Net Zero and industry stakeholders. + +**Goal**: Standardized carbon measurement across the advertising supply chain. + +## Key Organizations + +| Organization | Role | +|--------------|------| +| **Ad Net Zero** | Industry coalition leading sustainability initiatives | +| **WFA** | World Federation of Advertisers - coordinates brand commitments | +| **IAB** | Provides technical standards and implementation guidance | +| **Scope3** | Carbon measurement platform for media | + +## Carbon Emission Sources in Ad Tech + +### By Supply Chain Stage + +``` +┌─────────────────────────────────────────────────────────────┐ +│ CAMPAIGN CREATION │ +│ Creative production, asset hosting, transcoding │ +│ Carbon: Medium │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ AD DECISIONING │ +│ Bid requests, auction processing, ML inference │ +│ Carbon: HIGH (biggest contributor in programmatic) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ AD DELIVERY │ +│ CDN distribution, ad rendering, tracking pixels │ +│ Carbon: Medium-High │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ MEASUREMENT │ +│ Attribution, reporting, analytics │ +│ Carbon: Low-Medium │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Programmatic Waste Points + +| Issue | Carbon Impact | Description | +|-------|---------------|-------------| +| **Bid requests** | Very High | Billions of requests, most fail to win | +| **Header bidding** | High | Multiple SSPs = multiplied requests | +| **Reselling** | High | Same impression sold multiple times | +| **MFA sites** | High | Made-for-advertising sites with low value | +| **Invalid traffic** | High | Bots generating worthless impressions | + +## GMSF Measurement Framework + +### Scope Categories + +| Scope | Definition | Examples in Ad Tech | +|-------|------------|---------------------| +| **Scope 1** | Direct emissions | Office HVAC, company vehicles | +| **Scope 2** | Indirect from energy | Data center electricity | +| **Scope 3** | Value chain emissions | Media buying, creative production | + +**Note**: Most advertising carbon is Scope 3 (downstream supply chain). + +### Key Metrics + +| Metric | Definition | Target | +|--------|------------|--------| +| **gCO2e/impression** | Grams CO2 equivalent per ad impression | Lower is better | +| **gCO2e/1000 impressions** | Per-mille carbon | Industry benchmarks | +| **Supply path carbon** | Emissions from intermediaries | Minimize hops | + +### Typical Carbon Values + +| Channel | gCO2e per 1000 impressions | Notes | +|---------|---------------------------|-------| +| Direct sold | 50-150 | Shortest path | +| Programmatic display | 200-400 | Many intermediaries | +| Programmatic video | 400-800 | Larger files + auctions | +| CTV programmatic | 300-600 | Depends on supply path | + +*Values are approximate and vary by measurement methodology.* + +## How AdCP Reduces Carbon + +| Programmatic Problem | AdCP Solution | Carbon Reduction | +|---------------------|---------------|------------------| +| Billions of bid requests | Direct negotiation | 90%+ fewer requests | +| Multi-hop supply paths | Publisher-direct | Eliminated intermediaries | +| Real-time auctions | Asynchronous decisions | Reduced server compute | +| Cookie syncing | Context-based matching | Eliminated sync traffic | +| Speculative bidding | Intent-based buying | Only requested inventory | + +### Quantified Benefits + +``` +Traditional Programmatic: +1 impression = 50+ bid requests × 10+ SSPs = 500+ server calls + +AdCP Agentic: +1 impression = 1 request to sales agent = 1 server call + +Reduction: ~99% fewer server calls +``` + +## Sustainability Best Practices + +### For Buyers + +| Practice | Impact | +|----------|--------| +| Reduce supply chain hops | -30-50% carbon | +| Use direct deals over open auction | -40-60% carbon | +| Avoid MFA inventory | -20-40% carbon | +| Choose green-certified publishers | Variable | +| Optimize creative file sizes | -10-20% carbon | + +### For Publishers + +| Practice | Impact | +|----------|--------| +| Reduce header bidding partners | -20-40% carbon | +| Implement lazy loading | -15-25% carbon | +| Optimize ad refresh frequency | -10-30% carbon | +| Use renewable energy hosting | -50-90% carbon | +| Enable agentic/direct channels | -60-90% carbon | + +## GMSF Resources + +| Resource | URL | +|----------|-----| +| Ad Net Zero | [adnetzero.com](https://adnetzero.com) | +| GMSF Documentation | [wfanet.org/gmsf](https://wfanet.org/leadership/gmsf) | +| Scope3 | [scope3.com](https://scope3.com) | +| IAB Sustainability | [iab.com/sustainability](https://www.iab.com/topics/sustainability/) | + +## Key Terms + +| Term | Definition | +|------|------------| +| **Carbon offset** | Compensating emissions by funding carbon removal | +| **Carbon neutral** | Net zero emissions (offsets allowed) | +| **Net zero** | Actual zero emissions (no offsets) | +| **Science-based targets** | Reduction goals aligned with climate science | +| **GHG Protocol** | Standard for measuring greenhouse gases | +| **MFA** | Made-for-advertising (low-quality sites) | +| **SPO** | Supply path optimization | + +--- + +*This is a placeholder document. Content will be enhanced with more detail and citations in future updates.* diff --git a/dist/docs/3.2.0-beta.4/reference/implementor-faq.mdx b/dist/docs/3.2.0-beta.4/reference/implementor-faq.mdx new file mode 100644 index 0000000000..bf109cf021 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/implementor-faq.mdx @@ -0,0 +1,369 @@ +--- +title: Implementor FAQ +description: "AdCP implementor FAQ: answers to common questions about get_products parameters, creative sync, delivery reporting, and building sales agents." +"og:title": "AdCP — Implementor FAQ" +--- + + +Common questions from teams building AdCP sales agents and integrations, with direct answers based on the specification. + +## Product Discovery + +### Q: Is hard targeting in a brief actually hard, and why use an overlay? + +**A:** Yes. Sellers MUST apply explicit hard requirements even when they appear +only in brief prose. Buyers should nevertheless put every fact with an AdCP +representation in its structured field. `targeting_overlay` uses fewer tokens, +is deterministic code rather than seller inference, and preserves exact +semantics through forecasting, purchase, and readback. + +When a seller extracts hard targeting from the brief and the structured +interpretation materially affects product eligibility, pricing, or forecasting, +it MUST confirm that interpretation once in the discovery response's +`targeting_resolution.brief_targeting`. In other cases it +SHOULD still confirm it as a best practice. This is especially useful for +requests such as “US only, ages 18–44.” Absence of Product targeting resolution +confirms an unchanged structured overlay for that product; absence of +response-level confirmation does not confirm what was extracted from prose. +Sellers do not repeat unchanged overlay values, which avoids echoing large +inputs such as hundreds of postal codes. + +### Q: Does `get_products` require specific parameters like budget, dates, and objectives? + +**A:** Use `brief` for objectives and semantic intent, `filters` for product +characteristics, `targeting_overlay` for exact delivery constraints, and +`required_overlay_support` for targeting dimensions that will be selected +later. Dates and budget guidance may still be expressed in the brief or +supported structured filter fields. + +For the AdCP 3.2 split lifecycle, use `list_products` for synchronous offer +listing and `request_proposals` for brief-driven planning. Both share structured +discovery criteria; stateful proposal creation requires an `idempotency_key`. +Legacy `get_products` remains the 3.x compatibility facade. + +**Example:** +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442078", + "buying_mode": "brief", + "brand": { + "domain": "acmecorp.com" + }, + "brief": "Tech startup needs display and video inventory to reach IT decision makers. Budget: $25K. Timeline: March 1-31. Objective: Lead generation with 2% conversion target." +} +``` + +### Q: How do I request specific audience targeting in `get_products`? + +**A:** Put semantic audience intent in `brief`, but put exact delivery +constraints in `targeting_overlay`. Use `required_overlay_support` for a +dimension whose concrete values will be selected on packages later. Filters +select product characteristics and the legacy targeting-like filter fields are +deprecated. + +**Example:** +```json +{ + "brand": { + "domain": "energydrink.com" + }, + "brief": "Reach sports fans for an energy drink campaign", + "targeting_overlay": { + "demographics": { + "age": { "min": 18, "max": 34, "include_unknown": false } + }, + "geo_countries": ["US"] + }, + "required_overlay_support": { + "geo_metros": { "systems": ["nielsen_dma"] } + } +} +``` + +The seller interprets the brief and must also account for any structured overlay +in availability, pricing, and forecasts. If it cannot execute the overlay +exactly, it either omits the product or returns sparse +`targeting_resolution.modifications`; selecting that request-scoped product +accepts the disclosed changes. + +### Q: What does `buying_mode: "wholesale"` mean? We don't expose a wholesale product feed. + +**A:** In wholesale mode, buyers are requesting baseline products available without publisher curation or proposal generation. + +This does not make filters wholesale-only. Filters are hard product constraints +in `brief`, `wholesale`, and `refine`; wholesale only changes the curation, +response-timing, and feed-versioning behavior. + +**If you don't offer a wholesale product feed**, return an error: +```json +{ + "message": "We require a campaign brief to recommend products. Please provide details about your campaign goals, audience, and objectives.", + "products": [] +} +``` + +**If you do offer wholesale access**, return products matching the provided filters (format types, delivery type, etc.). + +### Q: Should buyers call `list_creative_formats` before or after `get_products`? + +**A:** Neither for a new AdCP 3.2 workflow. Sales-agent `list_creative_formats` is deprecated. Call `get_products` and read each product's canonical `format_options[]`; those declarations express what that product can deliver in the current account and inventory context. + +If a creative must be produced, find a compatible creative agent through the registry and confirm its `get_adcp_capabilities.creative.supported_formats[]`. Select the matching agent-local `capability_id` when calling `build_creative`. + +## Policy Compliance + +### Q: How do publishers know if there's an ad policy issue (alcohol, adult content, etc.)? + +**A:** Publishers extract advertiser identity from the `brand` field: + +1. **Extract advertiser info** from the brand's `brand.json` (resolved via `brand.domain`) +2. **Check what's being promoted** from the `brief` text +3. **Apply policy rules** based on your publisher policies +4. **Return appropriate response:** + - Allowed: Return products normally + - Blocked: Return empty products array with policy explanation + - Restricted: Indicate manual approval needed + +**Example blocked response:** +```json +{ + "message": "I'm unable to offer products for this campaign. Our publisher policy prohibits alcohol advertising without age verification capabilities.", + "products": [] +} +``` + +See [Policy Compliance](/dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance) for complete implementation guidance. + +### Q: Is the advertiser's name always shared? + +**A:** Yes, the `brand` field is required in both `get_products` and `create_media_buy`. It provides the advertiser identity needed for: +- Policy compliance checks +- Business relationship management (KYC) +- Billing and reporting + +Brand references are simple: +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +The brand's `brand.json` (resolved from the domain) provides category and other identity data for automated policy filtering. + +## Schema and Fields + +### Q: Why is the `filters` parameter called an "object"? + +**A:** Because it's a nested JSON object with multiple optional fields: + +```json +{ + "filters": { + "delivery_type": "guaranteed", + "standard_formats_only": true, + "is_fixed_price": true, + "min_exposures": 10000 + } +} +``` + +It's not a single filter—it's a collection of filter criteria for product catalog search. + +### Q: What replaces `format_ids` and ad units? + +**A:** AdCP uses protocol-agnostic terminology: + +- **`format_options`**: Product-bound canonical creative contracts, including kind and constraints +- **Ad units**: Platform-specific terminology (such as a 300×250 banner placement) + +Canonical declarations are portable across platforms. A publisher option can be referenced by `{publisher_domain, format_option_id}`; a creative agent separately assigns an agent-local `capability_id` to a producible contract. Match the declarations, not the identifiers. + +### Q: How do I specify what's being promoted? + +**A:** There are two mechanisms depending on the context: + +- **Advertiser identity** → `brand.domain` (required on `get_products` and `create_media_buy`, resolves via `/.well-known/brand.json`) +- **What's being promoted** → Described in the `brief` field for product discovery, or provided via a `catalog` on creatives + +For product discovery: +```json +{ + "brand": { + "domain": "nike.com" + }, + "brief": "Nike Air Max 2024 - latest innovation in cushioning technology targeting runners and fitness enthusiasts" +} +``` + +For catalog-driven creatives, reference a synced catalog: +```json test=false +{ + "creative_id": "product-carousel", + "format_kind": "sponsored_placement", + "assets": { + "source_catalog": { + "asset_type": "catalog", + "catalog_id": "product-feed" + } + } +} +``` + +## Brief Processing + +### Q: What if buyers provide incomplete briefs? + +**A:** Publishers should request clarification when critical information is missing: + +```json +{ + "message": "I'd be happy to help find the right products for your campaign. To provide the best recommendations, could you share:\n\n• What's your campaign budget?\n• When do you want the campaign to run?\n• Which geographic markets are you targeting?", + "products": [] +} +``` + +This maintains a conversational, helpful approach while gathering needed context. + +### Q: Should we always ask for clarification or just return products? + +**A:** It depends on your publisher strategy: + +- **High-touch approach**: Request clarification for incomplete briefs, engage conversationally +- **Self-service approach**: Return best-guess products based on available information + +Both are valid. Consider your target buyer personas and automation level. + +## Workflow and Integration + +### Q: When should `brand` be required vs optional? + +**A:** According to the current spec: +- **Required in both `get_products` AND `create_media_buy`** + +Best practice: Always require it. Policy checking should happen during discovery, not at purchase time. + +### Q: Can buyers cache product responses? + +**A:** Products represent inventory availability which changes over time. Recommendations: +- **Brief-based discovery**: Don't cache—products are contextually matched to the brief +- **Standard catalog**: Can cache for short periods (5-15 minutes) if your catalog is stable +- **Product details**: Cache `product_id` mappings but revalidate availability before purchase + +### Q: How do we handle large product catalogs (1000+ products)? + +**A:** Use `property_tags` instead of full `properties` arrays: + +```json +{ + "product_id": "local_radio_midwest", + "property_tags": ["local_radio", "midwest"], + "format_options": [ + { "format_kind": "audio_hosted", "params": { "duration_ms_exact": 30000 } } + ] +} +``` + +Buyers can discover the agent's portfolio via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities), which returns the publisher domains and primary channels the agent represents. This keeps responses lightweight while maintaining full validation capability. + +## Testing and Validation + +### Q: How do we test policy compliance? + +**A:** Create test cases with known restricted categories: + +```javascript +// Test blocked category +const response = await get_products({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442051", + buying_mode: "brief", + brand: { + domain: "test-alcohol.example.com" + }, + brief: "Promote our new craft beer" +}); + +assert(response.products.length === 0); +assert(response.message.includes("policy")); +``` + +### Q: What should we test in integration testing? + +**A:** Key scenarios to cover: + +1. **No brief + filters** → Standard catalog +2. **Brief provided** → AI-matched products with `brief_relevance` +3. **Blocked advertiser** → Policy error +4. **Incomplete brief** → Clarification request +5. **No products match** → Helpful alternative suggestions +6. **Format filtering** → Only matching formats returned + +## Common Pitfalls + +### Q: Why aren't my format filters working? + +**A:** In AdCP 3.2, filter on canonical format kinds or exact format-option references: + +```json +{ + "filters": { + "format_kinds": ["video_hosted"], + "format_option_refs": [ + { + "scope": "publisher", + "publisher_domain": "streamhaus.example", + "format_option_id": "preroll_30s" + } + ] + } +} +``` + +### Q: Why do my products not include `brief_relevance`? + +**A:** `brief_relevance` is only included when a `brief` parameter is provided. Standard catalog requests (no brief) don't include this field since products aren't contextually matched. + +### Q: Should I validate authorization in `get_products`? + +**A:** **Yes!** Buyer agents must validate sales agent authorization before purchasing: + +1. Get properties from products (or resolve `property_tags`) +2. Fetch `/.well-known/adagents.json` from each `publisher_domain` +3. Verify the sales agent URL appears in `authorized_agents` +4. Reject products from unauthorized agents + +See [Authorization Validation](/dist/docs/3.2.0-beta.4/governance/property/adagents#buyer-agent-validation) for complete requirements. + +## Terminology + +### Q: What's the difference between "product" and "package"? + +**A:** +- **Product**: A sellable unit of inventory from the publisher (returned by `get_products`) +- **Package**: A buyer's selection from available products, sent in `create_media_buy` + +Products describe what's available. Packages describe what you're buying. + +### Q: What's the difference between "delivery" and "distribution"? + +**A:** +- **Delivery type**: `"guaranteed"` vs `"non_guaranteed"` (whether impressions are guaranteed) +- **Distribution**: How creatives are distributed to ad servers (covered by creative agents, not media buying) + +### Q: What's "TMP" / "Trusted Match Protocol"? + +**A:** The **[Trusted Match Protocol (TMP)](/dist/docs/3.2.0-beta.4/trusted-match)** is AdCP's real-time execution layer. It determines which pre-negotiated packages activate at impression time using two structurally separated operations: **Context Match** (content relevance, no user identity) and **Identity Match** (user eligibility, no page context). The publisher joins both responses locally. TMP enables cross-publisher frequency capping, brand suitability, and audience targeting across web, mobile, CTV, AI assistants, and retail media. + +You may also see references to **AXE** (Agentic eXecution Engine) — that was TMP's predecessor. Existing AXE integrations still work, but new implementations should use TMP. See [AXE documentation](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine) for legacy reference. + +## Need More Help? + +If your question isn't answered here: + +1. Check the [Task Reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/) for detailed API documentation +2. Review [Brief Expectations](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations) for discovery guidance +3. See [Media Products](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products) for product model details +4. Open a GitHub issue for specification clarifications + +This FAQ is updated regularly based on implementer feedback. diff --git a/dist/docs/3.2.0-beta.4/reference/known-limitations.mdx b/dist/docs/3.2.0-beta.4/reference/known-limitations.mdx new file mode 100644 index 0000000000..df5b217ee1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/known-limitations.mdx @@ -0,0 +1,84 @@ +--- +title: Known Limitations +sidebarTitle: Known Limitations +description: "Explicit non-goals and deferred items in AdCP 3.0 — what the protocol does not do, so implementers and reviewers can plan accordingly." +"og:title": "AdCP — Known Limitations" +--- + +Knowing what a protocol doesn't do is part of evaluating it. This page consolidates the explicit non-goals and deferred items in AdCP 3.0 — things the protocol intentionally does not handle, things that have been scoped out for this cycle, and things that exist as mechanisms but aren't enforced at the protocol layer. + +Each limitation below is either a visible edge of the specification or a tracked follow-up. None is hidden. + +Surfaces shipped in 3.x but not yet frozen are listed separately — see [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status). + +## Security and privacy + +- **No end-user authentication.** AdCP authenticates agents, not the humans they act for. User-level identity, consent capture, and data-subject rights are handled upstream in the buyer's stack and are outside the protocol's scope. +- **No protocol-level breach-notification SLA.** AdCP does not specify "seller MUST notify buyer within N hours of suspected key compromise." Notification commitments live in DPAs between parties. A future major version may tighten this. +- **No coordinated vulnerability disclosure baked into the protocol.** Individual agent operators should publish `/.well-known/security.txt`; there is no normative AdCP requirement yet. +- **No protocol-level PII transport.** The `hashed_email` and `hashed_phone` fields in `sync_audiences` require SHA-256 hashing on the buyer side — the schemas do not accept cleartext for those fields. Other identifier types exist for non-PII spaces. If you need cleartext PII on the wire, AdCP is not the right carrier. +- **Hashed identifiers are pseudonymous, not anonymous.** SHA-256 hashes of email and phone remain pseudonymous identifiers under GDPR and CPRA and inherit the regulatory treatment of the underlying PII. AdCP does not claim de-identification. +- **No protocol-level data-residency mechanism.** Residency is a configuration and contract property of individual agents; the protocol does not carry a normative residency tag. +- **No protocol guarantee about LLM prompt-injection defense.** That is an operator concern on every LLM-powered agent in the loop. See the [Security Model — threats specific to agentic advertising](/dist/docs/3.2.0-beta.4/building/concepts/security-model#threats-specific-to-agentic-advertising). +- **Structural privacy applies only to TMP.** The Trusted Match Protocol enforces privacy structurally (separated code paths, schema prohibitions). Every other domain relies on contractual confidentiality or per-session consent. See [Privacy posture across domains](/dist/docs/3.2.0-beta.4/protocol/architecture#privacy-posture-across-domains). +- **No jurisdictionally-aware consent signal on the wire.** AdCP does not carry a normative consent tag (e.g., IAB TCF, GPP, or equivalents used to express compliance with regimes like Quebec's Law 25, Japan's APPI, or Brazil's LGPD). Lawful-basis determination, consent capture, and jurisdictional routing remain the responsibility of each party acting as controller or processor in its own stack, governed by the DPAs between them. A structured cross-agent consent signal is a candidate for future work. +- **No consent-scope propagation across protocol boundaries.** A signal activated under one consent scope (e.g., `sync_audiences` from a CRM with first-party advertising consent) can be referenced downstream — re-targeted, attached to a different campaign, or composed with other signals — without a protocol-level mechanism enforcing scope alignment. Each party verifies scope compatibility off-protocol via DPAs and operational controls. Tracked for 3.1 in [#2540](https://github.com/adcontextprotocol/adcp/issues/2540). +- **No protocol-level cross-border transfer mechanism.** AdCP does not carry SCC, IDTA, or adequacy-decision metadata. International-transfer lawfulness is a contract and configuration property of the parties. +- **No versioned content-provenance chain.** AdCP carries right-use assertions and the `ai_generated_image` flag — the latter is a boolean marker, not a signed provenance assertion. The protocol does not specify a cryptographically signed provenance graph that accumulates assertions as a creative passes through generation, editing, and adaptation steps. Interoperation with emerging content-authenticity standards (CAI/C2PA) is tracked as future work. +- **No retention or deletion SLA.** The protocol does not specify how long parties retain `sync_audiences` inputs, `report_usage` records, or task history. Retention windows and data-subject-request fulfillment live in DPAs between the parties. +- **General-purpose synchronous RPC response signing is not defined (designated-task payload envelopes excepted) — by design, not omission.** AdCP signs five things at the application layer: inbound requests (RFC 9421, `adcp_use: "request-signing"`), outbound webhooks including all specialism-scoped durable artifacts such as brand-rights, AAO Verified compliance, sales-intelligence relay, and bilateral non-repudiation receipts (RFC 9421, `adcp_use: "request-signing"`; deprecated `webhook-signing` keys remain accepted during the compatibility window), governance attestations (JWS, `adcp_use: "governance-signing"`), designated-task response payloads — currently only the `verify_brand_claim` family (JWS payload envelope, `adcp_use: "response-signing"`), and the Trusted Match Protocol envelope (TMP's own Ed25519 profile). Synchronous response bodies returned by `tools/call` (or the equivalent A2A non-streaming reply / streaming `artifactUpdate` frames) are **not** signed for tasks outside the designated-task list: integrity of the immediate reply is delivered by TLS within the authenticated session that carried the request, and at-rest integrity for durable artifacts is the job of signed webhooks. The split is deliberate — webhook-only attestation is a forcing function that makes "this artifact needs durable integrity" an explicit modeling decision rather than a free rider on every reply, and avoids the operational cost (extra verifier paths, conformance graders, revocation entries) of a general-purpose response-signing surface that overlaps the webhook one. **RFC 9421 §2.2.9 transport response signing is not defined for any task in 3.x.** Buyers MUST NOT rely on response signatures outside the designated-task list; artifacts requiring at-rest attestation MUST be delivered via signed webhooks. If a synchronously-returned artifact needs to be attestable, the spec-supported path is to add the task to the designated list (a normative decision) or restructure the tool to emit a signed webhook with the canonical version. Tracked in [#3737](https://github.com/adcontextprotocol/adcp/issues/3737), resolved as the intended 3.x design and revisitable in 4.0 if the threat model evolves. + +## Commerce and settlement + +- **No in-protocol payment or settlement.** `report_usage` provides the consumption data that feeds invoicing, but invoicing and settlement happen out-of-band through the buyer/seller commercial relationship. +- **No cross-currency media buy.** Each media buy uses a single ISO 4217 currency (see `core/price.json`). If the buyer's budget currency differs from the seller's pricing currency, the buy either uses a matching currency or is rejected. FX rate pinning, risk attribution, and cross-currency reporting are deferred to a future version. +- **No protocol-level delivery-dispute flow.** When buyer and seller delivery numbers disagree, reconciliation happens out-of-band through the commercial relationship (backed by the audit trail on both sides). A structured dispute task is a candidate for future work. + +## Measurement and attribution + +- **Not an attribution protocol.** AdCP carries exposure records, identifiers where permitted, and the outcome signals that feed attribution, but it does not specify an attribution model. Media-mix modeling, multi-touch attribution, and incrementality testing live in the buyer's measurement stack — fed by AdCP data ([`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) and task-level outputs) rather than computed by the protocol. + +## Authentication and identity + +- **No OAuth 2.1 + resource-indicators normative requirement.** AdCP authenticates agents using mTLS, pre-provisioned API keys, and RFC 9421 signed HTTP requests (the last normative in 3.1). These are deliberately chosen for mutual authentication between autonomous agents rather than delegated human-user authorization. OAuth 2.1 with resource indicators is an acceptable transport where an operator's infrastructure already standardizes on it, but it is not a protocol requirement and does not substitute for the three mechanisms above. +- **Signed requests for mutating calls are normative in 3.1, not 3.0.** AdCP 3.0 allows bearer-token auth on mutating calls; 3.1 will require RFC 9421 signing or JWS-signed bodies. Tracked in [#2307](https://github.com/adcontextprotocol/adcp/issues/2307). +- **No key-transparency anchoring in the registry.** The [AgenticAdvertising.org registry](/dist/docs/3.2.0-beta.4/registry/index) resolves brand identity, property authorization, and agent discovery, and can cache the `signing_keys[]` declared in a publisher's [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents#signing_keys). What it does not yet do is operate as a key-transparency log: there is no enrollment ceremony binding a domain to a root verification key, no append-only rotation record, and no cryptographic commitment that every verifier sees the same key history. So in 3.x, RFC 9421 buyer keys, governance JWS keys, agent signing keys, and pointer files are still ultimately rooted in the counterparty's own infrastructure — an attacker who controls a counterparty's CDN, DNS, or `/.well-known` path can serve attacker-controlled keys, and TLS does not close this because the certificate is valid for the compromised hostname. 3.x delivers trust-on-first-use with continuity (multi-source cross-check, publication-delay windows, out-of-band rotation signalling, rotation-validity discipline) — detectably raising the bar, but not cryptographically closing the gap. The full close is a key-transparency layer on top of the existing registry, with append-only rotation logs and JWKS wire compatibility, tracked as a 4.0 deliverable. + +## Governance + +- **Regulated-category human review is enforced at the schema level for the three named categories, at the governance-agent level for everything else.** 3.0 rejects `authority_level: agent_full` at the schema level on campaigns that declare `fair_housing`, `fair_lending`, or `fair_employment` (shipped via [#2310](https://github.com/adcontextprotocol/adcp/issues/2310), merged 2026-04-18). Any other regulated category — political, pharmaceutical, gambling, alcohol, tobacco, financial, crypto, cannabis/CBD, firearms, dietary-supplement health claims, child-directed — relies on the governance-agent implementation rather than a schema invariant. +- **No protocol-mandated HITL on `sync_catalogs` or `sync_creatives`.** The universal task-lifecycle mechanism is available; no normative rule requires a human gate. `acquire_rights` is governed via the campaign-governance path ([purchase phase](/dist/docs/3.2.0-beta.4/governance/campaign/specification#governance-phases)) when the buyer's plan is configured for it. See [How human-in-the-loop enters the protocol](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment#how-human-in-the-loop-enters-the-protocol) for the two channels and the EHJ register for the normative rules on `check_governance`, `TERMS_REJECTED`, and lifecycle tasks. +- **Regulated categories beyond `fair_housing`, `fair_lending`, and `fair_employment` have no first-class treatment.** Political advertising, pharmaceutical, gambling, alcohol, tobacco, financial promotions (including crypto and digital assets), cannabis/CBD, firearms, dietary-supplement health claims, and advertising directed at children rely on the general [campaign-governance](/dist/docs/3.2.0-beta.4/governance/campaign/specification) mechanism (HITL gates, governance tasks) rather than category-specific schema rules. Regionally specific disclosure requirements (e.g., UK FCA s.21, EU MiCA, political ad registries, COPPA, the UK Children's Code, GDPR Article 8) sit in the seller's delivery stack and the buyer's compliance posture, not the protocol. + +## Conformance and testing + +- **Functional media-buy storyboards do not yet sign requests.** The universal signed-request vectors exercise RFC 9421 verification, but the functional `media_buy_seller` storyboards still use the unsigned general test kit. A seller that correctly declares `request_signing.required_for` for `create_media_buy` or `update_media_buy` can therefore fail the functional track with `request_signature_required`. Sellers should not weaken production authentication to obtain a badge. Until the runner can sign those functional steps, AgenticAdvertising.org should record the affected coverage as not applicable rather than treating it as an implementation failure. Tracked in [#5701](https://github.com/adcontextprotocol/adcp/issues/5701). +- **Reference test vectors are partial.** [Conformance](/dist/docs/3.2.0-beta.4/building/verification/conformance) is defined by the storyboard suite, and the suite publishes request-signing and canonicalization vectors today — but a broader corpus of reference test vectors is tracked in [#2383](https://github.com/adcontextprotocol/adcp/issues/2383). +- **AdCP Verified is self-attested in 3.0; the formal program launches with 3.1.** Today, agents publish their own signed `runner-output.json` — reproducible and re-runnable by any verifying party, but not AAO-audited. The training agent and official SDKs are being brought to full storyboard compliance over the 3.0 → 3.1 window on a 4–6 week cadence (training agent is at 32/55 clean today). When they pass cleanly and the ambiguous-storyboard work is done, AAO will run submitted agents against the canonical storyboard suite and maintain a public registry of Verified agents. The compliance runner and storyboards are themselves software at 3.0 — storyboard bugs, coverage gaps, and encoded-spec-intent ambiguities are legitimate GitHub issues alongside implementation bugs. +- **No automated enforcement of platform agnosticism** beyond the `check:platform-agnostic` lint scanning property names. A richer check covering schema semantics is future work. +- **No latency or response-time SLA.** The protocol has no normative expectations for how quickly an agent must respond (unlike OpenRTB's per-auction `tmax`). Buyers and sellers negotiate timing through the commercial relationship or through task-specific [accountability terms](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability). A structured SLA declaration is deferred. +- **No runtime schema-discovery tool on the wire.** AdCP does not ship a `get_schema` (or equivalent) capability tool that returns request and response shapes for a named task on a live agent. Coding agents discover shapes via [SKILL.md files](https://github.com/adcontextprotocol/adcp/tree/main/skills) packaged with the spec; SDK builders read JSON Schema from `/schemas/3.2.0-beta.4/bundled/` at build time. The canonical schema source is therefore out-of-band, not on the wire. A runtime tool was considered in [#3057](https://github.com/adcontextprotocol/adcp/issues/3057) and deferred — the SKILL.md path covers coding-agent discoverability, the schema-bundle URLs cover SDK builders, and the only uniquely-runtime case (private tool extensions on a specific agent) is rare enough in 3.x not to warrant a normative tool surface. The decision depends on MCP `tools/list` continuing to carry `inputSchema` — SDK validation symmetry between MCP and A2A (tracked in [adcp-client#909](https://github.com/adcontextprotocol/adcp-client/issues/909)) should be solved by extending the A2A `AgentCard` with a per-skill `schemaRef`, or by accepting validation asymmetry and falling back to bundled schemas on A2A; *not* by stripping `inputSchema` from MCP `tools/list`. Stripping it would create the exact wire-surface gap `get_schema` was meant to close, and that resolution should reopen #3057. Reconsider if non-Anthropic LLMs without skill loaders become primary consumers, if private tool extensions become common, if a transport emerges with no static capability descriptor at all, or if the SDK validation-symmetry fix lands by removing `inputSchema` from MCP discovery. +- **Runner-side capability-slot `not_applicable` enforcement is still landing.** Capability slots projected by SDK helpers such as `definePlatform` are commitments, not suggestions. The desired runner behavior is: if a storyboard/vector targets an undeclared slot, grade that path `not_applicable`; if the slot is declared, dispatch and fail normally on implementation errors. Until `adcp-client#2244` lands, prerelease/custom runners may need explicit skip gates for vectors outside the agent's declared slot scope. Implementers should leave unsupported slots absent rather than declaring them with placeholder behavior. + +## What is outside the protocol + +AdCP specifies the wire. It does not specify — and cannot substitute for — any of the following: + +- **Secret storage.** Use KMS, Vault, Secrets Manager, or equivalent. +- **Endpoint hardening.** WAF, rate limiting, DDoS protection, TLS configuration, OS patching, dependency scanning. +- **Monitoring and incident response.** The protocol emits the signals worth watching (idempotency conflicts, governance failures, SSRF rejections). Detecting and responding to them is the operator's job. +- **Human controls.** Approval thresholds, spend caps, pause authority — these are policy configurations inside the operator's agent or governance platform, not the protocol. +- **Physical and personnel security.** The usual controls over who can touch production, who holds break-glass credentials, and who can push to main. +- **Billing-grade metric accounting.** AdCP carries delivery and usage data end-to-end from the seller's ad delivery system, and [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) feeds invoicing. The underlying delivery platform — or a buyer-specified measurement vendor — is the system of record for counting, audit, and MRC accreditation of the measurement methodology. AdCP itself is not MRC-accredited and does not seek accreditation; accreditation attaches to measurement systems, which sit downstream. AdCP is the wire and the contract, not the ledger. +- **Invalid-traffic filtration and viewability measurement.** Buyers and sellers agree on verification vendors, thresholds, and remediation through [accountability terms](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability). GIVT/SIVT filtration (per MRC), viewability measurement (per the MRC Viewable Ad Impression standard), and brand-safety verification execute in the delivery stack or the chosen vendor layer (e.g., DoubleVerify, IAS, HUMAN). +- **Accessibility conformance of served creatives.** WCAG, ADA, and EN 301 549 conformance of rendered ads sit with the creative supplier, the delivery stack, and the publisher's rendering context. AdCP does not carry accessibility-conformance assertions as normative fields. + +Think of AdCP as specifying the locks on the doors. The operator still owns the building. + +## Related + +- [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) — the threat model and layered defense +- [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations) — cross-protocol privacy entry point +- [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status) — surfaces shipped in 3.x but not yet frozen +- [Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning) — cadence, support windows, and how limitations become follow-ups +- [Roadmap](/dist/docs/3.2.0-beta.4/reference/roadmap) — what's coming next diff --git a/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy.mdx b/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy.mdx new file mode 100644 index 0000000000..50848e675b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy.mdx @@ -0,0 +1,797 @@ +--- +title: Media Channel Taxonomy +description: "AdCP media channel taxonomy: the 20 standardized channel types (CTV, OLV, DOOH, podcasts, retail media, etc.) used for media planning and budget allocation." +"og:title": "AdCP — Media Channel Taxonomy" +--- + +# Media Channel Taxonomy + +<Info> +**Status**: Stable Specification +**Version**: 1.1.0 +**Last Updated**: 2026-08-14 + +Existing channel values are a GA-lined normative surface and follow the protocol's compatibility rules for removal or renaming. +</Info> + +This specification defines a standardized taxonomy for advertising media channels. It is designed for interoperability across media planning tools, ad tech platforms, and AI-powered advertising agents. + +## Motivation + +The advertising industry lacks a standardized channel taxonomy. While IAB Tech Lab provides taxonomies for content, audience, and ad products, no equivalent exists for media channels. This leads to: + +- Inconsistent channel naming across platforms +- Difficulty aggregating cross-channel campaign data +- Confusion between channels, formats, and buying models +- Friction in automated media planning workflows + +This specification addresses these gaps by defining: + +1. **Media Channels** - How buyers allocate budget (planning abstractions) +2. **Property Types** - Addressable inventory surfaces with verifiable ownership +3. **Clear distinction** between channels, property types, and formats + +## Design Philosophy + +**Channels represent how buyers plan and allocate budget**, not where ads technically render. + +This is a deliberate design choice. Buyers don't say "I have \$500K for web" — they say "I have \$500K for display" or "I have \$300K for OLV." The channel taxonomy reflects this reality. + +### Key Principles + +1. **Planning-oriented**: Channels match how agencies structure media plans +2. **Lightweight tags**: Channels help buyers express intent, not enforce precise classification +3. **Multi-channel support**: Properties may align with multiple channels (YouTube = `olv`, `social`, `ctv`) +4. **Publisher-declared**: Publishers indicate which channels their inventory supports +5. **Agent-reconciled**: Sales agents match buyer intent with publisher claims + +### Channels vs Technical Substrates + +Channels deliberately avoid substrate-level concepts like "web" or "mobile app" because: +- Buyers don't plan that way +- Most digital inventory would fall into both categories +- The same placement can be bought different ways + +Instead, channels describe **buying contexts**: display, OLV, social, search, CTV, etc. + +## Terminology + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). + +## Definitions + +### Media Channel + +A **media channel** describes how buyers allocate budget. It represents a planning abstraction that encodes assumptions about audience, environment, and buying approach. + +Channels are defined by **buying context**, not by: +- Technical substrate (web vs app) +- How the ad looks (that's a **format**) +- The specific technology serving the ad + +### Property Type + +A **property type** describes a specific addressable inventory surface where: +- Ownership can be verified (e.g., via `adagents.json`) +- Ads can be programmatically served +- Identifiers exist for the property (domains, app IDs, device IDs) + +Property types are technical classifications, distinct from channels. The same property may support multiple channels. + +### Format Category + +A **format category** describes HOW an ad renders - its creative unit type. Examples: `video`, `audio`, `display`, `native`. Formats are orthogonal to channels. + +## Understanding Channels vs Property Types + +| Concept | Question It Answers | Determined By | Example | +|---------|---------------------|---------------|---------| +| **Channel** | How do buyers allocate budget? | Planning context | `retail_media` | +| **Property Type** | Where does the ad technically render? | Addressable inventory surface | `website` | + +### Why This Matters + +Consider retail media: when a buyer allocates budget to "retail media," they're buying: +1. Sponsored products on retailer websites +2. Display ads on retailer apps +3. Off-site ads using retailer data +4. In-store digital screens + +All of these are `retail_media` channel, but the property types vary (`website`, `mobile_app`, `dooh`). + +<Note> +Some names like `dooh`, `podcast`, `radio`, and `streaming_audio` appear as both a channel and a property type. The channel describes the **buying context** (how budget is allocated); the property type describes the **technical surface** (where the ad renders). For example, an in-store retail screen is `retail_media` channel / `dooh` property type, while a standalone digital billboard is `dooh` channel / `dooh` property type. +</Note> + +### Multi-Channel Properties + +Properties can align with multiple channels. Examples: + +| Property | Channels | Reasoning | +|----------|----------|-----------| +| YouTube | `olv`, `social`, `ctv` | Different buying contexts on same platform | +| ESPN App | `olv`, `display` | Supports video and display inventory | +| Amazon | `retail_media`, `search`, `display` | Multiple ad products | + +### When to Use Each + +**Use channel when:** +- Filtering products by budget allocation category +- Reporting on media mix +- Expressing buyer intent in product discovery + +**Use property_type when:** +- Validating inventory ownership via `adagents.json` +- Technical ad serving decisions +- Platform-specific targeting + +For audio inventory, execution and distribution details that sit below channel and property type belong on product or placement metadata. Use [`audio_distribution_types`](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#audio-distribution-types) to distinguish music streaming services, FM/AM broadcast, podcasts, catch-up radio, web radio, video-game audio, and text-to-speech without renaming buyer-facing channels or `adagents.json` property types. + +## Media Channels + +### Channel Enum + +The following 20 channels MUST be supported. Implementations MAY extend with additional channels using the `ext` field. + +| Channel | Description | +|---------|-------------| +| `display` | Digital display advertising (banners, native, rich media) | +| `olv` | Online video outside CTV (pre-roll, outstream, in-app video) | +| `social` | Social media platforms | +| `search` | Search engine advertising | +| `ctv` | Connected TV and streaming on television screens | +| `linear_tv` | Traditional broadcast and cable television | +| `radio` | Traditional AM/FM radio broadcast | +| `streaming_audio` | Digital audio streaming services | +| `podcast` | Podcast advertising | +| `dooh` | Digital out-of-home screens | +| `ooh` | Classic out-of-home (billboards, transit) | +| `print` | Newspapers, magazines, print publications | +| `cinema` | Movie theater advertising | +| `email` | Email advertising and newsletters | +| `gaming` | In-game advertising | +| `retail_media` | Retail media networks and commerce marketplaces | +| `influencer` | Creator and influencer partnerships | +| `affiliate` | Affiliate networks and performance-based partnerships | +| `product_placement` | Product placement and branded content | +| `sponsored_intelligence` | Sponsored Intelligence — AI assistants, AI search, and generative AI platforms | + +### Channel Definitions + +#### `display` + +Digital display advertising including banners, native units, and rich media across web and app environments. + +**Includes**: +- Display banners on websites +- Display ads in mobile apps +- Native content units +- Rich media ads +- Interstitials (non-video) + +**Excludes**: +- Video ads (use `olv` or `ctv`) +- Social platform ads (use `social`) +- Search results (use `search`) +- Retail media placements (use `retail_media`) + +**Typical Formats**: display, native, rich_media + +#### `olv` + +Online video advertising delivered outside of CTV/television environments. + +**Includes**: +- Pre-roll, mid-roll, post-roll on websites +- In-app video ads +- Outstream/in-feed video +- YouTube video ads (when not on TV screens) +- Video on news sites, sports sites, etc. + +**Excludes**: +- CTV/streaming on TV screens (use `ctv`) +- Social platform video (use `social`) +- Linear TV (use `linear_tv`) +- Retail media video (use `retail_media`) + +**Typical Formats**: video + +**Note**: OLV (Online Video) is a distinct planning bucket from CTV. Agencies commonly budget separately for "OLV" and "CTV" campaigns. + +#### `social` + +Social media platform advertising, regardless of technical delivery surface. + +**Includes**: +- Meta platforms (Facebook, Instagram, Threads) +- X (Twitter) +- TikTok +- LinkedIn +- Snapchat +- Pinterest +- Reddit +- YouTube (when bought through social-style targeting) + +**Excludes**: +- Influencer content on social platforms (use `influencer`) +- Video ads bought for reach, not social engagement (consider `olv`) + +**Typical Formats**: display, video, native + +**Note**: Social is defined by BUYING CONTEXT (social platform ad tools) and audience engagement model. + +#### `search` + +Search engine results pages and search advertising networks. + +**Includes**: +- Google Search ads +- Microsoft Bing ads +- DuckDuckGo ads +- App store search ads +- Shopping/product listing ads in search context + +**Excludes**: +- Display ads on search engine properties (use `display`) +- Retail media search (use `retail_media`) + +**Typical Formats**: text, display (shopping) + +#### `ctv` + +Connected TV advertising delivered through streaming applications on television screens. + +**Includes**: +- Streaming service apps (Netflix, Hulu, Max, etc.) +- Virtual MVPDs (YouTube TV, Sling, etc.) +- Free ad-supported streaming TV (FAST) +- Smart TV native apps +- Gaming console streaming apps + +**Excludes**: +- Linear broadcast/cable (use `linear_tv`) +- Video on phones/tablets/desktops (use `olv`) +- YouTube on mobile (use `olv` or `social`) + +**Typical Formats**: video + +#### `linear_tv` + +Traditional broadcast and cable television advertising. + +**Includes**: +- National broadcast networks (ABC, CBS, NBC, Fox) +- Cable networks (ESPN, CNN, HGTV) +- Local broadcast stations +- Addressable linear TV + +**Excludes**: +- Streaming on TV screens (use `ctv`) +- TV Everywhere apps on mobile (use `olv`) + +**Typical Formats**: video + +#### `radio` + +Traditional AM/FM radio broadcast advertising. + +**Includes**: +- Terrestrial radio stations +- Satellite radio (SiriusXM terrestrial simulcast) +- HD Radio + +**Excludes**: +- Streaming audio services (use `streaming_audio`) +- Podcasts (use `podcast`) + +**Typical Formats**: audio + +#### `streaming_audio` + +Digital audio streaming services. + +**Includes**: +- Music streaming (Spotify, Apple Music, Amazon Music, Pandora) +- Audio content platforms +- Digital radio streams (iHeartRadio digital, TuneIn) + +**Excludes**: +- Podcasts (use `podcast`) +- Terrestrial radio simulcast (use `radio`) + +**Typical Formats**: audio, display (companion) + +#### `podcast` + +Podcast advertising, including host-read and dynamically inserted ads. + +**Includes**: +- Host-read sponsorships +- Dynamically inserted audio ads +- Podcast network advertising + +**Excludes**: +- Music streaming (use `streaming_audio`) +- Video podcasts on YouTube (use `olv` or `social`) + +**Typical Formats**: audio + +#### `dooh` + +Digital out-of-home advertising on electronic screens in public spaces. + +**Includes**: +- Digital billboards +- Transit screens (subway, bus shelters, airports) +- Retail/mall digital displays +- Gas station screens +- Elevator screens +- Stadium/venue digital signage + +**Excludes**: +- Static billboards (use `ooh`) +- Cinema screens (use `cinema`) + +**Typical Formats**: display, video + +#### `ooh` + +Classic out-of-home advertising on physical (non-digital) surfaces. + +**Includes**: +- Static billboards +- Transit posters +- Street furniture +- Wallscapes +- Wild postings + +**Excludes**: +- Digital screens (use `dooh`) + +**Typical Formats**: display (static) + +#### `print` + +Newspaper, magazine, and other print publication advertising. + +**Includes**: +- Newspaper display ads +- Magazine display ads +- Newspaper/magazine inserts +- Trade publication advertising + +**Excludes**: +- Digital versions of publications (use `display`) +- Direct mail + +**Typical Formats**: display (static) + +#### `cinema` + +Movie theater advertising. + +**Includes**: +- Pre-show advertising +- On-screen trailers and ads +- Lobby displays +- Concession advertising + +**Excludes**: +- Streaming movie services (use `ctv`) + +**Typical Formats**: video, display + +#### `email` + +Email advertising and sponsored newsletter content. + +**Includes**: +- Sponsored email newsletters +- Email display advertising +- Dedicated email sends + +**Excludes**: +- Transactional email +- CRM/owned email marketing + +**Typical Formats**: display, native + +#### `gaming` + +In-game advertising across gaming platforms. + +**Includes**: +- In-game display ads +- Rewarded video ads +- Playable ads +- Advergames +- Esports sponsorships +- Gaming influencer integrations + +**Excludes**: +- Ads in non-gaming apps (use `display` or `olv`) +- Gaming content on streaming platforms (use `ctv` or `olv`) + +**Typical Formats**: display, video, native + +#### `retail_media` + +Retail media networks and commerce marketplace advertising. + +**Includes**: +- Retail media networks (Amazon Ads, Walmart Connect, Target Roundel) +- Grocery and delivery platforms (Instacart, DoorDash, Uber) +- Travel marketplaces (Expedia, Booking.com, Kayak) +- Financial services marketplaces +- Sponsored product listings +- On-site display and video on commerce platforms +- Off-site ads using retailer first-party data + +**Excludes**: +- General display ads (use `display`) +- Social commerce (use `social`) +- Search ads on non-commerce platforms (use `search`) + +**Typical Formats**: native, display, video + +**Note**: Retail media is distinguished by its transactional context and closed-loop attribution capabilities. + +#### `influencer` + +Creator and influencer marketing partnerships. + +**Includes**: +- Sponsored content creation +- Brand ambassador programs +- Affiliate creator partnerships +- User-generated content campaigns + +**Excludes**: +- Ads placed on creator content by platforms (use `social`) +- Podcast host reads (use `podcast`) + +**Typical Formats**: video, native, display + +**Note**: `influencer` describes the BUYING MODEL (creator partnership) rather than where content appears. + +#### `affiliate` + +Affiliate networks, comparison sites, and performance-based publisher partnerships. + +**Includes**: +- Affiliate networks (CJ, Rakuten, Impact, Awin, ShareASale) +- Comparison shopping engines (NerdWallet, Bankrate, The Points Guy) +- Review and recommendation sites +- Coupon and deal sites (RetailMeNot, Honey) +- Content commerce (editorial with affiliate links) +- Lead generation sites +- Cashback and loyalty programs + +**Excludes**: +- Standard display ads on affiliate sites (use `display`) +- Influencer partnerships (use `influencer`) +- Retail media sponsored products (use `retail_media`) + +**Typical Formats**: native, display, text + +**Note**: `affiliate` describes the BUYING MODEL (performance-based, CPA/CPC/revenue share) rather than where content appears. Percentage-of-sale terms use the [`revenue_share` pricing model](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models#revenue-share). + +#### `product_placement` + +Product placement, branded content, and sponsorship integrations. + +**Includes**: +- Traditional product placement (film, TV) +- Virtual product placement +- Branded entertainment +- Event sponsorships +- Naming rights +- Branded content series + +**Excludes**: +- Influencer partnerships (use `influencer`) +- Standard ad placements at sponsored events (use appropriate channel) + +**Typical Formats**: native, video + +#### `sponsored_intelligence` + +Sponsored Intelligence — advertising within AI assistants, AI search results, and generative AI experiences via the reversed data flow. + +**Includes**: +- Sponsored responses in AI assistants and chatbots +- Sponsored results in AI-powered search engines +- Display and video ads within generative AI experiences +- Brand experience handoffs via SI Chat Protocol + +**Excludes**: +- Standard search engine ads (use `search`) +- Display ads on AI company websites (use `display`) +- Social platform AI features (use `social`) + +**Typical Formats**: native, display, video + +**Note**: `sponsored_intelligence` describes the BUYING CONTEXT where the user is interacting with an AI system, not traditional web or app surfaces. The channel uses the reversed data flow — buyers push data in, platforms generate ads with full context. + +## Property Types + +Property types describe addressable inventory surfaces with verifiable ownership. They are used in `adagents.json` for authorization validation. + +### Property Type Enum + +| Property Type | Description | Example Channels | +|---------------|-------------|------------------| +| `website` | Web properties accessible via browser | `display`, `olv` | +| `mobile_app` | Native mobile applications | `display`, `olv`, `social`, `gaming` | +| `ctv_app` | Connected TV applications | `ctv` | +| `desktop_app` | Desktop applications (Electron, native) | `streaming_audio`, `gaming` | +| `dooh` | Digital out-of-home screen networks | `dooh` | +| `podcast` | Podcast feeds and episodes | `podcast` | +| `radio` | Radio station properties | `radio` | +| `linear_tv` | Linear television stations and networks | `linear_tv` | +| `streaming_audio` | Digital audio streaming properties | `streaming_audio` | +| `ai_assistant` | AI-powered conversational interfaces | `sponsored_intelligence` | + +### Channels Without Property Types + +The following channels do not have corresponding property types because they lack addressable, verifiable inventory surfaces in the traditional sense: + +- `ooh` - Physical inventory lacks digital identifiers +- `print` - Physical publication inventory +- `cinema` - Theater inventory management systems +- `email` - Email list ownership differs from property authorization +- `influencer` - Creator relationships rather than property ownership +- `affiliate` - Performance-based partnerships, placements appear on partner websites +- `product_placement` - Content/event relationships rather than properties +- `retail_media` - Platform-managed inventory within retail ecosystems +- `search` - Platform-managed inventory +- `social` - Platform-managed inventory + +## Relationship Between Concepts + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ MEDIA CHANNEL │ +│ How buyers allocate budget (planning abstraction) │ +│ │ +│ display, olv, social, search, ctv, linear_tv, podcast, │ +│ streaming_audio, radio, dooh, ooh, print, cinema, email, │ +│ gaming, retail_media, influencer, affiliate, │ +│ product_placement, sponsored_intelligence │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ PROPERTY TYPE │ +│ Addressable inventory with verifiable ownership (technical) │ +│ │ +│ website, mobile_app, ctv_app, desktop_app, dooh, │ +│ podcast, radio, linear_tv, streaming_audio, ai_assistant │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ FORMAT CATEGORY │ +│ How the ad renders (orthogonal to channel) │ +│ │ +│ audio, video, display, native, rich_media, text │ +└─────────────────────────────────────────────────────────────────┘ +``` + +## Implementation + +### JSON Schema + +Channels are defined in the AdCP schema at: + +``` +/schemas/v3/enums/channels.json +``` + +```json +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/enums/channels.json", + "title": "Media Channel", + "description": "Standardized advertising media channels describing how buyers allocate budget", + "type": "string", + "enum": [ + "display", + "olv", + "social", + "search", + "ctv", + "linear_tv", + "radio", + "streaming_audio", + "podcast", + "dooh", + "ooh", + "print", + "cinema", + "email", + "gaming", + "retail_media", + "influencer", + "affiliate", + "product_placement", + "sponsored_intelligence" + ] +} +``` + +### Usage in Product Discovery + +When filtering products by channel: + +```json +{ + "filters": { + "channels": ["ctv", "olv", "streaming_audio"] + } +} +``` + +### Usage in Property Definitions + +Properties in `adagents.json` declare which channels they support: + +```json +{ + "properties": [ + { + "property_id": "youtube_app", + "property_type": "ctv_app", + "name": "YouTube CTV", + "supported_channels": ["ctv", "olv", "social"], + "identifiers": [ + {"type": "roku_store_id", "value": "12345"} + ] + } + ] +} +``` + +### Usage in Product Definitions + +Products declare which channels they are sold as. This typically inherits from properties but may be more specific: + +```json +{ + "product_id": "youtube_ctv_premium", + "name": "YouTube CTV Premium", + "channels": ["ctv"], + "publisher_properties": [ + { + "publisher_domain": "youtube.com", + "selection_type": "by_tag", + "property_tags": ["ctv_apps"] + } + ] +} +``` + +Even though YouTube properties support `["olv", "social", "ctv"]`, this product is specifically sold as CTV inventory. + +### Extensibility + +Implementations MAY support additional channels beyond this specification using the `ext` field pattern: + +```json +{ + "channel": "display", + "ext": { + "sub_channel": "native_content" + } +} +``` + +## Versioning + +This taxonomy follows [Semantic Versioning](https://semver.org/): + +- **MAJOR**: Removing channels, changing channel semantics +- **MINOR**: Adding new channels (append-only) +- **PATCH**: Clarifying descriptions, fixing typos + +Adding new channels is a MINOR version change and MUST NOT break existing implementations. + +## Migration from Legacy Channel Values + +Prior to this taxonomy, AdCP used a different set of channel values. The following table maps legacy values to the new taxonomy: + +| Legacy Value | New Channel(s) | Notes | +|--------------|----------------|-------| +| `display` | `display` | No change, but now excludes video | +| `video` | `olv`, `ctv` | Split by viewing environment | +| `audio` | `streaming_audio`, `podcast`, `radio` | Split by audio type | +| `native` | `display` | Native is a format, not a channel | +| `web` | `display`, `olv` | Web is a substrate, not a planning bucket | +| `mobile_app` | `display`, `olv`, `gaming` | App is a substrate, not a planning bucket | +| `dooh` | `dooh` | No change | +| `ctv` | `ctv` | No change | +| `podcast` | `podcast` | No change | +| `retail` | `retail_media` | Renamed | +| `commerce_media` | `retail_media` | Renamed | +| `social` | `social` | No change | +| `sponsorship` | `product_placement` | Renamed and refined | + +### Migration Guidance + +1. **Identify the planning context**: Determine HOW the buyer allocates budget, not where ads technically render. + +2. **Split video by environment**: If video was a single category, split into `olv` (desktop/mobile) and `ctv` (TV screens). + +3. **Remove substrate channels**: If you had `web` or `mobile_app` as channels, map to planning-oriented channels (`display`, `olv`) based on buying context. + +4. **Update filters**: When filtering products, use the new channel values. + +## Edge Cases and Ambiguities + +### YouTube Classification + +YouTube spans multiple channels depending on context: + +| Scenario | Channel | Reasoning | +|----------|---------|-----------| +| YouTube video ad on phone/desktop | `olv` or `social` | Depends on buying approach | +| YouTube video ad on CTV | `ctv` | TV screen environment | +| YouTube Shorts | `social` | Short-form social context | +| YouTube Music | `streaming_audio` | Audio streaming context | + +### Retail Media Complexity + +Retail media may eventually warrant sub-channels: + +| Scenario | Current | Potential Future | +|----------|---------|------------------| +| Sponsored products on Amazon | `retail_media` | `retail_media_search` | +| Display on retailer site | `retail_media` | `retail_media_display` | +| Off-site using retailer data | `retail_media` | `retail_media_offsite` | + +With `channels` on products, buyers can distinguish retail media product types (sponsored products vs display vs offsite) without sub-channels. Use `channels: ["retail_media"]` combined with canonical `format_kinds` or `format_option_refs` filters to narrow results. The two-axis approach (channel + format) is preferred over channel proliferation. + +### Gaming vs Display/OLV + +| Scenario | Channel | Reasoning | +|----------|---------|-----------| +| Rewarded video in mobile game via Unity Ads | `gaming` | Gaming-specific ad network | +| Banner in casual game via AdMob general pool | `display` | Standard mobile programmatic | +| Esports tournament sponsorship | `gaming` | Gaming audience context | + +### Influencer vs Social + +| Scenario | Channel | Reasoning | +|----------|---------|-----------| +| Buying promoted posts through Instagram Ads | `social` | Platform ad tools | +| Contracting an influencer directly | `influencer` | Creator partnership | +| Platform-inserted ads around creator content | `social` | Platform ad tools | + +## Future Considerations + +The following channels may be added in future versions based on market evolution: + +- `messaging` - WhatsApp Business, Telegram ads +- `xr` - VR/AR advertising + +## References + +- [IAB Tech Lab Taxonomies](https://github.com/InteractiveAdvertisingBureau/Taxonomies) - Content, Audience, Ad Product +- [OpenRTB/AdCOM](https://github.com/InteractiveAdvertisingBureau/AdCOM) - Placement types and media objects +- [Planmatic Media Plan Schema](https://github.com/planmatic/mediaplanschema) - Media planning data structures +- [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119) - Requirement level keywords + +## Changelog + +### 1.1.0 (2026-08-14) + +- Rename `ai_media` to `sponsored_intelligence` — Sponsored Intelligence is the umbrella for AI platform advertising (AI assistants, AI search, generative AI experiences) +- 20 channels defined +- Promote the released taxonomy to a stable normative surface by lazy consensus (#6261) + +### 1.0.0-draft (2026-01-23) + +- Initial draft specification +- 19 channels defined (planning-oriented approach) +- 10 property types defined +- Clear distinction between channel (planning abstraction), property_type (technical surface), and format +- Multi-channel support for properties +- Migration guide from legacy values diff --git a/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1.mdx b/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1.mdx new file mode 100644 index 0000000000..2091b665d3 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1.mdx @@ -0,0 +1,105 @@ +--- +title: Migrating from 3.0 to 3.1 +sidebarTitle: 3.0 to 3.1 +description: "A focused upgrade guide for moving AdCP 3.0 integrations to the 3.1 stable release." +"og:title": "AdCP - Migrating from 3.0 to 3.1" +--- + +# Migrating from 3.0 to 3.1 + +<Info> +**3.1 is released.** New 3.1 integrations should pin `"3.1"` after confirming the agent advertises it in `supported_versions`. Existing 3.0 integrations can remain pinned to `"3.0"` while they migrate. +</Info> + +3.1 is a minor release over 3.0. The protocol changes are additive: existing 3.0-conformant agents can remain on `"3.0"` without changing request or response shapes. Use this guide when you are preparing an SDK, buyer, seller, creative agent, signal agent, brand agent, or compliance workflow to claim or consume 3.1. + +For the feature narrative, start with [What's New in AdCP 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1). For the full release record, see [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-1-0). + +## Upgrade checklist + +| Step | Who | Action | +|---|---|---| +| 1 | Everyone | Decide whether this integration is staying on `"3.0"` for now or moving to `"3.1"`. | +| 2 | SDKs and hand-rolled clients | Add an `adcp_version` release pin on every request. Send `"3.1"` only to agents that advertise it. | +| 3 | Sellers and agents | Advertise every accepted release in `get_adcp_capabilities.adcp.supported_versions` and echo the served release at the envelope root. | +| 4 | Buyers | Decode `VERSION_UNSUPPORTED` and retry only against a version that the seller advertised. | +| 5 | Hand-rolled buyers | Add `idempotency_key` to read tasks as well as mutating tasks before claiming 3.1 behavior. | +| 6 | MCP and A2A adapters | Accept envelope fields and transport wrappers without rejecting unknown root members. | +| 7 | Error handlers | Treat `error.code` as an open string and dispatch on `error.recovery` when present. | +| 8 | Compliance operators | Run the 3.1 storyboard bundle and keep the 3.0 compatibility line green until the 3.1 badge is issued. | + +## Version pinning + +3.0 integrations negotiated by major version only. 3.1 adds release-precision negotiation: + +- Use `"3.0"` for stable 3.0 traffic. +- Use `"3.1"` for stable 3.1 traffic after the agent advertises it. +- Do not send patch values such as `"3.0.19"` or full semver prereleases such as `"3.1.0-rc.15"` on the wire. + +Sellers should reject unsupported pins with `VERSION_UNSUPPORTED` and include the supported release list in `error.data.supported_versions`. Buyers should not silently downshift across minor releases. Surface the mismatch or retry against a version the seller explicitly advertised. + +## Runtime changes to audit + +### Idempotency on every task + +3.0 required `idempotency_key` on mutating requests. 3.1 extends the reliability model to every task so retries, replays, and downstream reconciliation behave uniformly. SDK users should pick up this behavior from the SDK release. Hand-rolled buyers should generate a UUID v4 idempotency key for read tasks as well as writes. + +When a response is marked `replayed: true`, treat it as the historical result of the original operation. If you need fresh state before acting, re-read the relevant resource after handling the replayed response. + +### Envelope tolerance + +3.1 relies on transport adapters tolerating the AdCP envelope root. MCP and A2A clients should unwrap the transport-specific wrapper first, then read AdCP fields such as `status`, `result`, `errors`, `adcp_version`, `replayed`, and `context`. Unknown envelope members must not cause rejection. + +### Error decoding + +The standard error catalog expanded in 3.1, but `error.code` remains an open string. Clients should: + +- Accept unknown error codes. +- Prefer `error.recovery` when present. +- Apply a bounded transient fallback for unknown legacy errors when `error.recovery` is absent. +- Handle the auth split between `AUTH_MISSING` and `AUTH_INVALID`. +- Treat `CREDENTIAL_IN_ARGS` as terminal and move credentials to the proper transport channel before retrying. + +### Proposal and action discovery cleanup + +3.1 makes `proposal_status` the proposal source of truth and uses structured action discovery on products and buys. Sellers should not emit the pre-GA `requires_proposal` action mode. Buyers with cached prerelease action metadata should invalidate it and re-read the product, proposal, or buy surface. + +### Brand verification signing + +Brand agents that implement `verify_brand_claim` or `verify_brand_claims` must return signed response evidence. Publish a per-brand response-signing key and bind signatures to the task, resolved brand tenant, responding agent URL, caller/request hash, and validity window. + +### Signal targeting + +Signal identity moves toward `SignalRef`, with product-scoped `included_signals`, `signal_targeting_options`, and buy-time `signal_targeting_groups`. Owned-signal discovery and marketplace activation are separate capabilities. Buyers should call `activate_signal` only when the agent declares marketplace or activation support. + +### Creative formats and transformers + +Creative agents should expose canonical `format_kind` values and discover build units through `list_transformers`. Format-attached input/output/pricing declarations are deprecated in favor of transformer-scoped configuration and pricing. Hosted audio/video slots should use `duration_ms_exact` for fixed durations and `duration_ms_range` for bounded or one-sided ranges. + +### Reporting and billing + +3.1 adds delivery and usage finality markers, reach-window semantics, `viewability.viewed_seconds`, and the `BILLING_OUT_OF_BAND` error for creative billing outside AdCP. Buyers should avoid treating delivery numbers as final until the relevant finality fields say they are final. + +## Role-based migration + +| Role | Minimum prep before claiming 3.1 | +|---|---| +| SDK buyer | Upgrade to an SDK that emits `adcp_version`, pins `"3.1"` when the seller supports it, adds idempotency keys consistently, and accepts open error codes. | +| Hand-rolled buyer | Add release pins, read-task idempotency keys, envelope tolerance, forward-compatible error decoding, and replay handling. | +| Seller | Advertise `supported_versions`, echo the served release, tolerate envelope fields, reject unsupported pins with `VERSION_UNSUPPORTED`, and audit idempotency/replay/error behavior. | +| Creative agent | Move discovery to `list_transformers`, publish canonical formats, and keep legacy format references only as compatibility aliases. | +| Signal agent | Separate owned-signal discovery from marketplace activation; expose product-scoped targeting options only where buyers can select them. | +| Brand agent | Publish response-signing keys and return signed evidence for brand verification tasks. | +| Compliance operator | Run 3.1 storyboards, retain 3.0 compatibility evidence, and issue version-scoped badges only for the release actually tested. | + +## Prerelease artifacts + +The 3.1 prerelease artifacts remain available for adopters who pinned them during validation, but new integrations should use the stable `"3.1"` wire value. If you built against a prerelease, invalidate cached prerelease-only fields such as `requires_proposal`, re-read current product/proposal/action metadata, and rerun the 3.1 storyboard bundle before claiming the stable release. + +## Related + +- [What's New in AdCP 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1) +- [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-1-0) +- [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions) +- [Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning) +- [Version Adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2.mdx b/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2.mdx new file mode 100644 index 0000000000..f3f07df24b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2.mdx @@ -0,0 +1,184 @@ +--- +title: Migrating from 3.1 to 3.2 +sidebarTitle: 3.1 to 3.2 +description: "Role-based migration checklist for adopting the AdCP 3.2 beta while preserving 3.1 compatibility." +"og:title": "AdCP — Migrating from 3.1 to 3.2" +--- + +# Migrating from 3.1 to 3.2 + +<Warning> +**3.2 is in beta.** Beta.3 is the current protocol checkpoint, with exact +TypeScript support in `@adcp/sdk@14.0.0-beta.4`. Python and Go support remain +pending. Keep production traffic pinned to `"3.1"` while validating 3.2 in +staging. +</Warning> + +3.2 is a minor release over 3.1. Existing integrations do not need to adopt the +new compact tools immediately: `get_products`, `create_media_buy`, and +`update_media_buy` remain the 3.x compatibility facades. A caller opts into 3.2 +only after the peer advertises the exact release in `supported_versions`. + +For the feature narrative, start with [What's New in AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2). +For prerelease artifacts and SDK timing, use the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). + +## Upgrade checklist + +| Step | Who | Action | +|---|---|---| +| 1 | Everyone | Keep production on `"3.1"`; choose an exact 3.2 beta artifact for staging. | +| 2 | SDK and codegen maintainers | Generate from the signed `3.2.0-beta.3` protocol tarball, not `main` or `/schemas/3.2.0-beta.4/`. | +| 3 | Sellers and agents | Advertise the exact prerelease in `adcp.supported_versions` and echo the release actually served. | +| 4 | Buyers | Send `adcp_version: "3.2-beta.N"` only after exact capability discovery; never silently move between beta pins. | +| 5 | Media-buy implementations | Move create/update success handling completely to `media_buy_status`. | +| 6 | Signing implementations | Require `content-digest` coverage and migrate request `Signature` and `Content-Digest` binary values to RFC 8941 padded Base64. | +| 7 | Creative implementations | Adopt canonical format capability/product discovery and isolate legacy projection at compatibility boundaries. | +| 8 | Compliance operators | Pair `@adcp/sdk@14.0.0-beta.4` with exact beta.3 for TypeScript testing; require an equally explicit support statement for every other SDK. | + +## Required to claim 3.2 behavior + +### Serve and echo the exact release + +During beta, prerelease matching is exact. A seller serving beta.3 advertises +`"3.2-beta.3"`. Do not advertise stable `"3.2"` before GA, silently negotiate +between beta ordinals, or treat a major-only declaration as evidence of 3.2 +support. + +The 3.2 compliance posture makes missing `supported_versions` or a missing +response echo a blocking failure for a 3.2 claim, even though the fields remain +optional at the 3.x schema level for compatibility. + +### Use `media_buy_status` on create/update success + +AdCP 3.2 removes the deprecated body-level MediaBuyStatus named `status` from +`create_media_buy` and `update_media_buy` success schemas. Root `status` is the +task-envelope state. Read and emit `media_buy_status` for the buy lifecycle. + +Nested `media_buys[].status` and `media_buy_deliveries[].status` do not change +until 4.0. See [Migrating to `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status) +for cross-version decoder code. + +### Bind every signed request body + +Request signing is still optional in 3.2. When a 3.2 endpoint does support +request signing, however, it must advertise +`covers_content_digest: "required"`. Every accepted signature on a request with +a body covers `content-digest`; a signed body without coverage is rejected. + +Keep legacy `"either"` or `"forbidden"` behavior on a separately configured +3.0/3.1 compatibility endpoint or disable signing for that endpoint. A field +inside an untrusted request body cannot select a weaker verifier posture. + +The request-profile binary encoding also changes in 3.2. Emit `Signature` and +`Content-Digest` values as RFC 8941 `sf-binary`: standard RFC 4648 Base64 using +the `+` and `/` alphabet and required `=` padding inside the `:<base64>:` token. +The 3.0/3.1 request profile used unpadded Base64URL. A 3.2 verifier must reject +that legacy alphabet rather than retrying it through a permissive decoder. + +Select the parser from the trusted negotiated endpoint and signing profile, not +from a version field inside the untrusted body. Keep an explicitly routed +3.0/3.1 request endpoint if legacy request signing is required. The separate +`adcp/webhook-signing/v1` profile retains its legacy unpadded Base64URL binary +encoding throughout AdCP 3.x; do not apply the request-profile migration to +webhook receivers. See [Signed requests](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer). + +### Emit integer retry delays + +3.2 producers emit `error.retry_after` as an integer number of seconds. Clients +that still receive a legacy fractional value should round up before applying +their bounded retry policy. Do not read `retry_after` from `error.data`. + +## Adopt by capability + +### Compact product and MediaBuy lifecycle + +Read `get_adcp_capabilities.media_buy.lifecycle_tools` before choosing a tool. +Use: + +- `list_products` for published offer listing; +- `request_proposals`, `refine_proposals`, and `decline_proposals` for immutable + proposal negotiation; +- `buy_products` for direct purchase; +- `accept_proposal` for committed new-buy, amendment, or negotiated-cancellation + terms; +- `control_media_buy` for operational controls inside accepted terms. + +Absence of the declaration means use the 3.x compatibility facades. Retry a +stateful request with the same tool name, idempotency key, and payload; an +idempotency key does not create replay identity across old and new task names. + +### Targeting-aware discovery + +Move structured delivery constraints from briefs and legacy filters into +`targeting_overlay`. Use `required_overlay_support` only for dimensions whose +values will be supplied later. Treat returned configured product IDs as scoped +to their declared lineage, account, cache scope, and expiry. + +Follow the complete field map in [Targeting-aware product discovery](/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery). + +### Canonical creative discovery + +For new integrations: + +- sales agents expose accepted `format_options[]` on products; +- creative agents expose `creative.supported_formats` with stable capability + IDs and supported operations; +- build and transformer calls select the canonical capability; +- buyers do not require `list_creative_formats` when canonical discovery is + available. + +The compatibility task remains functional on its own schedule. Exact plural +`format_ids` is deprecated in 3.2 for removal in 4.0; singular legacy +`format_id` mappings retain their separate compatibility path. + +### Secured assets + +Stop producing inline `service_account.credentials`. Prefer a short-lived +asset-scoped signed URL, pre-authorized workload identity, or a bounded bearer +token when the origin requires an Authorization header. Continue parsing the +legacy shape for 3.x compatibility, but never activate received credentials +automatically. See [Migrating secured asset access](/dist/docs/3.2.0-beta.4/reference/migration/asset-access). + +### Experimental governance + +If you implement `governance.campaign`, update authenticated caller binding, +task-scoped enforcement, intent/execution separation, payload and commitment +binding, and outcome reconciliation together. Do not partially adopt the new +authorization semantics under an old capability declaration. + +See [Cross-role governance enforcement](/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement). + +## Role-based minimums + +| Role | Minimum before advertising or sending 3.2 | +|---|---| +| Hand-rolled buyer | Exact prerelease discovery/pin, beta-aware schema validation, `media_buy_status` handling, open error-code decoding, and capability gates for every new tool/field. | +| SDK buyer | An SDK version that names the exact 3.2 bundle, plus the same capability and prerelease negotiation checks. | +| Seller | Exact release advertisement and echo, 3.1 compatibility routing, canonical status emission, integer retry delays, and truthful task/targeting/format capabilities. | +| Creative agent | Canonical supported-format capabilities, operation selection, and explicit compatibility handling for legacy named formats. | +| Signals or measurement agent | Exact beta pin and only the attestation, targeting, or feedback capabilities actually implemented. | +| Governance provider/service | Exact beta pin, `governance.campaign` experimental declaration, and the complete cross-role authorization migration. | +| SDK maintainer | Signed bundle ingestion, generated-type/validator tests, exact support matrix entry, and protocol feedback destined for beta.1. | +| Compliance operator | Matching beta assets end to end; no 3.2 badge from beta.0. | + +## Rollback + +Keep the 3.1 handler and schema bundle available throughout beta. If a 3.2 +staging integration fails: + +1. Stop advertising the affected 3.2 prerelease. +2. Re-pin the peer to `"3.1"` only if it advertises 3.1. +3. Route through the 3.x compatibility facades and 3.1 schemas. +4. Preserve the failed beta payload and exact artifact version for diagnosis. + +Do not retry a 3.2 payload under a 3.1 pin without applying an explicit +version adapter; additive fields and compact task names may not exist in the +3.1 contract. + +## Related + +- [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta) +- [What's New in AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2) +- [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-2-0) +- [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions) +- [Version Adaptation](/dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/asset-access.mdx b/dist/docs/3.2.0-beta.4/reference/migration/asset-access.mdx new file mode 100644 index 0000000000..e451a031d4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/asset-access.mdx @@ -0,0 +1,126 @@ +--- +title: "Migrating secured asset access (3.2)" +description: "Stop embedding cloud credentials in artifact payloads and choose signed URLs, workload identity, or bounded bearer tokens in AdCP 3.2." +"og:title": "AdCP — Migrating secured asset access" +testable: true +--- + +# Migrating secured asset access (3.2) + +AdCP 3.2 deprecates `assets[].access.credentials` on the `service_account` access method. Without that legacy field, the method means that the asset origin has authorized a workload identity already controlled by the component that performs the asset fetch. No provider credential crosses the AdCP payload. + +For most integrations, use a short-lived signed URL. It gives consumers one interoperable operation—an ordinary HTTPS `GET`—without cloud-provider setup. + +## Choose the simplest path + +| Situation | Access method | +|-----------|---------------| +| One-off delivery or no prior identity relationship | `signed_url` (recommended) | +| Established cloud-IAM relationship and repeated access | `service_account` without `credentials` | +| Origin requires an Authorization header | Short-lived, asset-scoped `bearer_token` | + +Do not place long-lived API keys, private keys, cloud access keys, or other standing credentials in any artifact field. + +## Before: inline provider credentials + +This legacy shape remains schema-valid during the 3.x compatibility window, but new producers must not emit it: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/artifact.json", + "property_rid": "property_streamhaus_001", + "artifact_id": "episode_42_segment_3", + "assets": [ + { + "type": "audio", + "url": "https://storage.streamhaus.example/episodes/42/segment-3.mp3", + "access": { + "method": "service_account", + "provider": "gcp", + "credentials": { + "type": "service_account", + "private_key": "legacy-secret-redacted" + } + } + } + ] +} +``` + +Presence of this field denotes only the deprecated legacy form; it is not workload-identity authorization. Consumers must continue parsing and validating it for 3.x wire compatibility, but must not activate received credentials automatically. Process it only for a peer explicitly allowlisted for legacy compatibility; otherwise reject or quarantine it. Redact the complete value from logs, traces, errors, metrics, analytics, model context, and durable storage. + +## After: signed URL (recommended) + +Issue a URL scoped to one asset and the shortest practical access window: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/artifact.json", + "property_rid": "property_streamhaus_001", + "artifact_id": "episode_42_segment_3", + "assets": [ + { + "type": "audio", + "url": "https://assets.streamhaus.example/episodes/42/segment-3.mp3?expires=1786003200&signature=redacted", + "access": { + "method": "signed_url" + } + } + ] +} +``` + +The complete URL is a bearer capability. Consumers must redact it from logs, traces, errors, metrics, analytics, model context, and durable storage because providers may place credential material in either its path or query string. No additional Authorization header is sent, and the URL must not be forwarded outside the intended recipient trust boundary. + +## Alternative: pre-authorized workload identity + +For an established relationship, authorize the consumer's identity out of band and omit `credentials`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/content-standards/artifact.json", + "property_rid": "property_streamhaus_001", + "artifact_id": "episode_42_segment_3", + "assets": [ + { + "type": "audio", + "url": "https://storage.streamhaus.example/episodes/42/segment-3.mp3", + "access": { + "method": "service_account", + "provider": "gcp" + } + } + ] +} +``` + +The component that fetches the asset uses its normal provider credential chain at fetch time. The payload does not assert which principal is authorized, and the asset origin remains responsible for authorization. An intermediary must either fetch the asset itself or arrange out-of-band authorization for the downstream component that will fetch it. + +## Fetch safely + +Treat every asset URL and access object as untrusted. Require HTTPS and validate the resolved destination before the first request and after every redirect. Reject loopback, link-local, metadata-service, private, and locally disallowed destinations unless a specific destination was explicitly approved during authenticated onboarding. + +Never select or attach ambient credentials based only on `access.method`, `provider`, or the supplied URL. Bind workload credentials out of band to an allowed origin and resource prefix. Send bearer tokens only to the authorized origin, never forward an Authorization header across redirects, and fail closed rather than falling back to another access method. + +## Producer checklist + +- Prefer `signed_url` unless the parties already maintain an identity-based access relationship. +- Scope signed URLs and bearer tokens to one asset and the shortest practical access window under a documented maximum TTL. +- Omit `service_account.credentials` in all new payloads. +- Never copy consumer-owned provider credentials into an artifact. + +## Consumer checklist + +- Continue parsing and validating legacy `service_account.credentials` throughout 3.x. Process it only for an explicitly allowlisted legacy peer; otherwise reject or quarantine it. +- Never infer authorization from an identity string in the payload; authorization is enforced by the asset origin. +- Keep any temporary encrypted cache no longer than both the credential expiry and a configured maximum lifetime. +- Do not fall back between supplied credentials, workload identity, bearer tokens, and signed URLs after an authorization failure. +- Expect `service_account.credentials` to become removable in AdCP 4.0 or later, once the deprecation-policy notice and release-cycle gates are satisfied. + +## Related + +- [Content artifacts](/dist/docs/3.2.0-beta.4/governance/content-standards/artifacts#secured-asset-access) +- [AdCP versioning and deprecation policy](/dist/docs/3.2.0-beta.4/reference/versioning#deprecation-policy) +- [Issue #5698](https://github.com/adcontextprotocol/adcp/issues/5698) — 3.2 deprecation +- [Issue #5699](https://github.com/adcontextprotocol/adcp/issues/5699) — 4.0 removal +- [Issue #6224](https://github.com/adcontextprotocol/adcp/issues/6224) — 4.0 extensible access-method design diff --git a/dist/docs/3.2.0-beta.4/reference/migration/attribution.mdx b/dist/docs/3.2.0-beta.4/reference/migration/attribution.mdx new file mode 100644 index 0000000000..f9416c598a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/attribution.mdx @@ -0,0 +1,104 @@ +--- +title: "Migrating attribution windows" +description: "Migrate AdCP attribution windows from v2 to v3. Replaces integer day counts with structured Duration objects and adds required attribution model field." +"og:title": "AdCP — Migrating attribution windows" +testable: true +--- + +# Migrating attribution windows + +AdCP 3.0 renames attribution window fields and replaces integer day counts with structured `Duration` objects. An attribution `model` field is now required. + +## What changed + +| v2 field | v3 field | Change type | +|----------|----------|-------------| +| `click_window_days` (integer) | `post_click` (Duration) | Renamed + type changed | +| `view_window_days` (integer) | `post_view` (Duration) | Renamed + type changed | +| `model` (required) | `model` (required) | Unchanged | + +--- + +## Attribution window object + +### Before (v2) + +```json +{ + "attribution_window": { + "click_window_days": 7, + "view_window_days": 1, + "model": "last_touch" + } +} +``` + +### After (v3) + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/attribution-window.json", + "post_click": { + "interval": 7, + "unit": "days" + }, + "post_view": { + "interval": 1, + "unit": "days" + }, + "model": "last_touch" +} +``` + +Key differences: + +- **Field renames** — `click_window_days` → `post_click`, `view_window_days` → `post_view`. The new names describe the user action that starts the lookback window. +- **Structured Duration** — Time windows are `{ interval, unit }` objects instead of integer day counts. This enables sub-day granularity (`minutes`, `hours`) and campaign-scoped windows. +- **Attribution model** — Required in both v2 and v3. No change needed. + +--- + +## Duration object + +The `Duration` type is shared across frequency caps, attribution windows, and other time-based settings. + +```json +{ + "interval": 30, + "unit": "minutes" +} +``` + +| Unit | Meaning | +|------|---------| +| `minutes` | Clock minutes | +| `hours` | Clock hours | +| `days` | Calendar days | +| `campaign` | Full campaign flight (interval must be `1`) | + +--- + +## Migration steps + +<Steps> + <Step title="Rename attribution fields"> + Replace `click_window_days` with `post_click` and `view_window_days` with `post_view` in all attribution window objects. + </Step> + <Step title="Convert integer days to Duration objects"> + Replace integer day counts (e.g., `7`) with structured Duration objects (e.g., `{ "interval": 7, "unit": "days" }`). + </Step> + <Step title="Update frequency cap windows"> + Frequency caps have a similar migration. v2 used `suppress_minutes` (integer). v3 uses `suppress` (Duration object) and adds `max_impressions` with a `window` (Duration). Convert `suppress_minutes: 30` to `suppress: { "interval": 30, "unit": "minutes" }`. + </Step> + <Step title="Validate against v3 schemas"> + Ensure attribution window objects validate against the `attribution-window.json` schema. + </Step> +</Steps> + +<Card title="Conversion tracking & optimization goals" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index"> + Configure event sources, send conversion events, and set attribution windows. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Geo targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/audiences.mdx b/dist/docs/3.2.0-beta.4/reference/migration/audiences.mdx new file mode 100644 index 0000000000..8ad309729e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/audiences.mdx @@ -0,0 +1,136 @@ +--- +title: "Migrating audiences" +description: "Migrate AdCP audiences from beta.3 to rc.1. Promotes external_id to a required top-level field on AudienceMember with stable buyer-assigned identifiers." +"og:title": "AdCP — Migrating audiences" +testable: true +--- + +# Migrating audiences + +AdCP 3.0 rc.1 promotes `external_id` from a value in the `uid-type` enum to a required top-level field on `AudienceMember`. Every audience member must now have a buyer-assigned stable identifier plus at least one matchable identifier. + +## What changed + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `external_id` in uid-type enum | `external_id` required top-level field | Always present on every member | +| Optional buyer identifier | Required buyer identifier | Used for deduplication and removal | +| Single identifier model | Dual requirement: `external_id` + matchable ID | At least one of `hashed_email`, `hashed_phone`, or `uids` | + +## AudienceMember schema + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/audience-member.json", + "external_id": "crm_user_12345", + "hashed_email": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2", + "uids": [ + { "type": "uid2", "value": "uid2_token_abc123" } + ] +} +``` + +Two requirements enforced by the schema: +1. `external_id` is **required** — buyer-assigned stable identifier (CRM record ID, loyalty ID) +2. At least one matchable identifier — `hashed_email`, `hashed_phone`, or `uids` array + +## Before and after + +**beta.3 — external_id as a uid-type entry:** +```json test=false +{ + "uids": [ + { "type": "external_id", "value": "crm_user_12345" }, + { "type": "uid2", "value": "uid2_token_abc123" } + ] +} +``` + +**rc.1 — external_id as required top-level field:** +```json test=false +{ + "external_id": "crm_user_12345", + "uids": [ + { "type": "uid2", "value": "uid2_token_abc123" } + ] +} +``` + +## uid-type enum + +The `uid-type` enum no longer includes `external_id`. Current values: + +| Value | Description | +|-------|-------------| +| `rampid` | LiveRamp RampID | +| `id5` | ID5 universal ID | +| `uid2` | Unified ID 2.0 | +| `euid` | European Unified ID | +| `pairid` | Publisher Addressable Identity (IAB PAIR) | +| `maid` | Mobile Advertising ID (IDFA/GAID) | +| `other` | Other universal ID type (specify in `ext`) | + +## Why the change + +Separating `external_id` from the uid-type enum makes the buyer's stable identifier explicit. It enables: +- **Deduplication** — Remove duplicate members across syncs by `external_id` +- **Targeted removal** — Remove specific members without re-uploading the full list +- **Cross-referencing** — Correlate audience membership with buyer CRM systems + +CDPs that don't natively assign IDs can derive one (e.g., hash of the member's identifiers). + +## Sync audiences + +`sync_audiences` uses delta operations (`add`/`remove`) per audience. Members are identified by `external_id` for removal: + +```json test=false +{ + "account": { "account_id": "acct_pinnacle" }, + "audiences": [ + { + "audience_id": "high_value_customers", + "name": "High-Value Customers", + "add": [ + { + "external_id": "crm_user_12345", + "hashed_email": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" + } + ], + "remove": [ + { + "external_id": "crm_user_99999", + "hashed_email": "f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5" + } + ] + } + ] +} +``` + +## Migration steps + +<Steps> + <Step title="Extract external_id from uids"> + Move any `{ "type": "external_id", "value": "..." }` entry from the `uids` array to the top-level `external_id` field. + </Step> + <Step title="Ensure every member has external_id"> + If members don't have a buyer-assigned ID, derive one (e.g., hash of identifiers). The schema requires `external_id` on every member. + </Step> + <Step title="Keep at least one matchable identifier"> + Every member must also have at least one of `hashed_email`, `hashed_phone`, or `uids`. This is enforced by the schema's `anyOf` constraint. + </Step> + <Step title="Update removal logic"> + When removing members via `sync_audiences`, use `external_id` as the stable key. The member still needs a matchable identifier in the `remove` array. + </Step> + <Step title="Validate against schema"> + Run member objects against `audience-member.json` schema. It enforces both `external_id` (required) and the matchable identifier constraint. + </Step> +</Steps> + +<Card title="Signals Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/signals/overview"> + Full reference for signal discovery, activation, and pricing models. +</Card> + +--- + +**Related:** [Brand identity](/dist/docs/3.2.0-beta.4/reference/migration/brand-identity) | [Optimization goals](/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/brand-identity.mdx b/dist/docs/3.2.0-beta.4/reference/migration/brand-identity.mdx new file mode 100644 index 0000000000..93b683a544 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/brand-identity.mdx @@ -0,0 +1,125 @@ +--- +title: "Migrating brand identity" +description: "Migrate AdCP brand identity from beta.3 to rc.1. Replaces inline brand_manifest objects with BrandRef references resolved via brand.json or the community registry." +"og:title": "AdCP — Migrating brand identity" +testable: true +--- + +# Migrating brand identity + +AdCP 3.0 rc.1 replaces inline `brand_manifest` objects with lightweight brand references (`BrandRef`). Brand data is resolved at execution time from `/.well-known/brand.json` or the community brand registry. + +## What changed + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `brand_manifest` (inline object) | `brand` (`BrandRef`) | Reference resolved at execution time | +| Brand data passed in every request | Brand data fetched once from `brand.json` | Caching recommended (24h TTL) | +| No standard identity format | `/.well-known/brand.json` specification | Four variants: House Portfolio, Brand Agent, House Redirect, Authoritative Location | + +## BrandRef schema + +A brand reference identifies a brand by domain and optional `brand_id`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/brand-ref.json", + "domain": "nova-brands.com", + "brand_id": "spark" +} +``` + +- `domain` (required) — Domain where `/.well-known/brand.json` is hosted, or the brand's operating domain +- `brand_id` (optional) — Brand identifier within a house portfolio. Omit for single-brand domains. + +For single-brand domains: +```json +{ + "domain": "acme-corp.com" +} +``` + +## Where brand appears + +| Task | Required? | Purpose | +|------|-----------|---------| +| `create_media_buy` | Yes | Campaign identity — immutable once set | +| `get_products` | No | Discovery context. Required when `catalog` is provided | +| `build_creative` | No | Resolves to colors, logos, tone for creative generation | + +`brand` does not appear on `update_media_buy` (immutable from creation), `sync_creatives` (scoped to account), or `sync_catalogs` (scoped to account). + +## Before and after + +**beta.3 — inline brand_manifest on create_media_buy:** +```json test=false +{ + "brand_manifest": { + "name": "Spark", + "domain": "spark.nova-brands.com", + "logo_url": "https://spark.nova-brands.com/logo.png", + "industries": ["technology.hardware"] + }, + "account": { "account_id": "acct_nova" }, + "start_time": "2025-04-01T00:00:00Z", + "end_time": "2025-04-30T23:59:59Z" +} +``` + +**rc.1 — brand reference:** +```json test=false +{ + "brand": { + "domain": "nova-brands.com", + "brand_id": "spark" + }, + "account": { "account_id": "acct_nova" }, + "start_time": "2025-04-01T00:00:00Z", + "end_time": "2025-04-30T23:59:59Z" +} +``` + +The seller resolves `nova-brands.com` + `spark` to the full brand identity (logos, colors, tone, properties) via the Brand Protocol. + +## Resolution flow + +Given a `BrandRef`, the resolution is: + +1. Fetch `https://{domain}/.well-known/brand.json` +2. If it's a **House Redirect** (has `house` field), follow to the house domain (max 3 redirects) +3. If it's a **House Portfolio**, look up the brand by `brand_id` in the `brands` array +4. If it's a **Brand Agent**, call the MCP agent for dynamic brand data +5. If it's an **Authoritative Location**, follow the `location` URL + +Sellers cache resolved brand data (recommended 24-hour TTL for validated files, 1 hour for failed lookups). + +## Migration steps + +<Steps> + <Step title="Replace brand_manifest with brand"> + In all task requests (`create_media_buy`, `get_products`, `build_creative`), replace the `brand_manifest` object with a `brand` BrandRef: `{ "domain": "...", "brand_id": "..." }`. + </Step> + <Step title="Host brand.json"> + Publish `/.well-known/brand.json` on the brand's domain. Choose a variant: House Portfolio for multi-brand companies, Brand Agent for dynamic data, or single-brand for simple cases. + </Step> + <Step title="Register in brand registry"> + If the brand domain doesn't host `brand.json`, register it in the community brand registry so sellers can resolve it. + </Step> + <Step title="Update seller resolution"> + Seller agents must resolve `BrandRef` to full brand data at execution time. Implement caching and handle all four `brand.json` variants. + </Step> + <Step title="Remove inline brand data"> + Remove any code that constructs or parses `brand_manifest` objects. Brand data is no longer passed inline. + </Step> + <Step title="Validate against schema"> + Run requests against `brand-ref.json` schema. The `domain` field requires a valid lowercase domain pattern. + </Step> +</Steps> + +<Card title="Brand identity" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/brand-protocol/brand-json"> + Full reference for brand.json variants, the brand registry, and BrandRef resolution. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [Brand Protocol](/dist/docs/3.2.0-beta.4/brand-protocol) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/catalogs.mdx b/dist/docs/3.2.0-beta.4/reference/migration/catalogs.mdx new file mode 100644 index 0000000000..f22976a1c1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/catalogs.mdx @@ -0,0 +1,368 @@ +--- +title: "Migrating catalogs" +description: "Migrate AdCP catalogs from v2 to v3. Replaces promoted_offerings with first-class catalog objects, sync_catalogs task, and format-level catalog requirements." +"og:title": "AdCP — Migrating catalogs" +--- + +# Migrating catalogs + +AdCP 3.0 removes the `promoted_offerings` creative asset type and the `promoted_offering` string field from media buys and creative manifests. Catalogs are now first-class protocol objects with their own sync task, format-level requirements, and conversion event alignment. + +## What changed + +| v2 field | v3 field | Change type | +|----------|----------|-------------| +| `promoted_offerings` (creative asset type) | `catalog` assets in creative manifest `assets` | Replaced | +| `promoted_offering` (string on media-buy) | Removed | Removed | +| `promoted_offering` (string on creative-manifest) | `catalog` assets in `assets` | Replaced | +| No catalog sync | `sync_catalogs` task | New | +| No format catalog requirements | `catalog` asset type on Format `assets` | New | +| No catalog-event linking | `conversion_events` on Catalog | New | + +--- + +## Creative manifests + +### What changed + +In v2, catalog data was embedded inside `creative_manifest.assets` as a `promoted_offerings` object that bundled brand identity, inline offerings, and SI agent URL together. + +In v3, brand identity is a first-class parameter on tasks (`build_creative`, `sync_creatives`), and catalogs are included as `catalog` asset types in the manifest's `assets`. + +### Before (v2) + +```json +{ + "creative_id": "product-carousel", + "format_id": { + "agent_url": "https://creatives.example.com", + "id": "product_carousel" + }, + "assets": { + "promoted_offerings": { + "brand": { + "domain": "acmecorp.example.com" + }, + "offerings": [ + { + "offering_id": "winter-sale", + "name": "Winter Sale Collection", + "description": "50% off all winter items" + } + ] + } + } +} +``` + +### After (v3.2 canonical) + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/core/creative-manifest.json", + "format_kind": "sponsored_placement", + "format_option_ref": { + "scope": "product", + "format_option_id": "product_carousel" + }, + "assets": { + "source_catalog": { + "asset_type": "catalog", + "type": "product", + "catalog_id": "winter-products" + } + } +} +``` + +Key differences: + +- **Brand identity** comes from the `brand` parameter on the task, not embedded in creative assets +- **Format identity** is portable canonical `format_kind` plus an optional product or publisher `format_option_ref`; compound `format_id` is deprecated in 3.2 +- **Catalogs** are `catalog` asset types in the `assets` map, keyed by the canonical slot name (for `sponsored_placement`, `source_catalog`) +- **Catalog references synced data** by `catalog_id` instead of inlining items (though inline items are still supported for simple cases) + +--- + +## Media buys + +### What changed + +The `promoted_offering` string field is removed from media buy objects. What's being promoted is now expressed through the `brief` on `get_products`/`create_media_buy` and through catalog references on creatives. + +### Before (v2) + +```json +{ + "media_buy_id": "mb_123", + "promoted_offering": "Winter Sale Collection", + "status": "draft", + "total_budget": { + "amount": 10000, + "currency": "USD" + }, + "packages": [] +} +``` + +### After (v3) + +```json +{ + "media_buy_id": "mb_123", + "status": "draft", + "total_budget": { + "amount": 10000, + "currency": "USD" + }, + "packages": [] +} +``` + +If you were using `promoted_offering` for reporting or display purposes, that context now comes from: +- The `brief` field on `get_products` and `create_media_buy` +- The `brand` parameter on tasks +- Catalog assets in creative manifest `assets` + +--- + +## Syncing catalogs (new in v3) + +The `sync_catalogs` task lets buyers push catalog data to sellers before submitting creatives. This replaces the pattern of embedding product data inside creative assets. + +Key features: +- **Bulk sync** with per-catalog results +- **Async approval** workflow (working, input-required, submitted) +- **Item-level review** with approve/reject per catalog item +- **Discovery mode** — omit the catalogs field to see existing synced catalogs +- **Validation modes** — strict, lenient, or dry_run + +### Workflow + +``` +get_products.format_options[] → resolve effective canonical catalog slots → sync_catalogs → sync_creatives with canonical manifests +``` + +1. Discover what catalogs a product contract needs by resolving the selected canonical's default slots plus any narrowing or override in `get_products.format_options[].params.slots` +2. Sync those catalogs using `sync_catalogs` +3. Wait for approval if the seller requires review +4. Submit creatives that reference the synced `catalog_id` + +<Card title="Catalogs documentation" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/creative/catalogs"> + Complete reference including all 13 catalog types, sync workflow, and item-level review. +</Card> + +--- + +## Format catalog requirements (new in v3) + +Formats declare catalog needs as `catalog` asset types in their `assets` array: + +```json +{ + "assets": [ + { + "item_type": "individual", + "asset_id": "product_catalog", + "asset_type": "catalog", + "required": true, + "requirements": { + "catalog_type": "product", + "min_items": 3, + "required_fields": ["name", "price", "image_url"] + } + } + ] +} +``` + +Format declarations use `asset_type: "catalog"` with a `requirements` object containing: + +| Field | Type | Description | +|-------|------|-------------| +| `catalog_type` | string | Required. The catalog type (e.g., `product`, `store`, `job`) | +| `min_items` | integer | Minimum items the catalog must contain | +| `max_items` | integer | Maximum items the format can render | +| `required_fields` | string[] | Fields that must be present on every item | +| `feed_formats` | string[] | Accepted feed formats (e.g., `google_merchant_center`, `linkedin_jobs`) | + +This replaces the v2 pattern where formats implicitly required `promoted_offerings` in their assets — the requirement is now explicit and discoverable. + +### Creative agent migration + +Creative agents that read format definitions to determine catalog requirements need to change how they discover and fulfill catalog slots. + +**Before (v2)** — checking a dedicated `catalog_requirements` field: + +```javascript +// v2: catalog requirements were a separate top-level array +for (const req of format.catalog_requirements) { + const catalogType = req.catalog_type; + const minItems = req.min_items; +} +``` + +**After (v3)** — iterating the `assets` array and filtering by `asset_type`: + +```javascript +// v3: catalogs are assets like any other +const catalogAssets = format.assets.filter(a => a.asset_type === "catalog"); +for (const slot of catalogAssets) { + const catalogType = slot.requirements.catalog_type; + const minItems = slot.requirements.min_items; + const slotId = slot.asset_id; // use as key in manifest.assets +} +``` + +When building a manifest, catalog assets are keyed by their `asset_id` from the format definition: + +```json +{ + "assets": { + "product_catalog": { + "type": "product", + "catalog_id": "winter-products" + } + } +} +``` + +The `asset_id` (e.g., `product_catalog`) from the format's `assets` array becomes the key in the manifest's `assets` object. + +--- + +## Conversion event alignment (new in v3) + +Catalogs declare which event types represent conversions for their items: + +```json +{ + "catalog_id": "job-feed", + "type": "job", + "content_id_type": "job_id", + "conversion_events": ["submit_application", "complete_registration"] +} +``` + +This links catalogs to the conversion tracking system. When a `log_event` is sent with `content_ids` matching catalog items, the platform knows which events to attribute. + +The `content_id_type` field declares what identifier type `content_ids` values represent. For vertical catalogs, this matches the item's canonical ID field (`job_id`, `hotel_id`, etc.). For product catalogs, it distinguishes between `sku` and `gtin` for cross-retailer matching. Omit when using a custom identifier scheme. + +| Catalog type | Typical conversion events | +|-------------|--------------------------| +| `product` | `purchase`, `add_to_cart` | +| `hotel` | `purchase` (booking) | +| `flight` | `purchase` (booking) | +| `job` | `submit_application` | +| `vehicle` | `lead`, `schedule` | +| `real_estate` | `lead`, `schedule` | +| `education` | `submit_application`, `complete_registration` | +| `destination` | `purchase` (booking) | + +<Card title="Conversion events" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/creative/catalogs#conversion-events"> + Full documentation on catalog-event alignment. +</Card> + +--- + +## product_selectors replaced by catalog on get_products + +The `product_selectors` field on `get_products` has been replaced by `catalog`. The `PromotedProducts` schema has been removed. + +### Before + +```json +{ + "brand": { "domain": "acmecorp.com" }, + "product_selectors": { + "manifest_gtins": ["00013000006040"], + "manifest_tags": ["organic"] + } +} +``` + +### After + +```json +{ + "brand": { "domain": "acmecorp.com" }, + "catalog": { + "type": "product", + "gtins": ["00013000006040"], + "tags": ["organic"] + } +} +``` + +### Field mapping + +| Old (`product_selectors`) | New (`catalog`) | +|---|---| +| `manifest_gtins` | `gtins` | +| `manifest_skus` | `ids` | +| `manifest_tags` | `tags` | +| `manifest_category` | `category` | +| `manifest_query` | `query` | + +### Response changes + +- `product_selectors_applied` is now `catalog_applied` +- `catalog_match.matched_skus` is now `catalog_match.matched_ids` + +--- + +## New fields on Product + +- **`catalog_types`** — Array of catalog types this product supports (e.g., `["product"]`, `["job", "offering"]`) +- **`catalog_match.matched_ids`** — Generic item ID matches (replaces `matched_skus`) +- **`catalog_match.matched_count`** — Count of matched items + +--- + +## Catalog on packages + +Packages now accept a `catalog` field for catalog-driven campaigns. One budget envelope promotes an entire catalog, with the platform optimizing delivery across items. + +--- + +## Store catchment targeting + +`targeting_overlay` now supports `store_catchments` — referencing synced store catalogs for proximity targeting. + +--- + +## Per-catalog-item delivery + +`get_media_buy_delivery` now includes `by_catalog_item` breakdowns within packages for catalog-driven campaigns. + +--- + +## Migration steps + +<Steps> + <Step title="Remove promoted_offerings from creative assets"> + Remove `promoted_offerings` objects from `creative_manifest.assets`. Brand identity is now provided via the `brand` task parameter. + </Step> + <Step title="Add catalog assets to creative manifests"> + For creatives that render catalog items (product carousels, store locators, etc.), add catalog assets to the manifest's `assets` map. Each catalog asset is a catalog object with `type` and `catalog_id` (e.g., `{ "type": "product", "catalog_id": "winter-products" }`). + </Step> + <Step title="Remove promoted_offering from media buys"> + Remove the `promoted_offering` string from `create_media_buy` requests. Use the `brief` field to describe what's being promoted. + </Step> + <Step title="Discover catalog requirements"> + Resolve the selected declaration's effective canonical slots — canonical defaults plus any `format_options[].params.slots` narrowing or override — and check for catalog inputs. Use `get_adcp_capabilities.creative.supported_formats[]` only when selecting a separate creative agent to build or validate the resulting manifest; `list_creative_formats` is deprecated in 3.2. + </Step> + <Step title="Sync catalogs before submitting creatives"> + Use the `sync_catalogs` task to push catalog data to sellers. Handle async approval if the seller requires review. + </Step> + <Step title="Add conversion events and content ID type for attribution"> + Include `conversion_events` on catalogs to link catalog items to your conversion tracking setup. Add `content_id_type` to declare what identifier type (e.g., `sku`, `gtin`, `job_id`) the event's `content_ids` should be matched against. + </Step> + <Step title="Validate against v3 schemas"> + Ensure creative manifests, media buys, and catalog objects validate against v3 schemas. + </Step> +</Steps> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Geo targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | [Attribution](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/channels.mdx b/dist/docs/3.2.0-beta.4/reference/migration/channels.mdx new file mode 100644 index 0000000000..23b2738810 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/channels.mdx @@ -0,0 +1,183 @@ +--- +title: "Migrating channels" +description: "Migrate AdCP channels from v2 to v3. Maps v2's 9 format-oriented channels to v3's 20 planning-oriented media channels with field-by-field examples." +"og:title": "AdCP — Migrating channels" +testable: true +--- + +# Migrating channels + +AdCP 3.0 replaces v2's 9 channels with 20 planning-oriented channels that reflect how buyers allocate budgets. Five channels carry over unchanged, the rest are split, removed, or renamed, and several channels — including `sponsored_intelligence` for AI surfaces — are net-new in v3 with no v2 equivalent. + +## Why the channel model changed + +v2 mixed format-oriented channels (`video`, `audio`, `native`) with planning-oriented ones (`social`, `ctv`, `dooh`). Buyers don't plan budgets around rendering technology — they plan around media types. A video budget gets split between OLV, CTV, and cinema. An audio budget spans radio, streaming, and podcasts. + +v3 channels consistently match how agencies structure media plans. + +## Channel mapping + +| v2 channel | v3 channel(s) | Notes | +|------------|---------------|-------| +| `display` | `display` | Unchanged | +| `video` | `olv`, `linear_tv`, `cinema` | Split by distribution (`ctv` was already separate in v2) | +| `audio` | `radio`, `streaming_audio` | Split by distribution (`podcast` was already separate in v2) | +| `native` | Removed | Use format-level properties instead | +| `social` | `social` | Unchanged | +| `ctv` | `ctv` | Unchanged | +| `podcast` | `podcast` | Unchanged | +| `dooh` | `dooh` | Unchanged | +| `retail` | `retail_media` | Renamed for clarity | + +## Complete v3 channel enum + +All 20 values from the `channels.json` schema: + +``` +display, olv, social, search, ctv, linear_tv, +radio, streaming_audio, podcast, dooh, ooh, +print, cinema, email, gaming, retail_media, +influencer, affiliate, product_placement, +sponsored_intelligence +``` + +| Channel | Description | +|---------|-------------| +| `display` | Digital display advertising (banners, native, rich media) across web and app | +| `olv` | Online video advertising outside CTV (pre-roll, outstream, in-app video) | +| `social` | Social media platforms | +| `search` | Search engine advertising and search networks | +| `ctv` | Connected TV and streaming on television screens | +| `linear_tv` | Traditional broadcast and cable television | +| `radio` | Traditional AM/FM radio broadcast | +| `streaming_audio` | Digital audio streaming services | +| `podcast` | Podcast advertising (host-read or dynamically inserted) | +| `dooh` | Digital out-of-home screens in public spaces | +| `ooh` | Classic out-of-home (physical billboards, transit, etc.) | +| `print` | Newspapers, magazines, and other print publications | +| `cinema` | Movie theater advertising | +| `email` | Email advertising and sponsored newsletter content | +| `gaming` | In-game advertising across platforms (intrinsic in-game, rewarded video, playable ads) | +| `retail_media` | Retail media networks and commerce marketplaces | +| `influencer` | Creator and influencer marketing partnerships | +| `affiliate` | Affiliate networks, comparison sites, and performance-based partnerships | +| `product_placement` | Product placement, branded content, and sponsorship integrations | +| `sponsored_intelligence` | Sponsored Intelligence — advertising within AI assistants, AI search, and generative AI experiences via the reversed data flow (net-new in v3; no v2 equivalent) | + +<Note> +The `gaming` channel covers all in-game advertising. Rewarded video in gaming apps could also be classified as `olv` — use `gaming` when the inventory comes from a gaming budget, `olv` when it comes from a video budget. +</Note> + +## Migrating `video` products + +The v2 `video` channel must be split across 3 v3 channels based on distribution (`ctv` was already a separate v2 channel): + +- **`olv`** — Online video (web, mobile app, social): pre-roll, outstream, in-app video +- **`linear_tv`** — Traditional broadcast and cable television +- **`cinema`** — Movie theater pre-show advertising + +A single publisher may support multiple channels. A streaming service might declare both `olv` and `ctv` if their inventory serves both mobile and TV. + +## Migrating `audio` products + +The v2 `audio` channel splits into 2 v3 channels (`podcast` was already a separate v2 channel): + +- **`radio`** — Traditional AM/FM radio broadcast +- **`streaming_audio`** — Digital audio streaming services (music platforms) + +## Migrating `native` products + +v3 removes `native` as a channel. Native is a rendering style, not a budget category. + +If you have products tagged `native` in v2, assign the appropriate v3 channel based on how the budget is planned: +- Native display ads -> `display` +- Native social ads -> `social` +- Native content recommendations -> `display` or `affiliate` depending on model + +## Migrating `retail` products + +Simple rename from `retail` to `retail_media`. + +## Multi-channel products + +v3 products declare an array of channels, so a single product can span multiple channels. Here's a capabilities response showing a seller that supports multiple channels: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + }, + "media_buy": { + "portfolio": { + "primary_channels": ["display", "olv", "ctv"], + "publisher_domains": ["pinnaclemedia.example.com"], + "primary_countries": ["US"] + } + } +} +``` + +When products are returned from `get_products`, each product's `channels` array declares which channels that product is sold as: + +```json +{ + "channels": ["olv", "ctv"] +} +``` + +## Declaring channel support in capabilities + +Buyers should call `get_adcp_capabilities` before filtering `get_products` +requests. When present, `portfolio.primary_channels` is the seller's complete +brief-routing channel allowlist, so a buyer may skip the seller when no requested +channel intersects it. Omission means unknown scope, not support for every +channel. A match is not an availability guarantee; call `get_products` to +resolve current inventory and the rest of the brief. + +AdCP 3.2 applies the same exhaustive routing meaning to +`portfolio.primary_countries`. Sellers upgrading from 3.1 that populated either +`primary_*` array with only representative values MUST expand it to the complete +brief-routing scope or omit it until they can do so. Empty and duplicate arrays +remain wire-valid in 3.2 for compatibility but produce Canary advisories; 4.0 is +expected to require non-empty, unique declarations. The country array does not +replace `media_buy.execution.targeting` geo capabilities or product +`overlay_support`. + +## Migration steps + +<Steps> + <Step title="Audit channel usage"> + Find all places your code reads or writes channel values. + </Step> + <Step title="Map old to new"> + Use the mapping table above to convert each value. Note that `display`, `social`, `ctv`, `podcast`, and `dooh` are unchanged. + </Step> + <Step title="Handle multi-mapping"> + Where v2 `video` or `audio` maps to multiple v3 channels, classify each product by its distribution context. + </Step> + <Step title="Update filters"> + If your buyer agent filters by channel, update to the new values. + </Step> + <Step title="Update capabilities"> + Implement `get_adcp_capabilities` with correct channel declarations. + </Step> + <Step title="Test validation"> + v3 schema validation will reject old channel values like `video`, `audio`, `native`, and `retail`. + </Step> +</Steps> + +<Card title="Media channel taxonomy" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy"> + Full definitions and design rationale for all 20 v3 channels. +</Card> + +--- + +**Related:** [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Geo targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [Attribution](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/creative-transformers.mdx b/dist/docs/3.2.0-beta.4/reference/migration/creative-transformers.mdx new file mode 100644 index 0000000000..a434a5acc0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/creative-transformers.mdx @@ -0,0 +1,90 @@ +--- +title: "Migrating to creative transformers (3.1)" +description: "Move build-capability discovery and creative pricing off Format fields onto transformers (list_transformers). Additive in 3.1; deprecated Format fields removed at 4.0." +"og:title": "AdCP — Migrating to creative transformers" +--- + +# Migrating to creative transformers (3.1) + +<Note> +AdCP 3.2 uses `get_adcp_capabilities.creative.supported_formats[]` for canonical operation discovery and `list_transformers` for account-scoped transformer discovery. Transformer inputs use canonical `input_formats`; outputs use `output_capability_ids`; builds select `target_capability_id(s)`. The named-format examples below document the 3.1 compatibility path only. +</Note> + +AdCP 3.1 introduces **transformers** — the creative analog of a media-buy product: an agent-offered, account-scoped, selectable unit of build capability (a voice, model, style, or director) with a typed configuration surface and per-account pricing, discovered via [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers) and selected with `transformer_id` on [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). + +Because a transformer carries **its own input/output formats and its own pricing**, three things that 3.0 hung on the *format* are now redundant and are deprecated: + +- `Format.input_format_ids` / `Format.output_format_ids` +- `Format.pricing_options` +- the `input_format_ids` / `output_format_ids` discovery **filters** on `list_creative_formats` + +**Nothing breaks if you do nothing in 3.1.** All four are `deprecated: true` but still validate and still function through the 3.1–3.x line. Act before 4.0. The hazards below are about *silent degradation* over the window, not hard breaks. + +## What changed + +| Surface | 3.0 | 3.1 | Removed | +|---|---|---|---| +| Build-capability discovery | filter `list_creative_formats` on `input_format_ids` / `output_format_ids`; read `Format.input_format_ids` / `output_format_ids` | discover via `list_transformers` (each transformer declares its own I/O signature) | 4.0 | +| Creative/transform pricing | `Format.pricing_options` (per format) | `transformer.pricing_options` (per transformer; `include_pricing` + `account` on `list_transformers`) | 4.0 | +| `list_creative_formats` `input_format_ids` / `output_format_ids` filters | supported | `deprecated: true` — use `list_transformers` filters + `brief` | 4.0 | + +## Migrate + +### Format I/O signature → transformer + +A transformer declares the formats it accepts and produces directly, so build capability is a property of the *selectable unit*, not a relationship hung on a format. + +**Before (3.0)** — a transform format declares what it consumes/produces: +```json test=false +{ + "format_id": { "agent_url": "https://creative.example", "id": "resize_to_meta" }, + "input_format_ids": [{ "agent_url": "https://creative.example", "id": "display_master" }], + "output_format_ids": [{ "agent_url": "https://creative.example", "id": "meta_reels_9x16" }] +} +``` + +**After (3.1)** — declare a transformer (discovered via `list_transformers`): +```json test=false +{ + "transformer_id": "resize_to_meta", + "name": "Resize to Meta Reels", + "input_format_ids": [{ "agent_url": "https://creative.example", "id": "display_master" }], + "output_format_ids": [{ "agent_url": "https://creative.example", "id": "meta_reels_9x16" }], + "params": [], + "pricing_options": [ { "pricing_option_id": "per_format", "model": "per_unit", "unit": "format", "unit_price": 0.10, "currency": "USD" } ] +} +``` + +### Format pricing → transformer pricing + +`Format.pricing_options` moves to `transformer.pricing_options` (same `vendor-pricing-option` shape; `per_unit` is typical). The applied option is echoed per-leaf on the `build_creative` response and reconciled via `report_usage`, unchanged. + +For multi-output transformers, a pricing option can carry `applies_to_output_format_ids` to scope that rate to specific outputs. An unscoped pricing option is the default for any output. If a build targets an output that matches no scoped option and the transformer has no unscoped default, the agent rejects the build with `UNPRICEABLE_OUTPUT` rather than guessing a price. + +### `list_creative_formats` discovery filters → `list_transformers` + +Stop filtering `list_creative_formats` on `input_format_ids` / `output_format_ids` to find "what can build X". Use `list_transformers` — filter on its `input_format_ids` / `output_format_ids`, narrow with `brief`, and expand account-scoped option values with `expand_params`. + +## What breaks silently if you do nothing + +These do not throw — which is exactly why they are the reason this guide exists. + +1. **Discovery-read degradation (buyers).** If your buyer/storyboard learns build capability *only* by reading `Format.input_format_ids` / `output_format_ids` or by filtering `list_creative_formats` on them, you keep working against a 3.1 seller but see **progressively emptier results** as sellers stop emitting the deprecated fields and move capability onto transformers. No error — just fewer and fewer options. **The field outlives its data.** Move discovery to `list_transformers`. + +2. **Per-output pricing gaps (multi-publisher template sellers).** A template that priced outputs differently can keep that shape with `applies_to_output_format_ids`, but every output needs either a scoped pricing option or an unscoped default. Otherwise builds for unpriced outputs are rejected with `UNPRICEABLE_OUTPUT`. + +3. **Fan-out / best-of-N spend under-counting (billing pipelines).** With `max_variants` / `max_creatives`, every produced variant is billed, but only a **trafficked** leaf lazily earns a `creative_id`. Discarded best-of-N leaves are billed via the **inline per-leaf `vendor_cost`** on the `build_creative` response *only* — they never earn a `creative_id` and so never appear in `report_usage`. A pipeline that reconciles spend solely from `report_usage` (the 3.0 invariant "every billed unit reconciles via `creative_id`") will **under-count** by every discarded variant. Ingest the inline per-leaf receipts as the authoritative record for untrafficked leaves. Because that receipt is the sole record, the schema enforces it: whenever a build reports cost (the aggregate `vendor_cost` is present), every produced leaf MUST carry its own `vendor_cost` + `currency`, so a paid build cannot return leaves with no machine-readable cost. Note the boundary: the schema enforces the *internal completeness and consistency* of a reported cost — it cannot tell a genuinely free build (or a legitimately-`0` CPM-deferred leaf) from a paid build that omits the aggregate to under-report. "Aggregate absent" is a trust assertion to reconcile (seller invoice vs. `report_usage` + inline receipts, distinguished by the `pricing_option_id` basis), not proof of zero cost — don't mistake schema-validity for billing-honesty. + +## SDK behavior and timeline + +| Version | Deprecated fields | +|---|---| +| 3.1 | `deprecated: true`; still emitted and honored. SDKs MUST continue to read them. | +| 3.1–3.x | Honored throughout. New code SHOULD NOT emit them. | +| 4.0+ | SDKs MAY reject. Removed. | + +## See also + +- [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers) — discover transformers, their params, option values, and pricing +- [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) — select a transformer, configure, multiply, refine +- [What's new in 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/creatives.mdx b/dist/docs/3.2.0-beta.4/reference/migration/creatives.mdx new file mode 100644 index 0000000000..4f2150b2ab --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/creatives.mdx @@ -0,0 +1,419 @@ +--- +title: "Migrating creatives" +description: "Migrate AdCP creatives from v2 to v3. Replaces creative_ids with weighted assignments and assets_required with a unified assets array for format discovery." +"og:title": "AdCP — Migrating creatives" +testable: true +--- + +# Migrating creatives + +<Note> +This page records the 3.0 migration. For new AdCP 3.2 integrations, use canonical `format_kind` / `format_option_ref`, discover creative operations through `get_adcp_capabilities.creative.supported_formats[]`, and treat `list_creative_formats` plus compound `format_id` as deprecated 3.x compatibility surfaces. +</Note> + +AdCP 3.0 makes three breaking changes to creative handling: the `FormatCategory` enum and format `type` field are removed, weighted creative assignments replace simple ID arrays, and a unified `assets` array replaces `assets_required` for format discovery. + +## Format category removal + +### What changed + +| v2 field | v3 field | Change type | +|----------|----------|-----------| +| `type` on format objects (FormatCategory enum) | Removed | Deleted | +| `format_types` filter on `list_creative_formats` / `get_products` | Removed | Deleted | + +### Why + +The `FormatCategory` enum (`video`, `display`, `audio`, `native`, `social`, `custom`) was a coarse classifier that didn't map well to multi-asset formats. A "video" format might also require display companion banners and text overlays. The enum forced implementors to pick one category for inherently multi-modal formats, which led to inconsistent filtering and discovery gaps. + +### Migration + +Replace `format_types` filters with `asset_types` (what the format needs) or `format_ids` (exact match): + +**v2:** +```json +{ + "format_types": ["video"] +} +``` + +**v3 — filter by asset type:** +```json +{ + "asset_types": ["video"] +} +``` + +**v3 — filter by exact format ID:** +```json +{ + "format_ids": [ + { "agent_url": "https://creatives.example.com", "id": "video_preroll_30s" } + ] +} +``` + +`asset_types` returns any format that includes at least one asset of that type — so a video format with companion banners appears in both `["video"]` and `["image"]` results. + +--- + +## Creative assignments + +### What changed + +| v2 field | v3 field | Change type | +|----------|----------|-----------| +| `creative_ids` (string array) | `creative_assignments` (object array) | Replaced | + +### Simple migration (equal weights) + +**v2:** +```json +{ + "creative_ids": ["creative_1", "creative_2"] +} +``` + +**v3 — omit `weight` for equal distribution:** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/creative-assignment.json", + "creative_id": "creative_1" +} +``` + +In context of a `create_media_buy` package: + +```json +{ + "creative_assignments": [ + { "creative_id": "creative_1" }, + { "creative_id": "creative_2" } + ] +} +``` + +When `weight` is omitted on all assignments, impressions are distributed equally. + +### Weighted assignments + +Control what percentage of impressions each creative receives: + +```json +{ + "creative_assignments": [ + { "creative_id": "hero_video", "weight": 60 }, + { "creative_id": "promo_video", "weight": 40 } + ] +} +``` + +Weights are relative — they don't need to sum to 100, but doing so makes intent clear. + +### Rotation modes and groups + +`rotation_mode` is a package policy carried on each assignment row. All assignments in one package MUST resolve to the same mode; omission resolves to `weighted`, preserving the pre-3.2 behavior above. A seller MUST reject conflicting modes with `VALIDATION_ERROR` before creating or updating the package rather than picking the first row. + +| Mode | Selection behavior | +|---|---| +| `weighted` | Select proportionally by `weight`. Omitted weights are equal; `weight: 0` pauses an assignment. This is the default. | +| `even` | Balance delivery across eligible assignments without buyer-supplied weights. | +| `sequential` | Cycle through `sequence_position` in ascending order within each group. Every assignment requires a position. | +| `random` | Make an independent uniform selection from the eligible assignments. | + +`group_id` identifies a pool only within its containing package; the same value in another package is unrelated. Assignments without `group_id` belong to the package's default group. In sequential mode, positions start at 1 and MUST be unique within each effective group, so separate groups may reuse the same positions. + +Conventional weighted pool (the legacy shape remains valid): + +```json +{ + "creative_assignments": [ + { "creative_id": "host_read_30", "weight": 70 }, + { "creative_id": "produced_spot_30", "weight": 30 } + ] +} +``` + +Sequential podcast storytelling: + +```json +{ + "creative_assignments": [ + { + "creative_id": "story_chapter_1", + "rotation_mode": "sequential", + "group_id": "listener_story", + "sequence_position": 1 + }, + { + "creative_id": "story_chapter_2", + "rotation_mode": "sequential", + "group_id": "listener_story", + "sequence_position": 2 + } + ] +} +``` + +`weight` is valid only for the effective `weighted` mode. `sequence_position` is valid only for explicit `sequential` assignments. Package validators additionally enforce effective-mode consistency and position uniqueness because JSON Schema draft-07 cannot compare values across assignment rows. + +### Placement targeting + +Assign specific creatives to specific placements within a product: + +```json +{ + "creative_assignments": [ + { + "creative_id": "hero_video", + "placement_ids": ["homepage_hero"], + "weight": 100 + }, + { + "creative_id": "sidebar_banner", + "placement_ids": ["article_sidebar"], + "weight": 100 + }, + { + "creative_id": "fallback_banner", + "weight": 50 + } + ] +} +``` + +When `placement_ids` is omitted, the creative runs on all placements in the package. `placement_ids` references `placement_id` values from the product's placements array. + +<Note> +`sync_creatives` does not support `placement_ids`. Use `create_media_buy` or `update_media_buy` for placement-level targeting. +</Note> + +### Creative assignment schema + +Each assignment object: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/creative-assignment.json", + "creative_id": "hero_video", + "weight": 60, + "placement_ids": ["homepage_hero"] +} +``` + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | References a creative from `list_creatives` or `sync_creatives` | +| `weight` | number (0-100) | No | Delivery weight. Omit for equal distribution. | +| `placement_ids` | string[] | No | Target specific placements. Omit to run everywhere. | + +--- + +## Asset discovery + +### What changed + +| v2 field | v3 field | Change type | +|----------|----------|-----------| +| `assets_required` (string array) | `assets` (object array) | Replaced | +| `preview_image` | `format_card` | Replaced | + +### Format assets + +**v2** — only listed required asset IDs: +```json +{ + "format_id": { "agent_url": "https://creatives.example.com", "id": "display_300x250" }, + "name": "Standard Banner 300x250", + "assets_required": ["main_image", "headline"] +} +``` + +**v3** — lists ALL assets with `required` boolean: +```json +{ + "format_id": { "agent_url": "https://creatives.example.com", "id": "display_300x250" }, + "name": "Standard Banner 300x250", + "assets": [ + { + "item_type": "individual", + "asset_id": "main_image", + "asset_type": "image", + "required": true, + "requirements": { + "min_width": 300, + "min_height": 250, + "accepted_mime_types": ["image/png", "image/jpeg"] + } + }, + { + "item_type": "individual", + "asset_id": "headline", + "asset_type": "text", + "required": true, + "requirements": { + "max_length": 50 + } + }, + { + "item_type": "individual", + "asset_id": "impression_tracker", + "asset_type": "url", + "required": false, + "requirements": { + "role": "impression_tracker" + } + } + ] +} +``` + +### What the assets array provides + +- **Full discovery** — see ALL assets a format supports, not just required ones +- **Type information** — each asset declares its `asset_type` (image, video, text, url, etc.) +- **Requirements** — inline constraints (dimensions, length, MIME types) +- **Optional assets** — trackers, companion banners, and other optional elements are now visible +- **Repeatable groups** — carousel and multi-item formats use `item_type: "repeatable_group"` + +### Asset item types + +Each entry in the `assets` array has an `item_type` discriminator: + +**Individual assets** (`item_type: "individual"`): +```json +{ + "item_type": "individual", + "asset_id": "main_video", + "asset_type": "video", + "required": true, + "requirements": { + "min_duration_seconds": 15, + "max_duration_seconds": 30, + "accepted_mime_types": ["video/mp4"] + } +} +``` + +**Repeatable groups** (`item_type: "repeatable_group"`) for carousels and multi-item formats: +```json +{ + "item_type": "repeatable_group", + "asset_group_id": "card", + "required": true, + "min_count": 2, + "max_count": 10, + "selection_mode": "sequential", + "assets": [ + { + "asset_id": "card_image", + "asset_type": "image", + "required": true, + "requirements": { + "min_width": 600, + "min_height": 600, + "aspect_ratio": "1:1" + } + }, + { + "asset_id": "card_title", + "asset_type": "text", + "required": true, + "requirements": { + "max_length": 40 + } + } + ] +} +``` + +### Format cards (replacing preview_image) + +v2's `preview_image` URL is replaced by `format_card`, which uses the creative rendering system: + +```json +{ + "format_card": { + "format_id": { + "agent_url": "https://creatives.example.com", + "id": "format_card_standard" + }, + "manifest": { + "format_name": "Standard Banner 300x250", + "preview_url": "https://cdn.example.com/previews/banner_300x250.png" + } + } +} +``` + +--- + +## Migration steps + +### Format category + +<Steps> + <Step title="Remove format_types filters"> + Remove `format_types` from `list_creative_formats` and `get_products` requests. + </Step> + <Step title="Replace with asset_types"> + Use `asset_types` to filter formats by what assets they accept (e.g., `["video"]`, `["image"]`). + </Step> + <Step title="Or use format_ids"> + Use `format_ids` for exact format matching when you know the specific formats you need. + </Step> + <Step title="Stop reading type field"> + Remove any code that reads the `type` field from format objects — it no longer exists in v3. + </Step> +</Steps> + +### Creative assignments + +<Steps> + <Step title="Replace creative_ids"> + Replace `creative_ids` arrays with `creative_assignments` object arrays. + </Step> + <Step title="Set creative_id"> + Set `creative_id` on each assignment object. + </Step> + <Step title="Add weights"> + Add weights if you need non-equal distribution, otherwise omit `weight`. + </Step> + <Step title="Add placement_ids"> + Add `placement_ids` if you need placement-level targeting. + </Step> + <Step title="Update sync_creatives calls"> + These use `creative_assignments` too, but without `placement_ids`. + </Step> +</Steps> + +### Asset discovery + +<Steps> + <Step title="Replace assets_required"> + Replace `assets_required` parsing with `assets` array iteration. + </Step> + <Step title="Check required boolean"> + Check `required` boolean on each asset instead of assuming all listed assets are required. + </Step> + <Step title="Use asset_type"> + Use `asset_type` to understand what kind of file each asset expects. + </Step> + <Step title="Handle item_type"> + Check for `"individual"` vs `"repeatable_group"`. + </Step> + <Step title="Replace preview_image"> + Replace `preview_image` reads with `format_card` rendering. + </Step> + <Step title="Validate"> + Creative manifests must use exact `asset_id` values as keys. + </Step> +</Steps> + +<Card title="Creative" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/creative/index"> + Full creative documentation: formats, asset types, manifests, and creative agents. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Geo targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [Attribution](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement.mdx b/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement.mdx new file mode 100644 index 0000000000..b75ef0d62d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement.mdx @@ -0,0 +1,83 @@ +--- +title: Cross-role governance enforcement +description: "Prepare governance providers, services, and SDKs for AdCP 3.2 cross-role authorization and outcome reconciliation." +"og:title": "AdCP — Cross-role governance enforcement migration" +--- + +# Cross-role governance enforcement + +<Note> +**Experimental-surface notice.** The implementation may merge during 3.2 development. The beta-to-GA period provides the six-week notice window before production availability. These changes are part of the existing `governance.campaign` experimental feature, including the new `adcp.governance_enforcement` capability. +</Note> + +AdCP 3.2 makes buyer governance enforceable across service roles without disclosing `plan_id` to those services. + +## Provider changes + +- Resolve transport credentials to an authenticated agent URL on every governance check. Require `caller` to match and never grant plan access or authorization from the request assertion alone. +- Persist the authenticated `sync_plans` caller as the immutable plan owner. Treat absent delegations as owner-only; delegations add scoped non-owner authority and never displace the owner. +- Emit the modern `check_type` response shape. The absent-`check_type` legacy response arm remains accepted during 3.x migration. +- Return `governance_context` only for `approved`; return non-authorizing `consultation_context` only for intent `conditions`. +- Require task-neutral `proposed_commitment` for `update_media_buy` and on intent checks whose task payload carries pricing indirectly; amount `0` explicitly represents a verified no-cost or non-increasing action. +- Allow purchase execution checks before a durable `media_buy_id` exists; require the ID for modification and delivery. +- Bind intent approval to the target service. Require execution checks to authenticate as that preserved audience, keep the intent currency, and narrow rather than widen its authorized amount. +- Send the exact downstream service URL as top-level `target_agent` on every intent check. Keep routing metadata outside `payload`, which must remain the same JSON task-arguments value sent downstream. The JCS hash is serialization-independent; the service adds `governance_context` and may add `context`, then removes those two metadata fields before recomputing it. +- For `update_media_buy`, have the buyer propose a positive-delta ceiling without exposing seller state to governance. The seller computes the actual positive delta from authoritative current state atomically with its revision check and write, enforces the signed ceiling, and sends `execution_commitment` on an online execution check. +- Settle each opaque action binding once, even though intent and execution checks have distinct IDs. Require the outcome reporter to authenticate as the original buyer caller and preserve `purchase_type`. Derive the ledger amount from governance-owned intent or purchase-execution state, validate every reported monetary value, and treat caller amounts as reconciliation evidence only. +- Cache identical `report_plan_outcome` retries by `idempotency_key`; reject key reuse with another payload. + +## Service changes + +- Advertise task-scoped enforcement only through `adcp.governance_enforcement` and only for behavior actually implemented. +- Resolve the account before deciding whether governance applies; return `ACCOUNT_REQUIRED` when applicability cannot be determined. +- Verify inbound intent tokens. Media services claiming `online_execution_check` additionally perform prepare → check → commit. +- Require critical `authorized_task` and `authorized_payload_hash` claims, and recompute the RFC 8785 JCS/SHA-256 payload binding before every governed side effect. +- Keep cancellations, pauses, deactivations, and pure decreases available; any commitment-increasing part of a mixed update wins over an exemption. + +## SDK changes + +Implementation trackers: + +- [TypeScript SDK #2442](https://github.com/adcontextprotocol/adcp-client/issues/2442) +- [Python SDK #1013](https://github.com/adcontextprotocol/adcp-client-python/issues/1013) +- [Go SDK #432](https://github.com/adcontextprotocol/adcp-go/issues/432) + +Regenerate request/response types and update helpers for: + +- typed `governance_context` on governed tasks; +- `adcp.governance_enforcement.tasks[]`; +- SDK-normalized discriminated result types or type guards for modern responses, plus the legacy compatibility arm (the wire schema uses conditional validation and does not itself guarantee a generated union); +- `proposed_commitment`; +- top-level intent `target_agent` and whole-request-rooted condition paths; +- `execution_commitment` for seller-side `update_media_buy` execution checks; +- opaque JWS `sub` continuity rather than `sub == plan_id`; +- signed `authorized_commitment` verification against the service-computed price; +- critical protected-header recognition for `authorized_commitment`, `authorized_task`, and `authorized_payload_hash`; +- phase-conditional `planned_delivery.media_buy_id`; +- exact outcome tuple and one-settlement semantics. + +Validate generated SDK signers and verifiers against the published [`governance-authorization.json` vectors](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/governance-authorization.json). They cover bit-exact payload hashing and 27 deterministic compact-JWS cases for task, payload, audience, authenticated caller, monetary ceiling, currency, time, replay, signature, and critical-marker behavior. The bundled private component is public test material and MUST NOT be installed as a production trust anchor. + +Until an SDK release contains this schema bundle, its generated `check_governance` validators are stale. The training agent deliberately uses passthrough MCP tool schemas with framework request/response validation disabled for this experimental tenant, then validates in the source-aligned handler. Production integrations MUST regenerate or pin a compatible SDK rather than copying that compatibility overlay. + +Pin experimental integrations to the matching 3.2 schema bundle until the surface graduates. + +## Conformance coverage + +The [cross-role governance index](/compliance/latest/universal/governance.yaml) +connects this contract to the executable proof for each service role. It is an +index, not one universal workflow: each service storyboard runs only when the +agent advertises the exact task and mode in +`adcp.governance_enforcement.tasks[]`. + +| Service role | Governed task | Capability-gated proof | +|---|---|---| +| Media buy | `create_media_buy` | [signed approval plus tamper rejection](/compliance/latest/protocols/media-buy/scenarios/governance_approved.yaml); agents also claiming `online_execution_check` run the [conditions](/compliance/latest/protocols/media-buy/scenarios/governance_conditions.yaml) and [denied](/compliance/latest/protocols/media-buy/scenarios/governance_denied.yaml) paths | +| Signals | `activate_signal` | [signed activation and persisted-deployment proof](/compliance/latest/specialisms/signal-marketplace/scenarios/governance_approved.yaml), plus [unauthorized paid activation and no-upstream-call proof](/compliance/latest/specialisms/signal-marketplace/scenarios/governance_denied.yaml) | +| Brand rights | `acquire_rights` | [signed grant and persisted-state proof](/compliance/latest/specialisms/brand-rights/scenarios/governance_approved.yaml), plus [unauthorized acquisition and no-grant proof](/compliance/latest/specialisms/brand-rights/scenarios/governance_denied.yaml) | +| Creative | `build_creative` | [signed paid-render artifact proof](/compliance/latest/specialisms/creative-transformers/scenarios/governance_approved.yaml), plus [unauthorized paid render and no-upstream-call proof](/compliance/latest/specialisms/creative-transformers/scenarios/governance_denied.yaml) | + +Governance providers and enforcing services remain separate roles. Provider +responses prove verdict semantics; service storyboards prove that signed intent +is checked before a role-specific side effect. Merely returning or echoing +`governance_context` is not enforcement evidence. diff --git a/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting.mdx b/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting.mdx new file mode 100644 index 0000000000..1681ab7b84 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting.mdx @@ -0,0 +1,210 @@ +--- +title: "Migrating geo targeting" +description: "Migrate AdCP geo targeting from v2 to v3. Replaces implicit US-centric targeting with named systems (Nielsen DMA, postal codes) for global market support." +"og:title": "AdCP — Migrating geo targeting" +testable: true +--- + +# Migrating geo targeting + +AdCP 3.0 replaces implicit US-centric geo targeting with named systems that support global markets. Metro targeting values are grouped by system, and postal targeting values are grouped by country plus the country-local postal system. + +## What changed + +| v2 field | v3 field | Change type | +|----------|----------|-------------| +| `geo_metros` (string array) | `geo_metros` (system/values objects) | Restructured | +| `geo_postal_codes` (string array) | `geo_postal_areas` (country/system/values objects) | Renamed and restructured | + +Fields that didn't change: `geo_countries`, `geo_countries_exclude`, `geo_regions`, `geo_regions_exclude` all remain simple string arrays using ISO codes. + +## Metro targeting + +**v2** — flat array of codes, assumed to be Nielsen DMAs: +```json +{ + "targeting": { + "geo_metros": ["501", "602"] + } +} +``` + +**v3** — codes grouped by system: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting.json", + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "602"] } + ] +} +``` + +Each entry specifies a system and the codes within that system. Multiple systems can coexist: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting.json", + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "602"] }, + { "system": "uk_itl2", "values": ["UKC1", "UKD3"] } + ] +} +``` + +### Metro systems + +| System | Coverage | Example codes | +|--------|----------|---------------| +| `nielsen_dma` | US designated market areas | `501` (New York), `602` (Chicago) | +| `uk_itl1` | UK regions | `UKC` (North East), `UKD` (North West) | +| `uk_itl2` | UK sub-regions | `UKC1` (Tees Valley), `UKD3` (Greater Manchester) | +| `eurostat_nuts2` | EU statistical regions | `DE11` (Stuttgart), `FR10` (Ile-de-France) | +| `custom` | Publisher-defined areas | Publisher-specific codes | + +Registered metro systems are `nielsen_dma`, `uk_itl1`, `uk_itl2`, `eurostat_nuts2`, and `custom`. + +## Postal targeting + +**v2** — flat array of codes, assumed to be US ZIP codes: +```json +{ + "targeting": { + "geo_postal_codes": ["10001", "90210"] + } +} +``` + +**v3** — renamed to `geo_postal_areas`, codes grouped by country-local system: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting.json", + "geo_postal_areas": [ + { "country": "US", "system": "zip", "values": ["10001", "90210"] } + ] +} +``` + +### Postal systems + +| Country | System | Precision | Example codes | +|---------|--------|-----------|---------------| +| `US` | `zip` | 5-digit ZIP | `10001`, `90210` | +| `US` | `zip_plus_four` | ZIP+4 | `10001-1234` | +| `GB` | `outward` | Outward postcode | `SW1`, `EC2` | +| `GB` | `full` | Full postcode | `SW1A 1AA` | +| `CA` | `fsa` | Forward sortation area | `M5V`, `V6B` | +| `CA` | `full` | Full postal code | `M5V 2T6` | +| `DE` | `plz` | Postleitzahl | `10115`, `80331` | +| `FR` | `code_postal` | Code postal | `75001`, `13001` | +| `AU` | `postcode` | Postcode | `2000`, `3000` | +| `ZA` | `postal_code` | Normal postal code | `2196` | + +Use `postal_code` for the normal postal code string in countries without a more specific registered local system. Deprecated country-fused aliases such as `us_zip` remain accepted for compatibility and SDK backfill. + +Registered country/system pairings are defined in `postal-country-system.json`; the published `postal-system.json` enum remains additive and also contains deprecated country-fused aliases for 3.x compatibility. + +## Exclusion targeting + +v3 adds `_exclude` variants for metro and postal targeting: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting.json", + "geo_countries": ["US"], + "geo_metros_exclude": [ + { "system": "nielsen_dma", "values": ["501"] } + ] +} +``` + +This targets the entire US except the New York DMA. + +## Discovering seller capabilities + +Before sending geo targeting, buyers should verify the seller supports the requested systems. Use `get_adcp_capabilities`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"] + }, + "media_buy": { + "execution": { + "targeting": { + "geo_countries": true, + "geo_regions": true, + "geo_metros": { + "nielsen_dma": true + }, + "geo_postal_areas": { + "us_zip": true, + "us_zip_plus_four": true, + "US": ["zip", "zip_plus_four"], + "ZA": ["postal_code"] + } + } + } + } +} +``` + +The `geo_metros` object uses boolean properties to indicate which metro systems are supported. The `geo_postal_areas` object is keyed by country and lists the supported country-local postal systems; during the 3.x migration, sellers SHOULD also emit equivalent deprecated aliases such as `us_zip` where one exists. Buyers and SDKs should normalize both shapes. If you request a system the seller doesn't declare, expect a validation error. + +## Full targeting example + +A v3 targeting overlay combining geo restrictions: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting.json", + "geo_countries": ["US", "CA"], + "geo_regions": ["US-NY", "US-CA"], + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "803"] } + ], + "geo_postal_areas": [ + { "country": "US", "system": "zip", "values": ["10001", "10002", "90210"] } + ] +} +``` + +Inclusion fields are combined with AND logic — delivery must match all specified constraints. Exclusion fields (`_exclude` variants) act as AND NOT — delivery must match inclusions and must not match any exclusion. + +## Migration steps + +<Steps> + <Step title="Identify geo targeting"> + Find all uses of `geo_metros` and `geo_postal_codes`. + </Step> + <Step title="Rename field"> + `geo_postal_codes` becomes `geo_postal_areas`. + </Step> + <Step title="Restructure values"> + Wrap metro arrays into `{ "system": "...", "values": [...] }` objects and postal arrays into `{ "country": "...", "system": "...", "values": [...] }` objects. + </Step> + <Step title="Choose systems"> + For US-only code, use `nielsen_dma` and `country: "US", system: "zip"`. For international, add the appropriate country-local systems. + </Step> + <Step title="Verify capabilities"> + Call `get_adcp_capabilities` to check what systems each seller supports. + </Step> + <Step title="Add exclusions"> + If needed, use the new `_exclude` variants for negative targeting. + </Step> +</Steps> + +<Card title="Targeting" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting"> + Full targeting reference: audiences, contextual, geographic, and device targeting. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Creatives](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [Attribution](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/index.mdx b/dist/docs/3.2.0-beta.4/reference/migration/index.mdx new file mode 100644 index 0000000000..8310bee165 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/index.mdx @@ -0,0 +1,165 @@ +--- +title: Migrating from v2 to v3 +sidebarTitle: Migration guide +description: "A complete guide to migrating AdCP integrations from v2.x to v3.0, with breaking changes, effort estimates, and deep-dive pages for each area." +"og:title": "AdCP — Migrating from v2 to v3" +--- + +# Migrating from v2 to v3 + +This page covers every breaking change when upgrading from AdCP 2.x to 3.0, with effort estimates and links to detailed migration pages. For new features see [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3); for release-candidate deltas see [prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades); for SDK versions that support 3.0 see [Schemas and SDKs](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks#adcp-3-0-support). + +<Info> +**Upgrading from 3.0 to 3.1?** Use the [3.0 to 3.1 migration guide](/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1). This page is for the breaking v2.x to 3.0 upgrade. +</Info> + +<Info> +**Preparing for 3.2?** Start with the [3.1 to 3.2 migration guide](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2). During beta, also read the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta) for the protocol-first beta.0, initial SDK wave, beta.1 protocol convergence, and exact beta.1 SDK refresh. +</Info> + +<Warning> +**v2 has been unsupported since 3.0 GA and reached end of life on August 1, 2026 (UTC).** See the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset) for the full timeline, AgenticAdvertising.org registry policy, and why v2 is not safe for interoperable production. +</Warning> + +<Info> +**Starting from v2?** See the [v3 readiness checklist](/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness) for the 8 minimum requirements to pass storyboard testing before working through this full migration. +</Info> + +<Warning> +**Upgrading from rc.3?** The [rc.3 → 3.0 prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades) cover additional breaking changes: capabilities model simplification, `account` required on `update_media_buy`, `preview_creative` schema flattening, `signal_id` required on signals, governance lifecycle changes, and the `pending_activation` status split. +</Warning> + +## Migration checklist + +Each row is a breaking change. **Effort** indicates the typical work involved: + +- **Rename** — Field name changed, same semantics. Find-and-replace. +- **Restructure** — Shape changed (e.g., string → object, single → array). Requires code changes. +- **Remove** — Field existed in v2, removed in v3. Find-and-delete. +- **New requirement** — Didn't exist in v2. Requires new implementation. + +| Area | Change | Effort | Details | +|---|---|---|---| +| Channels | `native` removed | Restructure | [Channels migration](/dist/docs/3.2.0-beta.4/reference/migration/channels) | +| Channels | `video` split into `olv`, `linear_tv`, `cinema` | Restructure | [Channels migration](/dist/docs/3.2.0-beta.4/reference/migration/channels) | +| Channels | 10 new channels added (including `sponsored_intelligence`) | Rename | [Channels migration](/dist/docs/3.2.0-beta.4/reference/migration/channels) | +| Pricing | `fixed_rate` → `fixed_price` | Rename | [Pricing migration](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | +| Pricing | `price_guidance.floor` → `floor_price` | Rename | [Pricing migration](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | +| Pricing | Price guidance restructured | Restructure | [Pricing migration](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | +| Creatives | `creative_ids` → `creative_assignments` with weights | Restructure | [Creatives migration](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | +| Creatives | Asset discovery via `assets` array | New requirement | [Creatives migration](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | +| Catalogs | `promoted_offerings` → `sync_catalogs` | Restructure | [Catalogs migration](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | +| Geo targeting | Flat arrays → system specification required | Restructure | [Geo targeting migration](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | +| Optimization | `optimization_goal` (single) → `optimization_goals` (array, discriminated union) | Restructure | [Optimization goals migration](/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals) | +| Brand identity | `brand_manifest` → `brand` ref (`{ domain, brand_id }`) | Restructure | [Brand identity migration](/dist/docs/3.2.0-beta.4/reference/migration/brand-identity) | +| Capability discovery | `adcp-extension.json` → `get_adcp_capabilities` | Restructure | [Capability discovery](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) | +| Signals | Delivery flattening, pricing restructure | Restructure | [Signals migration](/dist/docs/3.2.0-beta.4/reference/migration/signals) | +| Audiences | `external_id` promoted to required top-level field | Restructure | [Audiences migration](/dist/docs/3.2.0-beta.4/reference/migration/audiences) | +| Attribution | Integer day counts → `Duration` objects | Restructure | [Attribution migration](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | +| Products | `buying_mode` required on every `get_products` request | New requirement | [get_products reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) | +| Media buy status | `pending_activation` → `pending_start` | Rename | [Media buys](/dist/docs/3.2.0-beta.4/media-buy/media-buys) | +| Media buy status | `pending_creatives` added (no creatives assigned yet) | New requirement | [Media buys](/dist/docs/3.2.0-beta.4/media-buy/media-buys) | +| Task status | Legacy `task_status` and `response_status` fields MUST NOT be emitted alongside v3 `status` — remove both | Remove | [Task lifecycle](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) | +| Capabilities | `compliance_testing` capability block on `get_adcp_capabilities` | Additive | [Capability discovery](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#compliance_testing) | +| Idempotency | `idempotency_key` required on all mutating requests (UUID v4) | New requirement | [Security § Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) | +| Request signing | RFC 9421 Ed25519 signing profile (optional in 3.0, mandatory under AdCP Verified) | Additive | [Security § Request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) | +| Webhook signing | Unified on RFC 9421 profile, baseline-required for sellers; HMAC fallback deprecated (removed in 4.0) | New requirement | [Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) | +| Webhook idempotency | `idempotency_key` required on every webhook payload | New requirement | [Webhooks § Reliability](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks) | +| Governance | `governance_context` is a signed JWS verified via governance agent JWKS | Restructure | [Governance](/dist/docs/3.2.0-beta.4/governance/campaign) | +| IO approval | `MediaBuy.pending_approval` removed — approval is a task-layer object | Restructure | [Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys) | +| Regulatory invariants | GDPR Art 22 / EU AI Act Annex III enforced via schema `if/then` | New requirement | [Governance § Annex III obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) | + +<Warning> +`buying_mode` on `get_products` is checked by storyboard testing. `brief` is the baseline mode; sellers that declare `wholesale` or `refine` in capabilities must handle those mode semantics. See the [v3 readiness checklist](/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness) for details. +</Warning> + +## New in v3 — required vs optional + +These capabilities are new in v3. None existed in v2, so there's nothing to migrate — but you should know which ones affect your integration. + +| Capability | Required? | Who needs it | +|---|---|---| +| Accounts protocol (`sync_accounts`, `list_accounts`) | Required for all buyers — use `sync_accounts` when `require_operator_auth: false` (buyer-declared accounts), `list_accounts` when `true` and the seller exposes an account-id namespace | All buyers — the seller's account model determines which task to call, not whether accounts are needed | +| Brand Protocol (`brand.json`) | Recommended | All buyers — provides brand identity for creative generation | +| Governance (content standards, property lists) | Optional | Buyers who need brand suitability enforcement | +| Sponsored Intelligence | Optional | Buyers working with AI platforms that support conversational handoffs | +| Registry API | Optional | Buyers who want programmatic agent/brand discovery | +| Campaign Governance | Optional | Organizations with compliance or approval workflows | + +## Running v2 and v3 side by side + +Dual-support is a temporary migration tool, not a supported production posture. Since August 1, 2026, v3-only has been the required configuration — see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). + +During migration, sellers can accept both v2 and v3 traffic and buyers can route to each seller on the correct version: + +1. **Check seller capabilities** — Call `get_adcp_capabilities` on each seller. A successful response means the seller supports v3; buyers declare their release via `adcp_version` and sellers advertise accepted releases via `adcp.supported_versions`. Through 3.x, buyers SHOULD also send the deprecated `adcp_major_version`, and sellers MUST continue advertising the deprecated `adcp.major_versions`, for compatibility with older peers. See [version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) for the full flow. A seller that does not respond to `get_adcp_capabilities` is v2-only. +2. **Branch by seller** — Route v3-capable sellers through your v3 integration and v2-only sellers through your existing v2 code. +3. **Migrate incrementally** — Start with the rename changes (pricing fields, channel updates), then tackle structural changes (creative assignments, optimization goals), then adopt new capabilities (accounts, governance) as needed. + +## Breaking migrations (v2 → v3.0) + +<CardGroup cols={2}> + <Card title="Channels" icon="tv" href="/dist/docs/3.2.0-beta.4/reference/migration/channels"> + `native` removed, `video` split, 10 new channels + </Card> + <Card title="Pricing" icon="tag" href="/dist/docs/3.2.0-beta.4/reference/migration/pricing"> + Field renames and price guidance restructure + </Card> + <Card title="Creatives" icon="palette" href="/dist/docs/3.2.0-beta.4/reference/migration/creatives"> + Creative assignments with weights and asset discovery + </Card> + <Card title="Catalogs" icon="database" href="/dist/docs/3.2.0-beta.4/reference/migration/catalogs"> + `promoted_offerings` to first-class `sync_catalogs` + </Card> + <Card title="Geo targeting" icon="map" href="/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting"> + System specification for global geo support + </Card> + <Card title="Optimization goals" icon="bullseye" href="/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals"> + Single goal to array with discriminated union + </Card> + <Card title="Brand identity" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/reference/migration/brand-identity"> + `brand_manifest` to `brand` ref via `brand.json` + </Card> + <Card title="Signals" icon="signal" href="/dist/docs/3.2.0-beta.4/reference/migration/signals"> + Delivery flattening and pricing restructure + </Card> + <Card title="Audiences" icon="users" href="/dist/docs/3.2.0-beta.4/reference/migration/audiences"> + `external_id` promotion to required field + </Card> + <Card title="Attribution" icon="link" href="/dist/docs/3.2.0-beta.4/reference/migration/attribution"> + Integer days to structured `Duration` objects + </Card> +</CardGroup> + +## 3.2 migration guides + +<CardGroup cols={2}> + <Card title="3.1 to 3.2" icon="rocket" href="/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2"> + Role-based beta checklist, required behavior changes, capability adoption, and rollback + </Card> + <Card title="Targeting-aware discovery" icon="bullseye" href="/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery"> + Move legacy filters and brief constraints into targeting overlays and support declarations + </Card> + <Card title="Media buy status" icon="circle-check" href="/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status"> + Remove the deprecated body-level status and use `media_buy_status` on create/update success + </Card> + <Card title="Secured asset access" icon="key" href="/dist/docs/3.2.0-beta.4/reference/migration/asset-access"> + Replace inline provider credentials with signed URLs or pre-authorized workload identity + </Card> + <Card title="Cross-role governance" icon="shield" href="/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement"> + Adopt the experimental task-scoped authorization and outcome contract as one migration + </Card> +</CardGroup> + +## 3.1 badge prep guides + +You can stay on 3.0 without breaking compatibility. To claim the 3.1 badge, complete this short prep checklist. + +<CardGroup cols={2}> + <Card title="3.1 badge checklist" icon="rocket" href="/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1"> + Additive prep for buyers, sellers, agents, SDKs, and compliance workflows + </Card> + <Card title="Creative transformers" icon="wand-magic-sparkles" href="/dist/docs/3.2.0-beta.4/reference/migration/creative-transformers"> + Move build capability discovery and pricing from formats to transformers + </Card> +</CardGroup> diff --git a/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status.mdx b/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status.mdx new file mode 100644 index 0000000000..1e18a86e8a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status.mdx @@ -0,0 +1,103 @@ +--- +title: "Migrating to `media_buy_status` (3.1 → 3.2)" +description: "Move from body-level `status` to `media_buy_status` on create_media_buy and update_media_buy success responses. Additive in 3.1; legacy field removed in 3.2; nested status cascade follows in 4.0." +"og:title": "AdCP — Migrating to media_buy_status" +--- + +# Migrating to `media_buy_status` (3.1 → 3.2) + +<Note> + The deprecated response-body `status: MediaBuyStatus` existed only during the + AdCP 3.1 migration window. AdCP 3.2 removes it from create/update success + schemas. In 3.2, root `status` is exclusively the task-envelope status. +</Note> + +AdCP 3.1 splits two enums that 3.0 collided at the same response root key: + +- **Envelope `status`** — TaskStatus (`submitted` / `working` / `input-required` / `completed` / `canceled` / `failed` / `rejected` / `auth-required` / `unknown`). Required from beta.2 ([#4876](https://github.com/adcontextprotocol/adcp/issues/4876)). +- **Body `media_buy_status`** — MediaBuyStatus (`pending_creatives` / `pending_start` / `active` / `paused` / `completed` / `rejected` / `canceled`). **New in 3.1.** + +Under MCP flat-on-the-wire serialization both fields share the response root. In 3.0 they were both named `status`; the body-level MediaBuyStatus was silently destroyed when the envelope stamped a TaskStatus at the same path. No validator caught it. 3.1 splits them. + +## What changed + +| Surface | 3.0 | 3.1 migration window | 3.2 | +|---------|-----|----------------------|-----| +| `create_media_buy` success response | `status` (MediaBuyStatus) at root | `media_buy_status` at root; legacy body `status` marked `deprecated: true` | Legacy body `status` removed; root `status` is TaskStatus only | +| `update_media_buy` success response | Same | Same | Same | +| `get_media_buys` items | `media_buys[].status` (MediaBuyStatus) | Unchanged | Unchanged — renamed to `media_buys[].media_buy_status` in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)) | +| `get_media_buy_delivery` items | `media_buy_deliveries[].status` (MediaBuyStatus) | Unchanged | Unchanged — renamed in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)) | +| `core/media-buy.json` | `status` (MediaBuyStatus) | Unchanged | Unchanged — renamed in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)) | + +## Before (3.0) + +```json +{ + "status": "completed", + "media_buy_id": "mb_12345", + "status": "active", + "packages": [...] +} +``` + +Two keys named `status` collide at the JSON root under MCP flat serialization — the body-level `MediaBuyStatus: 'active'` value is silently destroyed by the envelope `TaskStatus: 'completed'`. No validator catches it. + +## After (3.1) + +```json +{ + "status": "completed", + "media_buy_id": "mb_12345", + "media_buy_status": "active", + "packages": [...] +} +``` + +Two distinct fields. Envelope `status` carries the task-lifecycle state at the root; body `media_buy_status` carries the buy's lifecycle state alongside. + +## 3.1 deprecation window (historical) + +- **3.1 sellers** SHOULD emit `media_buy_status` on `create_media_buy` and `update_media_buy` success responses. They MAY continue emitting the deprecated top-level `status: MediaBuyStatus` only while serving 3.1. +- **3.1 buyers** MUST prefer `media_buy_status` when present. They MAY fall back to legacy `status` only for a negotiated 3.0 or 3.1 response. +- **3.0 sellers and buyers** continue to work unchanged. No `required[]` swap, no rename, no breakage. +- **Compliance storyboards** assert `path: "media_buy_status"`. A 3.1 seller emitting only the legacy `status` is schema-valid but fails 3.1 storyboard certification. The storyboard is the binding conformance check; the schema `deprecated: true` marker is advisory. +- **Sellers emitting both fields** MUST emit identical values for `media_buy_status` and the deprecated `status`. Divergent emission (e.g., `status: "active", media_buy_status: "paused"`) passes JSON Schema validation but is a conformance violation — 3.1 storyboards enforce equality via `field_value_or_absent` assertions on `status` alongside the canonical `media_buy_status` checks. The `if/then` JSON Schema constraint was evaluated and deferred: the migration window is short, codegen toolchain compat is uncertain, and the storyboard gate is sufficient. See [#4908](https://github.com/adcontextprotocol/adcp/issues/4908). + +## SDK behavior during the 3.1 window + +In the published 3.1 schema, the legacy `status` field carries `deprecated: true` (JSON Schema 2020-12). It is absent from the 3.2 source schema. Deprecation propagation through 3.1 codegen varies: + +| Toolchain | Propagation | +|-----------|-------------| +| TypeScript (`json-schema-to-typescript`) | `@deprecated` JSDoc on the field. Reliable. | +| Python (`datamodel-code-generator` v2+) | `deprecated=True` on the `Field(...)` arg. Older pinned versions silently drop it. | +| Go (`quicktype` and similar) | Generally not propagated. | +| `@adcp/client` 3.1+, Python `adcp` SDK, `adcp-go` | Canonical `media_buy_status` is the typed shape SDK users consume. | + +If your 3.1 toolchain doesn't surface the deprecation, the storyboard gate is your enforcement signal. Regenerating against 3.2 removes the legacy lifecycle field from create/update success types. + +## When the legacy field disappears + +- **3.2** ([#4906](https://github.com/adcontextprotocol/adcp/issues/4906)): the deprecated top-level `status: MediaBuyStatus` is **removed** from `CreateMediaBuySuccess` and `UpdateMediaBuySuccess`. After 3.2, top-level `status` on these responses unambiguously carries envelope TaskStatus only. The deprecation window is short by design — the storyboard gate already forces 3.1-conformant sellers off the legacy field. +- **4.0** ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)): the nested `status` cascade lands — `media_buys[].status` on `get-media-buys-response`, `media_buy_deliveries[].status` on `get-media-buy-delivery-response`, and `status` on `core/media-buy.json` rename to `media_buy_status`. Genuinely breaking (a `required[]` swap), held to the major. + +This removal is the narrow same-major compatibility exception ratified in DR-0011 and tracked by [#4906](https://github.com/adcontextprotocol/adcp/issues/4906). The repository records it with a `minor` changeset so it is mechanically released as AdCP 3.2 after the enforced 3.1 deprecation window. The broader nested status cascade remains reserved for 4.0. + +## Forward-compatible buyer code + +Code that needs to span 3.0, 3.1, and 4.0 sellers: + +```js +// Never interpret the 3.2+ envelope TaskStatus as a MediaBuyStatus. +const mediaBuyStatus = response.media_buy_status + ?? (negotiatedAdcpVersion === '3.0' || negotiatedAdcpVersion === '3.1' + ? response.status + : undefined); +const buyLifecycleStatus = mediaBuy.media_buy_status ?? mediaBuy.status; +``` + +## Related + +- [create_media_buy reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) — canonical response examples +- [Media buy lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle) — the MediaBuyStatus state machine +- [Envelope task-status](/dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle) — TaskStatus semantics diff --git a/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals.mdx b/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals.mdx new file mode 100644 index 0000000000..23a08eda85 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals.mdx @@ -0,0 +1,195 @@ +--- +title: "Migrating optimization goals" +description: "Migrate AdCP optimization goals from beta.3 to rc.1. Replaces singular optimization_goal with a multi-goal array using discriminated unions and priority ordering." +"og:title": "AdCP — Migrating optimization goals" +testable: true +--- + +# Migrating optimization goals + +AdCP 3.0 rc.1 replaces the singular `optimization_goal` object with an `optimization_goals` array. Each goal is a discriminated union on `kind`, supporting multi-goal packages with priority ordering. + +## What changed + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `optimization_goal` (single object) | `optimization_goals` (array) | Array of discriminated union | +| Implicit single goal | `priority` field | 1 = highest priority | +| One goal type | Two kinds: `metric` and `event` | Discriminated on `kind` field | +| No reach optimization | `reach` metric with `reach_unit` and `target_frequency` | Products declare `supported_reach_units` | + +## Goal kinds + +Every goal has a `kind` discriminator: + +- **`metric`** — Seller-native delivery metrics (clicks, views, reach, engagements, etc.) +- **`event`** — Conversion tracking tied to event sources configured via `sync_event_sources` + +### Metric goals + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/optimization-goal.json", + "kind": "metric", + "metric": "clicks", + "target": { + "kind": "cost_per", + "value": 2.50 + }, + "priority": 1 +} +``` + +Supported metrics: `clicks`, `views`, `completed_views`, `viewed_seconds`, `engagements`, `follows`, `saves`, `profile_visits`, `reach`. `attention_seconds` and `attention_score` are accepted but **deprecated** (slated for removal at next major) — use `kind: "vendor_metric"` with an explicit vendor binding instead. + +**How these surface in delivery:** `viewed_seconds` is reported via `viewability.viewed_seconds` (the same `standard` threshold governs both `viewable_rate` and `viewed_seconds`). Vendor-attested metrics — attention, panel-based brand lift, emissions, retail-media partner metrics — flow through the `kind: "vendor_metric"` goal kind on the optimization side and `vendor_metric_values[]` on the delivery side, keyed on `(vendor, metric_id)`. See [`kind: vendor_metric`](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#kind-vendor_metric) for the goal shape and the three-precondition rejection rule. + +Target types: +- `cost_per` — Target cost per metric unit (e.g., $2.50 CPC) +- `threshold_rate` — Target rate threshold (e.g., 0.02 for 2% CTR) + +### Event goals + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/optimization-goal.json", + "kind": "event", + "event_sources": [ + { + "event_source_id": "es_web_pixel", + "event_type": "purchase", + "value_field": "order_total", + "value_factor": 1 + } + ], + "target": { + "kind": "per_ad_spend", + "value": 4.0 + }, + "attribution_window": { + "post_click": { "interval": 7, "unit": "days" }, + "post_view": { "interval": 1, "unit": "days" } + }, + "priority": 2 +} +``` + +Event target types: +- `cost_per` — Target cost per conversion (CPA) +- `per_ad_spend` — Target return on ad spend (ROAS). Requires `value_field`. +- `maximize_value` — Maximize total conversion value. Requires `value_field`. + +### Reach goals + +Reach is a metric goal with additional fields: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/optimization-goal.json", + "kind": "metric", + "metric": "reach", + "reach_unit": "individuals", + "target_frequency": { + "min": 2, + "max": 5, + "window": { "interval": 7, "unit": "days" } + }, + "priority": 1 +} +``` + +`reach_unit` values: `individuals`, `households`, `devices`, `accounts`, `cookies`, `custom`. + +`target_frequency` requires at least one of `min` or `max`, plus `window` as a Duration object (e.g., `{"interval": 7, "unit": "days"}` or `{"interval": 1, "unit": "campaign"}`). + +## Multi-goal packages + +Multiple goals are ordered by `priority` (1 = highest). The seller optimizes for higher-priority goals first, using lower-priority goals as tiebreakers. + +**beta.3:** +```json +{ + "optimization_goal": { + "metric": "clicks", + "target_cpc": 2.50 + } +} +``` + +**rc.1:** +```json +{ + "optimization_goals": [ + { + "kind": "metric", + "metric": "clicks", + "target": { "kind": "cost_per", "value": 2.50 }, + "priority": 1 + }, + { + "kind": "event", + "event_sources": [ + { "event_source_id": "es_web_pixel", "event_type": "purchase" } + ], + "target": { "kind": "cost_per", "value": 25.00 }, + "priority": 2 + } + ] +} +``` + +## Product capabilities + +Products declare optimization support via `metric_optimization`: + +```json test=false +{ + "metric_optimization": { + "supported_metrics": ["clicks", "views", "completed_views", "reach"], + "supported_reach_units": ["individuals", "households"], + "supported_view_durations": [6, 15, 30], + "supported_targets": ["cost_per", "threshold_rate"] + }, + "max_optimization_goals": 3 +} +``` + +- `supported_metrics` — Which metrics the product can optimize for +- `supported_reach_units` — Required when `reach` is in supported_metrics +- `supported_view_durations` — Seconds for `completed_views` metric +- `supported_targets` — Target kinds available. When omitted, only target-less goals (maximize volume) are allowed +- `max_optimization_goals` — Maximum number of goals per package + +## Migration steps + +<Steps> + <Step title="Rename the field"> + Replace `optimization_goal` (singular) with `optimization_goals` (array) in all request construction code. + </Step> + <Step title="Add kind discriminator"> + Wrap existing goals with `"kind": "metric"` or `"kind": "event"`. Metric goals use seller-native metrics; event goals reference event sources from `sync_event_sources`. + </Step> + <Step title="Restructure targets"> + Replace flat target fields (e.g., `target_cpc`) with the discriminated `target` object: `{ "kind": "cost_per", "value": 2.50 }`. + </Step> + <Step title="Add priority"> + Set `priority: 1` for single-goal packages. For multi-goal packages, assign ascending priority values (1 = highest). + </Step> + <Step title="Update response parsing"> + When reading optimization goals from responses (e.g., `get_media_buy`), switch on `kind` to determine the goal type before accessing type-specific fields. + </Step> + <Step title="Check product capabilities"> + Before submitting goals, check `metric_optimization.supported_metrics` and `max_optimization_goals` on the product. Sellers reject unsupported metrics and goals exceeding the limit. + </Step> + <Step title="Validate against schema"> + Run requests against `optimization-goal.json` schema. The discriminated union enforces the correct fields per kind. + </Step> +</Steps> + +<Card title="Conversion tracking & optimization goals" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index"> + Configure event sources, send conversion events, and optimize delivery goals. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Signals](/dist/docs/3.2.0-beta.4/reference/migration/signals) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades.mdx b/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades.mdx new file mode 100644 index 0000000000..3e092a222f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades.mdx @@ -0,0 +1,228 @@ +--- +title: Prerelease upgrade notes +sidebarTitle: Prerelease upgrades +description: "Breaking and additive changes between AdCP 3.0.0 release candidates." +"og:title": "AdCP — Prerelease upgrade notes" +--- + +# Prerelease upgrade notes + +If you adopted a prerelease version, review the relevant section below before upgrading. If you are migrating from v2, see the [main migration guide](/dist/docs/3.2.0-beta.4/reference/migration). + +## rc.3 → 3.0 + +### Breaking for rc.3 adopters + +| Area | rc.3 | 3.0 | What to do | +|---|---|---|---| +| `idempotency_key` on mutating requests | Optional | **Required** on every mutating request (schema `^[A-Za-z0-9_.:-]{16,255}$`; UUID v4 for Verified). Sellers declare `adcp.idempotency = { supported: true/false }` on capabilities. | Generate fresh key per logical operation. Persist keys across agent instances. Declare `adcp.idempotency` on `get_adcp_capabilities` (sellers). When `supported: true`, handle `IDEMPOTENCY_CONFLICT` and `IDEMPOTENCY_EXPIRED`; conformance probes require a mutated-payload replay to return CONFLICT. When `supported: false`, use natural-key checks instead of blind retries. See [Security § Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). | +| Webhook signing | HMAC-SHA256 with `push_notification_config.authentication` (required) | RFC 9421 profile (baseline-required for sellers); HMAC fallback available through 3.x via `authentication.credentials` | Publish a signing JWK in your JWKS at `jwks_uri` (referenced from `brand.json` `agents[]`). New signers use `adcp_use: "request-signing"` for webhooks; deprecated `adcp_use: "webhook-signing"` keys remain accepted during the compatibility window. If you want webhook-only key material, publish a second `request-signing` JWK with a distinct `kid`. Drop `push_notification_config.authentication` from new configs; buyers opt into legacy HMAC via `authentication.credentials`. Receivers verify against the sender's JWKS. The entire `authentication` object (HMAC + Bearer) is removed in 4.0. | +| `idempotency_key` on webhook payloads | Not standardized (fragile `(task_id, status, timestamp)` tuple dedup) | **Required** — sender-generated UUID v4 on every payload | Sellers: generate a cryptographically-random UUID v4 per event. Receivers: dedupe on `idempotency_key` with 24h minimum TTL, sender-scoped cache. Schemas affected: `mcp-webhook-payload`, `collection-list-changed-webhook`, `property-list-changed-webhook`, `artifact-webhook-payload`, `revocation-notification`. | +| `revocation-notification.notification_id` | Field name on rights revocation payload | Renamed to `idempotency_key` | Find-and-replace in your rights-revocation receivers. | +| `MediaBuy.pending_approval` status | Present | Removed — approvals are explicit approval tasks | Remove `pending_approval` from media-buy state filters. Consume approval tasks from the task surface. | +| Budget autonomy | `budget.authority_level` enum (`agent_full \| agent_limited \| human_required`) | Removed. Split into `budget.reallocation_threshold` (number) + `plan.human_review_required` (boolean) | Rewrite: `agent_full` → `reallocation_unlimited: true`; `agent_limited` → `reallocation_threshold: <positive>`; `human_required` → `human_review_required: true`. Regulated verticals (fair housing, lending, employment, pharmaceutical) enforce `human_review_required: true` via schema `if/then`. | +| `inventory-lists` specialism | Present | Renamed to `property-lists`; `collection-lists` split out as separate specialism | Update specialism claims. Agents that governed collection lists should now claim both `property-lists` and `collection-lists`. | +| Compliance path taxonomy | `/compliance/{v}/domains/` | `/compliance/{v}/protocols/` | Update any internal references to compliance paths. Runner and catalog use `protocols/` exclusively. | +| `governance_context` carrier | Opaque string | Signed JWS | Switch to JWS format. Verify signature via governance agent JWKS (resolved via `sync_governance`). Bind to `sub`, `aud`, `phase`, `exp`. | +| Media buy status | `pending_activation` | Removed — replaced by `pending_creatives` and `pending_start` | Replace `pending_activation` in status filters, comparisons, and state machine logic. Schema: `enums/media-buy-status.json`. See details below. | +| Capabilities model | Redundant boolean gates (`features.content_standards`, `brand.identity`, `trusted_match.supported`, etc.) | Removed — object presence is the signal | Remove boolean capability checks. Test for object presence instead. Schema: `protocol/get-adcp-capabilities-response.json`. See [capabilities migration](#capabilities-model-simplification) below. | +| `reporting_capabilities` | Optional on products | Required on every product | Ensure all products returned from `get_products` include `reporting_capabilities`. Schema: `core/product.json`. | +| `account` on `update_media_buy` | Optional | Required | Pass `account` on all `update_media_buy` calls, matching `create_media_buy` behavior. Schema: `media-buy/update-media-buy-request.json`. | +| `preview_creative` schema | oneOf union | Flat object with `request_type` discriminant | Update request builders to use the flat schema with `request_type` field. Schema: `creative/preview-creative-request.json`. See [preview_creative migration](#preview_creative-schema-flattening) below. | +| `signal_id` on `get_signals` response | Optional on signal items | Required | Ensure all signal items in `get_signals` responses include `signal_id`. Schema: `signals/get-signals-response.json`. | +| `GOVERNANCE_DENIED` error | Not in error code enum | Added as correctable error | Handle `GOVERNANCE_DENIED` in error handling logic. Schema: `enums/error-code.json`. | +| Governance lifecycle | `media_buy_id` as lifecycle correlator | Removed — `governance_context` is sole lifecycle correlator | Replace `media_buy_id` in governance schemas with `governance_context`. Handle `purchase_type` field on `check_governance` and `report_plan_outcome`. Schema: `governance/check-governance-request.json`. See [governance migration](#governance-lifecycle-migration) below. | +| Geo capability fields | `supported_geo_levels`, `supported_metro_systems`, `supported_postal_systems` (from #2143) | Removed — use typed objects (`geo_countries`, `geo_regions`, `geo_metros`, `geo_postal_areas`) | If you adopted the flat array shape from #2143, revert to typed geo objects with `additionalProperties: false`. Schema: `protocol/get-adcp-capabilities-response.json`. | +| `comply_test_controller` schema | oneOf union | Flat object with `scenario` discriminant and if/then validation | Update request builders to use the flat schema with `scenario` field instead of oneOf variants. | +| Compliance testing surface | An interim rc.4 build accepted `"compliance_testing"` as a `supported_protocols` value | Removed before GA. Compliance testing is declared via a top-level `compliance_testing: { scenarios: [...] }` capability block, not via `supported_protocols`. | Remove `"compliance_testing"` from `supported_protocols` if present. Agents implementing `comply_test_controller` add a top-level `compliance_testing: { scenarios: [...] }` block instead. | +| Specialism IDs | `broadcast-platform`, `social-platform`, `property-governance`, `collection-governance` | Renamed/merged: `sales-broadcast-tv`, `sales-social`, `inventory-lists` (merges property + collection governance) | Update specialism claims in `get_adcp_capabilities.specialisms`. See [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). | +| `audience-sync` parent protocol | Under `governance` | Moved to `media-buy` | If claiming `audience-sync`, add `media_buy` to `supported_protocols`. | +| Sponsored Intelligence scope | `sponsored_intelligence` as a specialism | Promoted to full protocol in `supported_protocols` | Move from `specialisms` to `supported_protocols`. | + +### Media buy status migration + +`pending_activation` was a single state covering two distinct conditions. It has been split: + +| Condition | rc.3 status | 3.0 status | +|---|---|---| +| Buy approved, no creatives assigned | `pending_activation` | `pending_creatives` | +| Buy ready to serve, waiting for flight date | `pending_activation` | `pending_start` | +| Buy is serving | `active` | `active` (unchanged) | + +**What to change:** + +1. **Status filters** — Replace `pending_activation` with both `pending_creatives` and `pending_start` in `status_filter` arrays on `get_media_buys` and `get_media_buy_delivery`. +2. **Status comparisons** — Any `if (status === 'pending_activation')` needs to branch on which condition you're checking. If you want "not yet serving," check for both `pending_creatives` and `pending_start`. If you want "ready but waiting for flight date," check only `pending_start`. +3. **State machine transitions** — `rejected` is now valid from both `pending_creatives` and `pending_start` (previously only from `pending_activation`). `pending_creatives` → `pending_start` happens when creatives are assigned via `sync_creatives`. +4. **Legacy alias** — `pending` continues to be accepted as an alias for `pending_start` in delivery response status filters. + +See the [canonical lifecycle diagram](/dist/docs/3.2.0-beta.4/media-buy/media-buys#state-machine) for the full state machine. + +### Capabilities model simplification + +PR #2143 removed redundant boolean capability fields. Object presence now signals support — if you have the object, you have the capability. + +**Removed fields and replacements:** + +| Removed field | What to do instead | +|---|---| +| `media_buy.reporting` | Use product-level `reporting_capabilities` (now required) | +| `features.content_standards` | Check for `content_standards` object presence | +| `features.audience_targeting` | Check for `audience_targeting` object presence | +| `features.conversion_tracking` | Check for `conversion_tracking` object presence | +| `content_standards_detail` | Renamed to `content_standards` | +| `brand.identity` | Implied by brand protocol support | +| `trusted_match.supported` | Check for `trusted_match` object presence | +| `targeting.device_platform` / `targeting.device_type` | Implied by `media_buy` protocol support | +| `targeting.audience_include` / `targeting.audience_exclude` | Implied by `audience_targeting` presence | + +**Before (rc.3):** +```json +{ + "features": { + "content_standards": true, + "audience_targeting": true + }, + "trusted_match": { + "supported": true, + "uid_types": ["email_sha256"] + } +} +``` + +**After (3.0):** +```json +{ + "content_standards": { ... }, + "audience_targeting": { ... }, + "trusted_match": { + "uid_types": ["email_sha256"] + } +} +``` + +### preview_creative schema flattening + +The `preview_creative` request is flattened from a oneOf union to a single object with a `request_type` discriminant. Three modes: + +| `request_type` | Required field | Purpose | +|---|---|---| +| `single` | `creative_manifest` | Preview one creative | +| `batch` | `requests` (array, 1-50 items) | Preview multiple creatives | +| `variant` | `variant_id` | Replay a post-flight variant | + +**Before (rc.3):** +```json +{ + "creative_manifest": { "format_id": { ... }, "assets": { ... } } +} +``` + +**After (3.0):** +```json +{ + "request_type": "single", + "creative_manifest": { "format_id": { ... }, "assets": { ... } } +} +``` + +Schema: `schemas/creative/preview-creative-request.json` + +### Governance lifecycle migration + +`media_buy_id` is removed from governance schemas. `governance_context` is an opaque string that serves as the sole lifecycle correlator across `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs`. + +**Before (rc.3):** +```json +{ + "media_buy_id": "mb_456", + "planned_delivery": { ... } +} +``` + +**After (3.0):** +```json +{ + "governance_context": "campaign_2024_q4_nova", + "purchase_type": "media_buy", + "planned_delivery": { ... } +} +``` + +Schema: `schemas/governance/check-governance-request.json` + +### context and ext fields + +All request and response schemas across governance, collection, property, sponsored-intelligence, and content-standards protocols now include optional `context` and `ext` fields for application metadata and protocol extensions. + +### Additive changes in 3.0 + +- **RFC 9421 request signing profile (optional in 3.0, mandatory under AdCP Verified)** — Ed25519 HTTP Message Signatures with canonicalized covered-component list. Published test vectors at `static/compliance/source/test-vectors/request-signing/`. sf-binary encoding and URL canonicalization pinned for bit-identical canonical inputs. 15-step verification checklist with `keyid` cap-before-crypto. +- **Webhook signing unified on RFC 9421** — Baseline-required for sellers emitting webhooks. Sellers publish a signing JWK in their JWKS at `jwks_uri`; new signers use `adcp_use: "request-signing"` for webhook delivery, while deprecated `webhook-signing` keys remain accepted during the compatibility window. Use a distinct `kid` if you want webhook-only key material. 14-step webhook verifier checklist in the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). HMAC-SHA256 remains a legacy fallback through 3.x (the entire `authentication` object is removed in 4.0). +- **Property-list webhook signing defined** — Property-list change deliveries use RFC 9421 `Signature`, `Signature-Input`, and `Content-Digest` headers. The published 3.1 schema required a body-level `signature` without defining an algorithm, signed bytes, or key discovery; 3.2 senders set that deprecated field to the compatibility marker `rfc9421`, while receivers accept any string from an older 3.x sender and ignore it for authentication. Keeping the marker required and unconstrained avoids a 3.x schema break; it is removed in 4.0. Collection-list webhook schema and behavior remain unchanged pending separately versioned work. +- **Required `idempotency_key` on every webhook payload** — Sender-generated UUID v4 across all five webhook payload schemas. Replaces fragile `(task_id, status, timestamp)` dedup. `revocation-notification.notification_id` renamed to `idempotency_key` for protocol-wide consistency. +- **`check_governance` on every spend-commit** — Governance invocation is required at commit, not just at plan approval. Closes the loophole where partial spends could skip governance. +- **Experimental status mechanism** — `status: experimental` marker for fields and tasks in production use but not yet under full stability guarantees. `custom` pricing-model escape hatch on signals. +- **`submitted` branch on `create_media_buy`** — Seller has accepted the payload for processing but has not yet confirmed the order. Distinct from `pending_creatives` and `pending_start`. +- **Time semantics + `activate_signal` idempotency** — Unifies time-field semantics across the protocol. `activate_signal` added to the required-idempotency table. +- **Known limitations + privacy-considerations reference pages** — New `/docs/reference/known-limitations` and `/docs/reference/privacy-considerations`. Platform-agnostic lint prevents vendor-specific language from creeping into the spec. +- **Signed JWS `governance_context`** — Governance decisions are now cryptographically verifiable. Sellers resolve the governance agent's JWKS via `sync_governance` and verify `sub` / `aud` / `phase` / `exp` before honoring the decision. +- **Universal security storyboard** — Every agent runs `/compliance/{version}/universal/security.yaml` (unauth rejection, API key, OAuth/RFC 9728, audience binding). Agents declaring signing also run the `signed_requests` harness. +- **Cross-instance state persistence** — Architecture spec requires persistent state (tasks, media buys, plans, signed artifacts, idempotency keys) across horizontally-scaled instances. +- **Security implementation guide** — New `docs/building/by-layer/L1/security.mdx` documents threat model, three-principal model (brand / operator / agent), and verification paths. Retires ambiguous "principal" terminology. +- **GDPR Art 22 / EU AI Act Annex III as schema invariants** — New registry policy `eu_ai_act_annex_iii`. `requires_human_review` on policies and categories. Schema-level enforcement of `human_review_required: true` for regulated verticals. +- **Operating an Agent guide** — New doc for publishers without engineering teams — three paths: partner, self-host, build. +- **Release cadence policy** — Named cadence: patch monthly, minor quarterly, major annual if needed. v2 EOL August 1, 2026. +- **CHARTER.md** — Formal governance charter published. +- **Collection lists** — Program-level brand safety using distribution identifiers (IMDb, Gracenote, EIDR) for cross-publisher matching. New targeting overlay fields (`collection_list`, `collection_list_exclude`). New genre taxonomy enum. +- **Broadcast TV support** — Ad-ID identifiers, broadcast spot formats (:15, :30, :60), Agency Estimate Number, measurement windows (Live, C3, C7), delivery data completeness (`is_final`, `measurement_window`). +- **Offline reporting delivery** — `reporting_delivery_methods` on capabilities, `reporting_bucket` on accounts, `supports_offline_delivery` on product `reporting_capabilities`. Avro and ORC added as file format options. +- **TMPX exposure tracking** — Country-partitioned identity and macro connectivity for the Trusted Match Protocol execution layer. +- **TMP provider registration** — `provider-registration.json` schema, `GET /health` endpoint, dual discovery models (static config and dynamic API), per-provider latency budget semantics. +- **TMP multi-identity Identity Match** — `identity-match-request` replaces single `user_token` + `uid_type` with an `identities` array (minItems 1, maxItems 3). Router filters per provider and re-signs with RFC 8785 JCS canonicalization; cache key adds `consent_hash`. Adds `rampid_derived` to the `uid-type` enum. Breaking relative to prior pre-release TMP drafts only; TMP remains pre-release in 3.0 and stabilizes in 3.1.0. +- **GOVERNANCE_DENIED error** — New correctable error code for governance-rejected operations. +- **context/ext fields** — Optional `context` and `ext` on all request/response schemas across governance, collection, property, SI, and content-standards protocols. +- **Compliance testing capability** — Agents include a `compliance_testing: { scenarios: [...] }` block in `get_adcp_capabilities` declaring which `comply_test_controller` scenarios they support. The block's presence is the signal — compliance testing is NOT a `supported_protocols` value. Storyboard runners use the block to determine whether deterministic testing steps can be validated. +- **Specialisms + compliance catalog** — Storyboards ship in the protocol at `/compliance/{version}/` (universal + protocols + specialisms + test-kits). New `specialisms` field on `get_adcp_capabilities` with 19 values across 6 protocols. Per-version protocol tarball at `/protocol/{version}.tgz`. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). +- **Structured measurement terms** — `measurement_terms` on products and media buys for billing vendor, IVT threshold, and viewability floor negotiation. `cancellation_policy` on guaranteed products. `viewability-standard` enum. `TERMS_REJECTED` error code. +- **Unified vendor pricing** — `pricing_options[]` on `list_creatives`, `build_creative`, `get_creative_features`, and `property-list`. Shared `vendor-pricing-option.json` schema. +- **Per-request version declaration** — `adcp_major_version` on all v3 request schemas. `VERSION_UNSUPPORTED` error code. Multi-version sellers supporting v2 clients must detect v2 payloads by structural cues, not by this field (v2 schemas do not have it). +- **Broadcast forecast schema** — `measurement_source`, `packages`, and `guaranteed_impressions` on `DeliveryForecast`. New `forecast-range-unit` and `forecastable-metric` enums. +- **Broadcast station identifiers** — `station_id` and `facility_id` identifier types. `linear_tv` property type. +- **Brand schema extensions** — Generic `agents` array on `brand.json`. Visual tokens (`border_radius`, `elevation`, `spacing`, extended color roles). Structured font definitions. +- **Per-item error schema** — `sync_creatives`, `sync_catalogs`, and `sync_event_sources` response errors now use `error.json` ref. +- **Property relationship field** — `relationship` on brand.json property definitions (`owned`, `direct`, `delegated`, `ad_network`) for bilateral verification with `adagents.json` delegation types. +- **`sales` agent type restored** — `sales` restored to `brand-agent-type` enum. Sales agents (SSPs, publishers) are distinct from buying agents (DSPs, buyer platforms). +- **Required tasks reference** — New reference page consolidating required, conditional, and optional tasks across all AdCP protocols by agent role. +- **Storyboard validation fixes** — 20+ validation bugs fixed across 11 storyboard files: corrected field paths (`creatives[0].action`, `media_buy_deliveries`, `renders[0].preview_url`), added missing `value:` to `field_value` checks, added `value` property to storyboard validation schema. + +--- + +## rc.1 → rc.2 + +### Potentially breaking for rc.1 adopters + +| Area | rc.1 | rc.2 | What to do | +|---|---|---|---| +| Account auth model | `account_resolution` capability | Removed — `require_operator_auth` now determines account model | Update capability parsing and auth/account branching logic | +| Creative library task boundary | `list_creatives` / `sync_creatives` documented under Media Buy | Creative library operations live in the Creative Protocol | Route library reads/writes through Creative Protocol assumptions, even when a sales agent implements both protocols | +| Sandbox capability discovery | `media_buy.features.sandbox` | `account.sandbox` | Read sandbox support from the account capability block | +| DOOH flat rate parameters | `flat_rate.parameters` without discriminator | `flat_rate.parameters.type: "dooh"` required when parameters are present | Add the discriminator in request builders and validators | +| Deprecated governance task docs | `delete_content_standards`, `get_property_features` documented | Removed | Use `update_content_standards`, property lists, and `get_adcp_capabilities` instead | + +### Additive changes in rc.2 + +- **Creative generation and preview** — `build_creative` adds `include_preview`, `preview_inputs`, `preview_quality`, `preview_output_format`, `quality`, `item_limit`, and multi-format `target_format_ids`. Buyers can now preview inline, choose draft vs production generation, and request multiple output formats in one call. +- **Creative library retrieval** — `build_creative` also supports library retrieval using `creative_id`, optional `concept_id`, `media_buy_id`, `package_id`, and `macro_values`, so ad servers and creative platforms can resolve stored creatives into delivery-ready manifests. +- **Creative capability discovery** — Creative agents can declare `supports_generation`, `supports_transformation`, and `has_creative_library`. `list_creatives` now uses library-oriented fields like `include_snapshot`, `has_served`, and `items`. +- **Product discovery and planning** — `get_products` adds `exclusivity`, `preferred_delivery_types`, and `time_budget`, with `incomplete` in the response. Products may omit `delivery_measurement`, and packages can now carry per-package `start_time` / `end_time`. +- **Compliance and governance** — Creative disclosures add persistence semantics, and campaign governance introduces `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs`. +- **Accounts and sandbox ergonomics** — `sync_accounts` adds `payment_terms`, and sandbox now participates in the natural account key for buyer-declared account references. + +--- + +## Need help? + +- **Community**: [Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) — best for quick questions from other implementers +- **Issues**: [GitHub Issues](https://github.com/adcontextprotocol/adcp/issues) — for bugs, spec questions, or migration edge cases +- **Full v2 → v3 migration**: [Migration guide](/dist/docs/3.2.0-beta.4/reference/migration) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/pricing.mdx b/dist/docs/3.2.0-beta.4/reference/migration/pricing.mdx new file mode 100644 index 0000000000..4685d48252 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/pricing.mdx @@ -0,0 +1,227 @@ +--- +title: "Migrating pricing" +description: "Migrate AdCP pricing from v2 to v3. Covers field renames, the hard constraint vs soft hint separation, and updated pricing option schemas." +"og:title": "AdCP — Migrating pricing" +testable: true +--- + +# Migrating pricing + +AdCP 3.0 renames pricing fields for clarity and separates hard constraints (prices the publisher enforces) from soft hints (historical data to help buyers bid). + +## What changed + +| v2 field | v3 field | Change type | +|----------|----------|-------------| +| `fixed_rate` | `fixed_price` | Renamed | +| `price_guidance.floor` | `floor_price` | Moved to top level | + +The `pricing_model`, `currency`, `pricing_option_id`, and `price_guidance` percentiles (`p25`, `p50`, `p75`, `p90`) are unchanged. + +## Hard constraints vs soft hints + +v3 makes an explicit semantic distinction: + +**Hard constraints** — publisher-enforced prices that cause bid rejection if violated: +- `fixed_price` — the exact price per unit (fixed-price deals) +- `floor_price` — minimum acceptable bid (auction pricing) + +These are mutually exclusive. A pricing option has either `fixed_price` (guaranteed rate) or `floor_price` (auction with minimum), never both. + +**Soft hints** — historical percentiles to help buyers calibrate bids: +- `price_guidance.p25` — 25th percentile of recent winning bids +- `price_guidance.p50` — median of recent winning bids +- `price_guidance.p75` — 75th percentile of recent winning bids +- `price_guidance.p90` — 90th percentile of recent winning bids + +## Deal type mapping + +These fields map to standard programmatic deal types: + +| Deal type | AdCP field | Description | +|-----------|-----------|-------------| +| Programmatic Guaranteed (PG) | `fixed_price` | Fixed CPM, guaranteed delivery | +| Preferred Deal | `fixed_price` | Fixed CPM, non-guaranteed (buyer has first look) | +| Private Marketplace (PMP) | `floor_price` | Auction with minimum bid | +| Open Auction | Neither | No floor or fixed price — open bidding | + +PG and Preferred Deals both use `fixed_price`. The distinction between them is in delivery commitment, not pricing — PG guarantees delivery volume while Preferred Deals offer first-look access without volume guarantees. + +## Fixed-price deals + +**v2:** +```json +{ + "pricing_option_id": "cpm_usd_fixed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_rate": 25.00 +} +``` + +**v3:** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_fixed", + "pricing_model": "cpm", + "currency": "USD", + "fixed_price": 25.00 +} +``` + +Rename `fixed_rate` to `fixed_price`. No structural changes. + +## Auction pricing + +**v2:** +```json +{ + "pricing_option_id": "cpm_usd_auction", + "pricing_model": "cpm", + "currency": "USD", + "price_guidance": { + "floor": 10.00, + "p50": 15.00, + "p75": 18.00 + } +} +``` + +**v3:** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_auction", + "pricing_model": "cpm", + "currency": "USD", + "floor_price": 10.00, + "price_guidance": { + "p50": 15.00, + "p75": 18.00 + } +} +``` + +Two changes: +1. `price_guidance.floor` moves to top-level `floor_price` +2. `price_guidance` retains only the percentile hints + +## Price guidance object + +The v3 `price_guidance` object contains only statistical percentiles: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/price-guidance.json", + "p25": 8.50, + "p50": 15.00, + "p75": 18.00, + "p90": 22.00 +} +``` + +All fields are optional. Publishers include whichever percentiles they can provide. + +## Flat-rate pricing + +**v2** (DOOH with parameters, no type discriminator): +```json +{ + "pricing_option_id": "dooh_times_square", + "pricing_model": "flat_rate", + "currency": "USD", + "fixed_rate": 50000.00, + "parameters": { + "duration_hours": 24, + "sov_percentage": 100, + "estimated_impressions": 1500000 + } +} +``` + +**v3:** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/flat-rate-option.json", + "pricing_option_id": "dooh_times_square", + "pricing_model": "flat_rate", + "currency": "USD", + "fixed_price": 50000.00, + "parameters": { + "type": "dooh", + "duration_hours": 24, + "sov_percentage": 100, + "estimated_impressions": 1500000 + } +} +``` + +Two changes: +1. `fixed_rate` renames to `fixed_price` (same as other pricing models) +2. `parameters` gains a required `"type": "dooh"` discriminator for DOOH inventory + +Sponsorship flat_rate options that had no `parameters` in v2 continue to omit it in v3. Note that `fixed_price` is optional on flat-rate options — when absent, the flat-rate is auction-based (uncommon but valid for some DOOH inventory). + +## Minimum spend + +v3 adds an optional `min_spend_per_package` field to all pricing options: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_premium", + "pricing_model": "cpm", + "currency": "USD", + "floor_price": 15.00, + "min_spend_per_package": 5000.00, + "price_guidance": { + "p50": 22.00, + "p75": 28.00 + } +} +``` + +This lets publishers declare minimum spend requirements per package. + +## Transition period handling + +During migration, readers may encounter both old and new field names. Consider checking for both: + +```javascript test=false +const price = option.fixed_price ?? option.fixed_rate; +const floor = option.floor_price ?? option.price_guidance?.floor; +``` + +v3 writers should only emit the new field names. Old field names (`fixed_rate`, `price_guidance.floor`) are not recognized by v3 schema validation. Remove the v2 fallback once all upstream sellers have migrated to v3 schemas. + +## Migration steps + +<Steps> + <Step title="Rename fixed_rate"> + Rename `fixed_rate` to `fixed_price` in all pricing options. + </Step> + <Step title="Move floor"> + Move `floor` from inside `price_guidance` to top-level `floor_price`. + </Step> + <Step title="Clean up price_guidance"> + Remove `floor` from `price_guidance` objects (only percentiles remain). + </Step> + <Step title="Update readers"> + Update code to look for new field names. Consider temporary fallback for both during transition. + </Step> + <Step title="Test auction bids"> + Verify floor enforcement works with the new field location. + </Step> + <Step title="Validate against schemas"> + Each pricing model has its own schema in `/schemas/3.2.0-beta.4/pricing-options/`. + </Step> +</Steps> + +<Card title="Media products" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products"> + How products declare pricing options, channels, and capabilities. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.2.0-beta.4/reference/migration/channels) | [Geo targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.2.0-beta.4/reference/migration/creatives) | [Catalogs](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) | [Attribution](/dist/docs/3.2.0-beta.4/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/signals.mdx b/dist/docs/3.2.0-beta.4/reference/migration/signals.mdx new file mode 100644 index 0000000000..7f17573bf2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/signals.mdx @@ -0,0 +1,177 @@ +--- +title: "Migrating signals" +description: "Migrate AdCP signals from beta.3 to rc.1. Covers deliver_to flattening, structured pricing options, and simplified usage reporting fields." +"og:title": "AdCP — Migrating signals" +testable: true +--- + +# Migrating signals + +AdCP 3.0 rc.1 makes three changes to the Signals Protocol: delivery target flattening, structured pricing options, and usage reporting simplification. + +## Deliver-to flattening + +The nested `deliver_to` object in `get_signals` requests is replaced by two top-level fields. + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `deliver_to.destinations` | `destinations` | Moved to top level | +| `deliver_to.countries` | `countries` | Moved to top level | + +**beta.3:** +```json test=false +{ + "signal_spec": "in-market auto intenders", + "deliver_to": { + "destinations": [ + { "agent_url": "https://dsp.example.com", "seat_id": "seat_123" } + ], + "countries": ["US", "CA"] + } +} +``` + +**rc.1:** +```json test=false +{ + "signal_spec": "in-market auto intenders", + "destinations": [ + { "agent_url": "https://dsp.example.com", "seat_id": "seat_123" } + ], + "countries": ["US", "CA"] +} +``` + +--- + +## Pricing options + +The legacy `pricing` object (with a single `cpm` field) is replaced by a `pricing_options` array. Each option is a discriminated union on `model`. + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `pricing: { cpm: 2.50 }` | `pricing_options[]` | Array of pricing model objects | +| Implicit pricing selection | `pricing_option_id` on `activate_signal` | Explicit buyer commitment | +| No idempotency | `idempotency_key` on `report_usage` | Prevents duplicate billing | + +### Three pricing models + +**CPM** — Fixed cost per thousand impressions: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/signal-pricing-option.json", + "pricing_option_id": "po_auto_cpm", + "model": "cpm", + "cpm": 2.50, + "currency": "USD" +} +``` + +**Percent of media** — Percentage of media spend, with optional CPM cap: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/signal-pricing-option.json", + "pricing_option_id": "po_auto_pom", + "model": "percent_of_media", + "percent": 15, + "max_cpm": 5.00, + "currency": "USD" +} +``` + +**Flat fee** — Fixed charge per reporting period (monthly licensed segments): +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/signal-pricing-option.json", + "pricing_option_id": "po_auto_flat", + "model": "flat_fee", + "amount": 10000.00, + "period": "monthly", + "currency": "USD" +} +``` + +### Activation with pricing + +When activating a signal, pass the selected `pricing_option_id`: + +```json test=false +{ + "signal_agent_segment_id": "luxury_auto_intenders", + "destinations": [ + { "type": "agent", "agent_url": "https://dsp.example.com", "account": { "account_id": "acct_pinnacle" } } + ], + "pricing_option_id": "po_auto_cpm" +} +``` + +--- + +## Usage reporting + +`report_usage` adds `idempotency_key` and removes the `kind` and `operator_id` fields. + +| beta.3 | rc.1 | Notes | +|--------|------|-------| +| `kind` field | Removed | Usage records are self-describing via `signal_agent_segment_id` or `standards_id` | +| `operator_id` field | Removed | Account reference provides operator identity | +| No idempotency | `idempotency_key` | Client-generated UUID prevents duplicate billing on retries | + +**rc.1 usage report:** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/account/report-usage-request.json", + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "reporting_period": { + "start": "2025-03-01T00:00:00Z", + "end": "2025-03-31T23:59:59Z" + }, + "usage": [ + { + "account": { "account_id": "acct_pinnacle_signals" }, + "signal_agent_segment_id": "luxury_auto_intenders", + "pricing_option_id": "po_auto_cpm", + "impressions": 4200000, + "media_spend": 21000.00, + "vendor_cost": 2100.00, + "currency": "USD" + } + ] +} +``` + +The `pricing_option_id` in the usage record must match the one passed at activation, allowing the vendor to verify the correct rate was applied. + +## Migration steps + +<Steps> + <Step title="Flatten deliver_to"> + Move `deliver_to.destinations` and `deliver_to.countries` to top-level fields in `get_signals` requests. + </Step> + <Step title="Parse pricing_options array"> + Update signal response parsing to read `pricing_options` (array) instead of `pricing` (object). Switch on `model` field to determine the pricing type. + </Step> + <Step title="Select pricing at activation"> + When calling `activate_signal`, pass the selected `pricing_option_id` from the signal's `pricing_options` array. + </Step> + <Step title="Add idempotency_key to report_usage"> + Generate a unique key (UUID) for each `report_usage` call. Retries with the same key are idempotent. + </Step> + <Step title="Remove kind and operator_id"> + Remove `kind` and `operator_id` from usage records. Usage type is determined by the presence of `signal_agent_segment_id` (signals) or `standards_id` (governance). + </Step> + <Step title="Track pricing_option_id through lifecycle"> + Store the `pricing_option_id` at activation time and pass it in `report_usage` records so the vendor can verify billing. + </Step> + <Step title="Validate against schemas"> + Run requests against `get-signals-request.json`, `activate-signal-request.json`, and `report-usage-request.json` schemas. + </Step> +</Steps> + +<Card title="Signals Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/signals/overview"> + Full reference for signal discovery, activation, usage reporting, and pricing models. +</Card> + +--- + +**Related:** [Pricing](/dist/docs/3.2.0-beta.4/reference/migration/pricing) | [Optimization goals](/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery.mdx b/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery.mdx new file mode 100644 index 0000000000..4f92dfb605 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery.mdx @@ -0,0 +1,346 @@ +--- +title: Targeting-aware product discovery +description: Migrate targeting filters and product-ID assumptions to targeting overlays, future support, sparse resolution, and configured products. +"og:title": AdCP targeting-aware product discovery migration +--- + +# Targeting-aware product discovery + +AdCP 3.2 aligns targeting across discovery and purchase. Buyers provide concrete +delivery constraints in `list_products.criteria.targeting_overlay` or +`request_proposals.criteria.targeting_overlay`, and sellers return configured +products whose pricing and forecasts already account for those constraints. +`get_products.targeting_overlay` remains the compatibility-facade form. + +## What changed + +- Split discovery tasks accept `criteria.targeting_overlay`; `get_products` accepts the equivalent top-level field. +- Proposal refinements can replace structured discovery criteria without restating inherited fields. +- `required_overlay_support` declares targeting dimensions whose values will be + supplied on packages later. +- Products declare selectable dimensions through `overlay_support`. +- Products disclose non-exact discovery alternatives through sparse + `targeting_resolution.modifications`. +- `request_proposals` and the `get_products` compatibility response confirm + structured hard targeting inferred from natural-language briefs once through + response-root `targeting_resolution.brief_targeting`; `refine_proposals` + places confirmation in the affected `results[]` entry + whenever that interpretation materially affects eligibility, pricing, or forecasting. +- Product discovery and booked packages use lifecycle-specific schemas under + the shared `targeting_resolution` field; demographic package execution moves + to `targeting_resolution.demographics`. +- `product_id` is opaque. Non-custom wholesale IDs remain stable for the same + logical offer within seller and declared cache scope; custom IDs are stable + only within their issuing discovery/refinement lineage. +- `placement_selection` joins property and collection lists as purchased- + inventory targeting inside the overlay. +- Legacy targeting-like product filters are deprecated. + +## Filter migration + +| Legacy discovery field | Replacement | +| -------------------------------- | ------------------------------------------- | +| `filters.countries` | `targeting_overlay.geo_countries` | +| `filters.regions` | `targeting_overlay.geo_regions` | +| `filters.metros` | `targeting_overlay.geo_metros` | +| `filters.postal_areas` | `targeting_overlay.geo_postal_areas` | +| `filters.geo_proximity` | `targeting_overlay.geo_proximity` | +| `filters.keywords` | `targeting_overlay.keyword_targets` | +| `filters.signal_targeting` | `targeting_overlay.signal_targeting_groups` | +| `filters.required_geo_targeting` | `required_overlay_support` | +| top-level `property_list` | `targeting_overlay.property_list` | + +On split tasks, nest the replacements under `criteria` and keep channel, +format, delivery type, pricing, reporting, and other product characteristics +in `criteria.offer_filters`. Legacy `get_products` keeps the flattened names +shown in the table for compatibility. + +## Briefs versus structured fields + +Move any requirement with a structured AdCP representation out of prose and +into that field. For targeting, this means using `targeting_overlay`. Structured +input is more compact, deterministic, and lossless. Briefs remain appropriate +for goals, context, semantic intent, preferences, and requirements without a +structured representation. + +Hard targeting stated only in a brief remains binding. Sellers MUST expose the +predicate they inferred once as response-level +`targeting_resolution.brief_targeting` when that structured interpretation +materially affects product eligibility, pricing, or forecasting; otherwise it +remains a best practice. Do not use that field to echo an unchanged structured +overlay. + +## Known values versus future selection + +Known values are real targeting and participate in forecasts: + +```json +{ + "targeting_overlay": { + "geo_countries": ["US"] + } +} +``` + +Use future support when the buyer needs package-level control but does not know +the eventual values: + +```json +{ + "required_overlay_support": { + "geo_metros": { + "systems": ["nielsen_dma"] + }, + "placement_selection": true, + "property_list": true, + "collection_list": true + } +} +``` + +This does not request one product per DMA, placement, property, or collection. +It filters to products that allow those dimensions to be selected later. +Operator-specific capabilities remain separate: for example, +`device_platform` and `device_platform_exclude` are independently requested and +disclosed so exclusion support is never inferred from inclusion support. + +Requirement `true` matches support `true` or any valid support object. An object +requirement matches support `true` or a support object containing every +requested boolean and array subset. Unrequested fields and numeric seller limits +do not participate. Support guarantees selectability, not inventory or a +value-specific forecast for every later selection. Rediscover with concrete +`targeting_overlay` values when that forecast is required. Fixed prices and +floors remain binding for supported selections; price guidance remains +non-binding. + +Products can disclose per-package cardinality without changing the requirement +shape. For example, a buyer can require future country and radius selection: + +```json +{ + "required_overlay_support": { + "geo_countries": true, + "geo_proximity": { "radius": true } + } +} +``` + +A matching Product can respond with constrained support: + +```json +{ + "overlay_support": { + "geo_countries": { "max_values_per_package": 1 }, + "geo_proximity": { + "radius": true, + "max_values_per_package": 5 + } + } +} +``` + +These limits apply to each package field independently. They are not buyer +requirements, value allowlists, inventory guarantees, or cross-package +constraints. Sellers reject an over-limit create or update atomically with +`UNSUPPORTED_FEATURE`. Legacy support `true` remains valid. + +Numeric limits are ignored for future-support matching, not for concrete +targeting acceptance. A returned Product's accepted effective targeting must +already satisfy every maximum it discloses. Sellers exclude an over-limit +candidate unless they return a distinct configured Product with a disclosed, +compliant targeting modification. + +ISO subdivision support follows the same split but can be country/value aware: + +```json +{ + "targeting_overlay": { + "geo_regions": ["FR-49"] + }, + "required_overlay_support": { + "geo_regions_exclude": { + "countries": { + "FR": { "values": ["FR-44", "FR-2A"] } + } + } + } +} +``` + +The known `FR-49` constraint scopes the returned configured product and +forecast. The exclusion requirement is permission to select either candidate +later; it is not an availability promise for either value. Inclusion and +exclusion are matched independently. Numeric administrative depth is not used +because ISO subdivision categories are not uniform across countries. + +## Do not migrate raw ad-server keys + +Do not replace legacy targeting-like filters with a `custom`, +`key_value_pairs`, or equivalent generic map. External buyers use typed AdCP +targeting fields, seller-published signal references, and structured inventory +selection. Sellers keep backend key/value compilation private. If a recurring +concept needs protocol support, standardize it as a typed field with explicit +matching and resolution behavior. + +## Accepting targeting modifications + +Exact acceptance produces no structured-overlay echo. A product with no Product +`targeting_resolution` accepts the discovery overlay exactly, but does not +confirm how prose was interpreted. Brief-derived hard targeting may therefore +produce response-root `targeting_resolution.brief_targeting` on +`request_proposals` or `get_products`, or per-result confirmation on +`refine_proposals`, even when no overlay was sent. +An exact request-specific configured product issued through targeting-aware +discovery still returns `is_custom: true` and `expires_at`; absence of a +resolution echo does not make its price, forecast, or inventory assumptions +permanent. The generic Product schema continues accepting legacy custom +products without `expires_at`; the requirement belongs to this new discovery +flow and to every product that carries `targeting_resolution`. + +A seller offering an alternative returns only the changed paths: + +```json +{ + "product_id": "prod_configured_age_456", + "is_custom": true, + "expires_at": "2026-08-05T12:00:00Z", + "targeting_resolution": { + "modifications": [ + { + "operation": "replace", + "path": "/demographics/age", + "applied": { + "min": 25, + "max": 34, + "include_unknown": false + }, + "reason": "This product executes seller-defined age intervals." + } + ] + } +} +``` + +Using this `product_id` in a direct `create_media_buy`, or accepting a finalized +proposal that purchases it, accepts the modification. A fresh unsupported +overlay sent directly at creation is still rejected; sellers never store a +knowingly non-equivalent package execution. + +## Product identity + +Reuse non-custom wholesale IDs for the same logical offer within the seller and +declared `cache_scope`, including across reads and wholesale-feed webhooks. +Feed and pricing versions communicate mutation; retirement or replacement may +end the identity. A binding price, floor, currency, model, or priced +applicability change receives a new `pricing_option_id`; feed events do not +reinterpret an issued option ID. Do not extend wholesale ID stability to custom configured products. +Within the lineage that issued a custom ID, it remains stable for refinement +and purchase and identifies the complete buyable configuration, including +targeting resolution, forecast assumptions, and overlay support. The selected +`(product_id, pricing_option_id)` pair identifies its commercial terms. + +The lineage is explicit in referenced `product_id` and `proposal_id` values, +not a transport session. On refine, top-level filters, targeting, and future +support replace prior values when present; omitted values remain bound through +the referenced product. Any changed buyable configuration receives a new ID. + +Use the configured `product_id` throughout its discovery/refinement context. +Request-specific products carry `expires_at`. A seller that still recognizes an +expired ID returns `PRODUCT_EXPIRED`; after its expiry tombstone is no longer +retained, or when the ID belongs to another account or lineage, +`PRODUCT_NOT_FOUND` applies. Sellers do not retain tombstones indefinitely and +do not reveal cross-tenant existence through the error choice. Either result requires rediscovery. This +change deliberately does not introduce a second “catalog product” identity that +could be confused with AdCP creative catalogs. + +## Placement selection + +Placement selection is purchased-inventory targeting: + +```json +{ + "targeting_overlay": { + "placement_selection": { + "mode": "selected", + "placement_refs": [ + { + "publisher_domain": "pinnacle-media.example", + "placement_id": "short_video" + } + ] + } + } +} +``` + +Do not use creative assignment refs to purchase placement inventory. +`creative_assignments[].placement_refs` route a creative only within the +already-purchased set. Placement selection is a complete set: products with +fixed `mode: included` placements use the product default and do not advertise +selectable placement support. Placement, property, and collection changes all +use the existing `update_targeting` action. + +A selected placement set exactly equal to the product's complete fixed +`mode: included` set is an inherent restatement across discovery, create, and +update. It does not require `overlay_support.placement_selection`; partial +selection still requires a selectable product. + +This placement lifecycle supersedes the separate top-level selection proposed +in [issue #6132](https://github.com/adcontextprotocol/adcp/issues/6132). It is +nested in `targeting_overlay` so purchased inventory follows the same +discovery, forecasting, authorization, and readback rules as other targeting. +There is no separate `update_placements` action: a seller advertises +`update_targeting`, and an unavailable action is rejected with +`ACTION_NOT_ALLOWED` and `attempted_action: "update_targeting"`. + +On `update_media_buy`, omission has two different meanings: + +- Omit `targeting_overlay` to leave all targeting unchanged. +- Supply `targeting_overlay` as the complete desired post-update overlay. + Omitting `placement_selection` from that replacement removes the prior + placement constraint; it does not preserve that nested field. + +Invalid placement identities or orphaned creative routing return +`INVALID_REQUEST`; unsupported selection returns `UNSUPPORTED_FEATURE`; and a +selection outside the priced envelope returns `REQUOTE_REQUIRED`. Every +rejection leaves the prior package targeting and assignments unchanged. + +## Compatibility window + +Release negotiation is the coarse feature gate. There is no separate +`targeting_aware_discovery` capability flag: a seller advertising a 3.2 release +is promising the 3.2 discovery contract, while each product's `overlay_support` +remains authoritative for the dimensions that can be selected later. + +Before sending `targeting_overlay` or `required_overlay_support`, a buyer: + +1. Reads `get_adcp_capabilities.adcp.supported_versions`. +2. Selects a compatible 3.2 release or prerelease and sends that exact + release-precision value in `adcp_version` (plus `adcp_major_version: 3` + through 3.x). +3. Validates the response against the echoed `adcp_version`. + +Absence of `supported_versions`, or a list whose highest compatible release is +3.1 or earlier, is not evidence of targeting-aware discovery. The buyer must +omit the 3.2 fields and use legacy targeting filters or explicit brief prose. +It must not optimistically send unknown fields to a major-only seller because a +legacy implementation may accept and ignore them through an open schema. + +A 3.2 seller receiving a 3.1 pin either serves the 3.1 schema and omits 3.2-only +request/response semantics, or returns `VERSION_UNSUPPORTED` when it does not +support 3.1. It never labels a 3.2-shaped response as 3.1. + +Sellers may translate a legacy targeting filter into its overlay equivalent. +When a 3.2 request contains both forms, the seller accepts them only when they +are semantically identical; conflicting forms are rejected with +`INVALID_REQUEST` as ambiguous. Legacy-only requests remain supported through +3.x. + +Schema surfaces are available through the v3 alias: + +- [`get-products-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/media-buy/get-products-request.json) +- [`targeting-overlay-support.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting-overlay-support.json) +- [`targeting-overlay-requirements.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/targeting-overlay-requirements.json) +- [`product-targeting-resolution.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/product-targeting-resolution.json) +- [`package-targeting-resolution.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/package-targeting-resolution.json) +- [`placement-selection.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/placement-selection.json) diff --git a/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness.mdx b/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness.mdx new file mode 100644 index 0000000000..6be12edd7a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness.mdx @@ -0,0 +1,202 @@ +--- +title: "v3 readiness checklist" +sidebarTitle: Readiness checklist +description: "The 8 minimum requirements for seller agents to pass AdCP v3 storyboard testing." +"og:title": "AdCP — v3 readiness checklist" +--- + +# v3 readiness checklist + +AdCP storyboard testing requires v3 protocol support. Agents that only support v2 will fail. This page covers the minimum changes to unblock integration testing with v3 buyers — not the full migration. For the complete list, see the [migration guide](/dist/docs/3.2.0-beta.4/reference/migration). + +<Warning> +Storyboard testing will hard-fail any agent that does not declare v3 support. Complete these 8 items first, then work through the [full migration checklist](/dist/docs/3.2.0-beta.4/reference/migration). v2 is fully deprecated on August 1, 2026 (UTC) — see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). +</Warning> + +--- + +## 1. Implement `get_adcp_capabilities` + +v3 buyers call this task first to discover what your agent supports. Without it, buyers cannot determine your protocol version, supported channels, pricing models, or features. + +This is the single most important change — it's how buyers (and storyboard testing) distinguish v3 agents from v2. + +Return at minimum: `major_versions: [3]`, `supported_protocols`, and your `features` object. + +<Card title="get_adcp_capabilities reference" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + Task specification and response schema. +</Card> + +--- + +## 2. Update channel taxonomy + +v3 replaces v2's 9 channels with 20 planning-oriented channels. Buyers send v3 channel values — your agent must recognize them. + +| Common v2 value | v3 replacement | +|-----------------|----------------| +| `video` | `olv`, `linear_tv`, or `cinema` | +| `audio` | `radio` or `streaming_audio` | +| `native` | Removed — native inventory is now part of `display` | +| `retail` | `retail_media` | + +`display`, `social`, `ctv`, `podcast`, and `dooh` are unchanged. + +<Card title="Channel migration" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/channels"> + Complete mapping table and examples. +</Card> + +--- + +## 3. Rename pricing fields + +Two field renames — same semantics, different names: + +| v2 field | v3 field | +|----------|----------| +| `fixed_rate` | `fixed_price` | +| `price_guidance.floor` | `floor_price` (top-level) | + +Buyers validate against v3 schemas. The old field names cause schema validation failures. + +<Card title="Pricing migration" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/pricing"> + Before/after examples and price guidance restructuring. +</Card> + +--- + +## 4. Support `creative_assignments` + +`creative_ids` (string array) is replaced by `creative_assignments` (object array) with delivery weighting and placement targeting. + +```json +// v2 +{ "creative_ids": ["cr_001", "cr_002"] } + +// v3 +{ "creative_assignments": [ + { "creative_id": "cr_001", "weight": 70 }, + { "creative_id": "cr_002", "weight": 30 } + ] +} +``` + +<Card title="Creatives migration" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/creatives"> + Weighted assignments, placement targeting, and asset discovery. +</Card> + +--- + +## 5. Accept `brand` ref instead of `brand_manifest` + +Buyers pass brand identity as a reference (`{ domain, brand_id }`) instead of an inline manifest. Your agent resolves brand data from `brand.json` or the registry at execution time. + +```json +// v2 +{ "brand_manifest": { "name": "Acme", "logo": "..." } } + +// v3 +{ "brand": { "domain": "acme.example.com", "brand_id": "acme_main" } } +``` + +<Card title="Brand identity migration" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/brand-identity"> + BrandRef schema, resolution flow, and migration steps. +</Card> + +--- + +## 6. Handle `buying_mode` on `get_products` + +`buying_mode` is now required on every `get_products` request. `brief` is the baseline mode for curated product discovery. If your agent declares `wholesale` or `refine` in `media_buy.buying_modes`, it must handle those mode semantics as well. + +<Card title="get_products reference" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products"> + Full request schema including buying_mode. +</Card> + +--- + +## 7. Remove `buyer_ref` — use `idempotency_key` + +v3 removes `buyer_ref`, `buyer_campaign_ref`, and `campaign_ref` from all requests and responses. Seller-assigned `media_buy_id` and `package_id` are now the only canonical identifiers. + +If your agent relied on `buyer_ref` for deduplication, use the new `idempotency_key` field instead. `idempotency_key` (UUID v4) is **required** on every mutating request — agents MUST reject requests that omit it with `INVALID_REQUEST`, and MUST return `IDEMPOTENCY_CONFLICT` when a key is reused with a different payload. See the [idempotency implementation guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency) for normative semantics. + +If your agent used `buyer_ref` for internal tracking or correlation (e.g. mapping to campaign IDs, session traces, or UI state), use the `context` field instead. `context` is an opaque object echoed unchanged in every response and webhook — agents must never parse or act on it. For `create_media_buy` package correlation, put per-package tracking in `packages[i].context` (for example `context.buyer_ref`), not deprecated top-level `buyer_ref`; 3.1+ sellers MUST echo `product_id` on explicit package responses, and package context remains the fallback for legacy sellers that do not. + +| v2 field | v3 replacement | +|----------|----------------| +| `buyer_ref` | Removed — use `media_buy_id` (seller-assigned) | +| `buyer_campaign_ref` | Removed | +| `campaign_ref` | Removed | +| `buyer_ref` as implicit dedup | Explicit `idempotency_key` on mutating requests | +| `buyer_ref` as correlation / tracking | `context` (opaque, echoed unchanged) | + +```json +// v2 — buyer provides their own ref +{ "buyer_ref": "camp-2024-q3", "start_time": "..." } + +// v3 — seller-assigned ID, explicit idempotency, context for tracking +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "context": { "campaign": "camp-2024-q3", "trace_id": "abc-123" }, + "start_time": "..." +} +``` + +For package-level line-item correlation, keep the buy-level context separate from each package's fallback correlation handle: + +```json test=false +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655440001", + "context": { + "internal_campaign_id": "camp-2024-q3" + }, + "brand": { + "domain": "example-brand.test" + }, + "packages": [ + { + "product_id": "prod_weekday_display", + "pricing_option_id": "cpm_usd_auction", + "format_option_refs": [ + { "scope": "product", "format_option_id": "display_image_300x250" } + ], + "budget": 12000, + "context": { + "buyer_ref": "line-001" + } + }, + { + "product_id": "prod_weekend_video", + "pricing_option_id": "cpm_usd_auction", + "format_option_refs": [ + { "scope": "product", "format_option_id": "video_hosted_30s" } + ], + "budget": 18000, + "context": { + "buyer_ref": "line-002" + } + } + ], + "start_time": "2026-07-01T00:00:00Z", + "end_time": "2026-07-31T23:59:59Z" +} +``` + +--- + +## 8. Implement `sync_accounts` + +v3 buyers establish billing relationships before placing buys. Your agent must accept `sync_accounts` calls and return an account reference that buyers include on subsequent requests. + +<Card title="Accounts Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + Account provisioning, lifecycle, and the sync_accounts task. +</Card> + +--- + +## After these 8 items + +Once these are in place, run storyboard testing against your agent. The existing tracks (products, media buy, creative) validate v3 schemas in detail and will surface any remaining field-level issues. + +For the complete migration — including geo targeting, optimization goals, signals, audiences, and attribution — see the [full migration guide](/dist/docs/3.2.0-beta.4/reference/migration). diff --git a/dist/docs/3.2.0-beta.4/reference/privacy-considerations.mdx b/dist/docs/3.2.0-beta.4/reference/privacy-considerations.mdx new file mode 100644 index 0000000000..613231765b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/privacy-considerations.mdx @@ -0,0 +1,125 @@ +--- +title: Privacy Considerations +sidebarTitle: Privacy Considerations +description: "Cross-protocol privacy entry point for AdCP implementers, compliance reviewers, and CISOs — what each protocol carries, what it does not, and where implementers must handle privacy themselves." +"og:title": "AdCP — Privacy Considerations" +--- + +This page is the cross-protocol entry point for privacy in AdCP. It names the categories implementers and compliance reviewers need to think about, summarizes what each AdCP protocol carries and does not carry, and links to the deeper references. It does not replace any of them. + +If you need the deep architectural picture of a specific domain, follow the links. AdCP does not publish a Privacy Impact Assessment template; see [For DPOs and procurement reviewers](#for-dpos-and-procurement-reviewers) below for the inputs a deployer's DPO needs to assemble their own assessment. + +## What AdCP's privacy posture is — and isn't + +AdCP specifies a wire protocol between agents. It does not specify: + +- End-user authentication or consent capture (handled upstream) +- Data-subject rights workflows (the buyer's responsibility) +- Data residency (a configuration and contract property of individual agents) +- Retention policy (the operator's responsibility) + +What AdCP does specify is the *shape* of what each protocol carries, the prohibitions on what it must not carry, and the structural separations that apply where the protocol is privacy-sensitive. Implementers are responsible for privacy controls at every boundary the protocol does not itself enforce. + +## Privacy posture by domain + +AdCP's privacy guarantees are not uniform across protocols. See [Privacy posture across domains](/dist/docs/3.2.0-beta.4/protocol/architecture#privacy-posture-across-domains) for the full table. Summary: + +- **Trusted Match Protocol (TMP)** — **structural separation**. Context Match and Identity Match run on separated code paths; schemas prohibit crossover; TEE attestation (when deployed) makes the separation independently verifiable. See [TMP privacy architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture). +- **Media Buy, Creative, Signals, Governance** — **contractual confidentiality**. The parties exchanging data are bound by the account's terms, not by protocol-level separation. +- **Sponsored Intelligence** — **per-session consent**. The user consents per session; networks that route sessions may see routing metadata. See [SI networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks). +- **Brand / Registry** — **public by design**. `brand.json` is discoverable at `/.well-known/brand.json`; the registry exposes public entity resolution. + +Governance gating (via campaign governance) operates independently of privacy posture: it can require human approval on budget, policy, or brand-safety grounds, but it does not change what data the underlying domain carries. + +## Privacy categories to think about + +### Data minimization + +AdCP minimizes the data that crosses protocol boundaries where it can: + +- When using `hashed_email` or `hashed_phone` in `sync_audiences`, buyers MUST SHA-256 hash normalized values before transport — the schemas for those fields do not accept cleartext. Non-hashed identifier types exist for other spaces; implementers MUST choose a hashed type when transporting email or phone. +- TMP Context Match carries no user identity; TMP Identity Match carries no page context. Both are enforced at the schema level. +- `governance_context` tokens can use `policy_decision_hash` instead of inline decisions when the buyer's compliance posture is sensitive. + +Implementers SHOULD review whether any fields they add to `ext` or `context` re-introduce data that the protocol minimized out. + +### Unsalted hashed identifiers are pseudonymous, not anonymous + +`hashed_email` and `hashed_phone` are **pseudonymous PII**. The email and E.164 namespaces are small enough that precomputed dictionaries and commercial reverse-lookup services recover plaintext from an unsalted SHA-256 hash; a hashed identifier is not equivalent to an anonymized identifier. + +Normative consequences: + +- Operator documentation, data-processing agreements, and compliance disclosures MUST NOT describe unsalted `hashed_email` or `hashed_phone` as "privacy-preserving", "anonymous", or "de-identified". Hashing is data minimization at the transport boundary, not anonymization. +- `hashed_email` and `hashed_phone` MUST be treated as PII for retention, consent, access control, data-subject-access (GDPR Art. 15), and erasure (GDPR Art. 17) workflows. A subject-access request for an email address MUST resolve to records keyed by its hash where the operator retains the corresponding hashed record. (An operator that genuinely cannot re-identify — e.g., that stores only aggregated match counts or bloom-filter membership bits — may invoke GDPR Art. 11; that bar is higher than "we hashed it.") +- Matching the above hashes against a seller's identity graph is a processing activity that needs its own lawful basis — hashing does not remove that requirement. + +A claim that a matching protocol is "privacy-preserving" requires a recognized primitive — salted hashing with operator-held secrets, HMAC with a cross-party shared secret, PSI (Private Set Intersection), or a TEE with attested separation. AdCP 3.0 does not define a salted or HMAC variant of `hashed_email`/`hashed_phone`; a standardized salted variant is tracked for a future minor release. Until then, implementers that need a privacy-preserving match MUST layer one of the above primitives above the protocol (e.g., clean-room processing, PAIR, or identity-graph tokenization as performed by UID2/RampID operators). + +### Separation + +Where two facts combined would create a privacy harm (e.g., identity + context at impression time), the protocol separates them. Structural separation is TMP-specific; other domains rely on contractual separation. + +### Transport + +All AdCP traffic is over HTTPS (see [Security — Identity](/dist/docs/3.2.0-beta.4/building/concepts/security-model#layer-1-identity--who-is-actually-calling)). Signed requests (RFC 9421) are normative in 3.1. Transport security is a baseline assumption; the protocol builds on top of it. + +### Residency + +Residency is not carried in the protocol. An agent's residency posture is a configuration and a contract property — implementers MUST document it, and operators MUST configure it to meet EU / UK / other regional requirements where applicable. See the [Security Model — data handling and subprocessors checklist](/dist/docs/3.2.0-beta.4/building/concepts/security-model#data-handling-and-subprocessors). + +### Retention + +The protocol describes cache retention for idempotency (see [Layer 3: Idempotency](/dist/docs/3.2.0-beta.4/building/concepts/security-model#layer-3-idempotency--at-most-once-execution)) and audit-log retention for governance (see [Layer 5: Auditability](/dist/docs/3.2.0-beta.4/building/concepts/security-model#layer-5-auditability--the-trail-survives-the-transaction)). Retention of other data — creative assets, campaign state, LLM prompts, conversation logs — is the operator's responsibility. + +### Processor / controller roles + +Who is a controller and who is a processor depends on the deployment. AdCP does not assign roles at the protocol layer. The typical allocation: + +- The buyer is typically a controller for the campaign they run. +- A governance agent acts as a processor for the controller(s) it serves and often has **multi-customer blast radius** — treat it accordingly in due diligence. +- A seller may be a controller for its own inventory data and a processor for buyer-scoped campaign data. +- A TMP Router operator is typically a processor for both sides, operating under the separation guarantees described in [TMP privacy architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture). + +For TMP-specific deployments, see [TMP Data Protection Roles](/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles) — a deeper analysis covering the buyer agent's conditional processor position, the SSP's role when the context+identity join is delegated, identity provider risk shapes, and post-impression flows that fall outside TMP's separation guarantees. + +Operators MUST document their role for each data flow and carry a DPA with each counterparty that reflects it. + +### Subprocessors and LLM providers + +Every LLM-powered agent has subprocessors: the LLM provider itself, plus any retrieval services, embeddings stores, or tool integrations. The DPA with each provider must be explicit about whether prompts, brand assets, first-party signals, or creative metadata may be retained or used for model training. See the [Security Model — data handling checklist](/dist/docs/3.2.0-beta.4/building/concepts/security-model#data-handling-and-subprocessors). + +LLM subprocessors also introduce an **integrity** risk, not only a confidentiality one: untrusted text in briefs, creative metadata, or tool outputs can carry prompt-injection payloads that cause the agent to leak credentials, issue unauthorized tool calls, or tamper with outputs. See [Threats specific to agentic advertising](/dist/docs/3.2.0-beta.4/building/concepts/security-model#threats-specific-to-agentic-advertising). This is out of scope for the protocol but in scope for every operator. + +## Boundaries implementers must handle + +The protocol does not enforce these; the operator must: + +- **End-user consent and data-subject rights** (GDPR Art. 15–22, CCPA). +- **Purpose limitation** beyond what field shapes enforce. +- **Cross-border data transfer controls** (SCCs, adequacy, UK IDTA). +- **PII discovery in unstructured fields** (creative metadata, chat logs, brief text). AdCP does not scan `ext`, `context`, brief prose, or creative assets for PII. +- **Log retention and PII redaction** in logs. +- **Prompt-injection containment** for LLM-powered agents processing untrusted text. + +## For DPOs and procurement reviewers + +AdCP does not publish a Privacy Impact Assessment template. A PIA is a deployer artifact owned by the data controller and their counsel — every deployment's purpose, lawful basis, retention, residency, and subprocessor chain differs, and those are the parts that matter for a GDPR Art. 35 assessment. The protocol itself is not the controller and cannot stand in for that analysis. + +What AdCP provides instead is the set of protocol-level inputs a DPO needs to describe the AdCP portion of their processing. When assembling a PIA for a deployment that uses AdCP, the relevant inputs are: + +- **What each protocol carries and prohibits** — the [Privacy posture by domain](#privacy-posture-by-domain) summary above, plus the deep references linked from each domain. +- **Controller / processor allocation** — the [Processor / controller roles](#processor--controller-roles) section above. Operators still MUST document their role per data flow and carry a DPA with each counterparty. +- **Structural separation (TMP only)** — [TMP Privacy Architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture), including TEE attestation when deployed. +- **Threat model and operational controls** — the [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model), including the [data handling and subprocessors checklist](/dist/docs/3.2.0-beta.4/building/concepts/security-model#data-handling-and-subprocessors). +- **LLM-provider subprocessor considerations** — the [Subprocessors and LLM providers](#subprocessors-and-llm-providers) section above, which covers both confidentiality (retention, training) and integrity (prompt injection). +- **Explicit non-goals** — [Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations), which names what the protocol does not do (no protocol-level PII transport, no residency mechanism, no breach-notification SLA, etc.) so the deployer knows which controls they own. + +Residency, retention, consent capture, data-subject rights workflows, cross-border transfer mechanisms, and purpose limitation are deployment concerns — AdCP does not enforce them at the protocol layer, and a template could not meaningfully cover them without becoming deployment-specific. + +## Related references + +- **[TMP Privacy Architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture)** — the structural separation model, with TEE attestation details +- **[Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model)** — threat model, layered defense, deployment checklist +- **[Security (implementation reference)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security)** — normative rules for auth, idempotency, SSRF, governance verification +- **[Privacy posture across domains](/dist/docs/3.2.0-beta.4/protocol/architecture#privacy-posture-across-domains)** — the summary table +- **[Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations)** — what the protocol does not do on privacy diff --git a/dist/docs/3.2.0-beta.4/reference/release-notes.mdx b/dist/docs/3.2.0-beta.4/reference/release-notes.mdx new file mode 100644 index 0000000000..418563e981 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/release-notes.mdx @@ -0,0 +1,1660 @@ +--- +title: Release Notes +description: "Authoritative AdCP version-by-version release record with cumulative change detail, migration guidance, and per-version adoption notes." +"og:title": "AdCP — Release Notes" +--- + + +Authoritative version-by-version release record for AdCP, with cumulative change detail, migration guidance, and per-version adoption notes. For the 3.2 adopter overview, see [What's New in AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2); for the upgrade checklist, see [Migrating from 3.1 to 3.2](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2); and for prerelease artifact and SDK timing, see the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). For the at-a-glance status of every published version, see [Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions). For source-level changelogs, see [CHANGELOG.md](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md). For version stability, schema-change scope, and the 3.x guarantees see [Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning). For v2 end-of-life see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). + +--- + +## Version 3.2.0 + +**Status:** Beta cycle — minor release targeting the 3.2.0 milestone. Beta.0 was the protocol-first cut used as the canonical input for SDK work. Beta.3 is the current checkpoint, with exact TypeScript support in `@adcp/sdk@14.0.0-beta.4`. Stable wire shapes remain backward compatible except for the ratified `media_buy_status` cleanup and request-signature encoding migration described below; explicitly experimental surfaces may carry noticed changes under the [experimental-status contract](/dist/docs/3.2.0-beta.4/reference/experimental-status). + +### Beta checkpoints + +| Release | Purpose | SDK posture | +|---|---|---| +| `3.2.0-beta.0` | Publish signed schemas, compliance assets, skills, and manifest for implementation feedback | SDK support follows this cut; beta.0 is not an SDK-backed certification target | +| `3.2.0-beta.1` | Incorporate the first round of integration corrections | Superseded by beta.2 for new beta testing | +| `3.2.0-beta.2` | Publish the second integration checkpoint | Superseded by beta.3 for new beta testing | +| `3.2.0-beta.3` | Publish the current corrected protocol checkpoint | Exact TypeScript support in `@adcp/sdk@14.0.0-beta.4`; Python and Go remain pending | + +Each beta is immutable. The `3.2-beta` documentation selector advances to the latest beta, while pinned protocol, schema, compliance, and documentation artifacts remain available. See the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). + +### 3.2 feature index + +- **Media buying:** compact listing, immutable proposal negotiation, direct purchase, proposal acceptance, operational control, seller-optimized budgets and bidding, atomic total-budget changes, revenue-share pricing, creative rotation, warnings, and durable indicators. +- **Targeting and audiences:** targeting-aware discovery, portable demographic predicates, named places, value-aware regions, browser families, property exclusions, audience evidence, and exact package readback. +- **Creative:** canonical capability discovery, image pixel density and rendition sets, localization, async preview opt-in, audio loudness, VAST 4.3 and validation levels, accessibility detail, and synthetic depiction provenance. +- **Security and evidence:** required body binding for 3.2 request-signing profiles, OAuth discovery grading, portable attestations, rights and signal evidence, signed brand-response verification, and safer secured asset access. +- **Operations and measurement:** capability/account change notifications, snapshot-and-log repair, demographic and spot delivery, metric accountability, deterministic filters, fixture resolution, and capability-selected runtime projections. +- **Experimental surfaces:** cross-role campaign governance revisions and Trusted Match authentication, routing, attribution, and creative-data cleanup under their existing experimental declarations. + +### Adopter action + +| If you are… | Before advertising or sending 3.2 | +|---|---| +| A buyer | Discover the exact prerelease, gate every compact tool and optional field on capabilities, and keep a 3.1 route during beta. | +| A seller or service | Advertise and echo the exact prerelease served, emit canonical status/retry shapes, and declare only capabilities actually implemented. | +| A signing implementation | Require `content-digest` coverage for every signed request body on a 3.2 signing endpoint. | +| A creative implementation | Prefer canonical capability and product format discovery; isolate named-format conversion at compatibility boundaries. | +| An SDK maintainer | Generate from the current signed beta.3 tarball, publish an exact support statement, and route accepted protocol corrections into a later beta. | +| A compliance operator | Pair `@adcp/sdk@14.0.0-beta.4` with beta.3 for TypeScript testing; do not infer Python or Go support or issue a 3.2 badge from beta.3. | + +### Required 3.2 migrations + +- `create_media_buy` and `update_media_buy` success bodies use `media_buy_status`; root `status` is the task-envelope state. See [Migrating to `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status). +- A 3.2 request-signing profile advertises `covers_content_digest: "required"`; every accepted signature on a body-bearing request covers the digest. +- 3.2 request `Signature` and `Content-Digest` values use RFC 8941 padded standard Base64 `sf-binary`, not the 3.0/3.1 unpadded Base64URL override. Webhook v1 retains its separately routed legacy encoding. +- 3.2 producers emit integer `error.retry_after` seconds. +- A 3.2 verification claim requires release advertisement and response echo even though those fields remain schema-optional for 3.x compatibility. + +### Compact product and MediaBuy lifecycle (#6115) + +AdCP 3.2 adds `list_products`, `request_proposals`, `refine_proposals`, `decline_proposals`, `buy_products`, `accept_proposal`, and `control_media_buy` as compact, task-specific contracts. The broad `get_products`, `create_media_buy`, and `update_media_buy` facades remain functional throughout 3.x but are deprecated for new integrations. + +- `list_products` is a synchronous, naturally idempotent product-offer read. +- `request_proposals` creates immutable draft proposals from a brief and optional listed product IDs. +- `refine_proposals` creates draft revisions or atomically finalizes drafts into committed inventory holds; `decline_proposals` records terminal buyer feedback and prevents later execution. +- `buy_products` accepts published product offers directly; `accept_proposal` applies new-buy, amendment, or negotiated-cancellation proposals; `control_media_buy` handles revision-checked operational controls inside accepted terms. +- Canonical proposals carry typed `commercial_terms` plus an RFC 8785 SHA-256 `terms_digest`. Changed terms mint a new `proposal_id`; accepted MediaBuys expose the current proposal pointer for restart-safe refinement. +- New purchase and control tools never accept inline creatives. Creative bodies and assignments use the dedicated creative lifecycle. +- Optional shared `opportunity` context connects proposal request, refinement, decline, and purchase; proposal snapshots retain the association without making it proposal identity. +- Each stateful task requires an idempotency key and retains its own replay identity. Retries use the same tool name. +- Brand input is an identity-only key, catalogs are compact selections, and offer filters are separated from exact targeting and future targeting support. +- `media_buy.lifecycle_tools` advertises the compact product and MediaBuy lifecycle. Its absence means callers use the 3.x compatibility facades. +- The release manifest labels each legacy fallback as `direct`, `orchestrated`, or `none`, so SDKs can expose the split API without claiming lossy calls are aliases. +- `task_result_resolution` maps each tracked `task_type` to its tool `response_schema` or a retained 3.x event override, letting SDKs generate `TaskStatus<Result>` without embedding the global async-result union in `getTaskStatus`. + +New integrations SHOULD use the compact tools. Existing integrations do not need an immediate migration: the three compatibility facades retain their 3.x contracts, and sellers MUST honor replay protection whenever a key is supplied. + +### Inline asset-access credentials deprecated (#5698) + +`service_account.credentials` in secured content-artifact access is deprecated. New producers must omit it. For one-off delivery, use an asset-scoped, short-lived signed URL; established integrations may use the fetching component's pre-authorized workload identity, and origins that require an Authorization header may use a short-lived, asset-scoped bearer token. + +The legacy field remains schema-valid for 3.x wire compatibility. Consumers must not activate received credentials automatically: they may process the legacy form only for an explicitly allowlisted peer and otherwise must reject or quarantine it. The field is eligible for removal in 4.0 or later only after both deprecation-policy gates are satisfied: at least six months from publication of this notice and at least one full release cycle. See [Migrating secured asset access](/dist/docs/3.2.0-beta.4/reference/migration/asset-access) and [#5699](https://github.com/adcontextprotocol/adcp/issues/5699) for removal tracking. + +### Cross-role governance enforcement + +**Breaking-change notice for the experimental governance-task surface. The implementation may merge during 3.2 development; the beta-to-GA period provides the six-week notice window before production availability. This notice does not relax authentication, transport, or core security requirements: authenticated caller binding follows the stable version-level contract.** + +The experimental campaign-governance surface gains task-scoped service enforcement, opaque plan binding, intent-only conditions negotiation, authenticated caller binding, phase-correct media-buy identifiers, and governance-authoritative outcome accounting. Modern responses carry `check_type`; a legacy response arm remains valid for 3.x migration. See the [cross-role governance migration guide](/dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement) and [#5944](https://github.com/adcontextprotocol/adcp/issues/5944). + +### Creative-format discovery deprecation posture (#5779) + +`list_creative_formats` is **deprecated for new discovery**. Prefer: + +| Role | Preferred 3.2+ discovery | Notes | +|---|---|---| +| Sales agents | `get_products.format_options[]` | Product-level accepted formats | +| Creative agents | `get_adcp_capabilities.creative.supported_formats` | Producible-format catalog | + +The v1 task remains **functional through 4.x** on its own compatibility schedule. Its lifecycle is not coupled to exact plural `format_ids`, which is deprecated in 3.2 and removed in 4.0. + +**Not deprecated by this change:** + +- [`list_creatives`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives) remains the creative-library query task. +- Singular `format_id` and named-format definitions retain their separate compatibility schedules; exact plural `format_ids` fields are removed in 4.0. + +**Consumer conformance:** buyers and other consumers MUST NOT assume `list_creative_formats` is present on 3.2+ agents when equivalent canonical-format discovery is declared. + +**Compliance:** current 3.2 sales and creative lifecycle storyboards use canonical product declarations and `creative.supported_formats`. Compatibility-only storyboards that exercise `list_creative_formats` are gated with `requires_tool`, producing an explicit non-failing `missing_tool` skip when an agent does not expose the deprecated task. + +See [`list_creative_formats`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats), [Creative Protocol specification § Conformance](/dist/docs/3.2.0-beta.4/creative/specification#conformance), and [Implementing creative agents](/dist/docs/3.2.0-beta.4/creative/implementing-creative-agents). + +--- + +## Version 3.1.3 — withdrawn + +**Status:** Withdrawn. Do not use 3.1.3 as an implementation target. Use 3.1.2 for the supported 3.1 line. + +3.1.3 added `filters.publisher_domain` to the stable `get_products` request schema in a patch release. New stable protocol fields are minor-version changes under the AdCP release contract. The reference implementation also accepted `publisher_domains[]` on products even though the product schema explicitly permits only singular `publisher_domain` selectors. + +The `v3.1.3` tag, schemas, compliance bundles, protocol tarball, signatures, and checksums remain available and immutable for auditability. Public release guidance points back to 3.1.2. A corrected publisher-domain discovery design may return in a future minor release. + +--- + +## Version 3.1.0 + +**Status:** General availability — minor release. The stable wire negotiation value is `"3.1"`. The published 3.0.x line remains supported for existing integrations; new 3.1 integrations should pin to `"3.1"` and read `supported_versions` before sending 3.1-only fields. + +For adoption-oriented framing before the full change list, start with [What's New in AdCP 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1). For a role-based upgrade checklist, use [Migrating from 3.0 to 3.1](/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1). + +**Headline:** **Production-hardening for real agent operations.** 3.1 adds distributed `brand.json`, release-precision version negotiation, designated brand response signing, canonical creative formats, vendor-attested optimization, wholesale-feed mirroring, dependency-impact observability, proposal-lifecycle precision, and per-version verification badges. A brand can now publish its **own** canonical document on its own domain while the corporate house declares ownership via a portfolio pointer. The hierarchy stays one level deep — only houses declare ownership — and trust between a leaf and a house resolves via mutual assertion (both sides reciprocate). Identity attributes (logos, colors, tone, tagline) trust on the leaf's TLS alone; relationship trust (governance propagation, billable inclusion) gates on the reciprocal entry. + +Additive over 3.0 — every existing brand.json publisher continues to validate unchanged. + +### 3.1 feature index + +- **Versioning and validation:** release-precision `adcp_version`, stable `"3.1"` wire pin, `supported_versions`, envelope echo, and version-scoped badges. +- **Brand trust:** distributed `brand.json`, `brand_refs[]`, typed brand constraints, authorized-operator scoping, and signed brand-verification responses. +- **Signals and wholesale feeds:** enriched signal definitions, `SignalRef`, wholesale signal enumeration, product-scoped signal targeting, conditional fetch, `cache_scope`, and feed webhooks. +- **Creative formats and generation:** canonical `format_kind`, publisher catalogs, hosted audio/video `duration_ms_range`, published-post references, `list_transformers`, fan-out, evaluator ranking over creative features, spend controls, and per-output pricing receipts. +- **Media-buy operations:** dependency impairments, buyer-visible webhook activity, action discovery, proposal cleanup, currency-scoped discovery, sponsored/social placement fields, and SI availability status. +- **Measurement, billing, and runtime hardening:** vendor-attested goals, reach-window semantics, delivery/usage finality, idempotency on state-changing and explicitly keyed task calls, open error-code decoding, auth tightening, webhook operation-id echo, and flat MCP envelope tolerance. +- **SDK and compliance readiness:** named codegen schemas, async-response refs, open-payload markers, capability-gated storyboards, packaged compliance closure, and release-artifact drift checks. + +<Info> +**Upgrading from 3.0.x?** No code changes are required to remain on stable `"3.0"`. To claim or consume 3.1, follow the [3.0 to 3.1 migration guide](/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1): pin `"3.1"` on the wire, add read-task idempotency keys if you are hand-rolled, and tolerate envelope fields. The one publisher-visible behavior change: free-text values for `trademarks[].status` or `trademarks[].countries` now validate against the typed enum / ISO 3166-1 alpha-2 — non-conforming values surface as schema errors. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing required to remain on 3.0. Stable schemas remain wire-compatible with 3.0.0. Move your SDK pin to `"3.1"` when you are ready to consume the new fields. | +| A brand on the existing inline `brands[]` shape | Nothing. Pull-based migration — you move out of `brands[]` only when you decide to self-publish. | +| A sub-brand team that wants self-publish authority | Stand up `/.well-known/brand.json` at your own domain as a Brand Canonical Document. Declare `house_domain: "<parent-house>"`. Ask the parent house team to add `{ domain, brand_id, effective_at }` to their `brand_refs[]`. Mutual assertion completes on the next crawl. | +| A house running the AAO crawler today (or any consumer that walks brand hierarchy) | Read [`brand.json` § Mutual-assertion trust model](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#mutual-assertion-trust-model). The 3-tier read — identity-trusted vs relationship-trusted vs unverified — replaces the binary "is this in my portfolio" check for `brand_refs[]` pointer children. The 180-day TTL is already AAO's reference behavior. | +| A publisher using free-text `status` or `countries` on `trademarks[]` entries | Move `status` values to the enum (`active`, `pending`, `abandoned`, `cancelled`, `expired`) and `countries` values to ISO 3166-1 alpha-2 codes. The fields were untyped via `additionalProperties: true`; they're now typed. Non-conforming values surface validation errors. | +| An agency named in a house's `managed_by` claim | Nothing required at the protocol level. Aggregation by `managed_by` ("show me everything BBH manages") is the intended use; trust is not extended through it. Manager-side reciprocation is tracked as a follow-up. | +| Building an SDK or in-house client against AdCP 3.x | Pin to an exact release value via the constructor (`adcpVersion: "3.1"` / `adcp_version="3.1"` / `WithAdcpVersion("3.1")`) and emit `adcp_version` on every request alongside the `adcp_major_version` mirror. Read `supported_versions` from the seller's `get_adcp_capabilities` response; expect a `VERSION_UNSUPPORTED` typed error when your pin isn't in the list. See [Release-precision version negotiation](#release-precision-version-negotiation--pin-your-release-3493) below. | +| A brand agent implementing `verify_brand_claim` or `verify_brand_claims` | Return the required `signed_response` payload-envelope JWS on success. Publish and rotate a per-brand `adcp_use: "response-signing"` JWK, bind the signature to the designated task, resolved brand tenant, responding agent URL, caller/request hash, and `iat`/`exp` window, and retain bulk audit evidence with the original batch request. | +| A seller using proposals or action discovery | Use `proposal_status` as the per-proposal source of truth. Treat `finalize` as seller commitment, `create_media_buy(proposal_id)` as buyer execution, and `supports_proposals` as a conformance declaration only. Do not emit the pre-GA `requires_proposal` action mode; return `REQUOTE_REQUIRED` when an `update_media_buy` request exceeds the current quoted envelope. Buyers with cached prerelease action metadata containing `requires_proposal` must invalidate it and re-read the relevant proposal, product, or buy surface rather than mapping it to `requires_approval`. | +| A signals agent or buyer orchestrator | Treat `signal-owned` as discovery-only unless the agent also claims marketplace/activation support. `signal-marketplace` requires `activate_signal`; owned-signal conformance no longer requires marketplace activation. Buyers should gate activation calls on the agent's declared specialism/capability, not on the existence of `get_signals` alone. | +| A seller or creative agent declaring hosted audio/video formats | Use `duration_ms_exact` for fixed-duration slots and `duration_ms_range` for bounded or one-sided ranges. `[null, 60000]` means "up to 60 seconds"; `[15000, null]` means "at least 15 seconds"; `[null, null]` is invalid. Do not add separate bare min/max duration fields. | +| Maintaining compliance bundles, SDK fixtures, or protocol tarballs | Keep storyboard references inside the packaged `/compliance/{version}/` tree. The build now fails when an authored vector or test-kit reference cannot resolve inside the packaged compliance bundle, including webhook receiver envelope vectors. | + +### Distributed `brand.json` — new 5th variant and `brand_refs[]` (#4505, closes #3409 / #3533 / #3764 / #3910 / #3909) + +**New variant — Brand Canonical Document.** A self-published per-brand document carrying the brand's identity attributes (logos, colors, tone, visual guidelines, etc.) plus optional `house_domain` pointer. Standalone brands (no parent) omit the pointer. Excludes top-level house-only and redirect-variant fields to disambiguate against the other four variants. + +**House Portfolio additions — `brand_refs[]`.** Portfolio entries for brands whose canonical documents live elsewhere. Each entry has shape `{ domain, brand_id, managed_by?, effective_at? }`. A house may mix inline `brands[]` (parent owns the data) and pointer `brand_refs[]` (child owns the data) freely; a given `brand_id` appears in exactly one. + +**Mutual-assertion trust model.** A leaf says `house_domain: A`; A's `brand_refs[]` includes the leaf. Both halves are crawler-readable from well-known URLs. Same shape as IAB's `ads.txt` / `sellers.json` / `app-ads.txt` reciprocal-publication pattern. Identity is TLS-only; relationships are mutual-assertion-gated. A leaf-only edge keeps identity trust and triggers a self-healing notification SHOULD to the house's `contact.email`. + +**`managed_by` is a directory field.** House-declared, non-trust-bearing. Aggregation across houses ("show me everything BBH manages") is the intended use — it's the operational directory a buyer-DSP wants. Consumers MUST NOT use it for trust or authorization decisions; that line still flows through mutual assertion between leaf and house. + +**Typed brand-level trademarks.** New `#/definitions/trademark` extracts the inline house-portfolio shape (`{registry, number, mark}`) as a named definition with optional `status`, `license_type`, `licensor_domain` (when `license_type=licensed_in`), `countries`, and `nice_classes` (Nice Classification for cross-industry disambiguation — Delta-airline vs Delta-faucet). Both inline `brands[]` entries and self-publishing Brand Canonical Documents now typed-publish their marks. House-level `trademarks[]` remains for corporate-level marks; resolution between the two is union. + +**Compliance fields strictest-of.** For governance fields (`data_subject_contestation`, `compliance_policies`, `policy_categories`, audience exclusions, regulated-category flags, brand-level `disclaimers[]`), the resolved value is the union/strictest of house-level and brand-level. Brand-level publishers cannot weaken house-level assertions; they can only add stricter constraints. Identity fields stay brand-wins; this asymmetry is intentional — brand teams own brand identity, legal owns compliance. + +**Out-of-scope cases** documented in the spec: JVs with two parents (Hulu pre-Disney), PE-rollups wanting opacity, jurisdictional governance divergence. These belong in governance / corporate-structure specs, not brand.json — see [follow-ups](https://github.com/adcontextprotocol/adcp/issues/4522) and [#4523](https://github.com/adcontextprotocol/adcp/issues/4523) for the design discussions. + +**Follow-ups tracking related work:** +- [#4521](https://github.com/adcontextprotocol/adcp/issues/4521) — typed `verification_endpoint` for the self-healing loop (today: email) +- [#4522](https://github.com/adcontextprotocol/adcp/issues/4522) — JV / two-parent shape +- [#4523](https://github.com/adcontextprotocol/adcp/issues/4523) — PE-opacity vs mutual-assertion tradeoff +- [#4524](https://github.com/adcontextprotocol/adcp/issues/4524) — manager-edge reciprocation for `managed_by` + +See [`brand.json` § Distributed publishing](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) for the full normative spec including resolution algorithm, Conformance MUSTs, adoption path, and prior art. + +### Delivery reporting — `reach_window` and `viewability.viewed_seconds` (#4618, closes #4580, partial #4579) + +**`reach_window` on `delivery-metrics.json`.** Declares the measurement window for reported `reach` and `frequency`. Three kinds: `cumulative` (uniques since campaign start), `period` (uniques within a single non-overlapping reporting period, e.g., daily snapshot), `rolling` (uniques within a trailing window, e.g., trailing-7-day). When `kind` is `period` or `rolling`, the `period: Duration` field is required. When `reach_window` is omitted, the window is unspecified — buyers MUST NOT sum `reach` across rows or compare/average `frequency` across rows. Optional but strongly recommended whenever `reach` is present; the prior `dependencies` rule already requires `reach_unit` alongside `reach`. + +**`viewability.viewed_seconds`.** New field on the existing `viewability` block — average in-view duration per measurable impression. Reporting-side counterpart to the `viewed_seconds` optimization goal. Nested into the viewability block (not a top-level scalar) because the viewability `standard` governs the in-view threshold for both `viewable_rate` and `viewed_seconds`, and they share the same `measurable_impressions` denominator and vendor. + +**Attention metrics — vendor binding.** `attention_seconds` and `attention_score` are deliberately *not* added as graduated delivery scalars. The reporting path is `vendor_metric_values[]` keyed on `(vendor, metric_id)`. See the [`#4579` close note](https://github.com/adcontextprotocol/adcp/issues/4579#issuecomment-4470761844) for the routing rationale and the [measurement taxonomy](/dist/docs/3.2.0-beta.4/measurement/taxonomy) for the Tier 0 / Tier 1 graduation policy that drove the split. + +Additive over 3.0. Existing sellers continue to validate; buyers ignoring the new fields keep working. Buyers SHOULD upgrade reach-summation logic to gate on `reach_window` semantics. + +### Signal definitions — enrichment, taxonomy, and product targeting follow-up + +Signal definitions in adagents.json `signals[]` can now carry definition-side enrichment for taxonomy mappings, DTS-style source and methodology disclosure, modeling metadata, jurisdiction and consent applicability, and per-signal data-subject-rights routing. Taxonomy remains metadata on `SignalDefinition`, not a new `value_type`; package targeting continues to use binary, categorical, and numeric value grammar. Categorical signals can map their `allowed_values[]` strings to stable taxonomy nodes through `taxonomy.value_mappings`. Signal definitions do not declare Global Privacy Control support; consumers must not infer GPC handling from `data_subject_rights`. + +Modeled signals now have explicit validation hooks: `methodology: "modeled"` and `audience_expansion: true` require `modeling`; modeled training data jurisdictions must be non-empty; and a required modeling disclosure must name the jurisdictions where the disclosure applies. + +Product signal targeting also clarifies the broad-feed workflow. Products may set `signal_targeting_allowed: true` and omit inline `signal_targeting_options` instead of duplicating a wholesale signal feed inline. Buyers use `get_signals` for candidate discovery, then confirm product eligibility and composability with `get_products.filters.signal_targeting` or a product-specific `get_products` response before sending `packages[].targeting_overlay.signal_targeting_groups`. + +### Brand signing, proposal lifecycle, signals conformance, and packaged compliance + +**Brand designated-task response signing.** `verify_brand_claim` and `verify_brand_claims` success responses now require `signed_response`, a payload-envelope JWS over the canonical task-body response. The envelope binds the response to the designated task, resolved `brand_domain`, responding `agent_url`, caller/request hash, and `iat`/`exp` freshness window. Verifiers resolve the `kid` to a published JWK with `adcp_use: "response-signing"` and reject mismatches between the unsigned response fields and `signed_response.payload.response`. This is ordinary JWS over the JCS-canonicalized payload, not general RFC 9421 transport response signing. See [Brand Protocol § verify_brand_claim](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim#trust-model) and [Security § Designated-task response signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing). PR [#5192](https://github.com/adcontextprotocol/adcp/pull/5192). + +**Proposal lifecycle and action-mode cleanup.** `proposal_status` is the per-proposal source of truth: `draft` requires `get_products` refine/finalize before create, `committed` can be executed with `create_media_buy(proposal_id)` before `expires_at`, and absent status is the legacy ready-to-buy path. `finalize` is seller commitment to firm pricing, terms, and hold; `create_media_buy(proposal_id)` is buyer acceptance/execution. `supports_proposals` remains a conformance grading declaration, not buyer routing logic for an individual proposal. The pre-GA `requires_proposal` action mode is removed; sellers return `REQUOTE_REQUIRED` when an `update_media_buy` request exceeds the current quoted envelope. Buyers with cached prerelease metadata containing `requires_proposal` treat it as unknown: proposal executability must be re-read from `Proposal.proposal_status`, product action templates from `allowed_actions[]`, and buy runtime action state from `available_actions[]`. 3.1 does not define an amendment-quote artifact for `update_media_buy`. + +**Measurement catalog remains experimental.** The `measurement` capability block is marked `x-status: experimental`. Agents implementing metric-catalog discovery declare `measurement.core` in `experimental_features`; buyers should treat measurement vendor catalog discovery as experimental while the task surface and stable compliance baseline remain unfrozen. + +**Signals conformance is split by obligation.** Baseline signals and `signal-owned` conformance are discovery-only and require `get_signals`. Activation is required for `signal-marketplace` and other activation-capable claims. Buyers should not infer `activate_signal` support from first-party signal discovery alone. + +**Signals privacy posture cleanup.** The pre-GA `data_subject_rights.gpc_honored` field is not part of signal-level rights routing. Global Privacy Control is a serve-time publisher/bidstream concern, not per-signal DSR routing metadata. Projected `consent_basis` and `art9_basis` values on `get_signals` rows remain the provider-declared signal-definition posture; sellers and federating agents must not substitute their own processing basis when passing through another provider's signal. + +**Packaged compliance references are closed.** Webhook receiver envelope vectors now live under the versioned compliance tree, and release validation fails if storyboard vector/test-kit references do not resolve inside the packaged compliance bundle or protocol tarball. This keeps public `/compliance/{version}/` artifacts self-contained. + +### Canonical formats, badges, and discovery precision + +**Creative-agent canonical build capabilities.** Creative agents declare what they can produce via `creative.supported_formats[]` on `get_adcp_capabilities`. Every targetable entry carries an agent-local stable `capability_id`; buyers pass that ID as `target_capability_id` in `build_creative`. This is intentionally separate from media-buy `format_option_id`, which selects a product-local or publisher-catalog format option. The training agent and storyboards verify advertised capability IDs, canonical `format_kind` manifests, unsupported target rejection, and 3.0 compatibility gating. See [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) and [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative). + +**Canonical format satisfaction at create time.** Media-buy create/update/read surfaces now preserve package-level canonical selectors, including direct `format_kind`/`params` requests. The conformance suite tests that under-specified selectors fail closed instead of matching products by loose overlap. See [Product discovery](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products). + +**Per-version verification badge issuance.** Public verification runs issue badges for the selected public AdCP line. Badges are version-scoped, so 3.0 badges remain active independently of 3.1 badges. Buyers pinned to a specific AdCP release should read versioned badge data instead of flattening to a single current badge. See [Compliance catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) and [Versioning](/dist/docs/3.2.0-beta.4/reference/versioning). + +**Discovery precision additions.** Late schema additions are optional and additive: `video_placement_types` and `audio_distribution_types` on products, placements, and `get_products` filters; `pricing_currencies` on `get_products.filters` so buyers can restrict product discovery to media transaction currencies they can use; `ext` on discovery filters for vendor- or seller-specific criteria; time/scoped authorized operators on `brand.json`; and machine-readable brand guideline constraints. + +Sellers match `pricing_currencies` against product-level `pricing_options`, prune returned product pricing options to matching currencies, and exclude products whose mandatory product-scoped signal charges cannot be satisfied in the requested currencies. Optional signal or vendor add-on pricing is not pruned by this filter. See [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) and [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json). + +**Already in 3.1: package correlation across mixed seller versions.** 3.1 sellers echo request `packages[].product_id` on every response package that represents that requested package. Buyers that must interoperate with older sellers should also put opaque line-item correlation in `packages[].context` (for example `context.buyer_ref`) and treat it as a legacy-safe fallback when `product_id` is missing on package-bearing create/read responses and package-bearing webhook payloads. Webhook families that only carry `package_ids[]`, such as impairment notifications, require a follow-up `get_media_buys` read for package-level context. See [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) and [Media buy lifecycle § Health and dependency impairment](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle#health-and-dependency-impairment). + +**Upstream traffic attestation mode selection.** The upstream-traffic storyboards now lock the normative choice between raw and digest attestation modes so sellers cannot pass by emitting the wrong proof shape for the negotiated mode. See [Compliance catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). + +### Hosted audio/video duration ranges + +Hosted `audio_hosted` and `video_hosted` declarations now allow one-sided `duration_ms_range` values. `[null, 60000]` expresses "up to 60 seconds"; `[15000, null]` expresses "at least 15 seconds"; `[null, null]` remains invalid because at least one side must be bounded. + +This keeps duration constraints to two mechanisms: `duration_ms_exact` for fixed-duration inventory and `duration_ms_range` for bounded or one-sided ranges. A fixed 60-second spot can still use the equivalent closed range `[60000, 60000]`, but `duration_ms_exact: 60000` remains the preferred representation when the product truly requires one duration. Separate bare min/max duration fields were not added. + +Existing exact durations and closed ranges remain valid. PR [#5323](https://github.com/adcontextprotocol/adcp/pull/5323). + +### Wire conformance — idempotency & envelope tolerance (#4399 / #4399b, #2911, #4227, #4371, #4418, #4107, #4196, #4043) + +A bundle of normative clarifications that codify deployed behavior and close ambiguities that surfaced from real adopter integrations. + +**`get_products` accepts keyed replay (#4399b).** Sellers MUST accept `idempotency_key` on product discovery and apply the normal replay contract. AdCP 3.2 subsequently adds explicit read, recommendation, refinement, and finalization tools while preserving the optional-key legacy facade throughout 3.x. + +The cache holds read responses too from 3.1 onward — sellers MUST encrypt the cache tier at rest with the same controls applied to the underlying resource store. Operators with read-heavy buyer mixes SHOULD raise the rule-8 insert ceiling (sized originally against write-heavy traffic). See [security.mdx § Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency) for the full contract. + +**MCP envelope serialization is now normative — flat on the wire (#2911).** `core/protocol-envelope.json` drops `required: [status, payload]`; envelope fields and body fields are siblings at the root of the MCP tool response (no nested `payload:` key). Matches shipping SDK behavior. `context` joins the envelope as a first-class field — caller-supplied opaque echo (`/schemas/core/context.json`) distinct from `context_id` (server-managed session). A2A and REST serializations are normative in the envelope's `notes` array. + +**MCP tool wrappers MUST tolerate envelope fields (#4399).** Server-side counterpart to `additionalProperties: true` on request schemas. FastMCP/Pydantic strict signatures, Zod `.strict()`, and OpenAPI codegen with `additionalProperties: false` injected into input models are all non-conformant. See [mcp-guide.mdx § Server-side tool wrappers](/dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide#server-side-tool-wrappers-must-tolerate-envelope-fields). + +**`error.code` decoding is forward-compatible by contract (#4227).** Receivers MUST treat unknown `error.code` values as valid, read `error.recovery` (the normative wire carrier from 3.1 onward) for the recovery class, default to `transient` when absent (bounded by §Retry Logic). Senders SHOULD populate `error.recovery` on every error from 3.1 onward — receivers across version skew can't rely on `enumMetadata.recovery` for codes they don't know. Sellers upgrading 3.0.x → 3.1 SHOULD audit error-emit paths before bumping the advertised `adcp_version`. See [error-handling.mdx § Forward-compatible decoding](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#forward-compatible-decoding-normative). + +**Idempotency replay returns historical snapshots, not current state (#4371).** Rule 2's immutable-cache invariant extended explicitly to synchronous-success responses: state-tracking fields in cached payloads (`status`, `packages`, `affected_packages`, etc.) MUST NOT refresh on replay. Buyers reading state from a `replayed: true` response MUST re-read via the resource's read endpoint (`get_media_buys`, `list_accounts`, etc.) before acting on it. + +**`refine[]` finalize-exclusivity (#4107).** If any `refine[]` entry on `get_products` has `action: 'finalize'`, ALL entries MUST be proposal-scoped finalize entries. Mixing finalize with non-finalize entries is rejected with `INVALID_REQUEST`. Multi-finalize is atomic across proposal_ids; sellers that can't guarantee atomicity reject with `INVALID_REQUEST` (or `MULTI_FINALIZE_UNSUPPORTED` for a more specific signal). See [refinement guide § Finalize is exclusive](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement#finalize-is-exclusive-within-refine). + +**`notices` advisory channel on runner-output-contract (#4418).** New `step_result.notices` and `run_summary.notices` arrays — three severities (`info` / `deprecation` / `future_required`) with three canonical first-day codes (`signed_requests_specialism_deprecated`, `request_signing_required_in_4_0`, `legacy_hmac_fallback_removed_in_4_0`). Conformance dashboards will start surfacing 4.0 deprecation advisories as machine-readable notice codes rather than prose `skip.detail` strings. + +**Error catalog additions:** `PROPOSAL_NOT_FOUND` (#4043), `MULTI_FINALIZE_UNSUPPORTED` (#4107). Both forward-compat-safe under the #4227 decoding rule — 3.0 receivers see them, read `error.recovery: correctable`, and route accordingly without needing a vocabulary bump. + +**Description sharpenings:** `media-buy-status.pending_creatives` description leads with "Buyer-side action required" and explicitly contrasts with publisher/governance approval flows (#4196 — document, not rename; consistent with the `pending_X` convention). + +### Adopter action — wire-conformance bundle + +| If you are… | What you need to do | +|---|---| +| A buyer using `@adcp/client` or `adcp-py` | Nothing. Both SDKs already send `idempotency_key` uniformly on every call. | +| A buyer with hand-rolled MCP clients (curl, thin clients, raw OpenAPI codegen) | Prefer the AdCP 3.2 split product-discovery tools and include `idempotency_key` on recommendations, refinements, and finalization. Existing `get_products` calls remain valid throughout 3.x. | +| A seller on FastMCP/Pydantic, Zod `.strict()`, or OpenAPI codegen | Audit input models — they MUST accept envelope fields (`idempotency_key`, `context_id`, `context`, `governance_context`, `push_notification_config`) on every tool. Use `extra='allow'` (Pydantic), drop `.strict()` (Zod), or fix codegen config (OpenAPI). | +| A seller emitting `create_media_buy` synchronous-success responses with embedded `status` | Nothing changes. Existing byte-stable replay already conforms; the rule was silent on this case before, now it's explicit. | +| A buyer agent reading `status` from a mutation response | Add a `replayed: true` guard: if set, call the resource's read endpoint (`get_media_buys`, `list_accounts`, etc.) before any state-dependent action. Without the guard, you'll hit `NOT_CANCELLABLE` and similar state-machine bugs against replayed responses. | +| A seller emitting unsigned webhooks or claiming the deprecated `signed-requests` specialism | Read the new `notices` field on runner-output-contract — your conformance dashboards will start surfacing `request_signing_required_in_4_0` / `legacy_hmac_fallback_removed_in_4_0` / `signed_requests_specialism_deprecated`. Behavior is unchanged in 3.1; the advisories are forward-readiness for 4.0. | +| A seller currently emitting unknown error codes (platform-specific or pre-3.1 additions) | Add `error.recovery` to every error envelope before bumping advertised `adcp_version` to 3.1. Receivers default to `transient` when absent, which is safe but suboptimal — populating the field correctly is the spec-compliant path. | +| An adopter with strict-validator test fixtures or codegen against `core/protocol-envelope.json` | Refresh fixtures and decoders. The schema drops `required: [status, payload]` (#2911) — strict validators that asserted "envelope MUST reject responses missing `payload`" will start accepting envelopes they used to reject. SDK consumers using OpenAPI / quicktype / Pydantic codegen against the envelope will see `status` and `payload` flip from required to optional in generated types; audit downstream decoders that depended on those being present at the schema level. A2A consumers carry `status` via `task.status.state`; MCP/REST consumers reading the envelope as a pure JSON Schema decoder are the affected set. The new normative serialization rules in the envelope's `notes` describe what wire shape to expect per transport. | + +The 3.1 posture is additive over 3.0 and formalizes behavior shipping SDKs already implement. AdCP 3.2 resolves the overloaded product-discovery surface additively. + +### Optimization goals — `kind: "vendor_metric"` (#4668, closes #4644) + +End-to-end vendor binding for optimization goals against vendor-attested measurement — attention (DV, IAS, Adelaide, TVision, Lumen), panel-based brand lift (Kantar, Upwave, Cint), emissions (Scope3, Good-Loop), retail-media partner metrics. Closes the goal-side gap that the #4618 release notes flagged: today's vendor-agnostic `attention_seconds` / `attention_score` enum values are meaningless without a vendor binding, since each measurement vendor defines them differently. + +**New `kind: "vendor_metric"` goal shape.** Third `oneOf` branch on `optimization-goal.json`, structurally parallel to the existing `event` kind: + +```json +{ + "kind": "vendor_metric", + "vendor": { "domain": "adelaidemetrics.com" }, + "metric_id": "attention_score", + "target": { "kind": "threshold_rate", "value": 70 }, + "priority": 1 +} +``` + +`vendor` is the same BrandRef shape used everywhere a vendor-attested metric appears (`vendor_metric_values.vendor`, `reporting_capabilities.vendor_metrics`, `committed_metrics` vendor scope, `performance_standards.vendor`). `metric_id` is the canonical `vendor-metric-id` reference, sourced from the vendor's published `measurement.metrics[]` catalog. + +**New `vendor_metric_optimization` capability on the product.** Per-product declaration of which `(vendor, metric_id)` pairs the product's bidding stack can steer toward, with `supported_targets` per pair. Distinct from `reporting_capabilities.vendor_metrics` — a product may be able to report a vendor metric without being able to optimize against it (Scope3 emissions is the canonical case: many sellers report carbon-per-impression but can't yet steer bidding to minimize it). + +**Three-precondition rejection rule on goal acceptance.** Sellers MUST reject `vendor_metric` goals failing any of: (1) discovery — `metric_id` is in the vendor's published `measurement.metrics[]` (SHOULD this minor while vendor adoption catches up; MUST at next minor); (2) capability — `(vendor, metric_id)` is in the product's `vendor_metric_optimization.supported_metrics[]`; (3) reporting coherence — the package's `committed_metrics[]` includes a matching `{ scope: "vendor", vendor, metric_id }` entry. Optimization without committed reporting is unverifiable and is rejected at the wire level. + +**Deprecation.** `attention_seconds` and `attention_score` remain in the `metric` enum on `optimization-goal.json` and on `product.json` `metric_optimization.supported_metrics` for backwards compatibility this minor, marked **deprecated** in their descriptions. Slated for removal at next major. Sellers MAY reject the deprecated values with `TERMS_REJECTED` and a pointer to the `vendor_metric` kind. Same deprecation pattern used for `delivery_measurement.provider` → `vendors[]`. + +See [Metric lifecycle](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#metric-lifecycle) for the full capability → commitment → optimization → delivery picture and [`kind: vendor_metric`](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/#kind-vendor_metric) for the goal-shape reference. + +### Release-precision version negotiation — pin your release (#3493) + +3.1 lands release-precision (`VERSION.RELEASE`, e.g. `"3.1"`) version negotiation on every request and response, with multi-release advertisement on capabilities. Buyers pin the release their payloads conform to; sellers advertise everything they speak and echo the release they actually served. The negotiation field moves from `core/protocol-envelope.json` into a shared `core/version-envelope.json` composed via `allOf $ref` across every request and response schema, so the contract is one place and SDKs regenerate types from it. + +`adcp_major_version` (the 3.0 integer field) and `adcp.major_versions` remain functional through all of 3.x — additive ship, no required changes for 3.0-conformant agents. The full migration table lives in [Versioning & Governance § Migration timeline](/dist/docs/3.2.0-beta.4/reference/versioning#migration-timeline). + +**Pin your release.** Every SDK exposes a constructor option for the version pin. Through 3.x, the SDK SHOULD also emit `adcp_major_version` automatically so legacy 3.x sellers that only read the integer keep negotiating correctly. For 3.1, use `"3.1"`. The wire shape is **release-precision only** (`"3.1"`, `"3.1-rc.15"` for historical prereleases) — full semver like `"3.1.2"` or `"3.1.0-rc.15"` is invalid on the wire. + +```typescript +// @adcp/sdk (TypeScript) +import { SingleAgentClient } from "@adcp/sdk"; + +const client = new SingleAgentClient( + { agent_uri: "https://sales.example/mcp/", protocol: "mcp" }, + { adcpVersion: "3.1" }, // adcp_major_version: 3 mirror auto-emitted +); +``` + +```python +# adcp (Python) +from adcp import ADCPClient +from adcp.types import AgentConfig, Protocol + +client = ADCPClient( + AgentConfig(agent_uri="https://sales.example/mcp/", protocol=Protocol.MCP), + adcp_version="3.1", # adcp_major_version: 3 mirror auto-emitted +) +``` + +```go +// adcp-go (Go) — planned, tracked in adcontextprotocol/adcp-go#107 +import "github.com/adcontextprotocol/adcp-go/adcp" + +client, err := adcp.NewClient( + "https://sales.example/mcp/", + adcp.WithAdcpVersion("3.1"), // emitted on every request as adcp_version + // AdcpMajorVersion: 3 mirror auto-emitted +) +``` + +**Read what the seller served.** Every response carries `adcp_version` echoed back at the release the seller actually served — not the seller's own latest. A 3.1 seller serving a 3.0 buyer at 3.0 echoes `"3.0"`. Buyers SHOULD validate the response against the echoed release's schema, not against their pin. Legacy 3.0 sellers omit the echo entirely; SDKs fall back to validating against the constructor pin in that case. + +**`VERSION_UNSUPPORTED` is typed.** When a buyer's pin isn't in the seller's `supported_versions`, the seller returns `VERSION_UNSUPPORTED` with `error.data` matching [`error-details/version-unsupported.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/error-details/version-unsupported.json) — `supported_versions` is authoritative for retry. SDKs raise a typed error rather than silently retrying; auto-downshift changes wire shape under the caller and is left to application code. + +**Wire shape is release-precision only.** `"3.1.2"`, `"3.1.0-rc.15"`, `"v3.1"`, and `"3"` are all invalid on the wire. SDKs that key bundles by full semver MUST normalize to release-precision (`"3.1.0-rc.15"` → `"3.1-rc.15"`) before emitting — the `published_version` field on meta-objects (schema registry, tarball `manifest.json`, compliance index, `/protocol/` discovery) is documentation, not a wire value. See [Versioning § Patches are not negotiated](/dist/docs/3.2.0-beta.4/reference/versioning#patches-are-not-negotiated) for the full wire-shape rule. + +**Compliance grader at 3.1 is advisory.** The grader runs the new `version_negotiation` universal storyboard and reports presence on requests and responses — see the [migration timeline](/dist/docs/3.2.0-beta.4/reference/versioning#migration-timeline) for the 3.1 → 3.2 → 4.0 cadence. + +Spec PR [#3493](https://github.com/adcontextprotocol/adcp/pull/3493). RFC: [`specs/version-negotiation.md`](https://github.com/adcontextprotocol/adcp/blob/main/specs/version-negotiation.md). Full normative reference: [Versioning & Governance § Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation). + +--- + +## Version 3.0.6 + +**Status:** Patch release — stable-surface no-op for 3.0-conformant agents + +**3.0.6 makes the `GOVERNANCE_DENIED` wire-placement rule discoverable from the error code itself**, reserves the `ctx_metadata` keyword as an adapter-internal round-trip key, expands the SKILL.md guidance for `issues[]` recovery on the calling-agent side, and fixes two storyboard fixture bugs that were rejecting spec-compliant adopters. Wire format unchanged for any 3.0 agent. + +<Info> +**Upgrading from 3.0.5?** No code changes required for 3.0-conformant agents. SDK consumers bump `ADCP_VERSION` to `3.0.6` to pick up the tightened error-code prose, the `ctx_metadata` reservation, and the corrected storyboard fixtures. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Stable schemas remain wire-compatible with 3.0.0. | +| Returning `GOVERNANCE_DENIED` from `acquire_rights` or `creative_approval` | Read the new wire-placement guidance on the error code. The canonical denial shape is the structured rejection arm (`AcquireRightsRejected` / `CreativeRejected`) — `status: "rejected"` + `reason`, **no** `errors[]`, transport markers stay green. The schema's `not: { required: ["errors"] }` clause was already enforcing this; the prose now makes the rule discoverable from the code. | +| Returning `GOVERNANCE_DENIED` from `create_media_buy` (or any task without a rejection arm) | Continue populating `errors[].code` AND `adcp_error.code` per the two-layer model and flipping transport-level failure markers (HTTP 4xx / MCP `isError: true` / A2A `failed`). The wire-placement guidance distinguishes this Case-2 path from the rejection-arm path. | +| Building an SDK adapter that wants to round-trip publisher state through AdCP resources | You MAY now use the reserved top-level `ctx_metadata` key on Product / MediaBuy / Package / Creative / AudienceSegment / Signal / RightsGrant. SDKs MUST strip the key before wire egress and SHOULD log a warning when stripping. Buyers never see this field. | +| Authoring storyboards that capture state from A2A submitted-arm responses | The `task_completion.<inner>` prefix on `context_outputs[].path` is now documented in the storyboard schema. The runner polls `tasks/get` until terminal and resolves the suffix against the completion artifact's `data` — needed for captures like seller-assigned `media_buy_id` on IO-signing flows. Requires runner ≥ adcp-client v6.7. | +| Running `comply_test_controller` | The visibility rule is now explicitly deployment-scoped, not request-gated. Production deployments MUST NOT expose the tool on any surface (`tools/list`, `compliance_testing` block in `get_adcp_capabilities`, dispatch). Live-mode probes get unknown-tool, not `FORBIDDEN`. | + +### `GOVERNANCE_DENIED` / `GOVERNANCE_UNAVAILABLE` wire-placement guidance (#3929, closes the doc-comment item on #3918; companion to #3914) + +`error-code.json` defined the two governance codes' semantics but didn't say WHERE in the response they appear. Storyboards interpreted differently — issue #3914 surfaced one mismatch where the brand-rights compliance storyboard expected `expect_error: code: GOVERNANCE_DENIED` even though `acquire_rights` already has a first-class `AcquireRightsRejected` discriminated arm. Adopters returning the spec-correct shape were failing the storyboard. + +The `enumDescriptions` for both codes now state placement explicitly: + +- **`GOVERNANCE_DENIED`** — structured business outcome, not a system error. **When the task response defines a structured rejection arm**, that arm IS the canonical denial shape: populate `status: "rejected"` + `reason`, do NOT additionally emit the code in `errors[]` or `adcp_error`, and do NOT flip transport-level failure markers. **When the task has no rejection arm**, populate `errors[].code` AND `adcp_error.code` per the two-layer model and DO flip transport markers. +- **`GOVERNANCE_UNAVAILABLE`** — system error, governance call failed at all. Always populate both layers with the code and flip transport markers. Sellers MUST NOT use a structured rejection arm for unavailability even when the task offers one — the buyer's recovery semantics differ (retry-with-backoff vs. restructure-or-escalate). + +The MUST NOT against dual-emission isn't a behavior change — `AcquireRightsRejected` and `CreativeRejected` already declare `not: { required: [errors] }` at the schema layer, so emitting `errors[]` alongside a rejection arm was already a schema violation. The doc-comment makes the rule discoverable from the error code without changing what conformant senders produce. + +A parallel storyboard-authoring note in `error-handling.mdx` directs authors to assert on `field_value path: "status" value: "rejected"` rather than `error_code` for tasks that define a rejection arm. The existing `error_code` guidance is correct for tasks without a rejection arm. + +### `ctx_metadata` reserved as adapter-internal round-trip key (#3640) + +Reserves the top-level key `ctx_metadata` on AdCP resource objects (Product, MediaBuy, Package, Creative, AudienceSegment, Signal, RightsGrant) as a publisher-to-SDK round-trip cache for adapter-internal state. SDKs MUST strip the key before wire egress and MUST emit a warning-level log entry when stripping, so operators can detect accidental collisions with existing adapter code. Buyers never see this field. + +The convention is non-binding at the wire level — these resources already declare `additionalProperties: true` so existing payloads remain valid. The reservation locks the keyword name before two SDKs converge on it accidentally and ship divergent semantics. PropertyList and CollectionList are out of scope (`additionalProperties: false`) until a follow-up PR widens those schemas. + +### Implementation-dependent `issues[]` fields documented in SKILL.md (#3927 backport) + +`skills/call-adcp-agent/SKILL.md` already documented the three required `issues[]` fields (`pointer`, `keyword`, `variants`). 3.0.6 adds the four optional fields a calling agent will encounter when the seller's validator opts into them — `discriminator`, `schemaId`, `allowedValues`, `hint` — with a one-line preface clarifying these are implementation-dependent (not every validator emits them) and an updated recovery order: read `hint` first when present, then `discriminator`, then walk `variants`. Two new rows added to the symptom-fix lookup table for the same fields. + +No wire-format change. Pure documentation: shipping these fields is already a valid validator extension; this gives callers a curated path through them. + +### Storyboard-schema documents `task_completion.<inner>` prefix (#3955, closes #3950) + +The `context_outputs[].path` resolver gained a `task_completion.` prefix in the storyboard runner (`@adcp/sdk` 6.7+) for capturing values that materialize only on the terminal task artifact (e.g., seller-assigned `media_buy_id` on IO-signing flows where `create_media_buy` returns an A2A submitted-arm envelope). 3.0.6 adds the corresponding documentation to the storyboard authoring schema (`static/compliance/source/universal/storyboard-schema.yaml`). + +### `comply_test_controller` is deployment-scoped, not request-gated (#3992) + +Tightens the visibility rule for `comply_test_controller`: production deployments MUST NOT expose the tool on any surface — neither `tools/list`, nor the `compliance_testing` block in `get_adcp_capabilities`, nor request dispatch. Live-mode probes get unknown-tool (treated as a regular catalog miss), **not** `FORBIDDEN`. The previous prose left enough room that some adopters were emitting `FORBIDDEN` on live-mode dispatch, which is itself an information leak (an attacker probing for the tool can distinguish "not deployed" from "deployed but you can't use it"). + +### Storyboard fixture fixes + +Two compliance-bundle fixture fixes that were causing spec-compliant adopters to fail published storyboards: + +- **`inventory_list_targeting`** — the 5 account blocks across this scenario use the brand+operator natural-key variant of `AccountReference` but omitted the `sandbox` flag. Sellers whose `accounts.resolve` has separate code paths for sandbox vs production refs were routing `create_media_buy` and `get_media_buys` through different account-id namespaces, breaking `mediaBuyStore` backfill of `targeting_overlay`. Setting `sandbox: true` on every account block keeps both create and get on the sandbox path. Mirror of [#3989](https://github.com/adcontextprotocol/adcp/pull/3989) on `main`. Follow-up to align the SDK runner's enricher asymmetry tracked at [adcp-client#1487](https://github.com/adcontextprotocol/adcp-client/issues/1487). +- **`sales_guaranteed/create_media_buy`** — the `context_outputs[0].path` was bare `"media_buy_id"`, which the runner resolved against the immediate submitted-arm response — a step that fails with `capture_path_not_resolvable` and masks downstream phases. Updated to `"task_completion.media_buy_id"` so the runner polls `tasks/get` and captures the seller-issued id from the terminal artifact, per the runner contract introduced in adcp-client#1426. Mirror of [#3990](https://github.com/adcontextprotocol/adcp/pull/3990) on `main`. + +--- + +## Version 3.0.5 + +**Status:** Patch release — stable-surface no-op for 3.0-conformant agents + +**3.0.5 unblocks `brand_json_url` adoption on 3.0**, ships an optional storyboard-authoring affordance, and corrects a brand-rights storyboard capture path that was rejecting spec-compliant agents. Wire format unchanged for any 3.0 agent that doesn't claim a new optional surface. + +<Info> +**Upgrading from 3.0.4?** No code changes required for 3.0-conformant agents. SDK consumers bump `ADCP_VERSION` to `3.0.5` to pick up the relaxed `identity` validator and the brand-rights storyboard fix. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Stable schemas remain wire-compatible with 3.0.0. | +| Adopting `identity.brand_json_url` from #3690 on 3.0 | Bump to 3.0.5 (or have your SDK pick it up). 3.0.4 and earlier rejected the field at validation; 3.0.5 accepts it. | +| Running brand-rights conformance against the published storyboard | Bump SDK to pick up `dist/compliance/3.0.5/specialisms/brand-rights/index.yaml`. Spec-compliant agents that return `rights_id` (per the published `acquire-rights-response.json`) now pass `rights_acquisition` and stop cascade-skipping `rights_enforcement`. | +| Authoring multi-agent storyboards | You MAY now declare a top-level `default_agent: <key>` so multi-agent runners route cross-domain steps without per-CI-invocation overrides. Single-agent runs ignore the field. | + +### `identity.additionalProperties: true` on `get_adcp_capabilities` (#3896, closes Scope3 adoption gap) + +The `identity` block on `get-adcp-capabilities-response.json` was schema-closed (`additionalProperties: false`), which was the lone outlier among capability blocks — every peer (`media_buy`, `signals`, `creative`, `brand`, `compliance_testing`, `request_signing`, `webhook_signing`, `measurement`) already had `additionalProperties: true` at the outer level. The closed shape silently contradicted the forward-compat promise made by [#3690](https://github.com/adcontextprotocol/adcp/pull/3690) (`brand_url on get_adcp_capabilities for keys-from-agent-URL discovery`), which explicitly stated that 3.0-pinned implementers could adopt `identity.brand_json_url` without waiting for a schema bump. + +Without this relaxation, `@adcp/sdk`'s `createAdcpServer` (default strict-validation mode) rejected any operator response carrying `brand_json_url`, forcing adopters to disable validation entirely (a footgun) or wait for 3.1. + +3.0.5 mirrors what `main` already shipped post-#3690: the outer `identity` object opens; the inner blocks (`key_origins`, `compromise_notification`) stay closed where the security weight actually sits. Strictly additive — the closed property list (`per_principal_key_isolation`, `key_origins`, `compromise_notification`) is unchanged; receivers that ignore unknown fields keep working; receivers that look for new identity fields gain forward-compat without waiting for a 3.x bump. Buyers and verifiers SHOULD continue to allowlist known identity fields at read time rather than rely on schema closure for trust decisions. + +### Storyboard-level `default_agent` field (#3897, closes #3894) + +Optional top-level `default_agent: <key>` on the storyboard authoring schema (`dist/compliance/3.0.5/universal/storyboard-schema.yaml`). The multi-agent storyboard runner ([adcp-client#1066](https://github.com/adcontextprotocol/adcp-client/issues/1066), [#1355](https://github.com/adcontextprotocol/adcp-client/pull/1355)) already accepts `default_agent` via run-options; this change lets storyboard authors encode the topology intent in YAML once instead of re-asserting `--default-agent sales` on every CI invocation. Cross-domain tools (`sync_creatives`, `list_creative_formats`) become deterministic without per-step `agent:` overrides. + +Resolution order (runner contract): + +1. Step-level `agent:` override. +2. Specialism-claimant match against the runtime agents map. Multi-claim grades `unrouted_step` (operator-config error); slots 3/4 do not rescue. Zero claimants falls through to slot 3. +3. Storyboard-level `default_agent` (this field). Set-but-unmatched grades `default_agent_unresolved` — the runner does NOT silently fall through to slot 4, because that would invisibly override the storyboard author's encoded intent. +4. Run-options `default_agent`. Same set-but-unmatched rule. +5. Fail-fast — `unrouted_step`. + +Single-agent runs ignore the field entirely; existing 3.0.x storyboards keep working unchanged. Mirrors the `provides_state_for` precedent (#3775) for additive storyboard-schema affordances on 3.0.x. + +The key shape is a free-form non-empty string keyed by the runtime agents map — the spec does not constrain to the specialism enum because production multi-agent topologies legitimately fan out per-property (`nyt_sales`, `wsj_sales`), per-region (`sales_eu`, `sales_us`), or per-brand-rights-holder. Cross-operator portability is the storyboard author's concern, not the spec's. + +### Brand-rights storyboard `acquire_rights` capture fix (#3893, closes #3892) + +The `brand_rights/rights_acquisition` storyboard's `acquire_rights` step captured a `context_outputs` field at path `rights_grant_id`, but `brand/acquire-rights-response.json` defines that field as `rights_id` (the `AcquireRightsAcquired` arm). Spec-compliant agents passed `response_schema` validation but failed the capture-and-pass-to-next-step machinery, which then cascade-skipped `rights_enforcement` with `prerequisite_failed`. + +3.0.5 corrects the storyboard to read `rights_id` (preserving the storyboard-internal `rights_grant_id` key name so no other steps need updates) and aligns the `expected:` prose to match the published schema (`status: acquired`, not the legacy `status: active`). + +Adopters running brand-rights conformance against a spec-compliant agent: bumping your SDK past 3.0.4 should flip the `brand_rights` storyboard from 3/5 scenarios passing to 5/5 with no agent-side changes. + +### Release mechanics (#3820) + +`forward-merge-3.0.yml`: explicitly push the `forward-merge/3.0.x` branch to origin **before** `peter-evans/create-pull-request@v8` runs. Discovered when 3.0.4's forward-merge ran for real: auto-resolution succeeded, then peter-evans crashed with `fatal: ambiguous argument 'origin/forward-merge/3.0.x': unknown revision`. Last gap in the auto-resolution chain — every subsequent Version Packages cut now auto-creates the forward-merge PR without human intervention. + +### Detailed changelog + +For the full per-PR change list, see [CHANGELOG.md § 3.0.5](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#305). + +--- + +## Version 3.0.4 + +**Status:** Patch release — stable-surface no-op for 3.0-conformant agents + +**3.0.4 is the third 3.0.x patch.** Three additive cherry-picks from main, all hand-adapted for the maintenance line: the `manifest.json` + structured `enumMetadata` artifact (so SDKs stop hand-transcribing the spec), a normative `issues[]` array on `core/error.json`, and prose-only tightening of `AUTH_REQUIRED` to call out the retry-storm risk. Wire format unchanged. + +<Info> +**Upgrading from 3.0.3?** No code changes required for 3.0-conformant agents. SDK consumers bump `ADCP_VERSION` to `3.0.4` to pick up `manifest.json` and the new `enumMetadata` block. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Stable schemas remain wire-compatible with 3.0.0. | +| An SDK author | Switch from parsing `Recovery: X` prose out of `enumDescriptions` to consuming the structured `enumMetadata` block. The build-time lint guarantees structured/prose parity, so the prose path can stay as a fallback while you migrate. | +| An SDK consumer | Bump `ADCP_VERSION` to `3.0.4`. Pick up `/schemas/3.0.4/manifest.json` for one-stop tool/error/specialism enumeration. | +| Implementing a buyer agent | Read the new `AUTH_REQUIRED` sub-cases in [error-handling.mdx](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) — the wire code stays the same but you SHOULD NOT auto-retry when credentials were attached and rejected (terminal case). 3.1 will split this into separate enum values via #3739. | +| Returning multi-field validation errors | Optionally populate `core/error.json`'s new top-level `issues[]` array (each entry: RFC 6901 pointer, message, JSON Schema keyword). Pre-3.1 consumers reading only `field` get the first failure; 3.1+ consumers prefer `issues`. | + +### `manifest.json` + structured `enumMetadata` (#3725, #3738) + +Two additive artifacts published with every released schema bundle: + +1. **`enums/error-code.json` gains an `enumMetadata` block.** Every error code now carries structured `recovery` (`correctable` | `transient` | `terminal`) and `suggestion` fields. SDKs MUST consume this block instead of parsing `Recovery: X` prose out of `enumDescriptions` — a build-time lint enforces structured/prose parity. Closes the root cause of [adcp-client#1135](https://github.com/adcontextprotocol/adcp-client/issues/1135) (17 missing codes, 3 wrong recovery classifications shipped in TS SDK for over a year). + +2. **`/schemas/3.0.4/manifest.json`.** Single canonical artifact listing every tool (with `protocol`, `mutating`, `request_schema`, `response_schema`, `async_response_schemas`, `specialisms`), every error code (with `recovery`, `description`, `suggestion`), an `error_code_policy` block (defining `default_unknown_recovery` so SDKs handle non-spec codes correctly), and every storyboard specialism (with `protocol`, `entry_point_tools`, `exercised_tools`). Validates against `manifest.schema.json`. Lets SDKs derive their internal tool/error tables from one place at codegen time. + +The 3.0.4 manifest covers exactly the 45 error codes 3.0.x ships (vs. main's 48 — three of main's codes don't exist in 3.0.x's enum and were trimmed during the cherry-pick). + +### `core/error.json` — `issues[]` field (#3059, #3562) + +Optional top-level `issues` array on the standard error envelope, normalizing what `@adcp/sdk` and prospectively `adcp-go` / `adcp-client-python` already need for multi-field validation rejections. + +```json +{ + "code": "VALIDATION_ERROR", + "message": "Request validation failed", + "field": "creatives[0].assets.image", + "issues": [ + { + "pointer": "/creatives/0/assets/image", + "message": "Required", + "keyword": "required" + }, + { + "pointer": "/creatives/0/format_id", + "message": "Must match pattern", + "keyword": "pattern" + } + ] +} +``` + +Each entry is `{ pointer (RFC 6901), message, keyword, schemaPath? }`. `schemaPath` MAY be omitted in production to avoid fingerprinting `oneOf` branch selection on adversarial payloads. + +**Backward compatibility with `field` (singular):** when both are present, sellers SHOULD set `field` to `issues[0].pointer`. Pre-3.1 consumers reading only `field` get the first failure; 3.1+ consumers prefer the top-level `issues`. Sellers MAY mirror `issues[]` into `details.issues` for backward compat with consumers reading from `details`. + +### `AUTH_REQUIRED` retry-storm prose (#3730 partial, #3739 backport) + +`AUTH_REQUIRED` conflates two operationally distinct cases — credentials missing (genuinely correctable) and credentials presented but rejected (terminal — needs human rotation). A buyer agent treating both as `correctable` will retry-loop on revoked tokens, hammering seller SSO endpoints in a pattern indistinguishable from a brute-force probe. + +The 3.1 line splits this into `AUTH_MISSING` and `AUTH_INVALID` (#3739). 3.0.x cannot adopt the split — adding new enum values violates the maintenance line's semver rules. 3.0.4 ships the prose-only backport: the wire code stays `AUTH_REQUIRED` with `recovery: correctable`, but the description and `enumMetadata.suggestion` now spell out the two sub-cases and the SHOULD-NOT-auto-retry rule for the rejected-credential case. SDKs running against 3.0.x sellers can apply the operational distinction at the application layer. + +`docs/building/implementation/error-handling.mdx` gets a sub-case callout and an updated example showing how to branch on whether credentials were attached. Closes the 3.0.x portion of #3730; the full split lands in 3.1.0. + +### Detailed changelog + +For the full per-PR change list, see [CHANGELOG.md § 3.0.4](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#304). + +--- + +## Version 3.0.3 + +**Status:** Patch release — additive storyboard schema field, stable-surface no-op for 3.0-conformant agents + +**3.0.3 ships the `provides_state_for` storyboard field** so the conformance suite can rescue cascade-skipping when two interchangeable stateful steps live in the same phase. Plus a docs-only fix for the `url_type` enum in channel docs that was emitting a value the published schema already excluded. + +<Info> +**Upgrading from 3.0.2?** No code changes required for 3.0-conformant agents. Storyboard runners on `@adcp/sdk` 6.5.0+ pick up the new field automatically once the cache refreshes against 3.0.3. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Stable schemas unchanged. | +| Authoring storyboards | Optionally use `provides_state_for: <step_id>` on a stateful step to declare it substitutes for a missing peer step's state. Same-phase only; both steps must be `stateful: true`. The build-time lint enforces shape, target validity, statefulness, no self-reference, and no two-step cycles. | +| Running storyboards via `@adcp/sdk` | Bump to 6.5.0+ to pick up the cascade-rescue runtime. Older SDK versions ignore the field and fall back to the existing `missing_tool` cascade behavior. | +| A storyboard-authoring docs source (channels) | Replace `"url_type": "tracker"` with `"url_type": "tracker_pixel"` in any examples. The published schema enum already excluded `"tracker"`, so existing valid wire payloads are unaffected — only the prose docs were drifting. | + +### `provides_state_for` storyboard field (#3734) + +Optional `provides_state_for: <step_id> | <step_id>[]` on a stateful storyboard step declares that this step's pass establishes equivalent state for the named peer step(s) in the same phase. Pairs with the cascade-skip mechanism in `@adcp/sdk` 6.5.0+: when a peer step would otherwise grade `missing_tool` or `missing_test_controller`, the substitute waives the cascade and the runner grades the peer with the new `peer_substituted` skip reason. + +**Concrete impact:** explicit-mode social platforms (Snap, Meta, TikTok) intentionally pre-provision advertiser accounts out-of-band — `sync_accounts` is `missing_tool` by design, with `list_accounts` as the canonical alternative. 3.0.3's `sales-social/index.yaml` declares `provides_state_for: sync_accounts` on the `list_accounts` step, letting these adapters graduate from `1/9/0` (8 downstream stateful steps cascade-skipped) to `9/10` against the `sales_social` storyboard once the SDK cache refreshes. + +The field is part of the conformance harness, so it ships under the harness-additive patch-eligibility rule. Existing storyboards that don't use it keep their current cascade behavior — pure additive. + +Build-time validation (`scripts/lint-storyboard-provides-state-for.cjs`): rule shape, self-reference, unknown target, cross-phase reference (rejected — must be same-phase), target-not-stateful, substitute-not-stateful, and direct-cycle violations all fail loud. + +### `runner-output-contract.yaml` — `peer_substituted` skip reason + +Companion to `provides_state_for`: when the runner waives a cascade because a same-phase peer substituted for the state contract, it grades the original peer with `skip_result.reason = peer_substituted` and detail `"<this_step_id> state provided by <peer_phase_id>.<peer_step_id>"`. Distinct from `peer_branch_taken` (branch-set routing for mutually exclusive behaviors) and `not_applicable` (coverage gap — agent didn't declare the protocol). + +### `url_type: tracker` → `tracker_pixel` (#2986 step 1) + +Display, audio, carousels, and DOOH channel docs were emitting `"url_type": "tracker"` in examples — a value the published `url-asset-type.json` enum (`clickthrough` / `tracker_pixel` / `tracker_script`) already excluded. Fixed to `tracker_pixel`. Wire format unchanged; only prose docs were drifting. + +### Detailed changelog + +For the full per-PR change list, see [CHANGELOG.md § 3.0.3](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#303). + +--- + +## Version 3.0.2 + +**Status:** Patch release — additive storyboard check kind + canonical asset-union schema + +**3.0.2 ships a new storyboard check kind** that closes a static-analysis gap in `@adcp/sdk`'s drift verifier, plus extracts a shared asset-variant `oneOf` union into its own schema file so codegen tools (notably `json-schema-to-typescript`) stop emitting numbered duplicate types. + +<Info> +**Upgrading from 3.0.1?** No code changes required for 3.0-conformant agents. The check kind is consumed by the conformance runner, not by sellers; the asset-union refactor is a wire-format no-op. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Wire format and validation semantics unchanged. | +| An SDK author running codegen against schemas | Re-run `json-schema-to-typescript` (or your equivalent) to drop the `VASTAsset1`, `DAASTAsset1`, `BriefAsset1`, `CatalogAsset1` numbered duplicates. They were artifacts of the same `oneOf` union being encountered through multiple parent schemas; 3.0.2 references the canonical `core/assets/asset-union.json` from both `creative-asset.json` and `creative-manifest.json`. | +| Authoring storyboards that assert envelope-level fields | Optionally use the new `envelope_field_present` check kind in place of `field_present` for `protocol-envelope.json` fields like `status`. The new check walks the envelope schema rather than the step's `response_schema_ref`, eliminating the static-analysis `VERIFIER_UNREACHABLE` gap in adcp-client's storyboard-drift verifier. | +| Running storyboards via `@adcp/sdk` | Bump to the version that lands [adcp-client#1045](https://github.com/adcontextprotocol/adcp-client/pull/1045) for the new check kind. | + +### `envelope_field_present` check kind + +Storyboard `validations[].check` gains `envelope_field_present` as a peer of `field_present`. Same shape — `path` is RFC 6901-style — but resolves the path against `protocol-envelope.json` rather than the step's `response_schema_ref`. Used in `static/compliance/source/universal/v3-envelope-integrity.yaml` to assert that responses include `status`, where the previous `field_present` check left a `VERIFIER_UNREACHABLE` hole because `status` lives on the envelope, not the per-task response schema. + +### Canonical `core/assets/asset-union.json` + +The asset-variant `oneOf` union (the discriminated set of `image | video | text | url | vast | daast | ...` shapes) was inlined identically in `creative-asset.json` and `creative-manifest.json`. `json-schema-to-typescript` walking those parent schemas independently emitted `VASTAsset1`, `DAASTAsset1`, `BriefAsset1`, `CatalogAsset1` numbered-duplicate types — invisible at the wire level, irritating in generated code. + +3.0.2 promotes the union to `core/assets/asset-union.json` and references it via `$ref` from both parents. Codegen now emits a single `Asset` (or whatever your tool chooses) without the numbered duplicates. Wire format and validation semantics unchanged — pure refactor of the schema reference graph. + +### Detailed changelog + +For the full per-PR change list, see [CHANGELOG.md § 3.0.2](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#302). + +--- + + +## Version 3.0.1 + +**Status:** Patch release — stable-surface no-op for 3.0-conformant agents + +**3.0.1 is a maintenance release.** It ships the protocol skills bundle through the canonical tarball, formalises a handful of normative clauses left underspecified in 3.0.0, and adds small additive fields on experimental surfaces (governance, TMP) and the conformance harness. The stable wire surface is unchanged. + +<Info> +**Upgrading from 3.0.0?** No code changes required for 3.0-conformant agents. SDK consumers bump `ADCP_VERSION` from `3.0.0` to `3.0.1` to receive the canonical skills via their existing sync flow. +</Info> + +### Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing. Stable schemas are unchanged. | +| An SDK consumer | Bump `ADCP_VERSION` from `3.0.0` to `3.0.1`. JS wiring in [adcp-client#965](https://github.com/adcontextprotocol/adcp-client/pull/965); Python and Go follow-ups in [adcp-client-python#274](https://github.com/adcontextprotocol/adcp-client-python/issues/274) and [adcp-go#91](https://github.com/adcontextprotocol/adcp-go/issues/91). | +| Implementing governance or TMP | Review the experimental-surface additions below. Per the [experimental-status contract](/dist/docs/3.2.0-beta.4/reference/experimental-status), additive changes are permitted within a patch release. | +| Calling `get_signals` with top-level `max_results` | Migrate to `pagination.max_results`. Top-level field still works through 3.x; removed in 4.0. | + +### Why 3.0.1 exists + +The `skills/` directory was hoisted into the protocol root after the 3.0.0 tarball was already cosign-signed. Re-cutting at the same version would have invalidated the supply-chain attestations bound to the original 3.0.0 SHA-256. 3.0.1 ships the bundle through the normal release path. (#3116, #3117) + +### Spec polish — no wire change + +Normative clarifications and docs corrections. None of these add new fields to stable schemas; they document behavior the spec already implied. + +- **`acquire_rights` request validation** — Brand agents MUST reject expired campaign windows (`campaign.end_date` in the past) with `INVALID_REQUEST`. CPM-priced rights under a governed plan must include `campaign.estimated_impressions`. Closes implementer disagreement on identical requests. (#2680, #2681) +- **`get_signals` pagination precedence** — When both top-level `max_results` and `pagination.max_results` are present, agents MUST honor `pagination.max_results`. Top-level `max_results` deprecated; removed in 4.0. +- **URL canonicalization** — Now applies uniformly to brand.json agent URLs (`brand_agent_entry.url`, `brand_agent.url`, `rights_agent.url`). Two URLs differing only in case, default port, or percent-encoded unreserved characters compare equal during agent resolution. New reference page at [URL canonicalization](/dist/docs/3.2.0-beta.4/reference/url-canonicalization). +- **v3 envelope integrity** — Schema-level constraint on `protocol-envelope.json` formally prohibits legacy v2 `task_status` / `response_status` field names. The prose MUST NOT was already in 3.0.0; the constraint is now machine-detectable by validators. Companion universal storyboard `v3-envelope-integrity` exercises the assertion. Conformant 3.0 implementations are unaffected. (#3041) +- **Format asset codegen** — Title annotations on `format.json` `oneOf` branches enable codegen tools (json-schema-to-typescript, datamodel-code-generator, oapi-codegen) to emit named per-asset-type interfaces instead of untyped unions. Annotation-only. +- **Inline-enum hoisting** — Source schemas now `$ref` shared enum files for `payment-terms`, `audio-channel-layout`, `media-buy-valid-action`, `match-type`, `governance-decision`, `billing-party`, and 11 others. Bundled wire format unchanged in all cases. + +### Experimental surfaces — additive only + +Per the [experimental-surface contract](/dist/docs/3.2.0-beta.4/reference/experimental-status), these surfaces accept additive changes within a patch release. Changes here do not affect agents that don't implement these protocols. + +- **Governance** — `mode` field added to `check-governance-response.json` and `get_plan_audit_logs` audit entries. Records the enforcement posture (enforce/advisory/audit) active at check time. Closes a gap where audit and enforce modes produced identical-looking trails. +- **Trusted Match Protocol (TMP)** — `seller_agent: { agent_url, id? }` added to `AvailablePackage`, making seller identity explicit on every package cached by a TMP provider. New `seller_not_authorized` error code for sync-time rejection when the seller's `agent_url` is not present in the property publisher's `adagents.json`. All TMP schemas now carry `x-status: experimental`. + +### Conformance harness — sandbox-only + +`comply_test_controller` is conformance-harness scaffolding, not a normative protocol task. Changes here only affect sandbox testing. + +- **`force_task_completion`** — Resolves a previously-submitted async task to `completed` with a buyer-supplied result payload. Closes the loop on the async `create_media_buy` submitted → completed roundtrip. Result is delivered via the seller's webhook (canonical 3.0 path); a typed result projection on the polling response is tracked for 3.1 in #3123. +- **`seed_creative_format`** — Pre-populates a deterministic set of creative formats for pagination-integrity storyboards. Companion: `list_creative_formats` now applies cursor-based pagination matching the `list_creatives` pattern. + +### Release mechanics + +- Cosign signing on private packages so future Version Packages merges auto-tag and `changesets/action` auto-creates the GitHub Release with artifacts. +- `dist/protocol/` retained in the Fly.io image so cosign-signed versioned tarballs ship and `/protocol/{version}.tgz` actually serves end-to-end. +- Skills bundled at `/protocol/3.0.1.tgz`: `call-adcp-agent` plus the per-protocol `adcp-{brand,creative,governance,media-buy,si,signals}`. + +### Detailed changelog + +For the full per-PR change list, see [CHANGELOG.md § 3.0.1](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#301). + +--- + +## Version 3.0.0 + +**Status:** General Availability | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +**AdCP 3.0 makes agent-to-agent ad buying retry-safe and auditable, with optional end-to-end request signing for AdCP Verified agents.** Four trust primitives carry mutating traffic — three are baseline-required in 3.0 (request-side idempotency, the RFC 9421 profile on webhooks, signed JWS governance) and RFC 9421 request signing is optional unless an agent claims AdCP Verified. The compliance runner proves an agent does each of them right. Storyboards move into the protocol at `/compliance/{version}/` as the bar; AdCP Verified is a self-attested stamp that an agent published passing runner output. 3.0 also brings broadcast TV as a first-class channel, generalizes governance to any purchase type, and simplifies the capabilities model so object presence replaces dozens of boolean flags. + +<Info> +**Upgrading from rc.3?** See [rc.3 → 3.0 prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades) for the breaking changes table, before/after examples, and migration steps. +</Info> + +### What's New + +1. **Trust surface: four cryptographic primitives for agent-to-agent ad buying** — Grouped by symmetry on the wire, so what's true of a request is true of a webhook: + + **Requests** — buyer → seller: + - **`idempotency_key` required on every mutating request** — fresh key per logical operation, matching `^[A-Za-z0-9_.:-]{16,255}$` (UUID v4 for Verified). Sellers declare dedup semantics via `adcp.idempotency = { supported: true, replay_ttl_seconds: ... }` (1h–7d, 24h recommended) or `{ supported: false }`. When `supported: true`: `replayed: true` on exact replay, `IDEMPOTENCY_CONFLICT` on payload mismatch, `IDEMPOTENCY_EXPIRED` past TTL. When `supported: false`: retries double-process — buyers MUST use natural-key checks instead. Extended to `activate_signal`. Conformance runners probe `supported: true` claims with a deliberate payload-mutation replay. (#2315, #2407, #2436, #2447) + - **RFC 9421 HTTP Message Signatures** — optional in 3.0, required for AdCP Verified. Ed25519 over a canonicalized covered-component list (including `content-digest`). sf-binary and URL canonicalization pinned so independent implementations produce bit-identical canonical inputs. Verifier follows a 15-step checklist (`keyid` cap-before-crypto, SSRF-validated JWKS fetch, `jti` replay dedup, audience binding) — see the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security). Published test vectors under `static/compliance/source/test-vectors/request-signing/`. (#2323, #2341, #2342, #2343) + + **Webhooks** — seller → buyer, same profile in reverse: + - **Webhook signing unified on the RFC 9421 profile — baseline-required for sellers emitting webhooks** — Sellers sign outbound webhooks with a key published in their JWKS at `jwks_uri` (discoverable via `brand.json` `agents[]`). New signers use `adcp_use: "request-signing"` for webhook delivery; deprecated `adcp_use: "webhook-signing"` keys remain accepted during the compatibility window. Operators that want webhook-only key material use a distinct `kid`. No shared secret crosses the wire. Verification failures return typed `webhook_signature_*` reason codes defined in the Security guide. HMAC-SHA256 remains a legacy fallback through 3.x (opt-in via `push_notification_config.authentication.credentials`); removed in 4.0. (#2423) + - **Webhook payloads carry a required `idempotency_key`** — Every webhook is dedupable by a sender-generated UUID v4, using the same `^[A-Za-z0-9_.:-]{16,255}$` format as request-side keys. Replaces fragile `(task_id, status, timestamp)` dedup across five webhook payload schemas. `revocation-notification.notification_id` renamed to `idempotency_key` for protocol-wide consistency. (#2416, #2417) + + **Governance** — signed authority: + - **Signed JWS `governance_context`** — governance decisions are cryptographically verifiable offline. The governance agent issues a JWS signed with its key from `sync_governance`; sellers verify and bind decisions to `sub` (buyer), `aud` (seller), `phase`, and `exp` without round-tripping. Stale or forged decisions are rejected at the transport layer. Sellers with a configured governance agent MUST call `check_governance` before committing budget (rejection with `PERMISSION_DENIED` on missing or invalid context). (#2316, #2403, #2419) + + See [Security implementation guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for the threat model, `adcp_use` JWK taxonomy, and per-primitive verification paths. + +2. **Specialisms, compliance storyboards, and AdCP Verified** — Trust primitives define the bar; storyboards test that an agent actually meets it; AdCP Verified certifies the result. Storyboards move into the protocol at `/compliance/{version}/` (universal + protocols + specialisms + test-kits). Every agent runs `/compliance/{version}/universal/security.yaml` regardless of claims — unauth rejection, API key enforcement, OAuth discovery per RFC 9728, audience binding, and (when signing is claimed) the `signed_requests` and `signed_webhooks` runner harnesses. Runner output is a structured, verifiable `runner-output.json` with a hash chain over the test-kit corpus. Cross-instance state persistence is required. New `specialisms` field on `get_adcp_capabilities` lets agents claim narrow capability specialisms across 6 protocols (media-buy, creative, signals, governance, brand, sponsored_intelligence). `sponsored_intelligence` is promoted from specialism to full protocol. `broadcast-platform` → `sales-broadcast-tv`, `social-platform` → `sales-social`. `property-governance` + `collection-governance` split into sibling `property-lists` and `collection-lists` specialisms. Compliance taxonomy renames `domains` → `protocols`; `audience-sync` reclassified from `governance` to `media-buy`. Per-version protocol tarball at `/protocol/{version}.tgz`. The formal AdCP Verified program launches with **3.1** once reference implementations (training agent, SDKs) and ambiguous-storyboard work reach full compliance on a 4–6 week cadence; 3.0 Verified is self-attested via published runner output. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) and [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3#specialisms-and-storyboard-driven-compliance) for the rationale and timeline. (#2176, #2300, #2304, #2332, #2336, #2350, #2352, #2363, #2381) + +3. **Broadcast TV Support** — Linear TV sellers can now fully participate in AdCP. Ad-ID identifiers on creative assets and manifests. Broadcast spot formats for :15, :30, and :60 spots. `agency_estimate_number` on media buys and packages. Measurement windows (Live, C3, C7) on reporting capabilities. Delivery data completeness flags (`is_final`, `measurement_window`) for provisional vs. closed numbers. Broadcast forecast schema adds `measurement_source` and `guaranteed_impressions`. `station_id` and `facility_id` identifier types. (#2046, #1853, #1912) + +4. **Governance Generalization and Regulatory Invariants** — Governance extends beyond media buys to cover brand rights licensing, signal activation, and creative services. `governance_context` replaces `media_buy_id` as the identifier tying governance actions across a campaign's lifecycle. New `purchase_type` field distinguishes the governed activity. GDPR Art 22 / EU AI Act Annex III are enforced as schema invariants: `budget.authority_level` splits into `budget.reallocation_threshold` (autonomy) and `plan.human_review_required` (Art 22 review); cross-field `if/then` rejects `human_review_required: false` for regulated verticals (fair housing, fair lending, fair employment, pharmaceutical). Append-only `revisionHistory`; downgrades require a `human_override` artifact. `eu_ai_act_annex_iii` seeded in the registry. `data_subject_contestation` on `brand.json` satisfies Art 22(3) discovery. (#2014, #2310, #2338) + +5. **Capabilities Model Simplification** — Redundant boolean gates are removed throughout `get_adcp_capabilities`. If a `content_standards` object exists in the response, the agent supports content standards — no separate boolean needed. `reporting_capabilities` is now required on every product. Geo capability fields keep their typed shapes (`geo_countries`, `geo_regions`, `geo_metros`, `geo_postal_areas`). (#2143, #2157) + +6. **Collection Lists** — Program-level brand safety for shows, series, and podcasts. Collection lists parallel property lists but target content programs using distribution identifiers (IMDb, Gracenote, EIDR) for cross-publisher matching. New `collection_list` and `collection_list_exclude` fields on the targeting overlay. Genre taxonomy enum normalizes classification. 16 new collection schemas. (#2005) + +7. **Structured Measurement Terms** — Guaranteed buys gain a formal negotiation surface. `measurement_terms` covers billing vendor, IVT threshold, and viewability floor. Sellers declare defaults; buyers propose overrides at `create_media_buy`; sellers accept, reject, or adjust. `cancellation_policy` schema declares notice periods and penalties. `TERMS_REJECTED` error code. (#1962) + +8. **Unified Vendor Pricing** — Pricing extends from signals to creative, governance, and property list agents. All vendor pricing now uses a shared schema covering CPM, percent-of-media, and flat-fee models. `pricing_options[]` on `list_creatives`, `build_creative`, `get_creative_features`, and property lists. (#1937) + +9. **Per-Request Version Declaration** — `adcp_major_version` on all 56+ request schemas lets buyers declare which major version their payloads conform to. Sellers return `VERSION_UNSUPPORTED` on mismatch. When omitted, sellers default to their highest supported version. (#1959) + +10. **Offline Reporting Delivery** — Sellers can push reports to buyer-provided cloud storage. `reporting_delivery_methods` on capabilities declares supported protocols (SFTP, S3, GCS, Azure Blob). `reporting_bucket` on accounts specifies the destination. Products declare `supports_offline_delivery` in `reporting_capabilities`. File formats: CSV, JSON, Parquet, Avro, and ORC. (#2198, #2205) + +11. **Error Codes and Schema Consistency** — New `GOVERNANCE_DENIED` correctable error code. `context` and `ext` fields added to all request and response schemas across governance, collection, property, SI, and content-standards protocols. `signal_id` is now required on `get_signals` response items. `comply_test_controller` schema flattened from a oneOf union to a flat object with a `scenario` discriminant. Envelope-level `replayed` flag (from idempotency) is now accepted on 15 mutating-tool response schemas that previously rejected it — property-list, collection-list, and governance tools that return replay responses no longer fail schema validation (#2839). Formal `audience-status` enum extracted with explicit lifecycle transitions, paralleling the other lifecycle-bearing resource types (#2836). (#2194) + +12. **Media Buy Lifecycle** — `pending_activation` splits into `pending_creatives` (approved, no creatives assigned) and `pending_start` (ready to serve, waiting for flight date). `MediaBuy.pending_approval` removed; IO approvals are now explicit task-layer objects with their own lifecycle and audit trail — decoupled from media-buy status. New `submitted` branch on `create_media_buy` indicates the seller accepted the payload for processing but has not yet confirmed the order. Top-level `compliance_testing: { scenarios: [...] }` capability block declares `comply_test_controller` support. (#2034, #2270, #2351, #2425) + +13. **TMP: Provider Registration, TMPX Exposure Tracking, and Multi-Identity Match** — New `provider-registration.json` schema formalizes provider endpoints, capabilities, lifecycle status (active/inactive/draining), and timeout budgets. `GET /health` endpoint enables router-side monitoring. TMPX adds exposure tracking with country-partitioned identity and macro connectivity. Identity Match requests now accept an `identities` array (1-3 tokens per request) so publishers can maximize match rate across heterogeneous buyer identity graphs. Router filters per provider and re-signs; RFC 8785 JCS canonicalization eliminates delimiter-injection risk. TMP remains pre-release in 3.0; stable surface targeted for 3.1.0. (#2210, #2079, #2251) + +14. **Operating an Agent, Release Cadence, CHARTER** — New "Operating an Agent" guide for publishers without engineering teams (partner / self-host / build). Named release cadence policy: patch monthly, minor quarterly, major annual if needed. v2 EOL August 1, 2026. Formal `CHARTER.md` linked from README, IPR, and intro. AI disclosure page. Known-limitations and privacy-considerations reference pages. `status: experimental` marker for in-production but not-yet-stable protocol fields; `custom` pricing-model escape hatch on signals. (#2202, #2309, #2311, #2312, #2321, #2329, #2362, #2382, #2422, #2427) + +15. **Trust-surface late hardening** — Two normative tightenings from the external 3.0 security review land as MUST in GA: + - **Idempotency cache insert-rate limiting.** Sellers MUST apply per-`(authenticated_agent, account)` rate limits on idempotency-cache inserts (separate from request rate limits) and return `RATE_LIMITED` with `retry_after` when exceeded. First-deployment ceiling: **60 inserts/sec sustained per agent (3,600/min), burst to 300/sec over rolling 10s windows** — sized against realistic high-volume launch patterns (10 media buys/min × 10 packages × 10 creatives, 3–5× headroom) and consistent with the existing 100k-per-keyid webhook replay cap and 1M-per-keyid request replay cap. Tunable per deployment. Closes a nonce-flood DoS amplification vector. See [security.mdx idempotency § bullet 8](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency). + - **Webhook-registration signing MUST for signing-capable sellers.** Sellers that support request signing MUST reject webhook-registration requests carrying `push_notification_config.authentication` over bearer-only (unsigned) transport, with `request_signature_required`. Structural defense against on-path mutators injecting or stripping the `authentication` block during onboarding — a 9421-signed registration cryptographically commits to the body. Sellers with no signing support keep the log-and-alarm posture. Scoped breakage: buyers that previously registered webhooks with `authentication` against a signing-capable seller over bearer transport must switch to 9421-signed registration. Negative test vector `027-webhook-registration-authentication-unsigned.json` lands with the tightening. + +16. **Error-code vocabulary cleanup** (#2704) — The uniform-response MUST (#2691) forbids sellers from minting custom `*_NOT_FOUND` codes for typed parameters; the spec itself was out of compliance in 12 places. Cleanup aligns the spec with the rule: `PLAN_NOT_FOUND` is promoted to standard vocabulary (used across `report_plan_outcome`, `get_plan_audit_logs`, `check_governance`; recovery via `sync_plans`). Eleven other custom codes (`CHECK_NOT_FOUND`, `CAMPAIGN_NOT_FOUND`, `BRAND_NOT_FOUND`, `STANDARDS_NOT_FOUND`, `FORMAT_NOT_FOUND`, `AGENT_NOT_FOUND`, `SIGNAL_AGENT_SEGMENT_NOT_FOUND`, `SEGMENT_NOT_FOUND`, `AUDIENCE_NOT_FOUND`, `CATALOG_NOT_FOUND`, `EVENT_SOURCE_NOT_FOUND`) collapse to `REFERENCE_NOT_FOUND` with `error.field` naming the failed parameter. Signals auth-uniformity tightened: private signal agents now return `REFERENCE_NOT_FOUND` uniformly for unauthorized accounts (preventing cross-tenant enumeration). None of the 12 codes appeared in JSON schemas — prose-level cleanup only; no schema-enum migration. Sellers returning any of the 11 collapsed codes today MUST switch to `REFERENCE_NOT_FOUND`. + +17. **Schema presence tightenings on governance decisions and catalog sync** (#2612) — Conformant agents unchanged; non-conformant ones now fail at `response_schema` validation instead of a less-obvious downstream `field_present` check. `check-governance-response.json` enforces the spec-described presence rules via `if/then`: `status: conditions` requires `conditions` with `minItems: 1` (a conditions decision with zero conditions is non-actionable), `status: denied` requires `findings` with `minItems: 1` (a denial with no finding gives the buyer nothing to act on), and `status: approved | conditions` requires `expires_at`. `sync-catalogs-response.json` requires `item_count` on `action: created | updated | unchanged` (still omitted on `failed | deleted`). + +18. **Typed discriminators and id-naming consistency** — Three structural tightenings that make the 3.0 wire shape unambiguous for validators and for readers of payloads: + - **`asset_type` discriminator on creative assets** (#2776) — All 14 asset schemas declare `asset_type` as a required `const`, and composite schemas (`core/creative-manifest.json`, `core/creative-asset.json`, `core/offering-asset-group.json`, `creative/list-creatives-response.json`) switch from a 14-branch `anyOf` to `oneOf` + `discriminator: { propertyName: "asset_type" }`. ajv 8 consumers with `discriminator: true` report errors against only the selected branch — a single fixture's lint footprint collapsed from 60+ fingerprints to 2. Payloads that omit `asset_type` now fail validation; some `brief` payloads that were passing under the prior `anyOf` only because ajv matched the `text-asset` branch (e.g. a bare `{ "content": "..." }`) must conform to `core/creative-brief.json` — at minimum `{ "asset_type": "brief", "name": "<brief name>" }`. + - **`refine[]` entity id naming on `get_products`** (#2775) — Generic `id` replaced with `product_id` under `scope: "product"` and `proposal_id` under `scope: "proposal"`, matching the `<entity>_id` convention used elsewhere in the protocol. `action` is now optional and defaults to `"include"`; callers only set it explicitly for `"omit"` / `"more_like_this"` / `"finalize"`. + - **SI `context` → `intent` rename** (#2774, experimental carve-out) — On `si_get_offering` and `si_initiate_session`, the natural-language user-intent field is renamed from `context` to `intent`, freeing `context` to carry the universal opaque-echo object (`/schemas/core/context.json`) — matching every other AdCP subprotocol. `si_terminate_session` was already conformant. Treated as a minor change under the `x-status: experimental` + 6-week notice policy for SI. + - **Governance plan scoping contract** (#2777) — `governance/report-plan-outcome-request.json`, `governance/check-governance-request.json`, and `governance/get-plan-audit-logs-request.json` now state on `plan_id` / `plan_ids` that the plan uniquely scopes account and operator; an explicit `account` field is rejected by `additionalProperties: false`. The rejection is not new, but it is now a readable contract instead of a silent schema error. + +19. **url-asset accepts buyer macro templates** (#2801) — `core/assets/url-asset.json` relaxes `url.format` from `uri` to `uri-template` (RFC 6570 Level 1). This matches the prose spec in `docs/creative/universal-macros.mdx`, which requires buyers to submit tracker URLs with raw AdCP macros like `{SKU}` / `{DEVICE_ID}` / `{MEDIA_BUY_ID}` at sync time — the ad server URL-encodes substituted values at impression time. `uri-template` accepts both plain URIs and Level 1 templates. A new Template Syntax section in `universal-macros.mdx` scopes AdCP to Level 1 — Level 2–4 operators (`{+var}`, `{#var}`, `{.var}`, `{/var}`, `{;var}`, `{?var}`, `{&var}`) are not used. + +Brand schema extensions (`border_radius`, `elevation`, `spacing`, extended color roles, structured font definitions, generic `agents` array, `data_subject_contestation` for Art 22) and minor additions landed throughout the release. A trio of **non-normative `x-` annotations** also shipped to support the storyboard conformance harness — `x-entity` identifies which AdCP entity a field references (media_buy, brand, account, plan, policy, property_list, etc.; #2660), `x-mutates-state` marks request schemas that change observable state independently of whether they require an `idempotency_key` (#2675), and `governance_policy` splits into registry vs. inline variants (#2685). Agents don't validate `x-` fields; they're tooling hints for lints and entity-binding checks. See the [CHANGELOG](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#300) for the full list of minor additions. + +### Breaking Changes + +| Change | rc.3 | 3.0 | +|--------|------|-----| +| `idempotency_key` on mutating requests | Optional | **Required** (UUID v4 in the envelope) | +| `idempotency_key` on webhook payloads | Not standardized (fragile `(task_id, status, timestamp)` dedup) | **Required** on every webhook payload (UUID v4, cryptographically random) | +| Webhook signing | HMAC-SHA256 with shared secret (`push_notification_config.authentication` required) | RFC 9421 Ed25519 profile, baseline-required for sellers emitting webhooks; HMAC is a legacy fallback removed in 4.0 | +| `revocation-notification.notification_id` | Per-payload field name | Renamed to `idempotency_key` for protocol-wide dedup consistency | +| `MediaBuy.pending_approval` status | Present | Removed — IO approval modeled as explicit approval tasks | +| `budget.authority_level` enum | `agent_full \| agent_limited \| human_required` | Removed. Split into `budget.reallocation_threshold` (number) + `plan.human_review_required` (boolean) | +| `inventory-lists` specialism | Present | Renamed to `property-lists`; `collection-lists` is now a separate specialism | +| `domains` compliance taxonomy | `/compliance/{v}/domains/` | Renamed to `/compliance/{v}/protocols/` | +| `audience-sync` parent protocol | Under `governance` | Moved to `media-buy` | +| Capabilities boolean gates | `features.content_standards: true`, `brand.identity: true`, etc. | Removed — object presence is the signal | +| `reporting_capabilities` | Optional on products | Required | +| `pending_activation` status | Single status | Split into `pending_creatives` and `pending_start` | +| `account` on `update_media_buy` | Optional | Required | +| `preview_creative` schema | oneOf union | Flat object with `request_type` discriminant | +| `signal_id` on `get_signals` response | Optional | Required | +| `media_buy.reporting` capability | Present | Removed — use product-level `reporting_capabilities` | +| `governance_context` carrier | Opaque string | Signed JWS (decoded via governance agent JWKS) | +| `content_standards_detail` | Named `content_standards_detail` | Renamed to `content_standards` | +| Geo capability arrays | `supported_geo_levels`, `supported_metro_systems`, `supported_postal_systems` | Removed — use typed objects (`geo_countries`, `geo_regions`, etc.) | +| `comply_test_controller` schema | oneOf union | Flat object with `scenario` discriminant | +| `media_buy_id` in governance | Lifecycle correlator | Removed — use `governance_context` | +| `asset_type` on creative-asset payloads | Inferred via 14-branch `anyOf` | Required `const` on every asset; composite schemas use `oneOf` + `discriminator` | +| `refine[]` entity ids on `get_products` | Generic `id` field | `product_id` under `scope: "product"`, `proposal_id` under `scope: "proposal"`; `action` now optional (default `include`) | +| SI `context` field on `si_get_offering` / `si_initiate_session` | String (user intent) | Renamed to `intent`; `context` now carries the universal opaque-echo object | +| `core/assets/url-asset.json` `url.format` | `uri` (rejected AdCP macros) | `uri-template` (RFC 6570 Level 1) — accepts `{SKU}` / `{DEVICE_ID}` / `{MEDIA_BUY_ID}` at sync time | + +### Migration Notes For rc.3 Adopters + +- **Webhooks** — Migrate from HMAC-SHA256 to RFC 9421 signing. Publish a signing JWK in your JWKS at `jwks_uri` (JWKS is referenced from `brand.json` `agents[]`). New signers use `adcp_use: "request-signing"` for webhook delivery; deprecated `webhook-signing` keys remain accepted during the compatibility window. Use a distinct `kid` if you want webhook-only key material. Drop `push_notification_config.authentication` from new configs; buyers opt into legacy HMAC via `authentication.credentials`. Receivers verify against the sender's JWKS. Every outbound webhook payload must carry an `idempotency_key` matching `^[A-Za-z0-9_.:-]{16,255}$` (UUID v4 for Verified). Listeners must dedupe keyed by sender identity (signing `keyid` under 9421, or HMAC/Bearer credential under legacy) with a 24h minimum TTL. HMAC fallback remains available through 3.x; the full `authentication` object is removed in 4.0. +- **Idempotency** — Generate a fresh key on every mutating request, matching `^[A-Za-z0-9_.:-]{16,255}$` (UUID v4 for Verified). Same key + identical payload on retry → `replayed: true`. Same key + different payload → `IDEMPOTENCY_CONFLICT`. Key older than the seller-declared `replay_ttl_seconds` → `IDEMPOTENCY_EXPIRED` (1h–7d, 24h recommended — no protocol default). Your agent must persist keys across instances. +- **Request signing (optional in 3.0, required for Verified)** — If you plan to claim AdCP Verified, implement RFC 9421 Ed25519 signing per the [signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#request-signing) and declare your signing key via the account surface. Test against `static/compliance/source/test-vectors/request-signing/` and the runner's `signed_requests` harness. +- **Governance context** — Switch from opaque-string `governance_context` to the signed JWS format. Verify using the governance agent's JWKS (resolved via `sync_governance`). Bind signature to `sub` (buyer), `aud` (seller), `phase`, and `exp` before trusting. +- **IO approval** — Remove `MediaBuy.pending_approval` from state filters. Consume approval tasks from the task surface instead. +- **Budget autonomy** — Rewrite any `budget.authority_level` references: `agent_full` → `reallocation_unlimited: true`; `agent_limited` → `reallocation_threshold: <positive>`; `human_required` → `plan.human_review_required: true`. +- **Regulated verticals** — For credit, insurance, recruitment, or housing campaigns, declare `policy_categories` and either set `human_review_required: true` or let your governance agent do so automatically. Populate `brand.data_subject_contestation` for Art 22(3) discovery. +- **Specialism claims** — Rename `inventory-lists` → `property-lists`; add `collection-lists` if applicable. Reclassify `audience-sync` under `media-buy` (add `media_buy` to `supported_protocols` if you only declared `governance`). +- **Compliance paths** — Update any references to `/compliance/{v}/domains/` → `/compliance/{v}/protocols/`. +- **Capabilities** — Remove all boolean capability checks (`features.content_standards`, `brand.identity`, `trusted_match.supported`, etc.). Test for object presence instead. See the [prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades#capabilities-model-simplification) for the full field list. +- **Products** — Ensure all products include `reporting_capabilities`. This field is now required. +- **Media buy status** — Replace `pending_activation` with `pending_creatives` and `pending_start`. See the [state machine](/dist/docs/3.2.0-beta.4/media-buy/media-buys#state-machine). +- **update_media_buy** — Pass `account` on all calls, matching `create_media_buy` behavior. +- **preview_creative** — Update request builders from the oneOf union to the flat schema with `request_type` discriminant. +- **Signals** — Include `signal_id` on all signal items in `get_signals` responses. +- **Governance** — Replace `media_buy_id` references with `governance_context`. Handle `GOVERNANCE_DENIED` as a correctable error code. +- **Version negotiation** — Include `adcp_major_version` on requests when interacting with multi-version sellers. +- **Creative asset payloads** — Add `"asset_type": "<type>"` to every asset value in `creative_manifest.assets`, `creative.assets`, `offering_asset_group.items`, and `list_creatives` responses. For `brief` assets, move free-text prompts out of a bare `{ "content": "..." }` shape into `core/creative-brief.json` fields (at minimum `{ "asset_type": "brief", "name": "<brief name>" }`). For `vast` / `daast` assets, `asset_type` at the root plus the existing nested `delivery_type` discriminator. +- **Product refinement** — Rename `refine[].id` to `refine[].product_id` (scope: product) or `refine[].proposal_id` (scope: proposal). Drop `action` when you mean `include`; keep it only for non-default values (`omit`, `more_like_this`, `finalize`). +- **Sponsored Intelligence** — Rename the user-intent field from `context` to `intent` on `si_get_offering` and `si_initiate_session`. If you echo a universal `context` object, place it under `context` (now typed per `/schemas/core/context.json`). +- **url-asset tracker URLs** — No action needed to accept macros — the validator now permits RFC 6570 Level 1 templates. Do not pre-encode AdCP macros at sync time; the ad server URL-encodes substituted values at impression time. + +### Next steps + +- **Upgrading from v2?** Start with the [migration guide](/dist/docs/3.2.0-beta.4/reference/migration). +- **Upgrading from a prerelease?** Go to the [prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades). +- **New to AdCP?** Read the [3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) and then [get started](/dist/docs/3.2.0-beta.4/quickstart). + +--- + +## Version 3.0.0-rc.3 + +**Status:** Release Candidate (superseded by 3.0.0) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) | [SDK support](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks#adcp-3-0-support) + +### What's New + +1. **Trusted Match Protocol (TMP)** — Real-time execution layer for AdCP. 9 schemas, 12 documentation pages, provider discovery on products, typed artifacts for content resolution, and lightweight context matching. Deprecates AXE. + +2. **Order Lifecycle Management** — `confirmed_at` on order creation, cancellation at media buy and package level with `canceled_by` attribution, per-package `creative_deadline`, `valid_actions` for state-aware agents, `revision` for optimistic concurrency, and `include_history` for revision audit trails. 7 new error codes. + +3. **Governance Simplification** — Remove `binding` field from `check_governance` (inferred from discriminating fields), remove `mode` from `sync_plans` (governance agent configuration, not protocol), remove `escalated` status (handled via async task lifecycle). Three terminal statuses: `approved`, `denied`, `conditions`. + +4. **Seller-Assigned IDs** — Remove `buyer_ref`, `buyer_campaign_ref`, and `campaign_ref`. Seller-assigned `media_buy_id` and `package_id` are canonical. `idempotency_key` on all mutating requests. Opaque `governance_context` string replaces structured schema. + +5. **Proposal Lifecycle** — Draft/committed proposal status, finalization via refine action, insertion order signing, and expiry enforcement on `create_media_buy`. Guaranteed products start as draft with indicative pricing. + +6. **Audience Bias Governance** — Structured audience data for fairness validation. New schemas for audience selectors, constraints, policy categories, and restricted attributes (GDPR Article 9). 10 policy category definitions, 8 restricted attribute definitions, 13 seed policies across US, EU, and platform regulations. + +7. **Streaming and Audio Delivery Metrics** — `completed_views` (renamed from `video_completions`), `reach`, `reach_unit`, and `frequency` in aggregated totals. Audio/podcast-native metrics. `reach_unit` co-occurrence constraint on `delivery-metrics.json`. + +8. **Availability Forecasts** — `budget` now optional on `ForecastPoint` for total available inventory. New `availability` forecast range unit. Guaranteed products include availability forecasts with estimated cost. + +9. **Advertiser Industry Taxonomy** — Two-level dot-notation categories on brand manifest and `create_media_buy`. Restricted categories (gambling, cannabis, dating) require explicit declaration. + +10. **Content Standards** — `content_standards` on `get_adcp_capabilities` for pre-buy visibility into local evaluation and artifact delivery capabilities. `sampling` removed from `get_media_buy_artifacts` (configured at creation time). + +11. **Event Source Health** — Optional `health` on event sources (status, match rate, event volume, issues) and `measurement_readiness` on products for buyer event setup evaluation. + +12. **Collection/Installment Extensions** — `special` and `limited_series` fields, installment deadlines with deadline policies, print-capable creative formats with physical units, DPI, bleed, and color space. + +13. **Scoped adagents.json Authorization** — Delegation types, placement governance, signing keys, country and time-window constraints on `authorized_agents`. + +### Breaking Changes + +| Change | rc.2 | rc.3 | +|--------|------|------| +| Buyer references | `buyer_ref`, `buyer_campaign_ref`, `campaign_ref` on requests | Removed — seller-assigned `media_buy_id` and `package_id` are canonical | +| Idempotency | `buyer_ref` as implicit dedup key | Explicit `idempotency_key` on all mutating requests | +| Governance context | Structured `governance-context.json` schema | Signed-JWS `governance_context` string (opaque to forwarders, cryptographically verifiable by auditors — see [security.mdx](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-governance-context)) | +| `check_governance` binding | `binding` field on request | Removed — inferred from discriminating fields | +| `sync_plans` mode | `mode` field (audit/advisory/enforce) | Removed — governance agent configuration | +| `check_governance` status | `escalated` as possible status | Removed — use async task lifecycle | +| `get_media_buy_artifacts` | `sampling` parameter on request | Removed — sampling configured at media buy creation | +| FormatCategory | `format-category.json` enum, `type` on Format | Removed — use `assets` array or `asset_types` filter | +| Shows/episodes | `show`, `episode`, `show_id`, `episode_id` | Renamed to `collection`, `installment`, `collection_id`, `installment_id` | + +### Migration Notes For rc.2 Adopters + +- **Buyer references** — Remove `buyer_ref` and `campaign_ref` from request payloads. Use `idempotency_key` for safe retries instead. +- **Governance** — Remove `binding` from `check_governance` calls, `mode` from `sync_plans`, and stop handling `escalated` status. Use async task polling for human review workflows. +- **Artifacts** — Remove `sampling` from `get_media_buy_artifacts` requests. Configure sampling at `create_media_buy` time. +- **Format filtering** — Replace `format_types` filters with `asset_types` on `list_creative_formats` or `channels` on `get_products`. +- **Collections** — Rename `show`/`episode` references to `collection`/`installment` throughout. + +--- + +## Version 3.0.0-rc.2 + +**Status:** Release Candidate | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +### What's New + +1. **Brand Protocol Rights Lifecycle** — `get_rights`, `acquire_rights`, `update_rights` tasks for brand licensing. Generation credentials, creative approval webhooks, revocation notifications, and usage reporting. Authenticated webhooks (HMAC-SHA256), actionable vs final rejection convention, DDEX PIE mapping for music licensing, and sandbox tooling for scenario testing. + +2. **Visual Guidelines on Brand Manifest** — Structured `visual_guidelines` field on `brand.json`: photography, graphic style, shapes, iconography, composition, motion, logo placement, colorways, type scale, asset libraries, and restrictions. Enables generative creative systems to produce on-brand assets. + +3. **Collections and Installments** — Content dimension for products representing persistent programs (podcasts, TV series, YouTube channels). `collections` on products references collections declared in an `adagents.json` by domain and collection ID — collection creators can serve as canonical sources regardless of distribution. `collection_targeting_allowed` controls whether buyers can select a subset or get the bundle. Distribution identifiers for cross-seller matching, installment lifecycle states, break-based ad inventory, talent linking, collection relationships, international content ratings. + +4. **Sponsored Intelligence Channel** — `sponsored_intelligence` added to the media channel taxonomy for AI platform advertising (AI assistants, AI search, generative AI experiences). + +5. **Property Governance Integration** — Optional `property_list` parameter on `get_products` for filtering products by governance-evaluated property lists. `property_list_applied` response field confirms filtering. + +6. **Campaign Governance and Policy Registry** — `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs` for plan-level governance. Adds audit/advisory/enforce modes, delegated budget authority, seller-side governance checks, portfolio governance, registry-backed shared policies, and `governance_context` for canonical plan extraction. + +7. **Account Model Simplification** — Removed `account_resolution` capability. `require_operator_auth` now determines both auth model and account reference style. + +8. **Creative Workflow Upgrades** — `build_creative` now supports inline preview via `include_preview`, multi-format output via `target_format_ids`, quality tiers for draft vs production output, catalog-driven `item_limit`, and library retrieval using `creative_id` plus optional macro substitution and trafficking context. `preview_creative` also adds quality control parameters. + +9. **Creative Library Protocol Unification** — `list_creatives` and `sync_creatives` now live in the Creative Protocol. Creative agents can advertise `supports_generation`, `supports_transformation`, and `has_creative_library` so buyers can route generation, transformation, and library retrieval intentionally. + +10. **Disclosure Persistence** — Regulatory disclosure requirements can now specify persistence (`continuous`, `initial`, `flexible`) in addition to position and duration, with matching capability declarations on formats. + +11. **Product Discovery and Planning Ergonomics** — Product discovery adds `exclusivity` and `preferred_delivery_types`; products may omit `delivery_measurement`; packages and proposals support per-package `start_time` / `end_time`; and `get_products` now supports `time_budget` with `incomplete` response reporting. + +12. **Accounts and Sandbox Refinements** — `sync_accounts` adds `payment_terms`, sandbox capability moves to the account capability block, and sandbox now participates in the account natural key for buyer-declared account flows. + +13. **Governance Agent Sync** — `sync_governance` task for syncing governance agent endpoints to specific accounts. Supports both account-id namespaces (`account_id`) and buyer-declared accounts (`brand` + `operator`) via account references. Replace semantics per call. Governance sync is now a dedicated tool — removed from `sync_accounts` and `list_accounts`. + +### Breaking Changes + +| Change | rc.1 | rc.2 | +|--------|------|------| +| Account resolution | `account_resolution` capability | Removed — `require_operator_auth` determines account model | +| Creative library operations | `list_creatives` and `sync_creatives` documented under Media Buy | Creative library tasks now live in the Creative Protocol | +| Sandbox capability | `media_buy.features.sandbox` | `account.sandbox` | +| DOOH flat rate parameters | `flat_rate.parameters` without discriminator | `flat_rate.parameters.type: "dooh"` required when parameters are present | +| delete_content_standards | Documented task | Removed — archive standards via `update_content_standards` instead | +| get_property_features | Standalone task | Removed — use property list filters and `get_adcp_capabilities` for feature discovery | +| Governance agent sync | `governance_agents` on `sync_accounts` request and `list_accounts` request | Moved to dedicated `sync_governance` task | + +### Migration Notes For rc.1 Adopters + +- **Creative task routing** — If you adopted 3.0.0-rc.1, update any assumptions that creative library operations are Media Buy tasks. `list_creatives` and `sync_creatives` are Creative Protocol operations in rc.2, even when a sales agent implements them on the same endpoint. +- **Capability discovery** — Replace reads of `account_resolution` with `require_operator_auth`, and read sandbox support from `account.sandbox` instead of `media_buy.features.sandbox`. +- **Creative request/response handling** — `build_creative` can now return inline previews, multiple manifests, or a library-resolved manifest. Clients that assumed only single-format manifest-in / manifest-out behavior should update their response handling. +- **DOOH validation** — Existing v3 DOOH `flat_rate` integrations must add `type: "dooh"` inside `parameters` when those parameters are provided. + +### Other Updates + +- **Certification program** — Three-tier certification (Basics, Practitioner, Specialist) taught by Addie through interactive chat, with vibe coding build projects for non-technical participants. +- **Documentation** — Illustrated protocol walkthroughs, buy-side guides, FAQ expansion, schema-compliant examples, and collapsed sidebar navigation. + +--- + +## Version 3.0.0-rc.1 + +**Status:** Release Candidate | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +### What's New + +1. **Keyword Targeting** — `keyword_targets` and `negative_keywords` on the targeting overlay for search and retail media. Per-keyword bid prices with broad, phrase, and exact match types. Incremental management via `keyword_targets_add` and `keyword_targets_remove` on package updates. `by_keyword` breakdown in delivery reporting. + +2. **Optimization Goals Redesign** — `optimization_goal` (singular) replaced by `optimization_goals` (array). Discriminated union on `kind`: `metric` for seller-native delivery metrics or `event` for conversion tracking. Priority ordering for multi-goal packages. New metric types: `engagements`, `follows`, `saves`, `profile_visits`. View duration configuration for video completion goals. + +3. **Reach Optimization** — `reach` as a metric optimization goal with `reach_unit` (individuals, households, devices, accounts, cookies, custom) and optional `target_frequency` band (min/max/window). Products declare `supported_reach_units` when reach is in their supported metrics. + +4. **Expanded Frequency Cap** — `frequency_cap` now supports `max_impressions` + `per` + `window` in addition to the existing `suppress_minutes`. + +5. **Signal Pricing Models** — Discriminated union with three pricing models: `cpm`, `percent_of_media` (with optional `max_cpm`), and `flat_fee`. Structured `pricing_options` array replaces the legacy pricing object on signals. `pricing_option_id` on `activate_signal`. `idempotency_key` on `report_usage` for preventing double-billing. + +6. **Dimension Breakdowns** — Opt-in reporting dimensions on `get_media_buy_delivery`: `by_geo`, `by_device_type`, `by_device_platform`, `by_audience`, `by_placement` — each with truncation flags. New `reporting_dimensions` request parameter with per-dimension `limit` and `sort_by` controls. Capability declaration at seller level (`get_adcp_capabilities` → `media_buy.reporting`) and product level (`reporting_capabilities`). + +7. **Device Type Targeting** — New `device_type` field (form factor: desktop, mobile, tablet, ctv, dooh, unknown) distinct from existing `device_platform` (OS). With `device_type_exclude` for negative targeting. Declared in `get_adcp_capabilities` targeting capabilities. + +8. **Deliver-to Flattening** — The nested `deliver_to` object in `get_signals` request replaced with two top-level fields: `destinations` and `countries`. Simplifies queries where the caller is querying a platform's own signal agent. + +9. **Metric Optimization Capabilities** — Products declare `metric_optimization` block with `supported_metrics`, `supported_view_durations`, and `supported_targets`. `max_optimization_goals` on products. Conversion tracking declares `supported_targets`. `multi_source_event_dedup` flag in `get_adcp_capabilities`. + +10. **Swiss & Austrian Postal Codes** — Swiss and Austrian `plz` postal targeting added, with deprecated `ch_plz` and `at_plz` aliases retained for compatibility. + +11. **Brand Identity Unification** — `brand-manifest.json` deleted. Task schemas now reference brands by `{ domain, brand_id }` (BrandRef) instead of passing inline manifests. Brand data is resolved from `brand.json` or the registry at execution time. + +12. **Delivery Forecasts on Products** — `estimated_exposures` replaced with structured `forecast` field using the `DeliveryForecast` type. Products now return time periods, metric ranges, and methodology context during discovery. + +13. **Proposal Refinement via Buying Mode** — `proposal_id` removed from `get_products` request. Refinement now uses `buying_mode: "refine"` with a typed `refine` array (see item 21). Session continuity (`context_id` in MCP, `contextId` in A2A) carries conversation history across calls. Proposal execution via `create_media_buy` with `proposal_id` is unchanged. + +14. **First-Class Catalogs** — `sync_catalogs` task with 13 catalog types (structural and industry-vertical). Formats declare `catalog_requirements`. Catalogs include `conversion_events` and `content_id_type` for attribution alignment. + +15. **New Tasks** — `get_media_buys` for operational campaign monitoring, `get_creative_features` for creative governance, `sync_audiences` for CRM-based audience management. + +16. **Buying Mode** — `buying_mode` on `get_products` with three modes: `brief` (natural language discovery), `wholesale` (wholesale product feed), and `refine` (typed change-requests on previous results). Now required on all `get_products` calls. + +17. **Sandbox Mode** — `sandbox` protocol parameter on all tasks for testing without side effects. + +18. **Creative Brief Type** — `CreativeBrief` type on `build_creative` request for structured creative direction. + +19. **Campaign Reference** — `campaign_ref` field for cross-operation campaign grouping across multiple media buys. + +20. **Geo Proximity Targeting** — `geo_proximity` targeting overlay for point-based proximity targeting. Three methods: `travel_time` isochrones (e.g., "within 2hr drive of Düsseldorf"), `radius` (e.g., "within 30km of Heathrow"), and pre-computed `geometry` (buyer provides a GeoJSON polygon). Structured capability declaration in `get_adcp_capabilities` with per-method and transport mode support. + +21. **Typed Refinement with Seller Acknowledgment** — `refine` redesigned from nested object to typed change-request array with `scope` discriminator (`request`, `product`, `proposal`). Field renames: `product_id`/`proposal_id` → `id`, `notes` → `ask`. Seller responses include `refinement_applied` — a positionally-matched array with per-ask `status` (`applied`, `partial`, `unable`) and notes. + +22. **AI Provenance and Disclosure** — `provenance` object on creative manifests, assets, and artifacts for AI content transparency. IPTC-aligned `digital_source_type` enum (9 values), `ai_tool` metadata, `human_oversight` levels, C2PA soft references via `manifest_url`, regulatory `disclosure` with per-jurisdiction requirements (EU AI Act, California SB 942), and third-party `verification` results. `provenance_required` on creative policy for seller enforcement. + +23. **Creative Compliance** — `compliance` object on creative briefs with `required_disclosures` (structured items with text, position, jurisdictions, regulation, minimum duration) and `prohibited_claims`. New `disclosure-position` enum with 8 standard positions. Formats declare `supported_disclosure_positions`. `supports_compliance` capability flag replaces `supports_brief`. + +24. **Manifest Unification** — Creative manifest model unified to `format_id` + `assets`. Briefs and catalogs become proper asset types (`brief`, `catalog`) within the assets map. All asset reference lists across creative-manifest, creative-asset, and list-creatives-response aligned to 14 asset types with consistent `anyOf` validation. + +25. **Structured Error Recovery** — `recovery` field on errors with three classifications: `transient` (retry after delay), `correctable` (fix request and resend), `terminal` (requires human action). 18 standard error codes (`INVALID_REQUEST`, `RATE_LIMITED`, `POLICY_VIOLATION`, `PRODUCT_UNAVAILABLE`, etc.) with recovery mappings in the new `error-code` enum. + +26. **Agent Ergonomics** — `fields` parameter on `get_products` for response projection (24 projectable fields). `include_package_daily_breakdown` opt-in on delivery reporting. Request-side `attribution_window` for cross-platform normalization. Buy-level `start_time`/`end_time` on `get_media_buys`. `supported_pricing_models` on seller capabilities. Audience metadata: `description`, `audience_type` (crm, suppression, lookalike_seed), `tags`, and `total_uploaded_count` for match rate calculation. + +27. **Signal Deactivation** — `action` field on `activate_signal` with `activate` (default) and `deactivate` values for compliance-driven signal removal. + +28. **Signal Metadata** — `categories` (valid values for categorical signals) and `range` (min/max for numeric signals) on signal entries in `get_signals` responses. + +29. **Media Buy Rejection** — `rejected` status added to media-buy-status enum with `rejection_reason` on the MediaBuy object. + +30. **Idempotency** — `idempotency_key` on `update_media_buy` and `sync_creatives` for at-most-once execution. `idempotency_key` added to `create_media_buy` for at-most-once creation. + +### Breaking Changes + +| Change | beta.3 | rc.1 | +|--------|--------|------| +| Brand identity | Inline `brand_manifest` object | `brand` (BrandRef: `{ domain, brand_id }`) — resolved at execution time | +| Product exposure estimates | `estimated_exposures` (integer) | `forecast` (DeliveryForecast object) | +| Proposal refinement | `proposal_id` on `get_products` request | Removed — use `buying_mode: "refine"` with typed `refine` array | +| Optimization goals | `optimization_goal` (singular object) | `optimization_goals` (array of discriminated union) | +| AudienceMember identity | `external_id` in uid-type enum | `external_id` is required top-level field, removed from enum | +| Signals deliver_to | Nested `deliver_to` object | Top-level `destinations` and `countries` | +| Signals pricing | `pricing: { cpm }` | Structured `pricing_options[]` array | +| report_usage | `kind` and `operator_id` fields | Both removed | +| Refinement model | `refine` object with `overall`/`products`/`proposals` | `refine` array of typed change-requests with `scope` discriminator | +| Creative assignments | `{ creative_id: package_id[] }` map | Typed array with `creative_id`, `package_id`, `weight`, `placement_ids` | +| Signals account | String `account_id` | `account` (AccountReference object) | +| Signals deployments | `deployments` field | `destinations` (renamed) | +| Package catalogs | `catalog` (single object) | `catalogs` (array) | +| buying_mode | Not present | Required — three modes: `brief`, `wholesale`, `refine` | +| Creative brief delivery | Top-level `creative_brief` on `build_creative` | `brief` asset type in manifest `assets` map | +| Creative capability | `supports_brief` | `supports_compliance` | + +### Other Changes + +- `audience-source` enum for breakdown-level audience attribution +- `device-type` enum (desktop, mobile, tablet, ctv, dooh, unknown) for form factor targeting and breakdown reporting +- `sort-metric` enum for controlling breakdown sort order +- `geo-breakdown-support` schema for declaring per-geography breakdown capabilities +- Keyword targeting capability flags in `get_adcp_capabilities` +- `reporting` object in `get_adcp_capabilities` for declaring dimension breakdown support +- `geo_proximity` capability object in `get_adcp_capabilities` for declaring supported proximity methods and transport modes +- `error-code` enum with 18 standard error codes and recovery classifications +- `disclosure-position` enum (8 standard positions for regulatory disclosures) +- `digital-source-type` enum (9 IPTC-aligned values for AI content classification) +- `provenance` core object for AI content transparency across creative schemas +- `consent-basis` enum extracted from `sync_audiences` (consent, legitimate_interest, contract, legal_obligation) +- `date-range` and `datetime-range` core types replacing inline period objects +- Property list filters relaxed: `countries_all` and `channels_any` no longer required +- Signal `categories` and `range` metadata on `get_signals` responses +- `rejected` media buy status with `rejection_reason` +- `idempotency_key` on `update_media_buy` and `sync_creatives` +- Removed `not:{}` patterns from 7 response schemas for Python codegen compatibility + +--- + +## Version 3.0.0-beta.3 + +**Status:** Beta | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +### What's New + +1. **Delivery Forecasting** - Predict campaign performance before committing budget. New `DeliveryForecast` type with budget curves, forecast methods (estimate, modeled, guaranteed), daypart targeting windows, and GRP demographic notation. Forecasts attach to product allocations and proposals, enabling budget curve analysis across spend levels. + +2. **Brand Protocol** - Brand discovery and identity resolution via `brand.json`. Four manifest variants (authoritative redirect, house redirect, brand agent, house portfolio) with builder tools, registry, and admin UI. Brands declare `authorized_operators` to control which agents can represent them. + +3. **Account Management** - `sync_accounts` task lets agents declare brand portfolios to sellers with upsert semantics. Account capabilities in `get_adcp_capabilities` describe billing requirements and operator authorization. Two billing models (operator, agent) with account lifecycle (active, pending_approval, payment_required, suspended, closed). `account_id` is optional on `create_media_buy` — single-account agents can omit it. + +4. **Commerce Media** - Catalog-driven product discovery (`catalog` on `get_products`), catalog-driven packages, per-catalog-item delivery reporting (`by_catalog_item`), store catchment targeting, and `catalog_types` on products. Cross-retailer GTIN matching via catalog selectors. Commerce attribution metrics (`roas`, `new_to_brand_rate`) in delivery response. See the [Commerce Media Guide](/dist/docs/3.2.0-beta.4/media-buy/commerce-media) and [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs). + +5. **Creative Delivery Reporting** - Per-creative metrics breakdown within `by_package` in delivery responses. New `get_creative_delivery` task on creative agents for variant-level delivery data with manifests. Three variant tiers: standard (1:1), asset group optimization, and generative creative. Format-level `reported_metrics` declare which metrics each format can provide. + +6. **CPA & TIME Pricing Models** - Two new pricing models. CPA (Cost Per Acquisition) for outcome-based campaigns — covers CPO, CPL, CPI use cases differentiated by `event_type`. TIME for sponsorship-based advertising where price scales with duration (hour, day, week, month) with optional min/max constraints. + +7. **Conversion Tracking** - New events protocol with `sync_event_sources` and `log_event` tasks for attribution and measurement. + +8. **Published Signal Definitions** - Data providers become first-class members with signal definitions, categories, targeting schemas, and value types. New schemas for signal discovery and integration into products. + +9. **Cursor-Based Pagination** - All list operations (`list_creatives`, `tasks_list`, `list_property_lists`, `get_property_list`, `get_media_buy_artifacts`) standardized on cursor-based pagination with shared `pagination-request.json` and `pagination-response.json` schemas. + +10. **Accessibility in Creative Formats** - Two-layer accessibility model. Format-level `wcag_level` (A/AA/AAA) and `requires_accessible_assets` flag. Asset-level metadata for inspectable assets (alt text, captions, transcripts) and self-declared properties for opaque assets (keyboard navigable, motion control). Buyers can filter by `wcag_level` in `list_creative_formats`. + +11. **Targeting Restrictions & Geo Exclusion** - Functional restriction overlays for age (with verification methods), device platform (Sec-CH-UA-Platform values), and language localization. Geographic exclusion fields (`geo_countries_exclude`, `geo_regions_exclude`, `geo_metros_exclude`, `geo_postal_areas_exclude`) enable RCT holdout groups and regulatory exclusions. + +12. **Typed Asset Requirements** - Discriminated union schemas for all 12 asset types (image, video, audio, text, markdown, HTML, CSS, JavaScript, VAST, DAAST, URL, webhook) using `asset_type` as discriminator. + +13. **Universal Macros** - `universal-macro.json` enum defining all 54 standard ad-serving macros, including 6 new additions: `GPP_SID`, `IP_ADDRESS`, `STATION_ID`, `COLLECTION_NAME`, `INSTALLMENT_ID`, `AUDIO_DURATION`. + +14. **Brand Manifest Improvements** - Structured tone object with `voice`, `attributes`, `dos`, `donts` fields. Logo objects gain `orientation`, `background`, `variant`, `usage` fields. + +### Breaking Changes + +| Change | beta.2 | beta.3 | +|--------|--------|--------| +| Pagination | `limit`/`offset` | Cursor-based `pagination` object | +| Brand manifest tone | `string \| object` | Object only with structured fields | + +### Other Changes + +- `optimization_goals` on package requests — buyers can specify conversion and metric optimization goals when creating or updating media buys +- Attribution window metadata on delivery response: `click_window_days`, `view_window_days`, and attribution `model` (last_touch, first_touch, linear, time_decay, data_driven) +- Channel fields on property and product schemas: `supported_channels` and `channels` referencing Media Channel Taxonomy enum +- `account_id` added to `get_media_buy_delivery` and `get_media_buy_artifacts` requests +- `date_range_support` in reporting capabilities +- `minItems: 1` on request-side arrays for stricter validation +- `FormatCategory` enum and `type` field removed from Format objects (use `assets` array instead) +- `format_id` optional in `preview_creative` (falls back to `creative_manifest.format_id`) +- `selection_mode` on repeatable asset groups to distinguish sequential (carousel) from optimize (asset pool) behavior +- Session ID fallback recommendation for MCP agent `context_id` + +--- + +## Version 3.0.0-beta.2 + +**Status:** Beta | [Full Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#300-beta2) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +Building on beta.1, this release adds account-level billing, property targeting controls, CTV technical specs, and agent-driven UI rendering for Sponsored Intelligence. + +### What's New + +1. **Accounts & Agents** - AdCP now distinguishes Brand (whose products are advertised), Account (who gets billed), and Agent (who places the buy). New `account_id` field on media buys, product queries, and creative operations enables multi-account billing with rate cards and credit limits. + +2. **Property Targeting** - Products can declare `property_targeting_allowed` to let buyers target a subset of publisher properties. When enabled, buyers pass a `property_list` in their targeting overlay and the package runs on the intersection. + +3. **A2UI for Sponsored Intelligence** - Sponsored Intelligence sessions now support agent-driven UI rendering via MCP Apps, enabling rich interactive experiences within AI assistants. + +4. **CTV & Streaming Constraints** - Video formats gain technical constraint fields for frame rate, HDR, GOP structure, and moov atom position. Audio formats add codec, sampling rate, channel layout, and loudness normalization (LUFS/true peak) fields. + +5. **Creative Protocol Discovery** - `get_adcp_capabilities` now includes `"creative"` in `supported_protocols`, letting agents discover creative services at runtime. + +### Schema Changes + +- New `account.json`, `list-accounts-request.json`, `list-accounts-response.json` schemas +- `account_id` added to `create-media-buy-request`, `get-products-request`, `sync-creatives-request`, and their responses +- Shared `price-guidance.json` schema extracted to fix duplicate type generation across pricing options +- `property_targeting_allowed` and `property_list` fields added to product and targeting overlay schemas +- Video/audio asset schemas extended with CTV technical constraint fields + +### Removed + +| Removed | Replacement | +|---------|-------------| +| `list_property_features` task | `get_adcp_capabilities` | +| `list_authorized_properties` task | `get_adcp_capabilities` portfolio section | +| `adcp-extension.json` schema | `get_adcp_capabilities` task | +| `assets_required` format field | `assets` array with `required` boolean | +| `preview_image` format field | `format_card` object | + +--- + +## Version 3.0.0-beta.1 + +**Status:** Beta | [Full Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#300-beta1) | [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) + +<Warning> +**This is a beta release.** While the API is stable for testing, breaking changes may occur before the final 3.0.0 release. We encourage early adopters to test and provide feedback. +</Warning> + +### What's New + +Version 3.0.0 is a **major release** that expands AdCP beyond media buying into governance, brand suitability, and conversational commerce. See the [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) for detailed upgrade instructions. + +**🎯 Key Themes:** + +1. **Media Channel Taxonomy** - Complete overhaul from 9 format-oriented channels to 19 planning-oriented channels that reflect how buyers allocate budgets. See [Media Channel Taxonomy](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy). + +2. **Governance Protocol** - New protocol domain for property lists, content standards, and brand suitability evaluation with collaborative calibration workflows. + +3. **Sponsored Intelligence Protocol** - Conversational brand experiences in AI assistants. Defines how hosts invoke brand agent endpoints for rich engagement without breaking conversational flow. See [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol). + +4. **Protocol-Level Capability Discovery** - `get_adcp_capabilities` task replaces agent card extensions, providing runtime discovery of capabilities, supported protocols, and geo targeting systems. + +5. **Creative Assignment Weighting** - Replace simple creative ID arrays with weighted assignments supporting traffic allocation and placement targeting. + +6. **Global Geo Targeting** - Structured geographic targeting with named systems (Nielsen DMA, UK ITL, Eurostat NUTS2, etc.) for international markets. + +### Breaking Changes Summary + +| Change | v2.x | v3.x | +|--------|------|------| +| Channels | 9 values | 19 planning-oriented values | +| Creative assignment | `creative_ids: [...]` | `creative_assignments: [{...}]` | +| Metro targeting | `geo_metros: ["501"]` | `geo_metros: [{ system, code }]` | +| Postal targeting | `geo_postal_codes` | `geo_postal_areas` with country and system | +| Asset discovery | `assets_required: [...]` | `assets: [{ asset_id, required }]` | + +See [AdCP 3.0 overview](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) for detailed before/after examples and migration steps. + +### New Protocol Domains + +#### Governance Protocol + +Brand suitability and inventory curation: + +- **Property Lists** - `create_property_list`, `get_property_list`, `update_property_list`, `delete_property_list`, `list_property_lists` +- **Content Standards** - `create_content_standards`, `get_content_standards`, `update_content_standards`, `calibrate_content`, `validate_content_delivery` +- **Product Filtering** - Pass property lists to `get_products` for compliant inventory discovery + +#### Sponsored Intelligence Protocol + +Conversational brand experiences: + +- **Session Management** - `si_get_offering`, `si_initiate_session`, `si_send_message`, `si_terminate_session` +- **Capability Negotiation** - Brands declare modalities (voice, video, avatar), hosts respond with supported capabilities +- **Commerce Handoff** - Seamless transition to AdCP for transactions + +See [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) for complete documentation. + +### New Features + +- **`get_adcp_capabilities` task** - Runtime capability discovery replacing agent card extensions +- **Unified asset discovery** - `assets` array with `required` boolean for full asset visibility +- **Property list filtering** - Pass governance lists to `get_products` for brand-safe inventory + +### Removed in v3 + +| Removed | Replacement | +|---------|-------------| +| `adcp-extension.json` agent card | `get_adcp_capabilities` task | +| `list_authorized_properties` task | `get_adcp_capabilities` portfolio section | +| `assets_required` in formats | `assets` array with `required` boolean | +| `preview_image` in formats | `format_card` object | +| `creative_ids` in packages | `creative_assignments` array | +| `geo_postal_codes` | `geo_postal_areas` | +| `fixed_rate` in pricing | `fixed_price` | +| `price_guidance.floor` | `floor_price` (top-level) | + +### Quick Migration Checklist + +- [ ] Update channel enum values ([taxonomy guide](/dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy)) +- [ ] Replace `creative_ids` with `creative_assignments` +- [ ] Add system specification to metro/postal targeting +- [ ] Implement `get_adcp_capabilities` task +- [ ] Update format parsing to use `assets` array + +**[View AdCP 3.0 overview →](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3)** + +--- + +## Version 2.5.0 + +**Released:** November 2025 | [Full Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#250) + +### What'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:** + +1. **Type Safety & Code Generation** - Comprehensive discriminator fields throughout the protocol enable excellent TypeScript/Python type inference and eliminate ambiguous union types. + +2. **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. + +3. **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. + +4. **API Consistency** - Atomic response semantics (success XOR error) and standardized webhook payloads eliminate ambiguity and improve reliability. + +5. **Signal Protocol Refinement** - Activation keys returned per deployment with permission-based access, enabling proper multi-platform signal activation. + +6. **Template Formats** - Dynamic creative sizing with `accepts_parameters` enables formats that accept runtime dimensions, durations, and other parameters. + +7. **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 `oneOf` discriminators +- **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_buy` and `update_media_buy` now return full Package objects +- **Standardized webhook payload** - Protocol envelope at top-level with task data under `result` field + +#### 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_signal` now 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_creative` supports 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_parameters` field enables dynamic formats (e.g., display_[width]x[height], video_[duration]s) +- **Inline creative updates** - `sync_creatives` task 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:** +```json +// Before +{ + "platform_id": "ttd" +} + +// After +{ + "type": "platform", + "platform_id": "ttd" +} +``` + +**Property Selectors:** +```json +// Before +{ + "publisher_domain": "dailyplanet.com", + "property_ids": ["cnn_ctv_app"] +} + +// After +{ + "publisher_domain": "dailyplanet.com", + "selection_type": "by_id", + "property_ids": ["cnn_ctv_app"] +} +``` + +**Pricing Options:** +```json +// Before +{ + "pricing_model": "cpm", + "rate": 12.50 +} + +// After (fixed pricing uses fixed_price field) +{ + "pricing_model": "cpm", + "fixed_price": 12.50 +} +``` + +#### Webhook Payload Structure (Breaking) + +Webhook payloads now use protocol envelope at top-level: + +**Before:** +```json +{ + "task_id": "task_123", + "status": "completed", + "media_buy_id": "mb_456", + "packages": [...] +} +``` + +**After:** +```json +{ + "task_id": "task_123", + "task_type": "create_media_buy", + "status": "completed", + "timestamp": "2025-11-21T10:30:00Z", + "result": { + "media_buy_id": "mb_456", + "packages": [...] + } +} +``` + +#### Signal Activation Response (Breaking) + +`activate_signal` response changed from single key to deployments array: + +**Before:** +```json +{ + "activation_key": "segment_123" +} +``` + +**After:** +```json +{ + "deployments": [ + { + "destination": {"type": "platform", "platform_id": "ttd"}, + "activation_key": "segment_123", + "status": "active" + } + ] +} +``` + +#### Template Formats + +Formats can now accept parameters for dynamic sizing: + +**Template Format Definition:** +```json +{ + "format_id": {"agent_url": "https://creative.adcontextprotocol.org", "id": "display_static"}, + "accepts_parameters": ["dimensions"], + "renders": [{ + "role": "primary", + "parameters_from_format_id": true + }] +} +``` + +The `parameters_from_format_id: true` flag indicates dimensions come from the format_id at usage time. + +**Usage (parameterized format_id):** +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 300, + "height": 250 + } +} +``` + +This creates a specific 300x250 variant of the display_static template. + +#### Enhanced Product Filtering + +New structured filters in `get_products`: + +```json +{ + "filters": { + "start_date": "2026-01-01", + "end_date": "2026-03-31", + "budget_range": { + "min": 10000, + "max": 50000, + "currency": "USD" + }, + "countries": ["US", "CA"], + "channels": ["display", "ctv"] + } +} +``` + +#### Schema Versioning + +New version paths available: +- `/schemas/2.5.0/` - Exact version +- `/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/3.2.0-beta.4/` - 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 `result` field; `domain` no longer required +- **Signal activation response** - Changed from `activation_key` string to `deployments` array +- **Removed legacy creative fields** - `media_url`, `click_url`, `duration` removed from `list_creatives` response + +### Non-Breaking Additions + +- Application `context` object (optional) in all task requests +- `product_card` and `format_card` fields (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 Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#230) + +### What'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:** +```json +{ + "properties": [{ + "publisher_domain": "dailyplanet.com", + "property_name": "CNN CTV App", + "property_tags": ["ctv", "premium"] + }] +} +``` + +**After:** +```json +{ + "publisher_properties": [ + { + "publisher_domain": "dailyplanet.com", + "property_tags": ["ctv"] + } + ] +} +``` + +Buyers now fetch property definitions from `https://dailyplanet.com/.well-known/adagents.json`. + +#### Remove Media Buy Budget + +**Before:** +```json +{ + "budget": 50000, + "packages": [...] +} +``` + +**After:** +```json +{ + "packages": [ + {"package_id": "p1", "budget": 30000}, + {"package_id": "p2", "budget": 20000} + ] +} +``` + +Budget is specified per package only. + +### Breaking Changes + +- `properties` field in products → `publisher_properties` +- `list_authorized_properties` returns `publisher_domains` array +- Removed `budget` from create_media_buy/update_media_buy requests + +--- + +## Version 2.2.0 + +**Released:** October 2025 | [Full Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#220) + +### What's New + +**Build Creative Alignment** - The `build_creative` task now follows a clear "manifest-in → manifest-out" transformation model with consistent parameter naming. + +### Migration Guide + +**Before:** +```json +{ + "source_manifest": {...}, + "promoted_offerings": [...] +} +``` + +**After:** +```json +{ + "creative_manifest": { + "format_id": {...}, + "assets": { + "promoted_offerings": [...] + } + } +} +``` + +### Breaking Changes + +- `build_creative` parameter renamed: `source_manifest` → `creative_manifest` +- Removed `promoted_offerings` as top-level parameter (now in manifest assets) + +--- + +## Version 2.1.0 + +**Released:** January 2025 | [Full Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#210) + +### What'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:** +```json +{ + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.example.com/banner.jpg", + "width": 300, + "height": 250 + } + } +} +``` + +**After:** +```json +{ + "assets": { + "banner_image": { + "url": "https://cdn.example.com/banner.jpg", + "width": 300, + "height": 250 + } + } +} +``` + +### Breaking Changes + +- Removed `asset_type` field 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 Changelog](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#200) + +### What'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 and deprecation + +See [Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning) for the canonical version tiers, release cadence, 3.x stability guarantees, and deprecation policy. See the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset) for the v2 end-of-life timeline. + +--- + +## Additional Resources + +- **Technical Changelog** - [CHANGELOG.md](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md) +- **GitHub Releases** - [Release Archive](https://github.com/adcontextprotocol/adcp/releases) +- **Community** - [Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) +- **Issues** - [GitHub Issues](https://github.com/adcontextprotocol/adcp/issues) +- **Support** - support@adcontextprotocol.org diff --git a/dist/docs/3.2.0-beta.4/reference/roadmap.mdx b/dist/docs/3.2.0-beta.4/reference/roadmap.mdx new file mode 100644 index 0000000000..02a524d56e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/roadmap.mdx @@ -0,0 +1,112 @@ +--- +title: Roadmap +description: "AdCP protocol roadmap: RFCs, epics, and development milestones tracked on our public GitHub Project board." +"og:title": "AdCP — Roadmap" +--- + +The AdCP roadmap is a public [GitHub Project board](https://github.com/orgs/adcontextprotocol/projects/1) tracking protocol RFCs and epics across all domains. It shows what we're exploring, what's accepted, what's in progress, and what's shipped. + +<Card title="View the Roadmap" icon="map" href="https://github.com/orgs/adcontextprotocol/projects/1"> + Live board with RFCs and epics across Creative, Media Buy, Signals, Governance, and more. +</Card> + +--- + +## How the Roadmap Works + +The board has four columns representing the lifecycle of a roadmap item: + +| Status | Meaning | +|---|---| +| **Exploring** | Under discussion, community input welcome | +| **Accepted** | Committed and scoped, not yet started | +| **In Progress** | Active work | +| **Shipped** | Released and available | + +Each item has two fields: + +- **Protocol** — which area of the protocol it affects (Creative, Media Buy, Signals, Brand Protocol, Governance, SI, TMP, Platform, Website, Addie, Certification) +- **Kind** — whether it's an **RFC** (protocol change needing community input) or an **Epic** (major deliverable spanning multiple PRs) + +--- + +## What Belongs on the Roadmap + +Not every issue or PR belongs here. Roadmap items are protocol-level changes, new capabilities, and strategic initiatives that affect adopters. An issue qualifies if it meets at least two of: + +1. **Protocol surface** — changes what agents or platforms interact with +2. **Audience impact** — would influence a prospective member's or builder's decision +3. **Multi-issue scope** — spans more than one PR + +Bug fixes, minor improvements, and internal tooling stay in the [issue tracker](https://github.com/adcontextprotocol/adcp/issues). + +--- + +## Adding Items to the Roadmap + +Any issue labeled `rfc` or `epic` is automatically added to the board. To propose a roadmap item: + +1. **Open a GitHub issue** describing the proposal +2. **Add the `rfc` or `epic` label** (maintainers can also do this during triage) +3. The issue appears in the **Exploring** column +4. A maintainer sets the **Protocol** and **Kind** fields on the board + +--- + +## Triage + +Each protocol area has a triage owner responsible for reviewing new issues weekly (~15 minutes) and deciding what gets the `rfc` or `epic` label. The triage owner also reviews the board monthly to ensure items reflect reality. + +| Protocol Area | Triage Owner | +|---|---| +| Creative | _TBD_ | +| Media Buy | _TBD_ | +| Signals | _TBD_ | +| Brand Protocol | _TBD_ | +| Governance | _TBD_ | +| SI | _TBD_ | +| TMP | _TBD_ | +| Platform | _TBD_ | +| Website | _TBD_ | +| Addie | _TBD_ | +| Certification | _TBD_ | + +Triage owners rotate quarterly. To volunteer, reach out in the relevant working group channel on Slack. + +--- + +## Version Milestones + +Named milestones group roadmap items that will ship together in a future major version. Each milestone lists accepted RFCs — exploratory items (community input open) remain on the main board until maintainers decide to land them. + +### v4.0 — target early 2027 + +v4.0 is the next **breaking-changes accumulation window**, targeted for early 2027 under the [release cadence policy](/dist/docs/3.2.0-beta.4/reference/versioning#release-cadence). Breaking changes are gathered here so the ecosystem can plan a single migration window rather than chase per-minor deprecations. Items listed below are committed floor requirements for v4.0; additional items will be added here as RFCs are accepted. + +| Area | Item | +|---|---| +| Security (floor) | [Mandatory request signing for spend-committing operations (RFC 9421)](https://github.com/adcontextprotocol/adcp/issues/2307) — the 3.0 optional profile in `security.mdx` becomes required. Agents MUST sign spend-committing operations; sellers MUST verify. | +| Canonical formats | Remove every exact `format_ids` field. Products use `format_options`; package selection uses `format_option_refs` or direct canonical selectors; filters and registry payloads use their canonical-format equivalents. The deprecated fields remain accepted only through 3.x. | + +This milestone is intentionally not a "security release." It is the version where accumulated breaking changes across protocol surfaces land together. Request signing is the current floor requirement; other accepted RFCs carrying breaking changes will be added here as they progress through the `rfc` label lifecycle on the main board. + +--- + +## Release History + +For detailed release notes and version history, see: + +- **[Release Notes](./release-notes)** — per-version feature summaries +- **[CHANGELOG.md](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md)** — technical changelog +- **[GitHub Releases](https://github.com/adcontextprotocol/adcp/releases)** — release archive +- **[Versioning & Governance](./versioning)** — versioning model and release cadence + +--- + +## Get Involved + +AdCP is developed in the open with active working groups on Slack. + +- **[Join the community Slack](/dist/docs/3.2.0-beta.4/community/joining-slack)** +- **[GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions)** +- **[Working Groups](../community/working-group)** diff --git a/dist/docs/3.2.0-beta.4/reference/schema-extensions.mdx b/dist/docs/3.2.0-beta.4/reference/schema-extensions.mdx new file mode 100644 index 0000000000..75dfd22e48 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/schema-extensions.mdx @@ -0,0 +1,162 @@ +--- +title: Schema Extensions +sidebarTitle: Schema Extensions +description: "Reference for AdCP-specific `x-` prefixed schema annotations." +"og:title": "AdCP — Schema Extensions" +--- + +AdCP schemas carry several `x-` prefixed annotation keywords that supplement the JSON Schema vocabulary. JSON Schema validators ignore unknown `x-` keywords per [draft-07 §6](https://json-schema.org/draft-07/schema), so adding these keys is wire-compatible with any conforming validator. + +This page is the canonical reference for those annotations. Codegen consumers (TypeScript / Python / Go type generators), the storyboard runner, and the AdCP SDK family read these annotations programmatically; verifiers MAY read them but the normative behavior they describe is also documented in the relevant section of [security.mdx](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) or the field's own description. + +## `x-status` + +Marks a schema or property as **experimental** — part of the core protocol but not yet frozen. Sellers implementing experimental surfaces declare the feature id in `experimental_features` on `get_adcp_capabilities`. See [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full graduation policy. + +```jsonc +"trusted_match": { + "type": "object", + "x-status": "experimental", + "description": "Trusted Match Protocol support..." +} +``` + +Allowed values: `"experimental"`. The keyword is omitted on stable surfaces. + +## `x-adcp-validation` + +Lifts structured normative constraints out of prose descriptions into a machine-readable shape. Storyboard runners and SDK validators consume the structured rules; codegen consumers can ignore the annotation and read the human description. + +The keyword is most useful for fields whose description currently carries a "MUST be present when..." or "MUST equal the host of..." clause that the storyboard runner cannot enforce by parsing English. + +### Shape + +```jsonc +"some_field": { + "type": "string", + "format": "uri", + "description": "Brief one or two sentences for codegen JSDoc; full constraints live in x-adcp-validation and the linked spec.", + "x-adcp-validation": { + "trust_root": true, + "required_when": { "any_of": [ ... ] }, + "schema_required_when": { ... }, + "verifier_constraints": { ... }, + "distinct_from": "other.field.path", + "spec": "docs/.../section.mdx#anchor" + } +} +``` + +### Sub-keys + +| Key | Type | Purpose | +|---|---|---| +| `trust_root` | boolean | Field is load-bearing for signature verification; verifiers MUST treat as authoritative. | +| `required_when` | object wrapping `any_of` / `all_of` | Storyboard-enforced required-when rules (3.x). The object has exactly one of `any_of` (OR-joined) or `all_of` (AND-joined), each containing an array of leaf conditions. Each leaf is one of: `{ "field": "...", "non_empty": true }`, `{ "field": "...", "equals": <value> }`, `{ "field": "...", "any_subfield_present": true }`. The wrapping object mirrors JSON Schema's `anyOf`/`allOf` precedent so tooling readers can reuse familiar boolean-combinator semantics. Bare arrays are NOT accepted — always wrap. | +| `schema_required_when` | condition | When the rule promotes from storyboard-enforced to schema-required. Typically keyed on `adcp.supported_versions` matching a version pattern via `any_item_matches_pattern` (e.g., `"^4\\."` for the 4.0 cutover and any 4.x patch). | +| `forbidden_when` | object wrapping `any_of` / `all_of` | Inverse of `required_when`. The field MUST be absent (or `false`/empty, depending on type) when the wrapped condition holds. Same leaf shape as `required_when`. Use for fields whose presence is mutually exclusive with another posture. | +| `disjoint_with` | string (dotted path) or array of dotted paths | Item-level mutual exclusion: no value in this field's array MAY appear in any of the named arrays. Storyboard runners assert set-disjointness on each. Example: `request_signing.warn_for` carries `disjoint_with: "request_signing.required_for"` because an operation can be in one or the other, never both. | +| `subset_of` | string (dotted path) | Item-level subset constraint: every value in this field's array MUST also appear in the named array. Example: `request_signing.required_for` carries `subset_of: "request_signing.supported_for"` — an operation can't be required without being supported. | +| `verifier_constraints` | object | Free-form key-value map of verifier-side rules that don't fit the structured sub-keys above. Keys are normative (e.g., `agent_url_match: "byte_equal"`); the storyboard runner enforces these against test vectors. Prefer the structured sub-keys (`required_when`, `forbidden_when`, `disjoint_with`, `subset_of`) when they fit; reach for `verifier_constraints` only for one-off rules that don't generalize. | +| `distinct_from` | string (dotted path) | Names another field that has a similar shape but different semantics, to defuse name confusion (e.g., `identity.brand_json_url` distinct from `sponsored_intelligence.brand_url`). Verifiers MUST NOT substitute one for the other. | +| `spec` | string (relative path with anchor) | Pointer to the normative section in the docs that defines the field's full semantics. Always required when other sub-keys are present. | + +### Conformance + +- Validators MUST ignore unknown sub-keys for forward-compatibility (the schema may add new entries in a minor release). +- The storyboard runner consumes `required_when`, `schema_required_when`, and `verifier_constraints` to generate test cases per release; runners that don't yet recognize a sub-key MUST skip it and emit an "unrecognized validation rule" warning. +- Codegen consumers (TypeScript / Python / Go type generators) MAY surface `x-adcp-validation.spec` as a `@see` JSDoc link but otherwise treat the annotation as opaque. + +### Current usage + +Representative usage: + +| Field | Sub-keys used | Rule | +|---|---|---| +| `identity.brand_json_url` | `trust_root`, `required_when`, `schema_required_when`, `verifier_constraints`, `distinct_from` | Trust-root pointer for signing-key discovery; required-when tied to signing posture; schema-required in 4.0; distinct from `sponsored_intelligence.brand_url`. See [security.mdx §Discovering an agent's signing keys](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#discovering-an-agents-signing-keys-via-brand_json_url). | +| `identity.key_origins` | `verifier_constraints` (`purpose_anchoring`) | Every purpose listed MUST have a corresponding signing posture declared elsewhere on the response. Cross-field rule. See [security.mdx §Origin separation](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#origin-separation). | +| `request_signing.required_for` | `subset_of` | Every operation listed MUST also appear in `supported_for` — an operation can't be required without being supported. | +| `request_signing.warn_for` | `disjoint_with`, `subset_of` | An operation MUST NOT appear in both `warn_for` and `required_for`. Every operation listed MUST also appear in `supported_for`. | +| `webhook_signing.supported` | `verifier_constraints` (`must_equal_when`) | When the seller advertises mutating-webhook emission (`media_buy.reporting_delivery_methods` includes `webhook` OR `media_buy.content_standards.supports_webhook_delivery: true`), `supported` MUST be `true`. Closes a downgrade vector. | +| `wholesale_feed_webhooks.event_types` | `verifier_constraints` (`wholesale_feed_webhook_capability_consistency`) | `product.*` event types require wholesale `get_products`; `signal.*` event types require wholesale `get_signals`; `wholesale_feed.bulk_change` requires at least one declared wholesale repair path and must name only a repairable feed family. | +| `get_products.wholesale_feed_version` / `get_signals.wholesale_feed_version` | `verifier_constraints` (`required_for_wholesale_request`) | Version tokens are required on wholesale read responses, but the shared response schemas cannot infer the request's `buying_mode` / `discovery_mode` from the response body alone. | +| `creative.localization` request/readback | `verifier_constraints` (capability gate, source-only or source-plus-target topology, canonical locale form, unique/disjoint identities, valid default and fallback references, strict RFC 4647 Lookup followed by explicit fallback rules, exact request→sync→list identity, source-asset equality, transactional replacement, seller locale-policy precedence, and delivery attribution) | Draft-07 cannot compare a request with negotiated capabilities or product policy, fully enforce canonical BCP 47 form, express uniqueness/reference integrity by property, compare a response with the initiating request/prior stored source, or require delivery attribution only for localized parents. Creative conformance scenarios exercise those rules and require per-item `localization_unavailable` rather than partial readback. | +| `ProductFormatDeclaration.locale_policy` | `verifier_constraints` (capability gate, RFC 4647 Basic Filtering, eligible-variant masking before buyer selection, eligible `serve_default`, per-placement assignment checks, placement narrowing, and no legacy projection) | Draft-07 validates each policy shape but cannot compare capabilities, product and placement declarations, legacy projections, or the selected format policy with a creative's materialized variants. Sellers reject incompatible assignment with `CREATIVE_LOCALE_NOT_ACCEPTED`. | + +Already enforced natively by JSON Schema and excluded from migration: +- **`adcp.idempotency`** — the discriminated `oneOf` already requires `replay_ttl_seconds` in the supported branch and forbids it in the unsupported branch. +- **`webhook_signing.algorithms`** — the `enum: ["ed25519", "ecdsa-p256-sha256"]` on each item already enforces the allowlist. + +Migration history tracked at [adcontextprotocol/adcp#3827](https://github.com/adcontextprotocol/adcp/issues/3827). + +## `x-adcp-open-payload` + +Classifies fields that look open-ended to SDK generators. The annotation is documentary and non-validating; the field's JSON Schema still controls wire validation. + +Allowed authoring values: + +| Value | Meaning for schema authors and generators | +|---|---| +| `true` | The field intentionally carries free-form payload data. Generators MAY model the object/decoded-JSON arm as `Record<string, unknown>` or another generic JSON container without warning. | +| Omitted | Unclassified. Generators and schema lint rules SHOULD NOT infer either `true` or `false`; they MAY warn on unannotated `additionalProperties: true` object fields during review. | + +`false` is reserved for a future structured-but-extension-tolerant marker. Source schemas MUST NOT set `x-adcp-open-payload: false` until the repository defines at least one canonical use site and the generator contract for that value. + +For mixed fields, the annotation applies only to the object or decoded-JSON payload arm. Scalar arms still follow their declared schema. For example, an upstream recorded body may be a decoded JSON object when the content type is JSON-shaped and a string otherwise; `x-adcp-open-payload: true` marks the decoded JSON payload as intentionally open, not the string arm as an object model. + +```jsonc +"breakdown": { + "type": "object", + "x-adcp-open-payload": true, + "additionalProperties": true +} +``` + +Use omission for legacy or not-yet-classified fields; do not use omission to mean "closed". + +## `x-adcp-hoist` + +Build-time directive that marks a source schema as a canonically shared type. The schema bundler hoists every inline occurrence into a single root `$defs` entry and replaces inline copies with `$ref` pointers; the directive itself is stripped from bundled output. Wire-irrelevant — validators MUST ignore it (draft-07 §6 unknown-keyword semantics) and conforming consumers SHOULD NOT observe it on bundled artifacts. + +```jsonc +{ + "$id": "/schemas/core/price-block.json", + "title": "Price Block", + "x-adcp-hoist": true, + "type": "object", + "properties": { + "cpm": { "type": "number" }, + "currency": { "type": "string" } + } +} +``` + +### Why opt-in for complex objects + +Pure enums hoist automatically (see [`hoistDuplicateInlineEnums`](https://github.com/adcontextprotocol/adcp/pull/3170)) because merging two structurally-identical enums is semantics-preserving. Complex objects are different — structural identity ≠ semantic identity. `BriefAsset` (proposed creative spec) and `VASTAsset` (delivered video creative) currently share fields but represent different lifecycle concepts; auto-merging them would create cross-tool coupling the source schemas don't express, and would be hard to unwind once SDKs codegen against the merged type. `x-adcp-hoist` makes the share-or-split decision deliberate per schema. + +### Bundler behavior + +- **Hoists at any occurrence count (≥1).** The directive declares intent — "this is a canonical named type" — so adding a second reference later never changes the codegen surface. +- **`title` is required.** Missing or empty title → build-time error. The directive is meant to be deliberate. +- **Same title + different shape is a build-time error.** Two marked schemas authored with the same `title` but distinct fields would otherwise silently suffix one to `Foo2`, defeating the directive's "canonical name" guarantee. +- **Collision with a pre-existing `$defs` key is suffixed** (`PriceBlock2`), matching the convention used by the pure-enum hoist. +- **Stripped from bundled output** — both from the canonical `$defs` entry and from any stray marker that was authored inside a pre-existing `$defs` block. + +### SDK / codegen impact + +Adding `x-adcp-hoist` to a previously-inlined source schema is wire-compatible (the bundled schema still validates the same payloads) but is a codegen-shape change: TypeScript / Python / Go type generators that previously emitted an anonymous inline type (often `Foo1`, `Foo2`, …) will now emit a single named type. SDK adopters maintain rename aliases per their own deprecation policy — see [adcp-client#942](https://github.com/adcontextprotocol/adcp-client/issues/942) for the client-side rename/alias tracking. + +### Conformance + +- Validators MUST ignore `x-adcp-hoist` per draft-07 §6 (unknown keywords are tolerated). The directive has no wire semantics. +- Source-tree consumers (third parties that dereference `static/schemas/source/...` directly rather than the bundled artifacts) MUST treat `x-adcp-hoist: true` as a no-op annotation. The schema's content is the contract. +- Bundlers other than `scripts/build-schemas.cjs` MAY honor the directive or ignore it; a bundler that ignores it produces a wire-compatible bundle with un-deduped inline copies. + +### History + +- Introduced in [#4557](https://github.com/adcontextprotocol/adcp/issues/4557). Successor to [#3145](https://github.com/adcontextprotocol/adcp/issues/3145) phase 2. + +## Future extensions + +New `x-adcp-*` keywords are added in minor releases. Consumers MUST tolerate unknown `x-` keywords without erroring. The convention reserves the `x-adcp-` namespace; vendor-specific or deployment-specific annotations SHOULD use a vendor-specific prefix (e.g., `x-yourorg-`) to avoid collision. diff --git a/dist/docs/3.2.0-beta.4/reference/specification-lifecycle.mdx b/dist/docs/3.2.0-beta.4/reference/specification-lifecycle.mdx new file mode 100644 index 0000000000..f118c10dca --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/specification-lifecycle.mdx @@ -0,0 +1,124 @@ +--- +title: Specification lifecycle +sidebarTitle: Specification lifecycle +description: "How AdCP specification sections move from Draft to Final, who decides each transition, and what stability contract each stage carries for implementers." +"og:title": "AdCP — Specification lifecycle" +--- + +Every section of the AdCP specification is at one of five stages. The stage tells an implementer how much stability to expect: a Draft section carries no contract; a Final section is protected by the full [3.x stability guarantees](/dist/docs/3.2.0-beta.4/reference/versioning#3x-stability-guarantees). + +--- + +## Stages at a glance + +| Stage | Vocabulary match | Stability contract | Safe to build production systems against? | +|---|---|---|---| +| **Draft** | Pre-schema | None | No | +| **Proposed** | Experimental (`x-status: experimental`) | [Experimental contract](/dist/docs/3.2.0-beta.4/reference/experimental-status#contract-for-experimental-surfaces) | With caution — may break with 6-week notice | +| **Final** | Stable (no `x-status` marker) | Full [3.x guarantees](/dist/docs/3.2.0-beta.4/reference/versioning#3x-stability-guarantees) | Yes | +| **Deprecated** | Stable, announced for removal | Same as Final until the removal release | Yes — but plan migration | +| **Sunset** | Removed | None | No — feature is gone | + +The vocabulary match column is key: the spec stages and the schema annotations are two views of the same state. If a JSON Schema in `static/schemas/source/` has `"x-status": "experimental"`, the section it belongs to is at the **Proposed** stage. If it has no `x-status` marker and the schema has shipped in a GA release, it is at the **Final** stage. + +--- + +## Stage definitions + +### Draft + +A section is in Draft when the working group has opened a scoped proposal on the GitHub milestone — a `spec / protocol` labeled issue with a defined scope — but no schema has been published in `static/schemas/source/` yet. Draft sections: + +- Carry **no stability contract of any kind**. Builders who proceed against a Draft section do so at their own risk and SHOULD track the relevant GitHub milestone for changes. +- Are not declared in `get_adcp_capabilities`. A seller cannot claim conformance with a Draft section. +- May be abandoned before reaching Proposed. + +**Entry**: A scoped spec issue is accepted onto the working group's active milestone. The domain working group lead confirms the scope is in window. + +**Decision authority**: Domain working group lead. + +**When the RFC process applies**: A material spec change — new task, schema change affecting existing fields, or change to normative prose — requires an approved [RFC](https://github.com/adcontextprotocol/adcp/issues/2437) before entering Draft. The RFC documents the motivation, alternatives considered, compatibility impact, and reviewer checklist. Lightweight changes (new optional fields with no behavioral consequence) may enter Draft via a PR with working group review in lieu of a formal RFC. + +--- + +### Proposed + +A section is Proposed when its schema exists in `static/schemas/source/` with `"x-status": "experimental"` at the schema root or on the specific properties, **and** the seller implementing it declares the feature id in `experimental_features` on `get_adcp_capabilities`. + +The full Proposed-stage contract — including what may change with 6-week notice, what does not change (auth, transport, error envelope), and the seller declaration requirements — is specified in [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status). That page governs; this page maps stage vocabulary to it. + +**Entry**: The schema is published in a 3.x release with `x-status: experimental`. The architecture committee review that accompanies the release confirms experimental status. + +**Decision authority**: Architecture committee, at release time. + +--- + +### Final + +A section is Final when its schema is stable — `x-status: experimental` has been removed via a deliberate graduation PR reviewed by the architecture committee. + +The four graduation criteria are specified in [Experimental Status — Graduation to stable](/dist/docs/3.2.0-beta.4/reference/experimental-status#graduation-to-stable) — including the production signal requirement, cross-party validation bar (a second implementation running ≥45 days with at least one in production, or one implementation plus buyer integration), schema stability window, and the deliberate promotion PR. That page governs; this page maps stage vocabulary to it. The architecture committee reviews graduation PRs at each 3.x release. + +Once Final, a section is protected by the full [3.x stability guarantees](/dist/docs/3.2.0-beta.4/reference/versioning#3x-stability-guarantees): fields are never removed, enums are additive only, task names are never removed or renamed within the major version. **A Final section in 3.x remains Final — under the same guarantees — throughout the 4.0 development cycle.** A section under active 4.0 scoping is not retroactively downgraded; the 3.x contract holds until 3.x support ends. See [Support window for previous major](/dist/docs/3.2.0-beta.4/reference/versioning#support-window-for-previous-major). + +**Entry**: All four graduation criteria from experimental-status.mdx are met. Architecture committee approves and merges the graduation PR in a scheduled 3.x release. + +**Decision authority**: Architecture committee. + +--- + +### Deprecated + +A section is Deprecated when a formal deprecation notice has been published in the release notes and changelog, and the 6-month countdown to removal has started. The section remains fully functional and under the 3.x stability guarantees during the deprecation window. + +The deprecation policy — 6-month minimum notice, feature persists through at least one full release cycle after deprecation, never removed within the same major version — is specified in [Versioning — Deprecation policy](/dist/docs/3.2.0-beta.4/reference/versioning#deprecation-policy). + +**Entry**: Deprecation notice lands in the release notes and changelog for a 3.x release. The replacement (if any) ships in the same release. The architecture committee confirms the removal target (always a major-version boundary). + +**Decision authority**: Architecture committee, with working group review. + +**Announcement**: Release notes entry with `deprecated` label + migration note, changelog entry, inline `@deprecated` annotation in the schema. + +--- + +### Sunset + +A section is Sunset (removed) once the major-version boundary it was targeted for has shipped. By policy, a Deprecated section is never removed within the same major version — the earliest removal date is the GA of the next major. The v2 sunset timeline is documented on the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). + +**Entry**: The successor major ships GA. The previously-deprecated fields, tasks, or schema properties are omitted from the new major's schemas. + +**Decision authority**: Implicit — the major-version release process carries the removal. + +--- + +## Transition diagram + +``` +Draft ──→ Proposed ──→ Final ──→ Deprecated ──→ Sunset + └──→ (abandoned) (stable) (6-mo notice) (removed at + major boundary) +``` + +Draft may also be abandoned without reaching Proposed. A Final section may be Deprecated directly (no intermediate stage). There is no path from Sunset back to any prior stage — removed features are not restored; they are re-proposed from scratch if needed. + +Stage transitions (Draft → Proposed → Final, Final → Deprecated, etc.) are gated on an approved RFC — the RFC outcome (accepted / accepted-with-changes) is the trigger that authorises a contributor to open the spec PR that carries the transition. See [RFC process (issue #2437)](https://github.com/adcontextprotocol/adcp/issues/2437). + +--- + +## How to check the current stage of a spec section + +1. **Schema marker**: Check the relevant schema in `static/schemas/source/`. `"x-status": "experimental"` → Proposed. No marker on a shipped schema → Final. Not in `static/schemas/source/` but referenced in an open GitHub milestone issue → Draft. +2. **Experimental surfaces list**: The [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status) page lists every currently-Proposed surface with its feature id and current status. +3. **GitHub milestones**: Open issues on the active milestone represent Draft and Proposed work. Shipped items without `x-status` in the merged schema are Final. +4. **Release notes**: Deprecated sections are called out with a `deprecated` label and removal target in every release's notes. + +--- + +## Working group and governance + +The procedures that govern who sits on the working group, voting thresholds, quorum, and escalation paths: + +- **RFC process** ([#2437](https://github.com/adcontextprotocol/adcp/issues/2437)): proposal template, decision-record format, lifecycle from RFC to spec change +- **Working group charter** ([#2438](https://github.com/adcontextprotocol/adcp/issues/2438)): quorum, voting thresholds, roster, recusal policy — under active development + +The architecture committee is the defined decision authority for Final-stage graduation and Deprecated-stage entry. It is referenced in [Experimental Status](/dist/docs/3.2.0-beta.4/reference/experimental-status) and acts as the working group's ratifying body for stage transitions that carry a stability contract. diff --git a/dist/docs/3.2.0-beta.4/reference/test-vectors/index.mdx b/dist/docs/3.2.0-beta.4/reference/test-vectors/index.mdx new file mode 100644 index 0000000000..67fc6fbbe4 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/test-vectors/index.mdx @@ -0,0 +1,62 @@ +--- +title: Reference Test Vectors +sidebarTitle: Reference test vectors +description: "Machine-readable fixtures SDKs and implementations diff against to confirm wire-format agreement. Versioned alongside the spec; frozen at each release." +"og:title": "AdCP — Reference Test Vectors" +--- + +**Status**: Request for Comments +**Last Updated**: April 20, 2026 + +## What these are + +Reference test vectors are machine-readable JSON fixtures pinned to specific wire-format rules in the spec. An SDK whose output matches a vector's `expected_*` field byte-for-byte has agreed with the reference on that rule's wire format — not a conformance claim (only [storyboards](/dist/docs/3.2.0-beta.4/building/verification/conformance) decide that), but a necessary precondition for interop. An SDK that diverges has an interop bug, even if its own tests pass. + +Vectors complement [storyboards](/dist/docs/3.2.0-beta.4/building/verification/conformance). Storyboards exercise an agent end-to-end to produce a pass/fail verdict; vectors exercise a library in isolation against frozen inputs. A vector tells a signer "this 9421 request MUST produce this signature base"; a storyboard tells an agent "when the buyer sends this request, you MUST respond with a result shaped like this." Most conformant stacks need both — vectors catch canonicalization drift inside a library; storyboards catch behavior drift at the wire. + +Vectors are not the conformance specification — the [storyboards](/dist/docs/3.2.0-beta.4/building/verification/conformance) are. Vectors are reference inputs the storyboards and SDK unit tests consume. + +## Versioning + +Vector sets published under the compliance tree — `request-signing`, `webhook-signing`, `plan-hash`, `governance-authorization`, `webhook-receiver-envelope`, and `catalog-macro-substitution` — are versioned alongside the spec. The copy served at `/compliance/{version}/test-vectors/{set}/` is frozen at the GA release of that version; fixes that change a vector's bytes ship in the next AdCP minor release. `/compliance/latest/test-vectors/{set}/` tracks the most recent GA and moves under you between releases. + +The transport and response-extraction vectors served at `/test-vectors/{name}.json` are currently unversioned: each file is overwritten in place when it changes. SDKs that consume these fixtures SHOULD vendor a commit-pinned copy, for example fetching from `https://raw.githubusercontent.com/adcontextprotocol/adcp/<sha>/static/test-vectors/<name>.json` and recording `<sha>` in their lockfile, until these files are rolled into the versioned compliance tree. + +SDKs SHOULD fetch versioned paths where available and record the version under test. For pinned versions, the CDN copy at `/compliance/{version}/...` is the source of truth; `/compliance/latest/...` is a convenience alias, not a stable pin. + +## Published sets + +| Set | What it pins | Source | CDN | +|---|---|---|---| +| [`request-signing`](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/test-vectors/request-signing) | RFC 9421 request-signing profile: canonical signature base, covered components, signature params, tag namespace, alg allowlist, `adcp_use` discriminator, replay dedup, revocation, content-digest semantics, and URL canonicalization | `static/compliance/source/test-vectors/request-signing/` | `/compliance/latest/test-vectors/request-signing/` | +| [`webhook-signing`](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/test-vectors/webhook-signing) | RFC 9421 webhook-signing profile: required covered components (content-digest mandatory — no `forbidden` opt-out), `adcp/webhook-signing/v1` tag, webhook-valid `adcp_use` set (`request-signing` plus deprecated `webhook-signing`), `webhook_signature_*` error taxonomy; shares `@target-uri` canonicalization with `request-signing` | `static/compliance/source/test-vectors/webhook-signing/` | `/compliance/latest/test-vectors/webhook-signing/` | +| [`plan-hash`](https://github.com/adcontextprotocol/adcp/tree/main/static/compliance/source/test-vectors/plan-hash) | JCS canonicalization of the `plan_hash` preimage: required-only baseline, full-optional, bookkeeping-stripped, omitted-vs-explicit-null, array-order sensitivity, `ext.trace_id` distinctness, Unicode non-normalization (RFC 8785 §3.2.5) | `static/compliance/source/test-vectors/plan-hash/` | `/compliance/latest/test-vectors/plan-hash/` | +| [`governance-authorization`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/governance-authorization.json) | Cross-role governed-payload JCS/SHA-256 hashes, authorization decisions, and 27 byte-exact Ed25519 compact-JWS fixtures. Signed cases cover critical headers, audience/caller/task/payload bindings, commitment currency and ceiling, time bounds, replay identifiers, signature tampering, and zero-cost authorization. The published private component is test-only and MUST NOT be installed as a production trust anchor. | `static/compliance/source/test-vectors/governance-authorization.json` | `/compliance/latest/test-vectors/governance-authorization.json` | +| [`webhook-receiver-envelope`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/webhook-receiver-envelope.json) | Receiver-side replay vectors for full MCP webhook POST envelopes: canonical delivery-report envelope acceptance, retry idempotency preservation, and rejection of bare result payloads or malformed envelopes | `static/compliance/source/test-vectors/webhook-receiver-envelope.json` | `/compliance/latest/test-vectors/webhook-receiver-envelope.json` | +| [`catalog-macro-substitution`](https://github.com/adcontextprotocol/adcp/blob/main/static/compliance/source/test-vectors/catalog-macro-substitution.json) | Catalog-item macro substitution safety: NFC normalization, RFC 3986 percent-encoding, nested-expansion preservation, CRLF neutralization, bidi override neutralization, and URL-scheme injection neutralization | `static/compliance/source/test-vectors/catalog-macro-substitution.json` | `/compliance/latest/test-vectors/catalog-macro-substitution.json` | +| [`transport-error-mapping`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/transport-error-mapping.json) | Transport-layer error envelope shapes: the JSON-RPC (`error.code` / `data`) and A2A (task `status.message`) carriers for each documented AdCP transport error | `static/test-vectors/transport-error-mapping.json` | [`/test-vectors/transport-error-mapping.json`](https://adcontextprotocol.org/test-vectors/transport-error-mapping.json) | +| [`mcp-response-extraction`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/mcp-response-extraction.json) | Client extraction of the AdCP payload from MCP `tools/call` envelopes | `static/test-vectors/mcp-response-extraction.json` | [`/test-vectors/mcp-response-extraction.json`](https://adcontextprotocol.org/test-vectors/mcp-response-extraction.json) | +| [`a2a-response-extraction`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/a2a-response-extraction.json) | Client extraction of the AdCP payload from A2A task statuses and artifacts | `static/test-vectors/a2a-response-extraction.json` | [`/test-vectors/a2a-response-extraction.json`](https://adcontextprotocol.org/test-vectors/a2a-response-extraction.json) | +| [`a2a-profile-extension-v3`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/a2a-profile-extension-v3.json) | A2A 1.0 profile advertisement and activation, `{ skill, input }` invocation, advisory TextParts, completed-Task mapping for AdCP Submitted responses, metadata-duplication rejection, and `get_task_status` polling | `static/test-vectors/a2a-profile-extension-v3.json` | [`/test-vectors/a2a-profile-extension-v3.json`](https://adcontextprotocol.org/test-vectors/a2a-profile-extension-v3.json) | +| [`webhook-payload-extraction`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/webhook-payload-extraction.json) | Receiver-side format detection and payload extraction for inbound AdCP webhooks | `static/test-vectors/webhook-payload-extraction.json` | [`/test-vectors/webhook-payload-extraction.json`](https://adcontextprotocol.org/test-vectors/webhook-payload-extraction.json) | +| [`webhook-hmac-sha256`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/webhook-hmac-sha256.json) *(legacy)* | HMAC-SHA-256 signature computation and byte-equality invariants for the legacy HMAC webhook profile. Deprecated in 3.x, removed in 4.0 per [Webhook callbacks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#legacy-hmac-sha256-fallback-deprecated); new integrations use `webhook-signing` | `static/test-vectors/webhook-hmac-sha256.json` | [`/test-vectors/webhook-hmac-sha256.json`](https://adcontextprotocol.org/test-vectors/webhook-hmac-sha256.json) | +| [`canonical-image-pixel-ratio`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/canonical-image-pixel-ratio.json) | Canonical image logical-size versus intrinsic-pixel validation, top-level/slot density intersection, accepted and required rendition sets, mismatch failures, and parameterized legacy projection | `static/test-vectors/canonical-image-pixel-ratio.json` | [`/test-vectors/canonical-image-pixel-ratio.json`](https://adcontextprotocol.org/test-vectors/canonical-image-pixel-ratio.json) | +| [`v1-canonical-mapping`](https://github.com/adcontextprotocol/adcp/blob/main/static/test-vectors/v1-canonical-mapping.json) | Literal v1 format-ID projection plus positive and negative vectors for the normative one-way v2-narrows-v1 relation | `static/test-vectors/v1-canonical-mapping.json` | [`/test-vectors/v1-canonical-mapping.json`](https://adcontextprotocol.org/test-vectors/v1-canonical-mapping.json) | + +**Start here**: every set's `README.md` in the source column documents file layout, key material, preconditions (e.g., runner state required for replay vectors), and how to wire the set into an SDK test loop. The README in the source tree is authoritative; the index on this page is a catalog, not an integration guide. + +Directory CDN paths (the three compliance-tree rows) are base paths for programmatic use — the CDN serves individual files, not directory listings. Browse the tree via the source column. + +## Test keys are public + +Every signing vector set ships private key material in `keys.json` so libraries can exercise signer and verifier roles against identical inputs. These keys are **valid only for grading against this suite**. + +Any production verifier that trusts a `kid` declared in one of the published `keys.json` files is exploitable — the private key is on the public CDN and anyone can forge signatures under that kid. At time of writing this includes `test-ed25519-2026`, `test-es256-2026`, `test-gov-2026`, `test-revoked-2026` (request-signing) and `test-ed25519-webhook-2026`, `test-es256-webhook-2026`, `test-wrong-purpose-2026`, `test-response-purpose-2026`, `test-revoked-webhook-2026` (webhook-signing vectors). Treat every `kid` that appears in any suite `keys.json` as untrusted outside grading, present or future. + +Production signers mint their own keypairs and publish under their own `jwks_uri`; production verifiers MUST NOT register any test `kid` in a trust store exposed to live traffic. + +## Scope + +The sets above exercise transport, signing, and canonicalization rules that cross every surface — the bytes-level pins that storyboards can't verify. Per-task request/response fixtures are intentionally not published here: the [conformance storyboards](https://adcontextprotocol.org/compliance/latest/) (wire behavior, error codes, lifecycle transitions) and [JSON Schemas](https://github.com/adcontextprotocol/adcp/tree/main/static/schemas/source) (request/response shapes) cover task-level conformance between them, and a parallel tree of frozen request/response pairs would drift against the storyboards it duplicates. + +Implementers derive expected shapes from the schema and confirm wire behavior by running the storyboards against their agent. SDK authors that want machine-readable per-task fixtures should extract them from the relevant storyboard rather than expect a separate vector set. diff --git a/dist/docs/3.2.0-beta.4/reference/url-canonicalization.mdx b/dist/docs/3.2.0-beta.4/reference/url-canonicalization.mdx new file mode 100644 index 0000000000..fe75f00739 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/url-canonicalization.mdx @@ -0,0 +1,68 @@ +--- +title: URL Canonicalization +description: "The canonicalization rules AdCP uses everywhere two URLs are compared as identifiers — request signing, authorization matching, and registry lookups." +"og:title": "AdCP — URL Canonicalization" +--- + +AdCP compares URLs as identifiers in several places: the request-signing profile's `@target-uri`, `authorized_agents[].url` entries in `adagents.json`, `seller_agent.agent_url` on TMP `AvailablePackage`, `agent_url` in `format-id` and `ProviderEntry`, and any other registry where a URL is a primary key. A single canonicalization algorithm governs all of these so two byte-different-but-semantically-equal URLs compare equal regardless of which surface is doing the lookup. This page is the authoritative home of that algorithm; the [request-signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) cites it and adds transport-specific extensions. + +## Algorithm + +The canonicalization applies RFC 3986 §6.2.2 (syntax-based normalization) and §6.2.3 (scheme-based normalization), in this order. Implementations MUST apply every step and compare the result byte-for-byte. + +1. **Lowercase the scheme** (`HTTPS` → `https`). The scheme itself is preserved — `http` and `https` canonicalize to different forms and MUST NOT match in an identifier comparison. + +2. **Canonicalize the host.** Lowercase it. For IDN labels, convert to Punycode A-labels (ACE form) using **UTS-46 Nontransitional processing with `CheckHyphens=true`, `CheckBidi=true`, `UseSTD3ASCIIRules=true`, `Transitional_Processing=false`** (`bücher.example` → `xn--bcher-kva.example`). After ToASCII processing, a DNS hostname ending in one root-label dot MUST have that single trailing dot removed (`example.com.` → `example.com` and `bücher.example.` → `xn--bcher-kva.example`). This removal applies identically to an input U-label and its equivalent A-label; implementations MUST NOT preserve the dot on an ASCII fast path while removing it on an IDN path. More than one trailing dot creates an empty DNS label rather than a root-label spelling and MUST be rejected. The processing-mode pin matters: ASCII-lowercasing non-ASCII input before ToASCII produces a different A-label than UTS-46-correct processing, and TypeScript (`url.domainToASCII`), Go (`golang.org/x/net/idna`), and Python (the `idna` package — *not* `str.encode('idna')`, which is IDNA2003) legitimately diverge on mode defaults. A host containing raw non-ASCII bytes that has not been ToASCII-normalized by the producer MUST be rejected by the comparer — receivers do not silently re-normalize. For IPv6 literals, preserve the `[` and `]` brackets and lowercase the hex digits inside them (`[2001:DB8::1]` → `[2001:db8::1]`); the DNS root-dot rule does not apply to IP literals. **IPv6 zone identifiers (RFC 6874) MUST be rejected** — zone-ids are node-local and have no meaning outside the producing host. Implementations MUST reject any URL containing `%25` inside `[...]`. + +3. **Strip userinfo.** `user:pass@host` → `host`. The following authority shapes are malformed and MUST be rejected — producers MUST NOT emit them, comparers MUST reject them: + - Userinfo but no host: `https://user@/p` + - No host at all: `https:///p`, `https://:443/p` + - Bracketed host missing a closing bracket: `https://[::1/p` + - Bare IPv6 address outside brackets: `https://fe80::1/p` + +4. **Strip default ports.** `:443` for https, `:80` for http. Preserve all other ports (`:8443`). + +5. **Apply `remove_dot_segments` (RFC 3986 §5.2.4) to the path, but preserve consecutive slashes byte-for-byte.** `/a//b` MUST stay `/a//b` — RFC 3986 does not mandate collapsing them, and preserving closes a path-confusion attack surface: if one side collapses `/admin//foo` → `/admin/foo` and the other dispatches `/admin//foo` to a different (potentially less-guarded) handler, an attacker can sign or authorize one URL and execute another. Servers deploying URL-based authorization MUST disable slash-folding on affected routes (`nginx: merge_slashes off;`, Express: do not pre-normalize, Go 1.22+ `http.ServeMux`: use an explicit `http.Handler` that preserves the incoming path). If the path is empty AND an authority is present, substitute `/` (RFC 3986 §6.2.3; `https://host?x=1` → `https://host/?x=1`). + +6. **Normalize percent-encoding.** Uppercase hex digits (`%2f` → `%2F`). Decode percent-encoded unreserved characters (`ALPHA / DIGIT / "-" / "." / "_" / "~"` per RFC 3986 §2.3, so `%7E` → `~`, `%2Dfoo` → `-foo`, `%41` → `A`). Leave reserved characters percent-encoded (`%3A` stays `%3A`, `%2F` stays `%2F`). Percent-encoding normalization applies to path and query; zone identifiers are rejected at step 2 so they never reach this step. + +7. **Preserve the query string byte-for-byte.** MUST NOT reorder parameters, MUST NOT re-encode, MUST NOT interpret `+` as space. A trailing `?` with empty query is preserved (`https://host/p?` canonicalizes to `https://host/p?`, distinct from `https://host/p`). A URL with no `?` stays with no `?`. Two URLs that differ only by query-parameter order are different canonical forms, not equivalent. + +8. **Strip the fragment.** Fragments never participate in identifier comparison and are not sent on the wire per RFC 9421 §2.2.2. + +After all eight steps, comparison is byte-for-byte. Implementations MUST NOT apply additional transformations before comparison. + +## Where it applies + +| Surface | Comparison | Reference | +|---|---|---| +| Request signing | `@target-uri` canonical output signed and verified | [Signed Requests (Transport Layer)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) | +| TMP seller authorization | `seller_agent.agent_url` vs `authorized_agents[].url` | [TMP Sync-Time Validation](/dist/docs/3.2.0-beta.4/trusted-match/specification#sync-time-validation) | +| TMP provider resolution | `ProviderEntry.agent_url` vs router's registered provider endpoint | [TMP Product Integration](/dist/docs/3.2.0-beta.4/trusted-match/specification#product-integration) | +| `adagents.json` lookups | Any caller asking "is this agent authorized for this property?" | [adagents.json schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json) | +| `format-id` resolution | `format-id.agent_url` against the URL an agent publishes for its formats | [format-id schema](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/format-id.json) | +| `adagents.json` `authoritative_location` indirection | Following the pointer; the target URL MUST canonicalize the same way | [Managed networks](/dist/docs/3.2.0-beta.4/governance/property/managed-networks#security-considerations) | +| Provenance verifier allowlist | `verify_agent.agent_url` vs `creative_policy.accepted_verifiers[].agent_url` | [Provenance Verification](/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification#the-verifier-contract-seller-publishes-buyer-represents-seller-confirms) | +| Any registry with a URL primary key | Canonical form is the key; raw input is not | - | + +## Signing profile extensions + +The [request-signing profile](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#signed-requests-transport-layer) layers transport-specific rules on top of this algorithm: + +- `@authority` is derived from the canonicalized authority and compared against the HTTP/2 `:authority` pseudo-header (or the as-received HTTP/1.1 `Host` header) after the same canonicalization. Non-signing callers derive `@authority` from the URL alone. +- Malformed authorities are rejected with `request_target_uri_malformed` on the signing path; non-signing callers use their own authorization-failure code (e.g., `seller_not_authorized` for TMP). +- When both `:authority` and `Host` are present on an as-received HTTP/2 request, the signing profile requires byte-equality after canonicalization; this is a signing-specific gate because HTTP/1.1 `Host` can be rewritten in transit. + +## Conformance vectors + +The [`canonicalization.json`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/canonicalization.json) set exercises every rule above with fixed `{ input_url, expected_target_uri, expected_authority }` triples, plus malformed-authority rejection cases. Non-signing callers compare against `expected_target_uri` only — `expected_authority` is the HTTP-header-derived form used by the signing profile. SDKs implementing any of the surfaces in the table above SHOULD run this set on every commit; canonicalization divergence is silent until a production interop bug surfaces. + +## Common pitfalls + +- **ASCII-lowercasing an IDN before ToASCII.** `Bücher.example` lowercased in ASCII → `bücher.example`, but a UTS-46-correct path must process the original bytes. TypeScript `url.domainToASCII`, Go `golang.org/x/net/idna`, and Python's `idna` package (not `str.encode('idna')`, which is IDNA2003) diverge on mode defaults; pin to UTS-46 Nontransitional with the four flags above. +- **Keeping the DNS root dot on only one hostname path.** ASCII `example.com.` and IDN U-label/A-label inputs all lose one trailing root dot after ToASCII. Applying the rule only to U-labels produces different `@authority` bytes for equivalent DNS names. +- **Collapsing consecutive slashes.** `/admin//foo` and `/admin/foo` are different canonical forms. A producer that collapses and a comparer that doesn't (or vice versa) opens a path-confusion attack. +- **Re-encoding the query.** Query-string normalization looks tempting but is forbidden. `?x=1&y=2` and `?y=2&x=1` are different canonical forms. +- **Trailing `?` with empty query.** `https://host/p?` and `https://host/p` are different. Preserve whichever the producer sent. Publishers registering URLs in `adagents.json` or similar registries should paste them without a trailing `?` unless they intend the empty-query form. +- **Forgetting the fragment strip.** Fragments never participate in identifier comparison. +- **Mixing `http://` and `https://`.** Scheme is preserved, not coerced. Publishers registering an `authorized_agents[].url` MUST use `https://` for anything meant to be reachable on the public internet — an `http://` entry will fail to match an `https://` caller and vice versa, and non-HTTPS URLs have no transport-integrity guarantee. diff --git a/dist/docs/3.2.0-beta.4/reference/v2-sunset.mdx b/dist/docs/3.2.0-beta.4/reference/v2-sunset.mdx new file mode 100644 index 0000000000..2c7982f28f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/v2-sunset.mdx @@ -0,0 +1,71 @@ +--- +title: v2 sunset +sidebarTitle: v2 sunset +description: "AdCP v2 reached end of life on August 1, 2026 (UTC). It receives no patches and is not safe for interoperable production. Migrate to v3 now." +"og:title": "AdCP — v2 sunset" +--- + +<Warning> +**AdCP v2 is not supported and is not safe for interoperable production on the AgenticAdvertising.org network.** v2 predates the accounts and governance protections that the AgenticAdvertising.org architecture committee considers essential for live multi-party campaigns. The last v2 release was 2.5.3 in January 2026. Begin migrating to [3.0](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3) now. +</Warning> + +## Timeline + +| Date (UTC) | Event | +|---|---| +| **April 2026** (3.0 GA) | v2 no longer supported by AgenticAdvertising.org. Security-only patches begin. No feature work. | +| **August 1, 2026** | v2 fully deprecated. No further patches. Reference documentation archived. | + +The v2 sunset was not tied to 4.0. v2 reached end of life on its own schedule because 2.5 was an early, preliminary version — adoption remained small, and the architecture committee identified protections missing from v2 that could not be backported without a major redesign. v2's shorter window is the documented exception to the [12-month previous-major support commitment](/dist/docs/3.2.0-beta.4/reference/versioning#support-window-for-previous-major); future majors will not invoke this exception. + +## What "unsupported" means + +As of 3.0 GA: + +- **No feature work.** 2.5.3 is the last v2 release. No further minor or patch work in the 2.x line, other than security advisories. +- **No AgenticAdvertising.org certification.** Certification requires v3.0 or later. +- **Not verified in the AgenticAdvertising.org registry.** Verified seller and agent status requires v3.x. v2-only agents can be registered but cannot be verified. +- **Frozen schemas.** v2 schemas are frozen as of 2.5.3 and remain at their existing schema URLs. No new fields, tasks, or protocols. + +As of August 1, 2026 (UTC), v2 is fully deprecated: security patches have stopped and reference documentation is archived. The 2.5.3 schema URLs continue to resolve so existing integrations do not break silently, but those schemas receive no further updates. + +## Why v2 is not safe for interoperable production + +v2 is missing protections that 3.0 treats as essential for live multi-party campaigns on the AgenticAdvertising.org network: + +- **No accounts protocol.** Buyers and sellers cannot negotiate account scope, operator authorization, or buyer identity resolution. +- **No governance.** No structured content standards, audience bias validation, or property list governance. +- **No campaign governance.** No signed proposals, approval workflow, or proposal lifecycle. +- **Limited optimization and measurement.** No structured optimization goals, event source health, or streaming/audio delivery metrics. + +Running v2 on the AgenticAdvertising.org network means running without these protections. Private deployments with their own governance and identity layers are the operator's call — but the AgenticAdvertising.org network treats v2 as out of scope for supported production traffic. + +## What to do + +### If you run a v2 agent + +1. Read [What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3). +2. Work through the [v2→v3 migration guide](/dist/docs/3.2.0-beta.4/reference/migration). +3. Validate with [storyboard testing](/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness). +4. Complete migration as soon as possible; v2 no longer receives security patches. + +### If you are a buyer integrating with v2 sellers + +1. Inventory which of your sellers are v2-only. +2. Notify them that v2 is end of life and share the [migration guide](/dist/docs/3.2.0-beta.4/reference/migration). +3. Shift traffic to v3 sellers as they become available. + +### If you use the AgenticAdvertising.org registry + +Verified seller and agent status requires v3.x. v2-only agents can be registered but are not eligible for verification. As the registry rolls out verified-default discovery, v2-only entries will not surface by default; endpoints that return unverified entries remain available for operators who need them. + +## Dual-support during migration + +Sellers that still need a short migration bridge can support both versions using `get_adcp_capabilities`, `adcp_version`, and `adcp.supported_versions` — see [Running v2 and v3 side by side](/dist/docs/3.2.0-beta.4/reference/migration#running-v2-and-v3-side-by-side). Through 3.x, buyers SHOULD also send the deprecated `adcp_major_version`, and sellers MUST continue advertising the deprecated `adcp.major_versions`, for compatibility with older peers. Dual-support does not make v2 supported or safe; v3-only is the required production configuration. + +## Related + +- **[What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3)** — feature-by-feature summary of what 3.0 adds +- **[Migration guide](/dist/docs/3.2.0-beta.4/reference/migration)** — breaking changes and deep-dive pages for every protocol area +- **[v3 readiness checklist](/dist/docs/3.2.0-beta.4/reference/migration/v3-readiness)** — 8 minimum requirements for storyboard testing +- **[Versioning & governance](/dist/docs/3.2.0-beta.4/reference/versioning)** — 3.x stability guarantees and release cadence diff --git a/dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs.mdx b/dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs.mdx new file mode 100644 index 0000000000..bfe0a4c80e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs.mdx @@ -0,0 +1,124 @@ +--- +title: "Verifying protocol tarballs" +description: "Verify AdCP protocol bundle publisher identity with cosign keyless and the Sigstore transparency log." +"og:title": "AdCP — Verifying protocol tarballs" +--- + +Every AdCP release publishes a `{version}.tgz` bundle (the full schema + compliance + OpenAPI tree at that version) along with three sidecars: + +| File | Role | +|---|---| +| `{version}.tgz.sha256` | SHA-256 checksum, in-transit integrity | +| `{version}.tgz.sig` | Sigstore detached signature | +| `{version}.tgz.crt` | Fulcio-issued signing certificate | + +The SHA-256 sidecar lives on the same origin as the tarball, so it only protects against transit tampering. The `.sig` + `.crt` pair proves the bundle came from the AdCP release workflow itself and was not swapped for a malicious one even if the host were compromised. + +This page covers how to verify those signatures correctly. SDK users (`@adcp/sdk`, `adcp-client-python`, `adcp-go`) get this verification for free on every `sync-schemas` / `download.sh` run. If you're consuming the bundle directly — pinning a specific version in a CI pipeline, ingesting it from a different language, or implementing a fresh adopter — read on. + +## Trust model + +AdCP uses **Sigstore keyless signing**. There is no long-lived private key. At release time: + +1. The `release.yml` workflow on `adcontextprotocol/adcp` runs on a GitHub Actions runner. +2. The runner mints a short-lived OIDC token whose subject identifies the workflow and ref that produced the run. +3. `cosign sign-blob --yes` exchanges that OIDC token at Sigstore's Fulcio CA for a short-lived X.509 certificate, then produces a detached signature using the cert's ephemeral private key. +4. The signature, certificate, and a transparency log entry land in Sigstore's Rekor public log. +5. The release pipeline commits `.sig` and `.crt` next to the tarball and uploads them to the GitHub Release. + +Verification on the consumer side then checks **two binding properties**: + +- **Signature authenticity** — the `.sig` was produced by the private key that the `.crt` certifies. Standard Sigstore math; no AdCP-specific. +- **Identity binding** — the `.crt`'s subject names the AdCP release workflow specifically, with the issuer being GitHub Actions's OIDC provider. This is the AdCP-specific part. + +If both hold, you have proof that an AdCP release workflow run produced this exact tarball — provable end-to-end without trusting `adcontextprotocol.org` itself. + +## Recommended `cosign verify-blob` invocation + +```bash +# Download the tarball + sidecars +curl -OL https://adcontextprotocol.org/protocol/3.0.3.tgz +curl -OL https://adcontextprotocol.org/protocol/3.0.3.tgz.sha256 +curl -OL https://adcontextprotocol.org/protocol/3.0.3.tgz.sig +curl -OL https://adcontextprotocol.org/protocol/3.0.3.tgz.crt + +# Verify checksum first (cheap, catches in-transit corruption) +shasum -a 256 -c 3.0.3.tgz.sha256 + +# Verify Sigstore identity (proves publisher) +cosign verify-blob \ + --signature 3.0.3.tgz.sig \ + --certificate 3.0.3.tgz.crt \ + --certificate-identity-regexp '^https://github\.com/adcontextprotocol/adcp/\.github/workflows/release\.yml@refs/(heads|tags)/.*$' \ + --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ + 3.0.3.tgz +``` + +Both must exit zero before extracting. `cosign verify-blob` returns non-zero if the signature was made by anything other than the AdCP release workflow, even if the SHA matches and TLS is valid. + +## The identity regex, explained + +``` +^https://github\.com/adcontextprotocol/adcp/\.github/workflows/release\.yml@refs/(heads|tags)/.*$ +``` + +Three pieces matter: + +- `https://github.com/adcontextprotocol/adcp/.github/workflows/release.yml` — the workflow file path. This is what makes the certificate AdCP-specific. A workflow in a different repo, or a different workflow file in this repo, won't match. +- `refs/(heads|tags)/.*` — the ref the workflow ran against. Branch refs are what's used today (cosign signs during the push-triggered run, so the OIDC subject is `release.yml@refs/heads/<branch>`). Tag refs are forward-compat for any future post-tag re-signing flow. +- `--certificate-oidc-issuer 'https://token.actions.githubusercontent.com'` — the OIDC issuer must be GitHub Actions itself. Even with the right repo and workflow path, a non-GitHub-Actions issuer would fail this check. + +### Why a regex, not an exact ref + +The first version of this regex was `^...refs/heads/(main|2\.6\.x)$` — a literal allowlist of release branches. It silently rejected v3.0.1+ when those releases moved to `refs/heads/3.0.x` (the maintenance branch added when the 3.0 line was cut). Any new maintenance branch broke verification across every consumer until each SDK was patched. + +Wildcarding the branch component doesn't weaken the trust model: the upstream `release.yml` workflow's own `on.push.branches` allowlist (currently `main`, `3.0.x`, `2.6.x`) is what determines which refs can produce a signature in the first place. Mirroring that list in every consumer's regex was a maintenance liability that added no defense. + +## Cert subjects on past releases + +For reference, here's what each release's certificate subject looked like: + +| Release | Triggering ref | Cert subject (subject only, full URL prefix omitted) | +|---|---|---| +| v3.0.0 | `main` (initial 3.0 cut) | `release.yml@refs/heads/main` | +| v3.0.1 | `3.0.x` (after the line was cut) | `release.yml@refs/heads/3.0.x` | +| v3.0.2 | `3.0.x` | `release.yml@refs/heads/3.0.x` | +| v3.0.3 | `3.0.x` | `release.yml@refs/heads/3.0.x` | + +A future maintenance branch (e.g. `2.7.x`) would add `release.yml@refs/heads/2.7.x` without needing any consumer change. + +## When verification is not available + +Some releases legitimately ship without `.sig`/`.crt`: + +- **Pre-v3.0.0 (cosign signing wasn't wired in yet).** Treat as checksum-only. SDKs degrade to integrity-only verification rather than failing. +- **Out-of-band republishes.** If a tarball is regenerated outside the `release.yml` workflow (e.g. a one-off rebuild), it has no Sigstore identity. The cosign sidecars will be absent. Treat as untrusted. + +Consumers should distinguish "sidecars absent" (degrade to checksum-only) from "sidecars present but verification failed" (hard fail). Don't conflate them — a present-but-invalid signature is a stronger negative signal than no signature at all. + +## SDK behavior + +All three first-party SDKs use this regex when fetching protocol bundles: + +| SDK | Verifies via | +|---|---| +| `@adcp/sdk` (TypeScript) | `scripts/sync-schemas.ts` shells out to `cosign verify-blob` when sidecars are present | +| `adcp-client-python` | `scripts/sync_schemas.py` does the same | +| `adcp-go` | `adcp/schemas/download.sh` does the same | + +If you maintain a fourth-party SDK, mirror the regex above. Stay away from literal-allowlist patterns — they will rot every time a new maintenance branch is cut. + +## Producer-side detail + +If you're contributing to the spec workflow itself: cosign signing happens during `npm run version` (chained from the `sign-protocol-tarball.sh` step) inside `release.yml`. The OIDC token is minted at signing time, so the cert subject reflects the trigger ref of that workflow run. Tag-based signing would require either: + +- A second workflow that runs on `release: published` and re-signs the tarball using the post-tag OIDC subject, or +- Restructuring the release pipeline so signing happens after `changeset git-tag` and within a context where `refs/tags/*` is the active ref. + +Today's signed-from-branch shape is intentional — it lets every consumer verify a single canonical artifact without reasoning about tag-vs-branch identity. The regex's `refs/(heads|tags)/.*` is forward-compat in case that changes. + +## See also + +- [Schemas, compliance bundles, and SDKs](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks) — where these sidecars are described in the broader bundle-fetching flow +- [Sigstore documentation](https://docs.sigstore.dev/) — keyless signing, transparency log, threat model +- [`adcp#2273`](https://github.com/adcontextprotocol/adcp/issues/2273) — the change that introduced cosign signing diff --git a/dist/docs/3.2.0-beta.4/reference/versioning.mdx b/dist/docs/3.2.0-beta.4/reference/versioning.mdx new file mode 100644 index 0000000000..898358344a --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/versioning.mdx @@ -0,0 +1,314 @@ +--- +title: Versioning & Governance +description: "How AdCP versions releases, manages schema changes, and governs protocol evolution." +"og:title": "AdCP — Versioning & Governance" +--- + +AdCP uses a three-tier numbering system: **VERSION.RELEASE.PATCH** (e.g., 3.1.2). + +--- + +## Version tiers + +| Tier | Example | Description | +|------|---------|-------------| +| **Version** | 3.0 → 4.0 | A new generation of the protocol. Reflects accumulated architectural change across the previous cycle, not any single feature. Signals a clean baseline for the ecosystem. | +| **Release** | 3.0 → 3.1 | New fields, new capabilities, or small schema changes that don't alter the protocol's architecture. May affect existing implementations at the margins. | +| **Patch** | 3.1 → 3.1.1 | Bug fixes, clarifications, and corrections. Always safe to upgrade for stable AdCP surfaces. A patch corrects behavior that diverged from the stable spec but introduces no new stable capabilities; experimental-only patches follow the experimental notice contract below. | + +### What distinguishes a release from a new version? + +A new version (4.0) ships when the changes are architectural, when cumulative drift from the previous version is large enough that a clean baseline serves the ecosystem, or when there is a strategic reason to signal a new generation. + +A release (3.x) can change schema at the margins — a field's required/optional status, renamed fields with documented aliases, tightened validation, deprecating an object with a replacement available in the same release. These are changes a builder can absorb with targeted updates. + +### Forward compatibility + +Implementations built against 3.0 will continue to function against any 3.x release. Schema changes within a version are designed to be absorbed with targeted updates, not rewrites. + +--- + +## Version negotiation + +Buyers and sellers negotiate at **release precision** (VERSION.RELEASE, e.g. `"3.0"`, `"3.1"`) on every request and response. Release-precision pinning lets buyer SDKs select which schemas they validate against, and lets sellers return responses shaped to the contract the buyer expects (Stripe model). + +> In-house clients implementing the wire directly can stay on `adcp_major_version` through all of 3.x; `adcp_version` is opt-in until 4.0. See [Migration timeline](#migration-timeline) for the cadence. + +### Bidirectional negotiation (3.1+) + +1. **Seller advertises**: `adcp.supported_versions` on the `get_adcp_capabilities` response lists all release-precision versions the seller speaks (e.g. `["3.0", "3.1"]`). `adcp.build_version` (e.g. `"3.1.2+vendor.42"`) is optional advisory metadata for incident triage — not part of the wire contract. +2. **Buyer declares**: `adcp_version` (release-precision string) on every request tells the seller which release the buyer's payloads conform to. Through 3.x the buyer SHOULD also emit `adcp_major_version` so legacy 3.x sellers that only read the integer continue to negotiate correctly. +3. **Server resolves**: + - Exact match → serve in that release. + - Same major, both pre-release and release present, buyer pins the release → exact match wins; server MUST NOT silently downshift onto the pre-release. (Server `["3.1-beta", "3.1"]` + pin `"3.1"` → serve `"3.1"`.) + - Same major, no exact match, at least one server release ≤ buyer's pin → downshift to highest supported release ≤ the pin. Covers both "server's max < pin" and gap-cases (e.g. server `["3.0", "3.2"]` + pin `"3.1"` → serve `"3.0"`). + - Same major, no server release ≤ buyer's pin (sub-min: every supported release is strictly greater) → return `VERSION_UNSUPPORTED` with `supported_versions` in `error.data`. + - Different major → return `VERSION_UNSUPPORTED` with `supported_versions` in `error.data`. + - Omitted → server uses its default release (or, if only `adcp_major_version` was sent, the highest supported release in that major). +4. **Server echoes**: `adcp_version` on every response tells the buyer which release the seller actually served. The echoed value is the **release served**, never the seller's own latest release — a 3.1 seller serving a 3.0 buyer at 3.0 echoes `"3.0"`. Buyers SHOULD validate the response against that release's schema, not against their pin. + +When the response omits `adcp_version` (a legacy 3.0 seller that doesn't read the field — `additionalProperties: true` makes it invisible there), buyers SHOULD validate against their own pin and treat the seller as 3.0-only for capability inference. The buyer's SDK falls back to its constructor pin in this case. + +**When `get_adcp_capabilities` is absent entirely.** A seller that does not expose `get_adcp_capabilities` (the tool isn't advertised on the MCP tool list, the A2A skill list, or the REST tool index) is a pre-v3 implementation — the tool itself is v3-and-later. Buyers SHOULD infer **v2** in this case and route the request through the v2 wire-shape adapter, emitting a one-time advisory warning that retry-safety guarantees are unknown for this seller (no `replay_ttl_seconds` declaration is available). This is fail-open by design: failing closed on this signal would block the most common adoption path — sellers that shipped v2 tools and never implemented v3 discovery. Buyers MUST NOT use absence of `get_adcp_capabilities` as a positive v2 conformance signal; it is purely an inference from "v3 discovery surface is missing." Idempotency, signed-requests, and other v3 trust primitives MUST be treated as unknown — buyers requiring those guarantees MUST fail closed at the application layer when the seller cannot advertise them. The fail-open rule applies to the wire-shape adapter only, not to the trust primitives the wire shape carries. + +This lets buyers and sellers upgrade independently — sellers can declare multi-release support, and buyers can pin to a specific release without coordinating their migration. + +#### Pre-release pins + +Pre-release tags (`"3.1-beta"`, `"3.1-rc.1"`) are matched **exactly** against `supported_versions`. They are not range-resolved: a buyer pinning `"3.1-beta"` against a server that lists `["3.0", "3.1"]` (no beta in the list) gets `VERSION_UNSUPPORTED`, not a downshift to `"3.0"`. Servers MUST NOT downshift a release pin onto a pre-release (`"3.1"` → `"3.1-beta"`); when both are advertised, the release wins exact match. + +#### `VERSION_UNSUPPORTED` error data + +When the seller can't honor a pin, `error.data` follows [`error-details/version-unsupported.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/schemas/source/error-details/version-unsupported.json): + +```json +{ + "adcp_version": "4.0", + "adcp_major_version": 4, + "supported_versions": ["3.0", "3.1"], + "supported_majors": [3], + "build_version": "3.1.2+vendor.42" +} +``` + +`supported_versions` is authoritative — clients SHOULD pick a value from this list and retry. SDKs SHOULD raise a typed error rather than silently retrying; auto-downshift changes wire shape under the caller. + +### Patches are not negotiated + +Per the three-tier model, patches introduce no stable AdCP contract change — they're bug fixes and clarifications for stable surfaces. The wire negotiation field (`adcp_version`) uses release precision only. Servers MAY surface their build patch via the optional `build_version` capability for operational visibility, but buyers MUST NOT use it for negotiation. Experimental-only patch changes are governed by `experimental_features` declarations and the notice contract below, not by patch-level negotiation. + +`build_version` MUST be a valid semver string with the patch component populated, optionally extended with pre-release and build-metadata segments per [semver §9–§10](https://semver.org/#spec-item-9). Examples: `"3.1.2"`, `"3.1.2+scope3.deploy.4821"`, `"3.1.0-beta.3+sha.a1b2c3d"`. + +The `adcp_version` wire shape is `MAJOR.MINOR` or `MAJOR.MINOR-PRERELEASE`. **No patch component is valid on the wire**, even alongside a pre-release tag. SDKs that internally key bundles using full semver (`"3.1.0-beta.1"`) MUST normalize to release-precision (`"3.1-beta.1"`) before emitting. `"3.1.2"`, `"3.1.0-beta.1"`, `"v3.1"`, and `"3"` are all invalid wire values and will be rejected by validation. + +**Don't confuse the wire field with bundle metadata.** The schema registry, tarball manifest, compliance index, and the `/protocol/` HTTP discovery endpoint all expose a `published_version` field (e.g. `"3.1.0-beta.1"`) at full-semver precision — that's the version of the published artifact, not a wire value. A legacy `adcp_version` alias is also present on those meta-objects through 3.x for `@adcp/sdk.ComplianceIndex` compatibility, sunset at 4.0. **Never emit a meta-field value on the wire** — normalize to release-precision first. See [schemas-and-sdks](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks#version-discovery) for the discovery URL. + +### Major-precision negotiation (deprecated, kept through 3.x) + +The legacy `adcp_major_version` (integer per-request) and `adcp.major_versions` (integer array on capabilities) remain functional through 3.x for backwards compatibility. New buyers and sellers SHOULD prefer release-precision negotiation. Both legacy fields are removed in 4.0. + +**Dual-emit during 3.x:** a buyer that emits `adcp_version` SHOULD also emit `adcp_major_version` (with the major component of its pin) on the same request. This lets legacy 3.x sellers that only read the integer keep negotiating correctly. When both fields are present and disagree at the major level, the server MUST treat the request as malformed and return `VERSION_UNSUPPORTED`. + +When only major-precision is provided: +- Buyer sends `adcp_major_version: 3` → server serves the highest supported release in major 3. +- Server emits `adcp.major_versions: [3]` → buyer can negotiate at major precision but loses release-level information. + +### Migration timeline + +The spec stays at SHOULD on both sides through all of 3.x — consistent with the 3.x stability guarantee that fields don't graduate optional → required within a major. The AdCP compliance grader carries the adoption pressure within 3.x: sellers that want certification at 3.2 ship the response echo. + +| Phase | Spec — buyer | Spec — seller | Compliance grader | +|---|---|---|---| +| **3.1 (additive ship)** | SHOULD emit `adcp_version` (with `adcp_major_version` mirror). | SHOULD honor and echo `adcp_version`. SHOULD emit `supported_versions` on capabilities. | Advisory: reports presence on requests and responses. | +| **3.2** | (unchanged from 3.1) | (unchanged from 3.1) | Blocking failure when sellers don't echo `adcp_version` or don't emit `supported_versions` on capabilities. | +| **4.0** | MUST emit `adcp_version`. `adcp_major_version` removed. | MUST honor and echo `adcp_version`. `adcp.major_versions` and `extensions.adcp.adcp_version` removed. | Blocking failure on absence; legacy fields rejected. | + +In-house clients that haven't moved to the SDK yet can keep sending `adcp_major_version` only through all of 3.x — the server falls back to it. Adding `adcp_version` becomes the certifiable behavior at 3.2 (via the grader); the spec itself doesn't require it until 4.0. + +### Relationship to MCP `protocolVersion` + +MCP carries its own `protocolVersion` field on the `initialize` handshake (e.g. `"2025-06-18"`). That handshake versions the **MCP wire** — JSON-RPC framing, transport semantics. AdCP `adcp_version` versions the **AdCP payload** — the schema of `params` and `result` content. The two are independent: an MCP-2025-06-18 server can speak AdCP 3.0 *or* 3.1, and an MCP client pinning AdCP `"3.1"` will fail with `VERSION_UNSUPPORTED` against a server that only speaks 3.0 even though the MCP handshake succeeded. A2A has no equivalent to MCP `initialize`, which is why `adcp_version` rides on the payload (where both transports can carry it). + +### Features over versions + +Version negotiation handles major architectural boundaries. For feature-level compatibility, use the capability model instead. Sellers declare specific features, targeting systems, execution integrations, and extensions in `get_adcp_capabilities`. Buyers check the capabilities they need and proceed if they're present. + +Not every seller at a given major version will support every feature. Not every buyer needs every feature. The capability contract is: **if declared, the seller MUST honor it**. This gives finer-grained compatibility than version numbers alone. + +See [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) for the full capability reference. + +--- + +## Schema changes in releases: scope and limits + +Schema changes are accepted in releases under the following conditions: + +**In scope for a release:** + +- Changing a field from optional to required (or vice versa) +- Renaming a field with a documented alias and migration note in the same release +- Tightening validation rules on an existing parameter (documented with before/after examples) +- Deprecating an object or method when a replacement ships in the same release + +**Out of scope — version-level changes only:** + +- Architectural or structural redesign of the protocol +- Removing fields or methods without a prior deprecation release +- Changes to authentication, transport, or core security requirements +- Changes that alter fundamental behavioral semantics + +### Deprecation policy + +Deprecation notices are published at least **6 months** before any feature is removed. Deprecated features remain functional for at least one full release cycle after deprecation, and are never removed within the same major version — a feature deprecated in 3.x will not be removed until 4.0 at the earliest. + +Every release with schema changes is called out in the changelog, release notes, and inline documentation. Every release with schema changes ships with a migration guide. + +[Experimental surfaces](/dist/docs/3.2.0-beta.4/reference/experimental-status) operate under a separate, faster notice window of 6 weeks. The deprecation policy above applies only to stable surfaces. + +Stable and experimental surfaces have different notice periods, but this naming rule applies to both: once AdCP has defined or published a property name at a wire location — including a deprecated alias or legacy protocol property — it is permanently reserved for its existing semantics at that same object location, including locations that serialize to the same flattened root. It MUST NOT later be assigned different semantics after deprecation, rename, or removal; a replacement MUST use a distinct name. Vendor-defined properties do not trigger this reservation. + +For example, 3.1 introduced [`media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status) as the canonical replacement for the body-level media-buy lifecycle while the deprecated `status` alias remained temporarily permitted. Under MCP's flattened response serialization, body and envelope properties occupy the same root: envelope `status` carries `TaskStatus`, so a body-level `status` carrying `MediaBuyStatus` collided with it and could be overwritten. + +### Spec, registry, conformance, and experimental changes + +The release-vs-patch rules above apply to **spec-level artifacts** — JSON Schemas under `static/schemas/source/`, normative prose in `docs/`, and protocol task definitions. These are what an agent implements on the wire and what buyers depend on for interop. + +The AgenticAdvertising.org registry API and feed transport are versioned separately from `adcontextprotocol`. Changes to registry OpenAPI docs, registry-published policy files, and registry feed transport schemas do not by themselves bump the `adcontextprotocol` package version unless they also change a stable AdCP task payload, negotiation field, compliance artifact, or normative protocol rule. Registry JSON Schemas under `static/schemas/source/` remain tracked by the changeset scope gate so reviewers see transport-shape changes, but their release classification belongs to the registry surface unless they cross into stable AdCP semantics. + +The **conformance suite** — storyboards, specialism taxonomy, scenario classifications, runner mechanics — versions independently and is **patch-level by default**. The conformance suite is a verification artifact AAO maintains; it is not the spec and it is not the docs. Adding, removing, renaming, or reclassifying preview-status specialisms; relocating storyboards between universal/protocol/specialism directories; refactoring scenario coverage; and adjusting runner behavior to match an unchanged spec are all patch changes. + +A conformance-suite change escalates to minor or major only when it would alter what an agent must do on the wire — i.e., when it tightens implicit spec validation, requires sellers to advertise a new capability that didn't exist, or removes a stable specialism that agents are actively claiming (which is breaking, since agents currently advertising it become non-conformant). + +| Change | Tier | +|--------|------| +| Add a new universal storyboard for an existing capability | Patch | +| Move a storyboard between directories (`specialisms/{id}/` → `universal/`, etc.) | Patch | +| Reclassify a preview-status specialism (no graded users) | Patch | +| Add scenarios within an existing storyboard | Patch | +| Change an experimental-only schema under its notice contract, with no stable AdCP task payload, negotiation, compliance, or normative-rule change | Patch | +| Add a new stable specialism to the enum | Minor (new claim agents can make) | +| Remove a stable specialism from the enum | Major (breaks agents currently claiming it) | +| Add a new error code or new optional field to a request/response schema | Minor | + +This separation lets registry transport, verification machinery, and experimental feedback surfaces evolve quickly without dragging stable spec-level versioning along with them. + +--- + +## 3.x stability guarantees + +Implementations built against 3.0 can rely on the following stable-surface guarantees through the 3.x cycle. Experimental surfaces follow the notice and patch-classification rules below. + +| Artifact | Guarantee within 3.x | +|---|---| +| **Fields** | Never removed. May be renamed with a documented alias that accepts both names in the same release. Optional → required only after a prior deprecation release. | +| **Enums** | Only additive. Existing values are never removed or renamed. Clients must tolerate unknown values and fall back to sensible defaults. | +| **Error codes** | Only additive. Existing codes retain their semantics. Clients that handle unknown error codes generically remain compatible. | +| **Task names** | Never removed or renamed. New tasks may be added. | +| **Authentication, transport, core security** | Never changed. These are version-level changes only. | + +### Experimental surfaces + +The stability guarantees in the table above apply to stable surfaces only. AdCP may publish surfaces as **experimental** when they are part of the core protocol but not yet frozen. Experimental surfaces are marked with `x-status: experimental` in their schemas, and sellers that implement them declare so via `experimental_features` on `get_adcp_capabilities`. + +Experimental surfaces MAY break between any two 3.x releases with at least 6 weeks' notice in the release notes. Experimental-only schema changes are patch-level when they do not change stable AdCP task payloads, negotiation fields, compliance artifacts, or normative protocol rules; adopters opt into that faster movement by declaring the experimental feature. Historical prerelease notes may have classified experimental reshapes as minor, but this policy treats the release tier as stable-surface impact plus the experimental notice obligation. Experimental surfaces graduate to stable once they have demonstrated real-world signal — see the full [experimental status contract](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the graduation criteria, notice requirements, and client guidance. + +Experimental status is deliberately scoped. If a surface is not marked experimental, the 3.x guarantees above apply. + +### Patch releases + +A patch release (`3.0.1`, `3.1.2`) changes only documentation, wording, validation that was diverging from the documented stable spec, registry-versioned artifacts, conformance-suite artifacts, or experimental-only surfaces. For stable AdCP surfaces, patches never change schema — no new fields, no renamed fields, no new enum values. Upgrading to the latest patch of your current release is always safe for stable AdCP surfaces; experimental adopters must also follow the release notes for the experimental features they declared. + +### Security fixes + +Security-relevant fixes are documented in release notes with a `security` label and land in the current release. Implementations SHOULD upgrade promptly after a security advisory. Older releases within 3.x do not receive routine backports; upgrading to the current release is the expected remediation path. v2 no longer receives security fixes — see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). + +### Breaking-change notice + +Any change that requires an implementation to adapt — renamed field, required-to-optional transition, tightened validation — ships with all of the following: + +- An entry in the [release notes](/dist/docs/3.2.0-beta.4/reference/release-notes) with a migration note +- An entry in the [changelog](/dist/docs/3.2.0-beta.4/reference/changelog) +- A section in the [migration guide](/dist/docs/3.2.0-beta.4/reference/migration) or a dedicated deep-dive page +- Where possible, an alias accepting both old and new names in the release that introduces the change + +### Schema publication at merge + +The latest published tag must always reflect the same required-field set as source HEAD. A PR that changes any `required` array, changes a discriminator `const`, or tightens a validation constraint must be accompanied by a new tag cut before the change becomes the active implementation target for external consumers. This is in addition to any upstream obligations — for example, the deprecation requirement for optional→required transitions described in the stability guarantees above. + +**Why:** Implementors validate against a published tag (whether pinned to an exact version or resolved through the [version alias](/dist/docs/3.2.0-beta.4/building/schemas-and-sdks#schema-versioning)). If source HEAD's required fields grow beyond what that tag declares, an evaluator reading source and the implementor's validator reading the published tag will disagree — not because either is wrong, but because the published contract hasn't caught up. The implementor cannot reconcile the gap without reading source history. + +**During RC cycles:** The same invariant applies between RC tags. A schema change that lands between `rc.N` and `rc.N+1` requires cutting `rc.N+1` before the new required-field set is treated as active. + +**Until CI enforcement is in place:** The PR author is responsible for cutting the new release or RC tag before the change propagates to evaluators. Reviewers should not approve a PR that changes a `required` array, a discriminator `const`, or a validation constraint without confirming a new tag is ready to publish. + +--- + +## Release cadence + +AdCP publishes the following named policy so implementers can plan: + +| Commitment | Window | +|---|---| +| **Major releases (breaking)** | minimum 18 months apart | +| **Next major (4.0)** | target early 2027 | +| **Support for previous major after successor GA** | minimum 12 months | +| **Deprecation notice before removal** | minimum 6 months | + +Within a version, releases land every 6–8 weeks early in the cycle and stretch toward quarterly as the version stabilizes. Release count within a version is not fixed. + +### Support window for previous major + +When a new major ships, the prior major receives security patches for at least 12 months after successor GA. Security patches (CVE fixes and security advisories) are backported for the full window; feature work is not. The exact end-of-life date for each version is published on a per-version sunset page and linked from the transition note that accompanies the successor's GA release. + +Deprecation windows do not reset when a deprecated feature is modified — the original removal date holds. + +The v2 sunset is the documented exception to this commitment: v2 predates this policy and lacks account and governance protections that cannot be backported. Its security-only window ended August 1, 2026 — see the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset). Future majors will not invoke this exception. + +### Planned releases + +| Release | Target | +|---------|--------| +| **3.0** | April 2026 — GA release | +| **3.1** | Late June 2026 | +| **3.2** | Beta cycle begins August 2026; GA targeted for late September 2026 | +| **4.0** | Early 2027 — next major, accumulated breaking changes | + +The 3.2 cycle publishes a protocol-first beta.0 before its SDK wave. Beta.1 +incorporates that integration feedback, then becomes SDK-backed only after SDKs +ingest the exact beta.1 bundle and publish matching evidence. See the +[3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). + +Further 3.x releases are scheduled based on implementation feedback and working group priorities, with at least 8 weeks between stable releases. Planned scope for each release is tracked on the [GitHub milestones page](https://github.com/adcontextprotocol/adcp/milestones) — open issues on the `3.1.0` and `3.2.0` milestones reflect current candidate work, not fixed commitments. + +--- + +## Extensibility + +AdCP distinguishes three levels of schema extension. The rules below apply to every AdCP schema unless a task reference page states otherwise. + +| Surface | Who may extend | How | +|---|---|---| +| **Core fields** defined by the protocol | Working group, via a release | Proposed in a working group, accepted through the normal release process. Never extended inline by an implementer. | +| **`ext.{namespace}`** on any request or response object | Anyone, by declaring a namespace in `extensions_supported` | Namespaced, out-of-band, does not affect baseline interop. Namespaces SHOULD be registered in the [extension registry](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#extensions). | +| **`additionalProperties: true`** on containers that allow it | Anyone | Additive fields at the declared location. MUST NOT shadow or redefine a core field. Readers MUST ignore unknown fields rather than erroring. When an additional field collides in name with a core field defined on a later release, readers MUST prefer the core field. | + +**What MUST NOT happen:** + +- Introducing new top-level properties on a response schema in place of `ext.{namespace}`. Implementers that need a field outside `ext` MUST propose the field to the working group. +- Renaming a core field inline. Aliases are a spec-level operation, not an implementer operation. +- Tightening a core field's validation locally. An implementer that needs stricter validation performs it before emitting or after receiving the field — not in the wire schema. + +This separation is what lets the spec evolve without every non-conforming implementation becoming a fragmentation claim. The wire contract stays narrow and predictable; `ext.{namespace}` is where anyone can move fast without coordination. + +### Adding to the core protocol + +A field or task enters the core protocol through one of the following paths: + +1. **Release addition.** Additive changes (new optional fields, new tasks, new enum values) ship in a 3.x release under the normal release process. These are stable from the release they ship in. +2. **Experimental addition.** A surface the working group wants to ship for feedback but is not ready to freeze enters the protocol as experimental — see [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status). Experimental surfaces graduate to stable or are removed; there is no permanent experimental state. +3. **Version boundary.** Changes that are incompatible with the current version are held for the next major. See [schema changes in releases](#schema-changes-in-releases-scope-and-limits) for what is in and out of scope for a release. + +--- + +## Governance + +AdCP development is organized around **[working groups](/dist/docs/3.2.0-beta.4/community/working-group)**, each focused on a specific protocol domain (creative, governance, media buy, signals, brand, sponsored intelligence). Working groups drive feature proposals, surface implementation feedback, and shape the direction of their area. Cross-cutting design decisions — consistency across domains, conflicts between working groups, shared primitives — are resolved in the working-group forums and in public issues on GitHub, not behind closed doors. + +Working groups contribute through: + +- **GitHub Discussions** for proposals and technical debate +- **Slack channels** for real-time collaboration +- **Member feedback** from organizations building on AdCP +- **Reference implementations** that validate design decisions + +As the protocol and its implementation base mature, domain leads will take increasing ownership of their areas. + +--- + +## Additional resources + +- **[Versions & Compatibility](/dist/docs/3.2.0-beta.4/reference/versions)** — At-a-glance status of every published version +- **[Specification lifecycle](/dist/docs/3.2.0-beta.4/reference/specification-lifecycle)** — Stage definitions (Draft → Proposed → Final → Deprecated → Sunset), entry criteria, and how to check the current stage of a spec section +- **[Roadmap](/dist/docs/3.2.0-beta.4/reference/roadmap)** — Planned features and milestones +- **[Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes)** — What shipped, with migration guides +- **[Changelog](/dist/docs/3.2.0-beta.4/reference/changelog)** — Technical change history diff --git a/dist/docs/3.2.0-beta.4/reference/versions.mdx b/dist/docs/3.2.0-beta.4/reference/versions.mdx new file mode 100644 index 0000000000..11e48159ac --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/versions.mdx @@ -0,0 +1,107 @@ +--- +title: Versions & Compatibility +sidebarTitle: Versions +description: "Every published AdCP version, its status, and its end-of-life date. Start here if you're choosing or upgrading a version." +"og:title": "AdCP — Versions & Compatibility" +--- + +## At a glance + +<Info> +**Choosing today:** new production integrations should use 3.1 with wire pin `"3.1"`. Use the exact 3.2 prerelease pin only in development or staging after the peer advertises it. +</Info> + +| Status | Versions | Wire pin | What it means | +|---|---|---|---| +| **Beta** | 3.2 (current prerelease: `beta.3`) | `"3.2-beta.3"` | Development and staging only. TypeScript SDK support is available in `@adcp/sdk@14.0.0-beta.4`; follow the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). | +| **Active** | 3.1 (current stable: 3.1.15) | `"3.1"` | Current production minor release. See [What's New in AdCP 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1) for the feature set. | +| **Maintained** | 3.0 (current stable: 3.0.24) | `"3.0"` | Supported previous minor for existing production integrations. Receives compatibility and security patches. | +| **End of life** | 2.0.0, 2.1.0, 2.5.0–2.5.3 | — | No patches. Migrate to 3.0. See [v2 sunset](/dist/docs/3.2.0-beta.4/reference/v2-sunset). | +| **Planned** | 4.0 | — | Target in [planned releases](/dist/docs/3.2.0-beta.4/reference/versioning#planned-releases). | + +**Wire values are release-precision only.** Send `"3.1"` for the stable 3.1 line or `"3.0"` for the maintained 3.0 line. Do not send patch components like `"3.0.19"` or full semver pre-release values like `"3.1.0-rc.15"`. Historical prerelease pins such as `"3.1-rc.15"` remain valid only for agents that explicitly advertise those prerelease values. See [patches are not negotiated](/dist/docs/3.2.0-beta.4/reference/versioning#patches-are-not-negotiated). + +*Status legend: Pending beta = announced but not yet published. Beta = immutable prerelease checkpoints for development and staging. Active = current stable generation. Maintained = supported previous minor. Security-only = patches for security issues only, no features. End of life = no patches. Planned = not yet released.* + +## All published versions + +### 3.x — current generation + +| Version | Released | Notes | +|---|---|---| +| 3.0.0 | 2026-04-22 | GA — stable baseline for the 3.x cycle. | +| 3.0.1 through 3.0.10 | 2026-04-28 to 2026-05-10 | Patches. Wire-compatible with 3.0.0. | +| 3.0.11 through 3.0.15 | 2026-05-11 to 2026-05-31 | Patches. Wire-compatible with 3.0.0. | +| 3.0.16 through **3.0.24** | 2026-06-14 to 2026-08-16 | Patches. **3.0.24 is the latest stable patch.** Wire-compatible with 3.0.0. | +| **3.1.0** | 2026-06-18 | GA — current production minor release. Use wire pin `"3.1"`. | +| 3.1.1 | 2026-06-30 | Patch. Wire-compatible with 3.1.0. | +| 3.1.2 | 2026-07-08 | Patch. Wire-compatible with 3.1.0. | +| 3.1.3 | 2026-07-13 | **Withdrawn. Do not use.** It added a stable schema field in a patch release and included an incorrect publisher-domain filter implementation. The artifacts remain available only for auditability. Use 3.1.2 instead. | +| 3.1.4 through **3.1.15** | 2026-07-18 to 2026-08-16 | Patches. **3.1.15 is the latest stable patch.** Wire-compatible with 3.1.0. | + +Supported patches don't change the wire contract. Upgrading within 3.0.x is always safe, and 3.1 remains additive over 3.0. The withdrawn 3.1.3 release is not a supported patch or implementation target. For per-version detail, see [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes) (curated narrative) and the [Changelog](/dist/docs/3.2.0-beta.4/reference/changelog) (full technical history). + +### Prereleases + +| Version | Released | Notes | +|---|---|---| +| **3.2.0-beta.3** | 2026-08-19 | Current prerelease. `@adcp/sdk@14.0.0-beta.4` embeds this exact checkpoint. Use `"3.2-beta.3"` only when both peers explicitly advertise it. | +| 3.2.0-beta.2 | 2026-08-19 | Integration checkpoint, superseded by beta.3 for new beta testing. | +| 3.2.0-beta.1 | 2026-08-19 | Integration-correction checkpoint, superseded by beta.2 for new beta testing. | +| 3.2.0-beta.0 | 2026-08-17 | Protocol-first beta input for SDK work. Remains available for pinned prerelease adopters. | +| 3.1.0-rc.1 through 3.1.0-rc.15 | 2026-05-29 to 2026-06-16 | Superseded by 3.1.0 GA. These artifacts remain available for pinned prerelease adopters and release forensics. | +| 3.0.0-beta.1 through rc.2 | 2026-01-26 to 2026-03-15 | Superseded. | +| 3.0.0-rc.3 | 2026-04-01 | Superseded by GA. See [prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades) if you adopted rc.3. | + +### 2.x — end of life + +| Version | Released | Notes | +|---|---|---| +| 2.0.0 | 2025-10-15 | End of life. No patches. Migrate to 3.0. | +| 2.1.0 | 2025-10-19 | End of life. No patches. Migrate to 3.0. | +| 2.5.0 | 2025-11-22 | End of life. No patches. | +| 2.5.1 | 2025-12-24 | End of life. No patches. | +| 2.5.2 | 2026-01-07 | End of life. No patches. | +| 2.5.3 | January 2026 | End of life. **Last 2.x release.** | + +The entire 2.x line has been fully deprecated since August 1, 2026 (UTC). The 2.x schema URLs continue to resolve so existing integrations don't break silently, but those schemas receive no further updates. See [v2 Sunset](/dist/docs/3.2.0-beta.4/reference/v2-sunset) for migration paths. + +## FAQ + +### What's "current"? +For new production integrations, **3.1.15** is current; pin your integration to `"3.1"` (not `"3.1.15"`). Existing 3.0 integrations can remain pinned to `"3.0"` while they migrate. Use 3.2 only for beta testing with an exact advertised prerelease pin. See [Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation). + +### What happened to 2.2, 2.3, 2.4, 2.6? +The 2.x line skipped version numbers during its working-group cycle. Some appear as in-flight changelog entries but were never released — the changes were rolled forward into the next published version or deferred to 3.0. The six published 2.x releases are 2.0.0, 2.1.0, 2.5.0, 2.5.1, 2.5.2, and 2.5.3. + +### Can I still register a v2 agent? +Yes — v2 agents can be registered in the AgenticAdvertising.org registry but cannot be verified. Certification and verified-default discovery require v3.x. See [v2 Sunset → If you use the AgenticAdvertising.org registry](/dist/docs/3.2.0-beta.4/reference/v2-sunset#if-you-use-the-agenticadvertisingorg-registry). + +### How long will 3.0 be supported? +At least 12 months after 4.0 GA. See [Versioning → Support window for previous major](/dist/docs/3.2.0-beta.4/reference/versioning#support-window-for-previous-major). + +### Where is 4.0? +Targeted for early 2027. 3.x is mid-cycle — see the [planned releases table](/dist/docs/3.2.0-beta.4/reference/versioning#planned-releases). + +## Choosing a version + +| If you are… | Use | +|---|---| +| Building a new production integration today | **3.1**. Pin `"3.1"` on the wire. | +| Implementing or testing 3.2 without an SDK | Use the signed **3.2 beta.3** artifacts with raw-wire or code-generation workflows. Follow the [beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). | +| Running an SDK-backed 3.2 integration test | Use `@adcp/sdk@14.0.0-beta.4` with exact wire pin `"3.2-beta.3"`, or another SDK only after its support matrix row names an exact checkpoint. | +| Running an existing 3.0 integration | Stay on **3.0** while you migrate, or move to **3.1** when your SDK and validation are ready. | +| Running a 2.5.x integration | Upgrade now — out of support. Start with the [migration guide](/dist/docs/3.2.0-beta.4/reference/migration). | +| Running a 2.0 or 2.1 integration | Upgrade now — out of support. | +| Trying a post-3.1 feature | Use the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta), [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes), and [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status). | + +## Related + +- **[Versioning & Governance](/dist/docs/3.2.0-beta.4/reference/versioning)** — release tiers, schema-change scope, cadence policy +- **[v2 Sunset](/dist/docs/3.2.0-beta.4/reference/v2-sunset)** — full v2 end-of-life timeline and migration paths +- **[What's new in v3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3)** — feature-by-feature summary of what 3.0 adds +- **[What's New in AdCP 3.1](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1)** — final 3.1 feature set and adopter actions +- **[What's new in AdCP 3.2](/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2)** — beta feature set and adopter actions +- **[3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta)** — current artifacts, exact SDK pairing, and beta testing gates +- **[Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes)** — curated narrative for each version +- **[Changelog](/dist/docs/3.2.0-beta.4/reference/changelog)** — full technical change history diff --git a/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1.mdx b/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1.mdx new file mode 100644 index 0000000000..251afdd755 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1.mdx @@ -0,0 +1,353 @@ +--- +title: What's New in AdCP 3.1 +description: "Adopter overview of AdCP 3.1 — distributed brand.json, dependency-impact webhooks, wholesale feed mirroring, release-precision version negotiation, brand response signing, canonical creative formats, vendor-attested measurement, action discovery, and more. Additive over 3.0; use wire pin 3.1 for the stable release." +"og:title": "AdCP — What's New in 3.1" +--- + +<Info> +**Status: 3.1 is released.** Current stable minor: 3.1, wire pin `adcp_version: "3.1"`. The 3.0 line remains supported for existing integrations pinned to `"3.0"`. +</Info> + +AdCP 3.1 is a minor release. Every 3.1 change is **additive** over 3.0: new fields are optional, no required field was removed, no shape changed in a way that breaks a 3.0-conformant client. **No breaking changes for 3.0-conformant agents.** To adopt 3.1, pin production traffic to `"3.1"` after confirming the agent advertises that value in `supported_versions`. For implementation prep, use the [3.0 to 3.1 migration guide](/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1). + +This page is the curated adopter overview for the 3.1 minor release. Need the full 3.1 change list, per-PR detail, or migration tables? Use [Release Notes § Version 3.1.0](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-1-0), the authoritative version record, and [Migrating from 3.0 to 3.1](/dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1), the role-based upgrade checklist. For long-form normative reference, follow the link on each headline below. + +<Note> +**Looking for the major v2 → v3 changes instead?** See [What's New in AdCP 3](/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3). This page covers the 3.0 → 3.1 minor delta only. +</Note> + +## Final 3.1 feature set + +If you only need the stable 3.1 shape, read this list first: + +- **Versioning and validation.** Release-precision `adcp_version` pins, stable wire value `"3.1"`, `supported_versions` advertisement, envelope echo, and version-scoped verification badges. +- **Brand trust.** Distributed `brand.json`, sub-brand self-publishing through `brand_refs[]`, typed brand constraints, authorized operator scoping, and required signed responses for `verify_brand_claim` / `verify_brand_claims`. +- **Signals and product targeting.** Enriched signal definitions, `SignalRef`, wholesale signal enumeration, product-scoped `included_signals`, selectable `signal_targeting_options`, grouped buy-time `signal_targeting_groups`, and clarified owned-vs-marketplace conformance. +- **Wholesale feed mirroring.** Conditional fetch tokens, public/account `cache_scope`, product and signal wholesale-feed webhooks, and repair-by-read semantics for storefronts, registries, and federated marketplaces. +- **Creative formats.** Canonical `format_kind` declarations, publisher format catalogs, `v1_format_ref` dual-emission, hosted audio/video `duration_ms_exact` plus one-sided `duration_ms_range`, published-post references, and video placement semantics. +- **Creative generation.** `list_transformers`, account-scoped transformer selection, strict typed `config`, catalog and variant fan-out, advisory evaluator ranking over `creative-feature-result[]`, spend controls, content macros, free-text params, and per-output pricing receipts. +- **Media-buy operations.** Dependency impairments, buyer-visible `webhook_activity[]`, action discovery, proposal-lifecycle cleanup, currency-scoped product discovery, sponsored/social placement fields, and SI availability status. +- **Measurement and billing.** Vendor-attested `vendor_metric` goals, reach-window semantics, `viewability.viewed_seconds`, windowed delivery recovery, finality flags on delivery and usage, and out-of-band creative billing declarations. +- **Runtime hardening.** Request idempotency on every task, `IDEMPOTENCY_IN_FLIGHT`, open error-code decoding with recovery classification, auth error split, credential-in-payload rejection, webhook operation-id echo, and flat MCP envelope tolerance. +- **SDK and compliance readiness.** Named schemas for code generators, async-response refs, intentionally open payload markers, capability-gated storyboard coverage, packaged compliance bundle closure, and drift checks for release artifacts. + +## Why upgrade + +3.1 is the production-hardening release. 3.0 shipped the protocol surface — discovery, buy lifecycle, signals, creative library, brand identity. 3.1 closes the operational gaps that surfaced when real agents started running buys against real publishers: + +- **You can debug your webhooks now.** Buyer agents inspect their own recent delivery fires via `webhook_activity[]` on `get_media_buys` — HTTP status, fire time, idempotency_key — instead of guessing why their gateway returned 5xx. +- **You can see why a buy is impaired.** When a creative gets pulled, an audience is suspended, a catalog item is withdrawn, or an event source goes quiet, the buy's `health` flips to `impaired` and `impairments[]` lists every offline dependency with its package_ids and remediation hint. Both as a snapshot on `get_media_buys` and as a push fire via `notification-type: impairment`. +- **You can mirror wholesale product feed and wholesale signals feed without burning bandwidth.** Conditional-fetch tokens (`if_wholesale_feed_version` — ETag-style), wholesale enumeration on signals (symmetric with products), and account-level wholesale feed webhooks let storefronts, federated marketplaces, and registries hold an up-to-date local replica of every connected agent's buyable products and signals without re-fetching unchanged feed payloads on every poll. Two-layer cache model (`cache_scope: "public" | "account"`) means most accounts dedupe into a single shared cache. +- **You can compose seller-offered signals on media products.** Products can declare `included_signals` for bundled/planned signal metadata, `signal_targeting_allowed` for package-level signal selection, optional inline `signal_targeting_options` for product-specific menus and pricing, and `signal_targeting_rules` for include/exclude/grouping limits. Buyers apply selections through grouped `targeting_overlay.signal_targeting_groups`, while wholesale products can omit inline options and use `get_signals` as the selectable signal feed. +- **You can bind goals to vendor-attested measurement.** Optimization goals can now reference `(vendor, metric_id)` pairs from real measurement vendors (DV, IAS, Adelaide, TVision, Lumen, Kantar, Upwave, Scope3, etc.) — not vendor-agnostic strings the seller can interpret however they want. The measurement-vendor catalog discovery surface itself is experimental in 3.1 (`measurement.core`). +- **Brand verification responses are attestable.** `verify_brand_claim` and `verify_brand_claims` now return a required `signed_response` payload-envelope JWS so downstream partners can retain and verify the brand's answer without relying on transport-session context. +- **You can pin a release and stop fighting drift.** Release-precision `adcp_version` (`"3.1"` for the stable release) on every request; sellers advertise their full `supported_versions` set and echo what they actually served. SDK constructor pins are now a real thing. +- **Sub-brands self-publish.** A brand can publish its own canonical `brand.json` on its own domain while the corporate house declares ownership via a portfolio pointer — same reciprocal pattern as IAB's `ads.txt` / `sellers.json`. +- **Creative formats have a canonical vocabulary.** 12 canonical `format_kind` values + a publisher catalog discovery surface + a projection-ref mechanism. Creative agents also advertise buildable canonical outputs through `creative.supported_formats[]`; targetable entries SHOULD include stable `capability_id` values for `build_creative` routing. +- **Hosted audio/video durations use one range vocabulary.** `duration_ms_range` now covers bounded and one-sided ranges (`[null, 60000]` for "up to 60s", `[15000, null]` for "at least 15s"); fixed slots should use `duration_ms_exact`. No separate min/max duration fields were added. +- **You can discover and select creative transformers.** A new `list_transformers` task surfaces the account-scoped, agent-offered build units — voices, models, styles — the creative analog of media-buy products, with an `expand_params` mode that returns the enumerable option values (e.g. your configured voices) on the same tool. `build_creative` selects one with `transformer_id`, configures it with a typed `config` bag (strict validation — unknown keys and out-of-range values are rejected with field-attributed errors; vendor knobs go in `ext`), and fans out across catalog items (`max_creatives`) and alternatives (`max_variants` + `variant_axis`, with `keep_mode` advisory). A new `BuildCreativeVariantSuccess` response member carries per-variant manifests, recommendation/rank, and a per-leaf pricing receipt. Pricing moves onto the transformer (`pricing_options` `per_unit`), settled via `report_usage`. +- **Video and audio inventory can declare execution semantics.** Products and placements can declare OpenRTB-aligned `video_placement_types` and `audio_distribution_types` so buyers can distinguish instream/accompanying/interstitial/standalone video and music streaming/FM-AM broadcast/podcast/catch-up/web-radio audio without changing buyer-facing channels. +- **Verification badges are version-scoped.** Public 3.1 badge issuance can run alongside active 3.0 badges; buyers pinned to a release read the matching badge version. +- **Action discovery and proposals are mechanical.** Products advertise `allowed_actions[]`; media buys carry `available_actions[]`; proposals use `proposal_status` to say whether finalize is still required before `create_media_buy(proposal_id)`. +- **Billing has finality.** Row-level `is_final` + `finalized_at` on delivery; matching `final` + `finalized_at` + `measurement_window` on `report_usage`. Buyers know when the number stops moving and can reconcile invoices. + +Plus a long tail of error-code clarity, auth tightening, idempotency rules, TMP IdentityMatch upgrades, and `adagents.json` scaling work — see the headline list below. + +## At a glance + +| Area | 3.0 | 3.1 | +|---|---|---| +| **`brand.json`** | Inline `brands[]` under a single house document | Distributed: brands self-publish on their own domains; houses declare ownership via `brand_refs[]`; mutual-assertion trust; typed `trademarks[]` | +| **Brand verification** | brand.json discovery only | `verify_brand_claim` / `verify_brand_claims` — federated authoritative verification with required `signed_response` payload-envelope JWS evidence | +| **Dependency impact** | No protocol surface for "a resource the buy depends on went offline" | `media_buy.health` + `impairments[]` snapshot; `notification-type: impairment` webhooks; `propagation_surfaces` capability; `impairment.coherence` compliance invariant | +| **Webhook foundation** | Specced per-feature | One persistent-channel contract: snapshot/log duality, `notification_id` typed at envelope, per-account + per-resource subscription model | +| **Webhook observability** | No buyer-side delivery visibility | `webhook_activity[]` on `get_media_buys` — buyers self-service debug their own missed fires | +| **Wholesale feed mirroring** | Re-fetch wholesale on every poll to detect changes | ETag-style `wholesale_feed_version` / `if_wholesale_feed_version` conditional fetch on `get_products` / `get_signals`; `cache_scope` (public/account) on every response for two-layer cache layering | +| **Wholesale signals** | `get_signals` required `signal_spec` or deprecated `signal_ids` — no protocol-conformant way to enumerate the full priced signals feed | `discovery_mode: "wholesale"` symmetric with `get_products buying_mode: "wholesale"`; paginated full wholesale signals feed enumeration with `signal_ref` identity and `pricing_options[]` populated | +| **Signal identity** | `SignalId` / `signal_id.source` (`catalog` or `agent`) was the primary signal identity shape | `SignalRef` / `signal_ref.scope` is canonical: `data_provider` for provider-published adagents.json signals, `signal_source` for source-native signals, and `product` for product-local media-buy options. Legacy `signal_id` remains accepted during the migration window | +| **Product signal metadata** | `data_provider_signals` mixed legacy bundled metadata with no selectable package-level signal surface | `data_provider_signals` is deprecated. Use `included_signals` for non-selectable bundled/planned signals and `signal_targeting_options` for selectable product-scoped signal options with pricing, activation handles, defaults, and grouping hints | +| **Package signal targeting** | No grouped buy-time surface for seller-offered named signals; storefronts overloaded audience fields or brief text | `targeting_overlay.signal_targeting_groups`: top-level `operator: "all"` with child `any` include groups and `none` exclusion groups. Product `signal_targeting_rules` declares selection mode, direct vs seller-planned resolution, and group limits | +| **Wholesale feed webhooks** | None | Account-level webhooks registered via `sync_accounts.accounts[].notification_configs[]` carry `product.*` / `signal.*` / `wholesale_feed.bulk_change` change payloads with `applies_to.scope`; standard webhook signing and SSRF guards apply | +| **Creative formats** | Format-by-name with per-publisher variants | 12 canonical `format_kind` values + publisher catalog discovery (`adagents.json formats[]`) + `v1_format_ref` for dual emission + size flexibility (fixed / multi-size / responsive); creative agents advertise buildable outputs in `creative.supported_formats[]` and SHOULD include `capability_id` on targetable entries | +| **Hosted audio/video duration constraints** | Fixed durations or closed ranges only | `duration_ms_exact` for fixed slots; `duration_ms_range` for bounded and one-sided ranges such as `[null, 60000]` or `[15000, null]`; `[null, null]` is invalid | +| **Creative transformers** | `build_creative` built to a target format; render knobs implicit; format-attached `Format.input_format_ids` / `output_format_ids` / `pricing_options` | `list_transformers` discovers account-scoped build units (voices/models/styles) with an `expand_params` option-enumeration mode; `build_creative` selects one via `transformer_id`, takes a strictly-validated typed `config`, and fans out with `max_creatives` (per-catalog-item) + `max_variants`/`variant_axis` + advisory `keep_mode`; new `BuildCreativeVariantSuccess` member returns per-variant manifests, recommendation/`rank`, and per-leaf pricing receipts; rate lives on `transformer.pricing_options` (`per_unit`), settled via `report_usage`. The shipped `BuildCreativeSuccess` / `BuildCreativeMultiSuccess` are unchanged | +| **Version negotiation** | Integer `adcp_major_version` per request | Release-precision `adcp_version` (e.g. `"3.1"` for the stable release) + `adcp.supported_versions` advertisement + envelope echo. Integer field remains as backwards-compatible legacy | +| **Optimization goals** | `event` + `metric` kinds, vendor-agnostic | New `vendor_metric` kind — bind goals to vendor-attested metrics; `vendor_metric_optimization` per-product capability; three-precondition rejection rule | +| **Capability declarations** | Per-protocol basics | New: `media_buy.buying_modes` for wholesale products, `signals.discovery_modes` for wholesale signals, `wholesale_feed_versioning`, `wholesale_feed_webhooks`, `supported_optimization_metrics`, `supported_target_kinds`, `media_buy.frequency_capping`, `media_buy.propagation_surfaces`, `creative.bills_through_adcp`, `capabilities.idempotency.in_flight_max_seconds` | +| **Video and audio execution discovery** | Video and audio products relied on free-text descriptions, placement names, or overloaded channels | `video_placement_types` and `audio_distribution_types` on products, placements, and `get_products.filters` using AdCP-native names for OpenRTB `video.plcmt` and `audio.feed` values | +| **Currency-scoped discovery** | Buyers could filter budget currency but not the currencies they can transact in for media product pricing | `pricing_currencies` on `get_products.filters`; sellers match product-level `pricing_options`, prune returned product pricing options to requested currencies, and exclude products whose mandatory product-scoped signal charges are not satisfiable in those currencies | +| **Delivery reporting** | `reach` without window semantics; viewability is rate only | `reach_window` (cumulative / period / rolling); `viewability.viewed_seconds`; windowed pull recovery via `time_granularity` + `include_window_breakdown` | +| **Billing surface** | Authority via `billing_measurement`; no finality marker | Row-level `is_final` + `finalized_at` on delivery; `final` + `finalized_at` + `measurement_window` on `report_usage`; `creative.bills_through_adcp` capability + `BILLING_OUT_OF_BAND` error | +| **Action discovery** | No structured action vocabulary on buys/products | `allowed_actions[]` on Product (advisory template); `available_actions[]` on `get_media_buys` / `create_media_buy` / `update_media_buy`; proposal executability comes from `proposal_status`, not action-mode hacks | +| **Auth + security** | Single `AUTH_REQUIRED` error; no transport-channel rule | `AUTH_REQUIRED` split into `AUTH_MISSING` (correctable) + `AUTH_INVALID` (terminal); `CREDENTIAL_IN_ARGS` rejects credentials in request payload; request-signing `protocol_methods_*` namespace | +| **Idempotency** | Per-call replay only | Rule 9 (concurrent retries) + Rule 10 (downstream reconciliation); `IDEMPOTENCY_IN_FLIGHT` error code; `capabilities.idempotency.in_flight_max_seconds` | +| **Async envelope** | Two-shape submitted envelope for create-style tasks | Three-shape envelope extended to `sync_audiences` | +| **TMP IdentityMatch** | Basic request/response | `serve_window_sec` frequency-cap data flow; `seller_agent_url` required on request; optional `package_ids` | +| **`adagents.json`** | Authoritative-only discovery | Managed-network scale (20 MB cap + `publisher_domains[]` compact form); ads.txt `managerdomain` fallback; tightened `revoked_publisher_domains[]` semantics | +| **Schema housekeeping** | — | Named reusable schemas for SDK generators; `x-adcp-hoist` opt-in marker; `x-adcp-open-payload` marker for intentionally open JSON payload fields; open-string compliance scenarios; `allowed_values` on text-asset-requirements; `vast_tracker` + `daast_tracker` asset types; optional `currency`/`total_budget` on create/update responses | +| **Compliance suite** | Per-tool scenarios | Capability-gated scenarios for `frequency_cap_enforcement`, `per_creative_attribution`, `metric_mode`, ROAS, `audience_buy_flow`, `event_dedup_flow`, `performance_buy_flow`, and `product_signal_targeting`; storyboard `requires` runtime gate; `comply_test_controller` sandbox gate; version-scoped badge evidence; packaged-reference validation for public compliance bundles | + +### Capability-slot migration note + +When using SDK helpers such as `definePlatform`, keep unsupported capability slots absent from `get_adcp_capabilities`. A missing slot is an honest scope boundary: storyboards and local test vectors targeting that slot should grade `not_applicable`, not failed. + +Current workaround: prerelease/custom runners should add explicit skip gates for vectors outside the declared slot scope. The runner-side follow-up is tracked in `adcp-client#2244`. + +## Headline features + +### Distributed `brand.json` — sub-brands self-publish + +A brand can now publish its **own** canonical `brand.json` on its own domain while the corporate house declares ownership via a portfolio pointer (`brand_refs[]`). The hierarchy stays one level deep — only houses declare ownership. Trust resolves via mutual assertion: both sides reciprocate. Identity attributes (logos, colors, tone, tagline) trust on the leaf's TLS alone; relationship trust (governance propagation, billable inclusion) gates on the reciprocal entry. + +Same shape as IAB's `ads.txt` / `sellers.json` / `app-ads.txt` reciprocal-publication pattern, applied to brand identity. Plus: typed `trademarks[]` with optional `status`, `license_type`, `licensor_domain`, `countries`, `nice_classes` (cross-industry disambiguation). Compliance fields resolve strictest-of (brand-level can tighten, never weaken) while identity fields stay brand-wins. + +→ Normative spec: [`brand.json` § Distributed publishing](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json#distributed-publishing) · PR [#4505](https://github.com/adcontextprotocol/adcp/pull/4505) + +### `verify_brand_claim` / `verify_brand_claims` — federated brand verification + +Two new brand-protocol tasks let partners ask a brand authoritatively whether a claim belongs to it: a brand agent published at the brand's own domain, queried by anyone who needs to verify trademark ownership, ad-creative claims, or asset rights. Federated by design — every brand agent answers for its own brand only. Reframes the email-based self-healing SHOULD from #4505 as a richer pull-based DRM-for-brand-identity surface. + +RC4 locks the trust envelope: successful `verify_brand_claim` and `verify_brand_claims` responses require `signed_response`, a payload-envelope JWS over the canonical task-body response. The signature binds the answer to the designated task, resolved brand tenant, responding agent URL, caller/request hash, and `iat`/`exp` freshness window. Verifiers resolve the key with `adcp_use: "response-signing"` and reject any mismatch between the unsigned response fields and `signed_response.payload.response`. + +→ Spec: [Brand Protocol § verify_brand_claim](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) · [Security § Designated-task response signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#designated-task-response-signing) · PRs [#4540](https://github.com/adcontextprotocol/adcp/pull/4540), [#4603](https://github.com/adcontextprotocol/adcp/pull/4603), [#5192](https://github.com/adcontextprotocol/adcp/pull/5192) + +### Dependency-impact webhooks and snapshot coherence + +When a resource a media buy depends on transitions to an offline state — an audience suspended, a creative suspended/rejected post-approval, a catalog item withdrawn, an event source quiet, a property depublished — buyers see it through two parallel surfaces: + +- **Snapshot.** `media_buy.health` flips from `ok` to `impaired`; `media_buy.impairments[]` lists every offline resource with its package_ids, transition, reason_code, and remediation hint. The next `get_media_buys` read shows current truth. +- **Log.** `notification-type: impairment` webhooks fire with `notification_id = impairment_id` and the same payload shape, configured via `push_notification_config`. + +Either path is complete; buyers reconcile via the snapshot when push and pull disagree. Sellers declare which surfaces they use via `capabilities.media_buy.propagation_surfaces` (`["snapshot"]`, `["webhook"]`, `["snapshot", "webhook"]`, or `["out_of_band"]`). The `impairment.coherence` compliance invariant grades the contract end-to-end (forward, inverse, and health-iff rules; relaxes on terminal-status buys). + +→ Spec: [Media Buy Lifecycle § Health & impairments](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle#health-impairments) · [Snapshot and log contract](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log) · RFC #2853 · PRs #4588, #4601, #4677, #4685, #4690 + +### Webhook foundation + buyer-side delivery visibility + +3.1 codifies one persistent-channel contract for every push surface: snapshot is authoritative, push is at-least-once and unordered, dedupe via `idempotency_key`, correlate state via `notification_id` (now typed at the envelope level on `mcp-webhook-payload.json`), replay = re-read the snapshot. Future webhook RFCs reference the foundation instead of re-deriving it. The subscription model extends to per-account so creative-library-level events (creative state changes) fire even when no media buy directly references the creative. + +For production debugging, buyers can opt-in to `webhook_activity[]` on `get_media_buys` — recent fires for the buys they see, with HTTP status, fire time, and `idempotency_key`. No more black-box "the publisher fired but my gateway returned 5xx and I can't see it." Pure self-service: buyers debug their own integration without operator round-trips. + +→ Spec: [Snapshot and log contract](/dist/docs/3.2.0-beta.4/protocol/snapshot-and-log) · [Webhooks § Persistent channel contract](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks#persistent-channel-contract) · RFC #4582 · PRs #4601, #4701, #4730 + +### Wholesale feed mirroring — conditional fetch, wholesale signals, webhooks + +Three companion proposals let consumers (storefronts, federated marketplaces, registries, agency brand stacks) maintain a near-real-time local mirror of every connected AdCP agent's buyable wholesale product feed and wholesale signals feed without burning bandwidth on per-poll wholesale fetches. Independent and complementary — agents MAY adopt any subset; consumers fall back to wholesale polling against agents that don't. + +Terminology: this section uses **wholesale feed** for seller-side products and signals from `get_products` / `get_signals`. It is distinct from `sync_catalogs`, which uploads buyer-provided campaign input feeds to a seller account. + +- **Conditional fetch (`if_wholesale_feed_version`).** Every `get_products` / `get_signals` response returns an opaque `wholesale_feed_version` token. Pass it back on the next call and the seller MAY short-circuit with `unchanged: true` — no product or signal payload, no per-page diff. ETag/HTTP semantics. Optional companion `pricing_version` for sellers that move rate cards independently of structural metadata; `if_pricing_version` requires `if_wholesale_feed_version` (schema-enforced via `dependencies`). Backward-compatible: pre-v3.1 agents that ignore the tokens just return full payloads. + +- **Wholesale signals (`discovery_mode: "wholesale"`).** Callers can omit `signal_spec` / `signal_refs` / deprecated `signal_ids` and enumerate a signals agent's full priced signals feed, paginated. Symmetric with `get_products` `buying_mode: "wholesale"`, closing the gap that previously forced storefronts and marketplaces into hacky probe queries to mirror the signals feed. + +- **Wholesale feed webhooks.** Account-level webhooks registered through `sync_accounts.accounts[].notification_configs[]` emit `product.{created,updated,priced,removed}`, `signal.{created,updated,priced,removed}`, and `wholesale_feed.bulk_change` notifications. Each webhook carries `core/wholesale-feed-webhook.json`: the actual changed product/signal payload or bulk-change summary, the post-change `wholesale_feed_version`, and `applies_to.scope` for cache invalidation. There is no polling event task; consumers repair missed or distrusted pushes through `get_products` / `get_signals`. + +**Cache layering is the load-bearing design choice.** Every response declares `cache_scope: "public" | "account"` (schema-required — the safety property of the two-layer cache depends on it). When the request had no `account`, MUST be `"public"`. When the request had `account`, the seller declares `"public"` (this account prices off the rate card — buyer dedupes with the unauthenticated view) or `"account"` (custom overrides — buyer caches under the account key). Most accounts at most sellers price off the public layer, so a consumer holding N account caches typically dedupes into one public cache + a small number of overlays. Events carry `applies_to.scope` (with optional `account_ids[]`) so consumers invalidate the right cache layer — public events cascade to all overlays; account events touch only the named overlays. Sellers MAY downgrade an account from `"account"` back to `"public"` by returning a public-scope response on a previously-account-scoped tuple, signalling "this account no longer has overrides; drop the overlay." + +**Security posture is honest.** The advisory-payload framing makes explicit that re-verifying a feed event against `get_products` / `get_signals` defends against transport tampering only — a compromised agent operator re-confirms its own lie. Operator-compromise defense lives in the existing trust anchors that gate spend (signed `create_media_buy` response, `adagents.json` pinned signing keys for marketplace-signal provenance), with content-signing of feed events deferred to the 4.0 R-1 root-of-trust track. Treat events as cheap mirror invalidation, not as the basis for any decision that commits dollars or authority. + +Capability declarations: `wholesale_feed_versioning` (conditional fetch + `pricing_version_separate` + `cache_scope_account`), `wholesale_feed_webhooks` (webhook change payloads), `media_buy.buying_modes` and `signals.discovery_modes` (wholesale support). Agents that advertise `product.*` webhook events must also advertise wholesale `get_products`; agents that advertise `signal.*` events must also advertise wholesale `get_signals`; `wholesale_feed.bulk_change` must name only a feed family backed by one of those repair paths. JSON Schema for the webhook envelope at `core/wholesale-feed-webhook.json`, wrapping `core/wholesale-feed-event.json` (discriminated on event_type with 9 branches + `appliesTo` / `removalReason` `$defs`). + +→ Spec: [Wholesale feed webhooks](https://github.com/adcontextprotocol/adcp/blob/main/specs/wholesale-feed-webhooks.md) · [`get_products` § Wholesale feed versioning](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#wholesale-feed-versioning) · [`get_products` § Cache layering](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#cache-layering) · [`get_signals` § Wholesale signals feed](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals#wholesale-signals-feed) · PRs [#4761](https://github.com/adcontextprotocol/adcp/pull/4761) (conditional fetch), [#4762](https://github.com/adcontextprotocol/adcp/pull/4762) (wholesale signals), [#4763](https://github.com/adcontextprotocol/adcp/pull/4763) (feed webhooks), [#4767](https://github.com/adcontextprotocol/adcp/pull/4767) (cluster implementation) + +### Product-scoped signal targeting — included vs selectable signals + +3.1 adds a product-scoped signal targeting contract for seller-offered signals on media buys. This closes the gap between broad signal discovery and the actual package-level buy surface: + +- **`included_signals`** describes signals already bundled into, included in, or seller-planned into a product. These are descriptive product metadata, not buyer-selectable controls. +- **`data_provider_signals` is deprecated.** It remains for compatibility as legacy bundled metadata, but new implementations use `included_signals` for non-selectable signals and `signal_targeting_options` for selectable ones. +- **`signal_targeting_allowed`** tells buyers the product has a package-level `signal_targeting_groups` surface. The default is false. +- **`signal_targeting_options`** is the inline selectable menu when the product needs product-specific pricing, activation handles, defaults/fixed selections, grouping hints, or a brief/refine-selected subset. Wholesale products can omit this field and use `get_signals` as the selectable feed. +- **`signal_targeting_rules`** declares the product-specific composition contract: direct targeting vs seller-planned resolution, optional/required/fixed selection, min/max counts, and grouping limits. This belongs on the product because a single seller may route products through different ad servers or planning layers. + +Buyers apply selected signals with `packages[].targeting_overlay.signal_targeting_groups`. The portable baseline is intentionally simple: top-level `operator: "all"` with child `operator: "any"` groups for includes and child `operator: "none"` groups for exclusions. For binary signals, the signal expression uses `value: true`; exclusion is represented by the parent `none` group, not by `value: false`. + +Signal identity is also normalized. New payloads use `signal_ref`: + +- `scope: "data_provider"` + `data_provider_domain` + `signal_id` for signals defined in a provider's published adagents.json signals. +- `scope: "signal_source"` + `signal_source_url` + `signal_id` for source-native signals not published in upstream adagents.json signals. +- `scope: "product"` + `signal_id` for product-local options meaningful only inside the selected product/package context. + +Legacy `SignalId` / `signal_id.source` remains accepted during the minor-version migration window, including on `get_signals`, audience selectors, legacy flat signal targeting, and wholesale signal events, but `SignalRef` is the canonical shape for new clients. Legacy flat `targeting_overlay.signal_targeting` remains schema-valid but deprecated; new package-level composition uses `signal_targeting_groups`. + +→ Spec: [Product discovery § Signal targeting](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#signal-targeting) · [Targeting § signal_targeting_groups](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting#signal_targeting_groups) · [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) · PR [#5009](https://github.com/adcontextprotocol/adcp/pull/5009) + +### Canonical creative formats — live, 12 canonicals, backwards-compatible + +- **Published-post reference creatives.** Existing social/publisher posts are represented as canonical `video_hosted`, `image`, or `native_in_feed` formats with `asset_source: "publisher_owned_reference"` and a `published_post` slot. Products can declare `required_connections[]` for downstream platform grants such as advertiser account and publisher identity connections. Missing or expired grants use `AUTHORIZATION_REQUIRED` with `error.details.missing_connections[]`; recoverable dependency loss moves creatives to `suspended` rather than policy rejection. Catalog-driven retail media remains `sponsored_placement` with `source_catalog`. + +Live in 3.1, additive over 3.0. Products carry `format_options[]`: a list of `ProductFormatDeclaration` entries with a `format_kind` discriminator from the canonical enum. **12 canonicals:** `image`, `html5`, `display_tag`, `video_hosted`, `video_vast`, `audio_hosted`, `audio_daast`, `image_carousel`, `native_in_feed`, `responsive_creative`, `sponsored_placement`, `agent_placement`. The enum also includes `custom` as the escape hatch for adopter-defined shapes that do not fit the canonicals. Three canonicals (`sponsored_placement`, `responsive_creative`, `agent_placement`) plus `custom` are tagged **experimental** within the framework; the remaining canonicals are non-experimental. The promotion queue for new canonicals is tracked in [#3666](https://github.com/adcontextprotocol/adcp/issues/3666). + +**Backwards compatibility.** The `format_ids` path remains supported in 3.1, is deprecated beginning in AdCP 3.2, and is removed in AdCP 4.0. `ProductFormatDeclaration` carries an optional `v1_format_ref: [{agent_url, id}]` array so canonical declarations link to one or more named formats — sellers can dual-emit during the 3.x migration window. SDKs treat the enum as **open at parse time**: unknown future canonicals don't fail validation; SDKs may surface a local routing status such as `declared_only`, but that status is not a 3.1 wire field. + +**Publisher catalogs.** `list_creative_formats(publisher_domain="…")` returns the publisher's authoritative format list by reading `<publisher_domain>/.well-known/adagents.json formats[]`, falling back to the AAO community mirror, then to agent-derived. Response carries `source: "publisher" | "aao_mirror" | "agent_derived"` so buyers know which tier produced the list. + +**Size flexibility.** Display canonicals declare size in three modes: fixed (`width`+`height`), multi-size (`sizes: [{w,h}]` — mirrors OpenRTB `banner.format[]`), or responsive (`min_width`/`max_width`/`min_height`/`max_height`). Mutually exclusive. + +**Hosted audio/video duration ranges.** `audio_hosted` and `video_hosted` use `duration_ms_exact` for fixed-duration slots and `duration_ms_range` for bounded or one-sided ranges. Either endpoint of `duration_ms_range` MAY be `null`: `[null, 60000]` means "up to 60 seconds" and `[15000, null]` means "at least 15 seconds". `[null, null]` is invalid, and `duration_ms_exact` takes precedence if both duration fields are present. + +→ Spec: [Canonical formats](/dist/docs/3.2.0-beta.4/creative/canonical-formats) · PRs [#3307](https://github.com/adcontextprotocol/adcp/pull/3307), [#4770](https://github.com/adcontextprotocol/adcp/pull/4770), [#5323](https://github.com/adcontextprotocol/adcp/pull/5323) + +### Creative transformers — discover build capability, select, fan out, variant + +3.1 introduces **transformers**: the creative analog of media-buy products. A transformer is an agent-offered, account-scoped, selectable unit of build capability — a voice, a model, a style, a director — with a typed configuration surface and per-account pricing. The set is account-specific and dynamic (your configured voices aren't a global enum), so discovery flows agent → buyer the same way `get_products` surfaces account-scoped inventory. + +- **`list_transformers`** is the new discovery surface. It returns the transformers a creative agent offers for your account, each with `input_format_ids` / `output_format_ids`, a typed param schema, and (with `include_pricing`) a `per_unit` rate card. Its `expand_params` mode returns the account-scoped enumerable option values for a param — your actual configured voices, for example — on the same tool, instead of forcing you to hold a stale local list. Offered only by agents that set `creative.supports_transformers: true` in `get_adcp_capabilities`. + +- **`build_creative` selects and configures a transformer.** Pass `transformer_id` to pick one — the target format(s) MUST be a subset of its `output_format_ids` — and a typed `config` bag keyed to the transformer's params. Validation is strict: the agent MUST reject unknown keys and out-of-range values with field-attributed errors; vendor-specific knobs go in `ext`. + +- **Two fan-out axes.** `max_creatives` is the item/catalog axis: N distinct creatives, one per catalog item ("5 of 150" sampling) — distinct from `item_limit`, which caps the items used *within* one creative. `max_variants` (default 1) produces alternatives per creative along a `variant_axis` (`voice` | `theme` | `best_of_n` | `transformer_config` | `custom`, with optional `values[]` and `label`). `keep_mode` (`keep_all` | `keep_one` | `keep_some`) is advisory. Resolutions and quality levels are the **format** axis (`target_format_ids`), not variants. + +- **New `BuildCreativeVariantSuccess` response member** (`oneOf` member 3 of 6) carries `creatives[]`, each `{ build_creative_id, catalog_item_ref?, variants[] }`; each variant is `{ build_variant_id, creative_manifest, variant_axis_value?, recommended, rank?, ... }` with a per-leaf pricing receipt (`pricing_option_id` + `vendor_cost` + `currency` + `consumption`). When the build reports cost (the aggregate `vendor_cost` is present), every produced leaf carries its own `vendor_cost` + `currency` (schema-enforced). Top-level `items_total` / `items_returned` plus an aggregate `vendor_cost`. The shipped `BuildCreativeSuccess` / `BuildCreativeMultiSuccess` are **unchanged**. + +- **Best-of-N is variants + `keep_mode` + `recommended`/`rank`.** `build_variant_id` is its own namespace — never reuse `preview_id` (preview renders) or served `variant_id` (delivery). You **pay for all produced variants** (`per_unit` × N); keeping is a client act of trafficking the chosen `build_variant_id`(s). A kept variant lazily earns a `creative_id` (added to the library / first trafficked) which flows to `report_usage`. Per-**format** generation is atomic; per-**item** (catalog fan-out) is non-atomic. + +- **Evaluator ranking reuses creative-feature discovery.** Agents with `creative.supports_evaluator: true` use the existing `get_adcp_capabilities.governance.creative_features` catalog as the evaluator feature-discovery surface. `rank_by`, `feature_requirement`, and `variants[].eval.features[]` all refer to that same feature vocabulary; `evaluator_id` is a pre-provisioned account preset, not an ID from that catalog. `feature_agent.agent_url` selects an allowlisted external scoring path and `feature_id` disambiguates the requested feature subject to the seller's accepted-verifier entry. Sellers SHOULD echo external judge usage per leaf with fields such as `eval.calls_used` / `eval.seconds_used` when `agent_url` evaluation runs under an `eval_budget`. + +- **Pricing moves onto the transformer.** The rate lives on `transformer.pricing_options` (`per_unit`), echoed inline as a per-leaf receipt on `build_creative`, and settled via `report_usage`. `Format.pricing_options` is **deprecated** in favor of `transformer.pricing_options`. + +<Warning> +**Deprecations (3.1, removed in 4.0).** `Format.input_format_ids`, `Format.output_format_ids`, and `Format.pricing_options`, plus the `input_format_ids` / `output_format_ids` filters on `list_creative_formats`, are deprecated and all redirect to `list_transformers`. SDKs honor them through 3.1–3.x; they are removed at 4.0. Migrate format-attached input/output/pricing reads to `list_transformers`. Full migration (incl. the discovery-degradation, per-output-pricing, and best-of-N spend hazards): [Migration › Creative transformers](/dist/docs/3.2.0-beta.4/reference/migration/creative-transformers). +</Warning> + +→ Spec: [`list_transformers`](/dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers) · [`build_creative`](/dist/docs/3.2.0-beta.4/creative/task-reference/build_creative) · [`get_adcp_capabilities` § creative features / evaluator support](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) + +### Release-precision version negotiation — pin your release + +Every request and response now carries `adcp_version` (release-precision: `"3.1"` for the stable release); sellers advertise their full `supported_versions` set on `get_adcp_capabilities` and echo the release they actually served at the envelope root. SDKs pin via a constructor option (`adcpVersion: "3.1"` JS, `adcp_version="3.1"` Python, `WithAdcpVersion("3.1")` Go) and emit both the new string and the integer `adcp_major_version` mirror for compatibility with sellers that only read the legacy field. The integer remains functional through all of 3.x — additive ship, no required changes for 3.0-conformant agents. `VERSION_UNSUPPORTED` is typed with `error.data.supported_versions[]` echoed so retry doesn't require an out-of-band lookup. + +→ Spec: [Versioning § Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) · PR [#3493](https://github.com/adcontextprotocol/adcp/pull/3493) + +### Vendor-attested measurement — `vendor_metric` goals + per-product capabilities + +Optimization goals now support a third `kind: "vendor_metric"` shape — bind goals to vendor-attested metrics like attention (DV, IAS, Adelaide, TVision, Lumen), panel-based brand lift (Kantar, Upwave, Cint), emissions (Scope3, Good-Loop), and retail-media partner metrics. Closes the gap where 3.0's vendor-agnostic enum values like `attention_seconds` were meaningless without a vendor binding. + +Sellers declare per-product `vendor_metric_optimization` with `supported_metrics[]` (the `(vendor, metric_id)` pairs the bidding stack can steer toward). A three-precondition rejection rule on goal acceptance — discovery, capability, reporting coherence — ensures the goal is steerable AND reportable end-to-end. Plus seller-level `supported_optimization_metrics` and `supported_target_kinds` on `conversion_tracking` for capability-gated compliance scenarios. + +The measurement-vendor catalog that defines `measurement.metrics[]` is experimental in 3.1. Vendors implementing it must declare `measurement.core` in `experimental_features`; buyers should treat catalog discovery as a 3.x experimental surface until measurement tasks and compliance storyboards are frozen. + +→ Spec: [Optimization goals § `vendor_metric` kind](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting#vendor-metric-goals) · PRs [#4668](https://github.com/adcontextprotocol/adcp/pull/4668), [#4669](https://github.com/adcontextprotocol/adcp/pull/4669), [#4649](https://github.com/adcontextprotocol/adcp/pull/4649) + +### Delivery reporting — `reach_window`, `viewed_seconds`, windowed pulls + +Three additive surfaces close reporting gaps. **`reach_window`** declares the measurement window for `reach` and `frequency` (cumulative / period / rolling) — buyers MUST NOT sum reach across rows without it. **`viewability.viewed_seconds`** reports average in-view duration per measurable impression, the reporting-side counterpart to the `viewed_seconds` optimization goal. **Windowed pull recovery** on `get_media_buy_delivery` accepts `time_granularity` + `include_window_breakdown: true`, returning `windows[]` slices shape-aligned with `reporting_webhook` payloads at the same granularity — a buyer who missed a webhook fire reconstructs identical data by polling. Capability-scoped via `reporting_capabilities.windowed_pull_granularities`; sellers can honestly declare asymmetric webhook-vs-pull frequencies. + +→ Spec: [Delivery metrics reference](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery) · PRs [#4618](https://github.com/adcontextprotocol/adcp/pull/4618), [#4601](https://github.com/adcontextprotocol/adcp/pull/4601) + +### Billing surface — authority, finality, and out-of-band + +Two complementary changes close the billing-grade reporting story. **Authority + finality flags:** `get_media_buy_delivery` responses now carry row-level `is_final` + `finalized_at` on `media_buy_deliveries[*]` and on each `by_package[*]` — buyers know when a number stops moving and is safe for invoice reconciliation. Symmetric on `report_usage`: each usage record carries `final` (default `true`), `finalized_at`, and `measurement_window`. **`bills_through_adcp` + `BILLING_OUT_OF_BAND`:** creative agents declare via `capabilities.creative.bills_through_adcp` whether they bill on-protocol or out-of-band (flat license, SaaS, bundled enterprise — CM360 is the canonical case). Buyers pre-filter; sellers in out-of-band mode reject `report_usage` calls with the new `BILLING_OUT_OF_BAND` error rather than silently accepting. + +→ Spec: [Billing measurement](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability#billing-measurement) · [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) · PRs [#4735](https://github.com/adcontextprotocol/adcp/pull/4735), [#4561](https://github.com/adcontextprotocol/adcp/pull/4561) + +### Action discovery — `allowed_actions` and `available_actions` + +Structured action vocabulary for buy lifecycle mutations. Products advertise `allowed_actions[]` as an advisory template (which mutations the product *generally* supports, with `modes[]` and `allowed_statuses[]`). Media buys carry `available_actions[]` on `get_media_buys` / `create_media_buy` / `update_media_buy` responses — the current set of valid mutations for *this* buy in its current state. Buyers pre-flight which mutations are valid instead of issuing a call and getting `INVALID_STATE`. Finer-grained values added to `media-buy-valid-action` enum; legacy coarse values retained through 3.x for backwards compat (removed in 4.0). + +3.1 removes the pre-GA `requires_proposal` action mode. Proposal lifecycle now has one path: `proposal_status` says whether finalization is required; `finalize` is seller commitment to firm pricing/terms/hold; `create_media_buy(proposal_id)` is buyer acceptance/execution. If an `update_media_buy` request exceeds the current quoted envelope, sellers return `REQUOTE_REQUIRED` instead of modeling a proposal-required action mode. Buyers with cached prerelease action metadata containing `requires_proposal` must discard it and re-read the current product or buy action surface. 3.1 does not define an amendment-quote artifact for updates. + +→ Spec: [Media Buy Lifecycle § Action discovery](/dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle#action-discovery) · [Product discovery § Proposals](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#proposals) · PR [#4514](https://github.com/adcontextprotocol/adcp/pull/4514) + +### Auth + security tightening + +Four complementary changes: **`AUTH_REQUIRED` split** into `AUTH_MISSING` (correctable — retry with credentials) and `AUTH_INVALID` (terminal — credentials presented and rejected; rotate or escalate; do NOT auto-retry). Recovery classifications now match operator reality. **`CREDENTIAL_IN_ARGS`** new error code: sellers MUST reject requests that smuggle buyer-principal credentials into the task payload instead of the transport authentication channel — closes a prompt-injection exfiltration surface. **Request-signing `protocol_methods_*` namespace** — RFC 9421 signing scope tightened to the AdCP method surface only. **`comply_test_controller` sandbox gate** — every controller call MUST carry `account.sandbox: true` and the seller MUST verify against its persisted account record, not trust the field. Defense-in-depth boundary between sandbox and production. + +→ Spec: [Error handling § Recovery Classification](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#recovery-classification) · PRs [#3739](https://github.com/adcontextprotocol/adcp/pull/3739), [#4057](https://github.com/adcontextprotocol/adcp/pull/4057), [#4326](https://github.com/adcontextprotocol/adcp/pull/4326), [#4382](https://github.com/adcontextprotocol/adcp/pull/4382)/[#4392](https://github.com/adcontextprotocol/adcp/pull/4392) + +### Idempotency — Rules 9 + 10 + `IDEMPOTENCY_IN_FLIGHT` + +Two new rules close production-edge cases. **Rule 9 (concurrent retries):** when a buyer retries before the original call has produced a cached response, the seller MAY return `IDEMPOTENCY_IN_FLIGHT` (new error code) instead of blocking — useful when the first call invokes a slow downstream system (SSP, ad server, payment provider). Buyers MUST treat it as transient and MUST NOT mint a fresh `idempotency_key`. **Rule 10 (downstream reconciliation):** explicit guidance on how buyers reconcile when an `IDEMPOTENCY_EXPIRED` response arrives and they have evidence the original succeeded — perform a natural-key check (e.g., `get_media_buys` by `context.internal_campaign_id`) before generating a fresh key. **`capabilities.idempotency.in_flight_max_seconds`** new capability — seller declares how long an in-flight call can take so buyers tune retry pacing. + +→ Spec: [Calling an agent § Idempotency](/dist/docs/3.2.0-beta.4/protocol/calling-an-agent) · PRs [#4402](https://github.com/adcontextprotocol/adcp/pull/4402), [#4409](https://github.com/adcontextprotocol/adcp/pull/4409) + +### TMP IdentityMatch upgrades + +Three additive changes: **`serve_window_sec`** new required field on responses (1–300 seconds) — router caches the eligibility decision for this many seconds before re-querying. Replaces the prior `ttl_sec` framing with frequency-cap-data-flow-aware semantics. **`seller_agent_url`** now required on requests so the router can route the decision back to the originating seller. **`package_ids`** moved from required to optional — routers can ask "is this user eligible at all?" without enumerating packages. + +→ Spec: [TMP IdentityMatch implementation](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) · PRs [#4070](https://github.com/adcontextprotocol/adcp/pull/4070), [#3687](https://github.com/adcontextprotocol/adcp/pull/3687) + +### `adagents.json` — managed-network scale, manager-domain fallback, revocation semantics + +Three production-scale improvements. **Managed-network scale:** authoritative `adagents.json` now caps at 20 MB; managers publishing large agent networks switch to a compact `publisher_domains[]` form that lists owned domains without inlining every property. **Manager-domain fallback:** when a publisher's authoritative `adagents.json` is absent, crawlers fall back to the `managerdomain` declared in `ads.txt` — closes the discovery gap for S3 / CloudFront-hosted publishers that can't return a 404 directly. **Revocation semantics:** `revoked_publisher_domains[]` is now strictly time-bound — revocation is a published fact with a discoverable timestamp, not a silent removal. Tightens trust propagation across the managed network. + +→ Spec: [`adagents.json` reference](/dist/docs/3.2.0-beta.4/governance/property/adagents) · PRs [#4504](https://github.com/adcontextprotocol/adcp/pull/4504), [#4173](https://github.com/adcontextprotocol/adcp/pull/4173), [#4536](https://github.com/adcontextprotocol/adcp/pull/4536) + +### Compliance suite — capability-gated scenarios + +Capability-gated storyboard scenarios let sellers run *only* what they claim. New scenarios for `frequency_cap_enforcement`, `per_creative_attribution`, `metric_mode` + ROAS (using a `contains:` matcher), `audience_buy_flow`, `event_dedup_flow`, and `performance_buy_flow` (capability-gated CPA buys). Plus a new `requires` runtime gate on Storyboards that conditions execution on declared capabilities — no more all-or-nothing scenarios. The full set is enumerated on the [Compliance catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). + +**Late pre-GA compliance update:** money-moving seller specialisms now exercise baseline `sync_governance` registration before spend-committing flows: `sales-guaranteed`, `sales-non-guaranteed`, `sales-broadcast-tv`, `sales-catalog-driven`, `sales-social`, and the generative seller flow under `creative-generative`. This does not make every seller governance-aware; `governance-aware-seller` remains the opt-in claim for `check_governance` consultation and propagation. Existing pre-GA sellers claiming these specialisms must implement `sync_governance` registration and reject payloads with more than one `governance_agents` entry to remain conformant in 3.1 grading. + +**Compliance packaging closure:** packaged compliance artifacts are now self-contained. Webhook receiver envelope vectors live under the versioned compliance tree, and release validation fails when authored vector/test-kit references do not resolve inside the packaged `/compliance/{version}/` bundle or protocol tarball. Signal conformance is also split by obligation: `signal-owned` and the baseline signals protocol are discovery-only (`get_signals`), while `signal-marketplace` requires `activate_signal`. + +→ Spec: [Compliance catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) · PRs [#4312](https://github.com/adcontextprotocol/adcp/pull/4312), [#4642](https://github.com/adcontextprotocol/adcp/pull/4642), [#4664](https://github.com/adcontextprotocol/adcp/pull/4664), [#4722](https://github.com/adcontextprotocol/adcp/pull/4722), [#4727](https://github.com/adcontextprotocol/adcp/pull/4727), [#4731](https://github.com/adcontextprotocol/adcp/pull/4731), [#5187](https://github.com/adcontextprotocol/adcp/pull/5187) + +### Final-spec clarifications (WG-review batch) + +Normative tightenings landed as the spec settled through prerelease validation. Mostly low-risk — adopters who'd already inferred reasonable defaults will continue working — but worth knowing about because the 3.1 grader checks them. + +- **`PROPOSAL_NOT_FOUND` error code** (#4043). Completes the proposal-lifecycle error catalog (alongside `PROPOSAL_EXPIRED` and `PROPOSAL_NOT_COMMITTED`). Sellers MUST return it when a referenced `proposal_id` isn't recognized — wrong tenant, evicted from cache, or never finalized. Recovery: correctable. +- **Forward-compatible `error.code` decoding** (#4227). Receivers MUST treat `error.code` as an **open enum** — decode unknown codes without rejecting, classify recovery from `error.recovery`, default to `transient` when recovery is absent. Senders from 3.1 onward MUST populate `error.recovery` on every error. Unblocks additive-in-patch for error codes on future maintenance lines without breaking pinned-version receivers. +- **`get_products` keyed replay support** (#4399). Closes a longstanding gap where the spec said dedupe via idempotency_key but did not account for a nominal read tool that can create tasks or finalize proposals. Sellers MUST accept keyed calls and apply the replay contract. AdCP 3.2 follows with additive split tools whose read and mutation contracts are explicit; legacy `get_products` remains key-optional throughout 3.x. +- **MCP tool wrappers MUST tolerate envelope fields** (#4399). The protocol envelope (`status`, `context_id`, `context`, `task_id`, `timestamp`, `replayed`, `adcp_error`, `governance_context`, `idempotency_key`) on MCP requests now goes through the wrapper layer instead of being rejected as "unexpected fields." Closes a wrapper-layer bug where adopters had to omit envelope fields to call MCP successfully. +- **MCP serialization normalization** (#2911). Drops `payload.required` from the protocol-envelope schema; adds the `context` field at envelope level; clarifies the flat-sibling MCP wire shape (envelope and body fields at the root, no nested `payload:` key). Adopters who'd implemented the de-facto flat shape are unaffected. +- **Idempotency replay returns historical snapshot** (#4371). When a buyer retries a stateful create call (e.g., `create_media_buy`) within the replay window, the seller MUST return the **historical snapshot** of state-tracking fields (`status`, `confirmed_at`, etc.) — not the current state. Otherwise an at-most-once retry mutates the response from underneath the buyer. +- **`refine[]` finalize-exclusivity + multi-finalize atomicity** (#4107). `get_products` `refine[]` semantics tightened: when any entry uses `action: "finalize"`, every entry in the array MUST be proposal-scoped with `action: "finalize"`; sellers reject mixes of finalize and non-finalize refinement with `INVALID_REQUEST`. Multi-finalize across multiple proposals is allowed only when the seller can guarantee atomic commit across every named proposal. Sellers that cannot guarantee that atomicity MUST reject the multi-finalize array with `MULTI_FINALIZE_UNSUPPORTED` (preferred) or `INVALID_REQUEST`, and buyers can then sequence single-proposal finalize calls if they accept the looser commit guarantee. +- **`pending_creatives` status disambiguation** (#4196). The description now explicitly states buyer action is required — sellers awaiting creative sync MUST surface what's missing (creative count, deadline) in the response message rather than just emitting the status enum value. Clarifies adopter-facing UX without changing the wire shape. +- **`notices` advisory channel on runner-output-contract** (#4418). Storyboard runners surface non-failure advisories (e.g., "agent still advertises a deprecated specialism, but the storyboard passed") through a structured `notices[]` field on the run output. Replaces ad-hoc `skip.detail` prose carrying advisory text — unparseable for graders and dashboards. +- **Governance body-level `status` renamed** (#4897). `check_governance` response: `status` → `verdict` (enum unchanged: `approved` / `denied` / `conditions`). `report_plan_outcome` response: `status` → `outcome_state` (enum unchanged: `accepted` / `findings`). `get_plan_audit_logs` entries cascade: `entries[].status` → `entries[].verdict` for consistency. Frees the top-level `status` key for the envelope task-status under MCP flat-on-the-wire serialization (#4876, #2911). Migration: rename the property in every emitter and consumer of these three response shapes; values do not change. Governance is an experimental surface per `x-status`, so this is a sanctioned 3.1 wire-shape adjustment ahead of GA. +- **Media-buy body-level `status` collision — additive-deprecate** (#4895). `create_media_buy` and `update_media_buy` success responses gain a new top-level `media_buy_status` field. The legacy top-level `status: MediaBuyStatus` form is marked `deprecated: true` and removed in **3.2** (#4906); compliance storyboards already require the new field. Nested `status` on `get-media-buys-response`, `get-media-buy-delivery-response`, and `core/media-buy.json` are out of scope here and addressed in the **4.0** cascade (#4905). Full migration: [Migration › `media_buy_status`](/dist/docs/3.2.0-beta.4/reference/migration/media-buy-status). +- **Proposal lifecycle, signal privacy metadata, and measurement locks.** `proposal_status` is the per-proposal source of truth, `supports_proposals` is a conformance grading declaration, `finalize` is seller commitment, and `create_media_buy(proposal_id)` is buyer execution. The pre-GA `requires_proposal` action mode is removed in favor of `REQUOTE_REQUIRED` for updates outside the quoted envelope; buyers with cached prerelease action metadata containing `requires_proposal` must invalidate it and re-read the relevant product or buy surface. Signal definitions do not declare Global Privacy Control support, and projected `consent_basis` / `art9_basis` values on `get_signals` rows remain provider-declared signal-definition posture. The measurement catalog remains experimental and agents implementing it declare `measurement.core` in `experimental_features`. + +→ Full batch shipped as one commit: PR [#4796](https://github.com/adcontextprotocol/adcp/pull/4796) (`4c124545f1`). See per-issue links for the full prose. + +### Misc schema additions + +**`media_buy.frequency_capping` capability declaration** (#4670) — seller declares which frequency-cap surfaces it honors. + +**SDK generation ergonomics** (#5168) — common inline object and array item shapes now have stable core schema names so SDKs do not invent local wrapper names. `x-adcp-open-payload` marks intentionally open JSON payload fields for generators that need to preserve open maps rather than collapsing them into closed typed models. + +**Open compliance scenario strings** (#5168) — `comply_test_controller.scenario`, `list_scenarios.scenarios[]`, and `compliance_testing.scenarios[]` are `string` rather than a closed enum; SDKs SHOULD parse them as strings and MAY layer known-value helpers locally. SDKs that previously generated a literal union for these fields should widen to `string` and keep default handling for unknown scenario names. + +**`x-adcp-hoist` opt-in marker** (#4630) — canonically-shared object schemas declare themselves as hoistable into shared types. **`allowed_values` on text-asset-requirements** (#4333) — closed-set text assets (CTA, etc.) declare the allowed values so buyers can constrain generation. **`vast_tracker` + `daast_tracker` asset types** (#3051) — video and audio tracker assets. **Optional `currency` + `total_budget`** on `create_media_buy` / `update_media_buy` success responses (#4417). **Async envelope to `sync_audiences`** (#4571) — three-shape submitted envelope (Success / Error / Submitted) extended from create-style tasks. + +→ See [Release Notes § Version 3.1.0](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-1-0) for the per-PR detail. + +## Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing required to remain on 3.0 — 3.1 changes are additive and a 3.0 client keeps working. When you are ready to claim 3.1, bump your SDK pin to `"3.1"` to pick up the new fields and emit `adcp_version` for forward-compatibility with future minors. | +| A buyer running production campaigns | Bump your SDK and pass `adcpVersion: "3.1"` on construction after the seller advertises `"3.1"` in `supported_versions`. Implement `webhook_activity[]` reads when you suspect a missed fire. Read `media_buy.health` + `impairments[]` on every `get_media_buys` poll. Implement the `impairment.coherence` invariant in your reconciliation pipeline. | +| A seller running production buys | Surface `media_buy.health` + `impairments[]` whenever a referenced resource transitions offline. Declare `capabilities.media_buy.propagation_surfaces` honestly. Implement `webhook_activity[]` so buyers can debug their integration end-to-end without operator round-trips — buyer self-service is integration-friction reduction, not seller charity. Mark `is_final` on every delivery row so buyers know when to reconcile. | +| A seller claiming money-moving specialisms | Implement `sync_governance` on the account surface, register one governance agent per account using the brand/operator account reference, and reject registrations with multiple `governance_agents` entries. `check_governance` calls are still only required when also claiming `governance-aware-seller`. | +| A brand agent implementing `verify_brand_claim` or `verify_brand_claims` | Return `signed_response` on every success response. Publish a per-brand `adcp_use: "response-signing"` JWK, keep unsigned response fields byte-equivalent to `signed_response.payload.response`, and retain bulk audit evidence with the original request and result index. | +| A seller using proposals or action discovery | Route proposal execution from `proposal_status`, not `supports_proposals` or action modes. Do not emit `requires_proposal`; use `REQUOTE_REQUIRED` when an update exceeds the quoted envelope and the buyer must rediscover terms or create a separate buy. | +| A buyer with cached prerelease `action_mode: "requires_proposal"` values | Treat the cached value as unknown. Do not map it to `requires_approval`; that mode is an asynchronous human-approval gate and has no proposal artifact. If the cached value was used for proposal executability, re-read the proposal through `get_products` and branch on `Proposal.proposal_status`: `draft` means finalize first, `committed` is ready for `create_media_buy(proposal_id)`. If it came from product `allowed_actions[]` or buy `available_actions[]`, invalidate that cached action metadata and re-read the current product or buy action surface. | +| A prerelease 3.1 signals adopter that previously saw `data_subject_rights.gpc_honored` | Remove the field from signal-level rights routing. 3.1 does not declare Global Privacy Control support on signal definitions; GPC remains a serve-time publisher/bidstream concern. Use provider policy, registry disclosures, and CCPA/state-law opt-out routing such as `ccpa_opt_out_url` for implementation guidance, but do not infer GPC handling from `data_subject_rights`. | +| A sub-brand team that wants self-publish authority | Stand up `/.well-known/brand.json` at your own domain as a Brand Canonical Document. Declare `house_domain: "<parent-house>"`. Ask the parent house team to reciprocate via `brand_refs[]`. | +| A consumer maintaining a wholesale product feed and wholesale signals feed mirror (storefront, federated marketplace, registry) | Bootstrap via `get_products buying_mode: "wholesale"` and/or `get_signals discovery_mode: "wholesale"`; persist the returned `wholesale_feed_version` + `cache_scope`. On subsequent polls send `if_wholesale_feed_version` and skip the full payload when the seller responds `unchanged: true`. If the agent declares `wholesale_feed_webhooks.supported`, register change webhooks through `sync_accounts.accounts[].notification_configs[]`; apply the webhook payload to the mirror and track `applies_to.scope` to invalidate the right cache layer (public vs. account overlay). Handle `wholesale_feed.bulk_change` or missed pushes by re-reading `get_products` / `get_signals`. | +| A signals agent | Declare `signals.discovery_modes: ["brief", "wholesale"]` to expose your full priced signals feed for mirroring. Return `cache_scope` on every response (REQUIRED — schema-enforced). Pre-3.1 callers without `discovery_mode` continue to get brief-mode behavior. If you only claim `signal-owned`, `get_signals` discovery is enough; claim `signal-marketplace` only when you also implement `activate_signal`. | +| A sales / signals agent serving wholesale feed mirrors at scale | Declare `wholesale_feed_webhooks.supported: true` and support webhook registration through `sync_accounts.accounts[].notification_configs[]`, with standard account-level webhook signing, endpoint proof-of-control before activation, SSRF guards, account/caller authorization checks, and the notification-config fan-out cap. Keep `event_types[]` consistent with declared repair reads: `product.*` requires wholesale `get_products`, `signal.*` requires wholesale `get_signals`. The webhook emitter MUST include the actual changed product/signal payload or bulk-change summary and apply the same per-caller scope filter as your wholesale task at event-emission time — multi-tenant agents that can't reliably scope events per-principal MUST NOT declare the capability. | +| A measurement vendor (attention, brand lift, emissions, retail) | Publish your experimental `measurement.metrics[]` catalog at your AdCP agent and declare `experimental_features: ["measurement.core"]`. Sellers declaring `vendor_metric_optimization` per product can now bind optimization goals to your `(vendor, metric_id)` pairs. | +| A creative agent | Declare `capabilities.creative.bills_through_adcp` honestly. If you bill out of band, reject `report_usage` calls with `BILLING_OUT_OF_BAND` rather than silently accepting. | +| A creative agent offering transformers | Declare `creative.supports_transformers: true` and serve `list_transformers` (including the `expand_params` option-enumeration mode). On `build_creative`, validate the typed `config` strictly — reject unknown keys and out-of-range values with field-attributed errors, route vendor knobs through `ext`, and verify each target format is a subset of the transformer's `output_format_ids`. Return `BuildCreativeVariantSuccess` with per-leaf pricing receipts when fanning out across catalog items or variants. Move rate cards from `Format.pricing_options` to `transformer.pricing_options` and settle through `report_usage`. | +| A seller or creative agent declaring hosted audio/video formats | Use `duration_ms_exact` for fixed-duration slots and `duration_ms_range` for bounded or one-sided ranges. `[null, 60000]` means "up to 60 seconds"; `[15000, null]` means "at least 15 seconds"; `[null, null]` is invalid. Do not add separate bare min/max duration fields. | +| Maintaining SDK fixtures, compliance mirrors, or release packaging | Keep compliance vector and test-kit references inside the packaged `/compliance/{version}/` tree. Treat missing bundle-relative references as release blockers. | +| An SDK author | Pin `published_version` to the published 3.1 artifact you bundle; emit `adcp_version` (release-precision string) plus `adcp_major_version` (integer mirror); normalize semver values to release-precision before wire emission (`"3.1.0"` → `"3.1"`); surface `VERSION_UNSUPPORTED` as a typed error rather than auto-downshifting. | + +## Migration + +**Bottom line: no breaking changes; additive only; you should bump.** + +All 3.1 changes are **additive** over 3.0. New fields are optional, no required field was removed, and no shape changed in a way that breaks a 3.0-conformant client. A buyer running against a 3.1 seller without upgrading their SDK keeps working — they just won't see the new fields. A seller running 3.0 schemas against a 3.1 buyer keeps working — the buyer's new fields are silently ignored. + +But the new surfaces solve real production problems, and the longer you stay on 3.0 the more you're operating without the production-hardening 3.1 added: webhook delivery debug, dependency-impact observability, billing finality flags, action discovery, vendor-attested measurement, release-precision negotiation. **Bump as soon as your SDK is ready.** + +The one publisher-visible behavior change is on `brand.json` `trademarks[]`: free-text `status` / `countries` values now validate against typed enum / ISO 3166-1 alpha-2 — non-conforming values surface as schema errors. If your `trademarks[]` published unrestricted free text, normalize the values before claiming 3.1. + +Prerelease 3.1 adopters should also update prerelease-only integrations: brand verification success responses now require `signed_response`; proposal/action code must remove the temporary `requires_proposal` action mode and use `REQUOTE_REQUIRED` for update repricing; buyers with cached `requires_proposal` values must invalidate and re-read the relevant proposal, product, or buy surface rather than mapping them to `requires_approval`; signal definitions do not declare Global Privacy Control support; `signal-owned` conformance is discovery-only while `signal-marketplace` remains the activation claim; hosted audio/video declarations should use one-sided `duration_ms_range` rather than separate bare min/max fields; and measurement catalog discovery remains experimental behind `measurement.core`. These were prerelease cleanup items before GA, not 3.0 breaking changes. + +**Validator obligation for 3.1 SDKs.** The wholesale feed mirroring work tightens one shape within 3.1: `cache_scope` is schema-required on every `get_products` / `get_signals` response (the safety property of the two-layer cache depends on it — see [Cache layering](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products#cache-layering)). Pre-3.1 sellers correctly omit the field and remain conformant to their declared version. SDKs that validate strictly against the 3.1 schema MUST select the validator based on the server-declared `adcp_version` (the same release-precision mechanism 3.1 ships in version negotiation): for responses with `adcp_version` starting `3.0`, the 3.1 `cache_scope`-required constraint MUST be relaxed. This is a tightening within 3.1, not a 3.0 break — but SDKs that hardcode the 3.1 schema without version-pinned validation will reject correct 3.0 traffic. Version-pinned validation is the right pattern for every 3.x→3.(x+1) tightening; cache_scope is the first time it's load-bearing. + +For the per-PR detail, see [Release Notes § Version 3.1.0](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-1-0). For the version-negotiation cadence and the 3.1 → 3.2 → 4.0 timeline, see [Versioning & Governance § Migration timeline](/dist/docs/3.2.0-beta.4/reference/versioning#migration-timeline). diff --git a/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2.mdx b/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2.mdx new file mode 100644 index 0000000000..2df86e483d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2.mdx @@ -0,0 +1,157 @@ +--- +title: What's new in AdCP 3.2 +sidebarTitle: What's new in 3.2 +description: "Adopter overview of AdCP 3.2: compact media buying, targeting-aware discovery, canonical creative workflows, stronger security, portable evidence, and operational reconciliation." +"og:title": "AdCP — What's New in 3.2" +--- + +# What's new in AdCP 3.2 + +<Warning> +**3.2 is in beta.** The protocol beta.3 artifacts and +`@adcp/sdk@14.0.0-beta.4` now support the same exact checkpoint. Python and Go +3.2 packages are still pending. Later betas require a fresh SDK support +statement against their exact bundle. See the +[3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta) before testing. +</Warning> + +AdCP 3.2 makes the protocol easier to implement as a set of explicit agent +operations. It separates product listing, proposal negotiation, purchase, and +operational control; makes targeting and creative capabilities discoverable; +and strengthens the evidence and security contracts that autonomous execution +depends on. + +Existing 3.1 integrations can remain pinned to `"3.1"`. The broad 3.x +`get_products`, `create_media_buy`, and `update_media_buy` facades remain +available for compatibility. New integrations should prefer the compact 3.2 +tools after capability discovery. + +## The 3.2 feature set + +### A smaller, explicit media-buy lifecycle + +Seven task-specific tools replace overloaded modes in the compatibility +facades: + +- `list_products` lists published offers; +- `request_proposals`, `refine_proposals`, and `decline_proposals` manage + immutable proposal snapshots; +- `buy_products` purchases published offers directly; +- `accept_proposal` executes committed new-buy, amendment, or negotiated + cancellation terms; +- `control_media_buy` applies revision-checked operational controls inside the + accepted commercial envelope. + +Sellers advertise the subset they support through +`media_buy.lifecycle_tools`. Its absence tells callers to use the compatibility +facades. See [Proposal negotiation](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation) +for the end-to-end draft → refine → finalize → accept flow. + +### Targeting that survives discovery and execution + +Targeting-aware discovery separates concrete constraints from future +selectability. Buyers place known values in `targeting_overlay` and use +`required_overlay_support` when values will be chosen later. Sellers return +configured products whose price, forecast, expiry, and targeting resolution +match the request. + +The 3.2 surface includes portable demographics, country-aware subdivisions, +named places, browser families, property exclusions, audience evidence, and +exact package readback. Products can also disclose per-package cardinality for +country inclusion, country exclusion, and proximity targeting before a buyer +creates or updates a package. See [Targeting-aware product discovery](/dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery). + +### Commercial terms and controls are explicit + +3.2 adds seller-optimized shared budgets, bidding policy, atomic total-budget +updates, daily caps, creative rotation, contingent revenue-share pricing, and +structured warnings and durable indicators. Commercial changes outside an +accepted proposal flow through refinement; operational changes inside accepted +terms use `control_media_buy`. + +This split gives buyers one recovery rule: follow the accepted terms and current +revision for control; request a new immutable commercial snapshot for anything +that changes those terms. + +### Canonical creative workflows + +Canonical format declarations become the authoring and discovery path. +Creative agents advertise stable capability IDs and supported operations; +products expose accepted `format_options[]`; build and transformer calls select +those capabilities directly. + +3.2 also adds image pixel-density and rendition-set semantics, creative +localization, optional async preview, audio loudness constraints, VAST 4.3 and +validation levels, structured accessibility rejection detail, and synthetic +depiction provenance. + +`list_creative_formats` remains a compatibility task, but new discovery must +use product format options and creative capabilities. Exact plural +`format_ids` fields are deprecated for removal in 4.0. + +### Portable evidence and safer asset access + +Portable attestations allow a producer to reference signed evidence without +embedding the full assertion in every payload. Audience evidence, rights +grants, runtime signal quality, and brand-verifier authorization build on the +same reference-and-verification pattern. + +Inline cloud credentials in secured asset payloads are deprecated. Prefer +short-lived signed URLs, pre-authorized workload identity, or bounded +asset-scoped bearer tokens. See [Migrating secured asset access](/dist/docs/3.2.0-beta.4/reference/migration/asset-access). + +### Stronger request integrity + +Request signing remains optional in 3.2, but a 3.2 signing profile has one +cryptographic posture: every accepted signature on a body-bearing request +covers `content-digest`. Legacy `"either"` and `"forbidden"` profiles remain +only for explicit 3.0/3.1 compatibility endpoints. + +Request `Signature` and `Content-Digest` binary values also move from the 3.1 +unpadded Base64URL override to RFC 8941 padded standard Base64. Parser selection +comes from the trusted endpoint/profile. Webhook v1 keeps its separately routed +legacy Base64URL encoding throughout 3.x. + +3.2 also grades OAuth discovery consistency, tightens signed-response verifier +errors, and requires integer `error.retry_after` values from 3.2 producers. + +### Better convergence and accountability + +Capability-change notifications, account status notifications, snapshot/log +repair rules, demographic and spot-level delivery reporting, package metric +accountability, and relationship-scoped indicators make asynchronous agent +state easier to reconcile. + +The compliance bundle adds deterministic read-filter checks, fixture +resolution, grounded readbacks, and capability-selected runtime projections so +agents are graded against behavior they actually advertise. + +### Experimental governance and Trusted Match revisions + +The experimental campaign-governance surface gains task-scoped enforcement, +authenticated caller binding, opaque plan authorization, prepared execution, +and governance-owned outcome reconciliation. Trusted Match experimental +surfaces refine publisher authentication, router merge behavior, context +attribution, and publisher-owned creative data. + +These remain experimental. Implementers must inspect `experimental_features`, +pin an exact 3.2 release, and follow the applicable migration notice. + +## What requires adopter attention + +| If you are… | Review before advertising 3.2 | +|---|---| +| Any seller or service | Advertise `"3.2-beta.N"` only for the exact beta served, echo it on responses, and keep 3.1 traffic on its negotiated contract. | +| A buyer | Gate compact tools and optional targeting on capabilities; do not infer 3.2 support from a major-only declaration. | +| A media-buy implementer | Use `media_buy_status` on create/update success payloads; root `status` is the task-envelope state. | +| A signing implementation | Require `content-digest` coverage for every signed body on a 3.2 signing endpoint. | +| A creative implementation | Prefer canonical capability and product format discovery; retain legacy conversion only at a proven compatibility boundary. | +| An SDK maintainer | Generate from the signed beta.0 tarball, name the exact supported bundle, and feed protocol corrections into beta.1. | +| A compliance operator | Treat beta.0 as an implementation input; treat beta.1 as SDK-backed only after the exact beta.1 SDK refresh and integration evidence publish. Do not issue a 3.2 badge from beta.0. | + +## Start here + +1. Read the [3.2 beta program](/dist/docs/3.2.0-beta.4/reference/3-2-beta). +2. Follow [Migrating from 3.1 to 3.2](/dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2). +3. Choose the exact package and support level in [Choose your SDK](/dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk). +4. Use the [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-3-2-0) for the cumulative record. diff --git a/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3.mdx b/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3.mdx new file mode 100644 index 0000000000..4ba422d9de --- /dev/null +++ b/dist/docs/3.2.0-beta.4/reference/whats-new-in-v3.mdx @@ -0,0 +1,955 @@ +--- +title: AdCP 3.0 +description: "What's new in AdCP 3.0: brand identity and rights, creative workflow upgrades, governance, sponsored intelligence, collections and installments, 20 media channels, and migration guides from v2." +"og:title": "AdCP — AdCP 3.0" +--- + +AdCP 3.0 expands the protocol beyond media buying into brand identity, governance, media planning, and conversational brand experiences. + +<Warning> +**v2 is unsupported as of 3.0 GA and fully deprecated on August 1, 2026 (UTC).** See the [v2 sunset page](/dist/docs/3.2.0-beta.4/reference/v2-sunset) for the timeline and AAO registry policy. +</Warning> + +## At a glance + +| Area | v2.x | v3.x | +|------|------|------| +| **Protocol scope** | Media Buy, Signals, Creative | Adds Brand Protocol, Governance, Sponsored Intelligence (experimental) | +| **Brand identity** | No standard mechanism | `brand.json` + community brand registry | +| **Governance** | No brand suitability protocol | Property lists, content standards, campaign governance, policy registry, and brand calibration | +| **Sponsored Intelligence** (experimental) | No conversational brand protocol | Consent-first brand sessions in AI assistants | +| **Accounts Protocol** | No formal account model | Named protocol layer: `sync_accounts`, `list_accounts`, `report_usage`, brand registry-grounded identity | +| **Catalogs** | `promoted_offerings` creative asset | First-class `sync_catalogs` task with 13 catalog types | +| **Media planning** | Products only | Proposals with budget allocations + delivery forecasts | +| **Brand rights** | No licensing protocol | `get_rights`, `acquire_rights`, `update_rights` with HMAC-authenticated webhooks — shipping [experimental](/dist/docs/3.2.0-beta.4/reference/experimental-status) in 3.0 | +| **Visual guidelines** | No structured brand visuals | `visual_guidelines` on `brand.json` for generative creative systems | +| **Creative workflows** | Basic build / preview / sync separation | Inline preview, multi-format `build_creative`, library retrieval, quality tiers, and catalog `item_limit` | +| **Creative libraries** | Media Buy-centric creative reads/writes | `list_creatives` / `sync_creatives` as Creative Protocol operations plus `supports_generation`, `supports_transformation`, and `has_creative_library` discovery | +| **Creative governance** | No creative evaluation protocol | `get_creative_features` for security scanning, quality, content categorization | +| **Disclosure matching** | Position-only disclosure handling | Position + persistence-aware disclosure matching (`continuous`, `initial`, `flexible`) | +| **Collections and installments** | No content programming model | `shows` on products with distribution IDs, installment lifecycle, break-based inventory | +| **Planning ergonomics** | No `time_budget`, `preferred_delivery_types`, `exclusivity`, or per-package flights | `time_budget` + `incomplete`, `preferred_delivery_types`, `exclusivity`, optional `delivery_measurement`, and package-level `start_time` / `end_time` | +| **Channel model** | 9 channels | 20 planning-oriented channels (including `sponsored_intelligence`) with broadcast TV support (creative identifiers, measurement windows, spot formats) | +| **Capability discovery** | Agent card extensions | Runtime `get_adcp_capabilities` task | +| **Sandbox discovery** | Mixed capability locations | `require_operator_auth` for auth model, `account.sandbox` for sandbox support, sandbox in natural account references | +| **Creative assignment** | Simple ID arrays | Weighted assignments with placement targeting | +| **Geo targeting** | Implicit US-centric | Explicit named systems (global) | +| **Keyword targeting** | No keyword support | `keyword_targets` with match types and bid prices | +| **Optimization** | Single optimization goal | Multi-goal `optimization_goals` array with metric and event types | +| **Delivery reporting** | Aggregate delivery only | Opt-in dimension breakdowns (geo, device, audience, placement, keyword) | +| **Signal pricing** | Simple CPM | Structured pricing models: CPM, percent of media, flat fee, per-unit, and `custom` escape hatch for non-standard constructs | +| **Device targeting** | No form-factor targeting | `device_type` (desktop, mobile, tablet, ctv, dooh, unknown) distinct from `device_platform` (OS) | +| **Proximity targeting** | No point-based geo targeting | `geo_proximity` with travel time, radius, and GeoJSON methods | +| **Refinement** | Free-text with `proposal_id` | Typed change-request array with seller acknowledgment | +| **Error handling** | Unstructured errors | `recovery` field (transient, correctable, terminal) + 18 standard error codes | +| **AI provenance** | No provenance model | `provenance` object with IPTC source types, C2PA references, regulatory disclosures | +| **Creative compliance** | No compliance on briefs | `required_disclosures`, `prohibited_claims`, disclosure positions | +| **Agent ergonomics** | Full payloads on every call | `fields` projection, opt-in breakdowns, pre-flight capability filtering | +| **Signal lifecycle** | Activate only | `activate` / `deactivate` action on `activate_signal` | + +--- + +## New capabilities + +### Trust surface: idempotency, request signing, and signed governance + +3.0 makes agent-to-agent transactions safe for real money by turning three operational disciplines into first-class protocol primitives. + +**`idempotency_key` is required on every mutating request.** Buyers generate a fresh key per logical operation — the schema requires `^[A-Za-z0-9_.:-]{16,255}$`; AdCP Verified additionally requires a cryptographically-random UUID v4. Sellers declare dedup semantics on `get_adcp_capabilities` as either `adcp.idempotency = { supported: true, replay_ttl_seconds: <1h–7d, 24h recommended> }` or `{ supported: false }`. When `supported: true`, replay is safe: the seller returns `replayed: true` on exact replay, `IDEMPOTENCY_CONFLICT` when the same key accompanies a different payload, and `IDEMPOTENCY_EXPIRED` after the TTL. **When `supported: false`, sending an `idempotency_key` is a no-op — naive retries double-process**, and buyers MUST use natural-key checks (e.g., `get_media_buys` plus request context such as `context.internal_campaign_id` or package context such as `context.buyer_ref`) before retrying spend-committing operations. Clients MUST NOT assume a default; a seller missing this block is non-compliant. Since `supported: true` is a trust-bearing claim, conformance runners probe it with a deliberate payload-mutation replay — sellers claiming support MUST pass this probe before the declaration is considered verified. + +**RFC 9421 HTTP Message Signatures are optional in 3.0 and mandatory under AdCP Verified.** Agents sign mutating requests with Ed25519 over a canonicalized covered-component list (method, target URI, `content-digest`, protocol-level fields). The spec pins sf-binary encoding and URL canonicalization so independent implementations produce bit-identical canonical inputs. A 15-step verification checklist defines the seller's path: `alg` allowlist, `keyid` cap-before-crypto (defense against unbounded verification), JWKS resolution via SSRF-validated fetch, `jti` replay dedup, audience binding. Published test vectors at `static/compliance/source/test-vectors/request-signing/` let implementers validate correctness offline. + +**Webhooks are signed under the same RFC 9421 profile — baseline-required for sellers.** Webhook authentication unifies on the AdCP 9421 profile as a symmetric variant of request signing: the seller signs outbound webhook requests with a key published in its JWKS at `jwks_uri` (discoverable via `brand.json` `agents[]`). New signers use `adcp_use: "request-signing"` for webhook delivery; deprecated `adcp_use: "webhook-signing"` keys remain accepted during the compatibility window. Operators that want webhook-only key material publish a distinct `request-signing` `kid`. No shared secret crosses the wire. The buyer verifies the signature using the seller's JWKS. A 14-step webhook verifier checklist — documented in the [Security guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) — covers trust-anchor scoping, downgrade-and-injection resistance, and per-keyid replay dedup (100K per keyid, 10M aggregate); verification failures return typed reason codes defined there. HMAC-SHA256 remains a legacy fallback through 3.x (opt-in via `push_notification_config.authentication.credentials`); the entire `authentication` object is removed in 4.0. + +**Every webhook payload carries a required `idempotency_key`.** Webhooks use at-least-once delivery, so receivers must dedupe. Every webhook payload — MCP, collection-list changes, property-list changes, content-standards artifacts, rights revocations — carries a sender-generated, cryptographically-random UUID v4 `idempotency_key` stable across retries of the same event. Same name and format as the request-side field. Predictable keys allow pre-seeding a receiver's dedup cache to suppress legitimate events, so sellers MUST generate keys from a cryptographic source. + +**`governance_context` is a signed JWS.** When a governance agent approves a plan it returns a JWS — not an opaque string — signed with the governance agent's key. The buyer echoes it 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 without a round-trip. Stale or forged decisions are rejected at the transport layer. When a governance agent is configured on the plan, sellers MUST invoke `check_governance` before committing budget and MUST reject a spend-commit lacking a valid `governance_context` with `PERMISSION_DENIED`. + +**The compliance runner validates all of this.** Every agent runs `/compliance/{version}/universal/security.yaml` regardless of which protocols or specialisms it claims — covering unauthenticated rejection, API key enforcement, OAuth discovery per RFC 9728, and audience binding. Agents that declare signing run the `signed_requests` and `signed_webhooks` harnesses: positive flows, tampering (header injection, body mutation, timestamp skew), replay (`jti` reuse), and the `keyid`-cap-before-crypto path. Runner output is a structured, verifiable `runner-output.json` artifact with a hash chain over the test-kit corpus so tampering is detectable. + +**Cross-instance state persistence is now a spec requirement.** Agent state — tasks, media buys, plans, signed artifacts, idempotency keys — MUST be persistent across horizontally-scaled instances. In-memory-only state is non-compliant for production. + +See the [Security implementation guide](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) for the full threat model, principal roles (brand / operator / agent), and step-by-step verification paths. + +<Card title="Security implementation" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/building/by-layer/L1/security"> + Threat model, signing profile, verification paths, and the universal security storyboard. +</Card> + +--- + +### Specialisms and storyboard-driven compliance + +Storyboards — scripted compliance scenarios that agents must pass — now live in the protocol at `/compliance/{version}/`, alongside schemas and task definitions. Agents declare two things in `get_adcp_capabilities`: + +- **`supported_protocols`** — broad domain claims (`media_buy`, `creative`, `signals`, `governance`, `brand`, `sponsored_intelligence`). Each commits the agent to the domain's baseline storyboard. +- **`specialisms`** — 19 narrow capability claims across the 6 domains. Examples: `sales-guaranteed`, `sales-broadcast-tv`, `creative-generative`, `property-lists`, `signal-marketplace`, `brand-rights`. Each rolls up to one parent protocol. + +Compliance runs have three tiers: **universal** storyboards every agent runs (capability discovery, schema validation, error compliance), **domain baselines** for each declared protocol, and **specialism storyboards** for each narrow claim. A per-version protocol tarball at `/protocol/{version}.tgz` lets clients bulk-sync schemas, storyboards, and examples in one request. + +<Note> +**AdCP Verified is self-attested in 3.0.** Agents run the storyboard suite and publish a signed `runner-output.json` with a hash chain over the test-kit corpus. AAO does not audit the output or gate issuance — the Verified stamp means "this agent published passing runner output," not "an auditor confirmed the claim." Verifying parties (buyers, integrators, regulators) can re-run any claim against the referenced storyboards and compare output hashes. + +The compliance runner and the storyboards are themselves software shipping at 3.0 — they have bugs, coverage gaps, and in a few places they encode our best guess at spec intent where the working group is still refining the exact rule. When an implementer sees a storyboard failure, three things are possible: their agent has a bug, the storyboard has a bug, or the spec is ambiguous. All three are legitimate issues to file. + +**Why self-attested and not audited at 3.0:** the reference implementations AAO operates — the training agent and the `@adcp/sdk` / Python / Go SDKs — aren't fully clean against the 3.0 storyboard suite yet. The training agent currently passes 32 of 55 applicable storyboards; SDK coverage is similar. We are working those pass rates to 100% over the 3.0 → 3.1 window on a 4–6 week cadence. When the reference implementations pass cleanly and the remaining spec ambiguities are resolved, **the formal AdCP Verified program launches with 3.1** — agents will be able to submit runner output for independent re-execution by AAO, with a public registry of verified agents. Self-attestation in 3.0 is the bridge, not the end state. +</Note> + +<Card title="Compliance Catalog" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog"> + Full index of domains and specialisms with status flags and storyboard sources. +</Card> + +--- + +### Brand Protocol + +Buy-side identity through `/.well-known/brand.json`. Just as publishers use `adagents.json` to declare properties and authorized agents, brands use `brand.json` to declare their identity, brand hierarchy, and authorized operators. + +| Sell side | Buy side | +|-----------|----------| +| Publisher | **House** (corporate entity) | +| Property | **Brand** (advertising identity) | +| `adagents.json` | **`brand.json`** | + +Four variants: **House Portfolio** (full brand hierarchy inline), **Brand Agent** (dynamic via MCP), **House Redirect** (sub-brand to house domain), and **Authoritative Location** (hosted URL). + +Given any domain, the protocol resolves to a canonical brand: + +``` +shoes.novabrands.example.com + -> fetch /.well-known/brand.json + -> { "house": "novabrands.example.com" } + -> fetch novabrands.example.com/.well-known/brand.json + -> search brands[] for property matching "shoes.novabrands.example.com" + -> Result: { house: "novabrands.example.com", brand_id: "nova_athletics" } +``` + +**Use cases:** creative generation (resolve domain to brand identity), brand verification (check `authorized_operators`), reporting roll-up (group campaigns by house). + +<Card title="Brand Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/brand-protocol"> + Full specification including brand.json variants, resolution flow, and brand identity. +</Card> + +--- + +### Brand rights lifecycle + +Three tasks for licensing and usage rights between brands and content owners: + +| Task | Purpose | +|------|---------| +| `get_rights` | Discover available rights for a brand's content | +| `acquire_rights` | Request and negotiate rights acquisition | +| `update_rights` | Modify active rights (extend, restrict, revoke) | + +Rights include generation credentials (API keys or tokens for accessing licensed content), creative approval webhooks (HMAC-SHA256 authenticated callbacks when creatives are submitted for review), and revocation notifications. The protocol distinguishes actionable rejections (fix and resubmit) from final rejections (do not retry). + +Structured `visual_guidelines` on `brand.json` complement rights by giving generative creative systems structured rules for on-brand asset production: photography style, graphic elements, composition, motion, logo placement, colorways, type scale, and restrictions. + +<Card title="Brand rights" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights"> + Task reference for rights discovery, acquisition, and management. +</Card> + +--- + +### Collections and installments + +Products can now reference persistent content programs — podcasts, TV series, YouTube channels — via `collections`, which follows the same publisher-scoped selector pattern as `publisher_properties`. Collections are declared in the publisher's `adagents.json` and products reference them by publisher domain and collection ID. Buyers resolve full collection objects from `adagents.json`. Collections include distribution identifiers for cross-seller matching, installment lifecycle states (scheduled, tentative, live, postponed, cancelled, aired, published), break-based ad inventory configuration, talent linking to `brand.json`, and international content rating systems. + +Shows support relationships (spinoff, companion, sequel, prequel, crossover) and derivative content (clips, highlights, recaps) for comprehensive content modeling. + +<Card title="Collections and installments" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments"> + Full specification including collection schemas, installment lifecycle, and break-based inventory. +</Card> + +--- + +### Registry API + +The AgenticAdvertising.org registry provides a public REST API for resolving brands and properties, discovering agents, and validating authorization. Most endpoints require no authentication. + +| Capability | Endpoint | Description | +|------------|----------|-------------| +| Brand resolution | `/api/brands/resolve` | Resolve domain to canonical brand | +| Property resolution | `/api/properties/resolve` | Resolve publisher domain to property info | +| Agent discovery | `/api/registry/agents` | List registered agents with capabilities | +| Authorization check | `/api/registry/validate/property-authorization` | Real-time authorization validation | +| Search | `/api/search` | Search across brands, publishers, and properties | +| Community brands | `/api/brands/save` | Contribute brand data (auth required) | + +The registry complements the protocol: resolve entities via the REST API, then transact via MCP/A2A tasks. + +<Card title="Registry API" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/registry"> + Complete endpoint reference with authentication and rate limits. +</Card> + +--- + +### Proposals and delivery forecasts + +Publishers can return **proposals** alongside products — structured media plans with percentage-based budget allocations that buyers can execute directly via `create_media_buy`. Proposals encode publisher expertise, replacing ad-hoc product lists with actionable buying strategies. They can be refined through session continuity — subsequent `get_products` calls within the same session carry conversation history. + +**Delivery forecasts** attach to proposals and allocations. Each forecast contains budget points with metric ranges (low/mid/high), showing how delivery scales with spend. Three forecast methods: **`estimate`** (rough approximation), **`modeled`** (predictive models), **`guaranteed`** (contractually committed). Forecasts can predict delivery metrics (impressions, reach, GRPs) and outcomes (purchases, leads, app installs). TV and radio forecasts use `demographic_system` and `demographic` for GRP-based planning. + +<Card title="Proposals and forecasting" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products#proposals"> + Complete documentation including budget curves, CTV, retail media, and broadcast audio examples. +</Card> + +--- + +### Accounts + +<Tip> +**Migrating from v2?** Accounts are entirely new in v3 — there is no v2 equivalent to migrate from. Start with [Accounts and Agents](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents) for the setup guide. +</Tip> + +Formal billing relationships between buyers and sellers via `sync_accounts`. + +**Four entities:** + +| Entity | Question | How identified | +|--------|----------|----------------| +| **Brand** | Whose products are advertised? | House domain + brand_id via `brand.json` | +| **Account** | Who gets billed? | [Account reference](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) — `account_id` from `list_accounts` or natural key | +| **Operator** | Who operates on the brand's behalf? | Domain (e.g., `acmeagency.example.com`) | +| **Agent** | What software places buys? | Authenticated session | + +**Two billing models:** `operator` (operator or brand buying direct is invoiced) and `agent` (agent consolidates billing). **Two trust models:** agent-trusted (default, agent declares brands/operators) and operator-scoped (seller requires operator-level credentials). + +**Workflow:** `get_adcp_capabilities` -> `sync_accounts` -> `get_products` with `account` -> `create_media_buy` with `account`. + +<Card title="Accounts Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/accounts/overview"> + Accounts Protocol overview: identity verification, billing models, and settlement. +</Card> + +--- + +### Catalogs + +First-class catalog lifecycle with `sync_catalogs`. Thirteen catalog types: structural (`offering`, `product`, `inventory`, `store`, `promotion`) and industry-vertical (`hotel`, `flight`, `job`, `vehicle`, `real_estate`, `education`, `destination`, `app`). Vertical types have canonical item schemas drawn from Google Ads, Meta, LinkedIn, and Microsoft feed specs. + +Formats declare what catalogs they need via `catalog_requirements`. Creatives reference synced catalogs by `catalog_id` instead of embedding items in assets. Catalogs declare `conversion_events` and `content_id_type` for attribution alignment. + +<Card title="Catalogs" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/creative/catalogs"> + Complete documentation including catalog types, sync workflow, format requirements, and conversion events. +</Card> + +--- + +### Capability discovery + +`get_adcp_capabilities` replaces both `adcp-extension.json` and the MCP agent card with runtime capability discovery. It returns supported protocols, account billing models, portfolio information, targeting systems, and governance features — all schema-validated. + +<Warning> +**Agent cards and `adcp-extension.json` are no longer needed.** Buyers discover sellers through `adagents.json` and call `get_adcp_capabilities` at runtime. If your v2 integration reads capability data from agent card extensions, switch to `get_adcp_capabilities`. +</Warning> + +<Card title="get_adcp_capabilities" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities"> + Full task reference with request/response schemas. +</Card> + +--- + +### Governance Protocol + +Brand suitability and inventory curation. Governance agents manage **property lists** (curated sets of properties for targeting or exclusion) and **content standards** (brand suitability policies with per-category block/allow rules). Buyers pass property lists to `get_products` for filtered inventory discovery, and use `calibrate_content` for collaborative alignment between brand and governance agent. Governance agents can enforce `provenance_required` on creative policy and support third-party AI content verification via the `verification` array on provenance claims. + +Campaign governance extends this with plan-level policy and budget enforcement via `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs`. Governance agents can operate in `audit`, `advisory`, or `enforce` mode, validate seller-side actions against delegated authority, and resolve standardized policies through the shared [policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry). + +**Art 22 / Annex III as schema invariants.** For regulated verticals (credit, insurance pricing, recruitment, housing), AdCP 3.0 enforces mandatory human oversight at the protocol layer, not in deployer policy PDFs. `policy_categories` intersecting `fair_housing | fair_lending | fair_employment | pharmaceutical_advertising` makes `plan.human_review_required: true` a schema requirement — buyers cannot opt out. Governance agents MUST escalate every action on such plans regardless of budget. See [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations). + +<Card title="Governance Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/governance/overview"> + Full specification including property lists, content standards, and calibration. +</Card> + +--- + +### Sponsored Intelligence Protocol + +Conversational brand experiences in AI assistants. SI defines how AI assistants invoke brand agents for rich engagement (text, voice, UI components) without breaking the conversational flow. Sessions follow a consent-first model: user expresses interest, grants consent, then the brand agent engages conversationally with optional transaction handoff. + +<Note> +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — session lifecycle, UI components, identity/consent, and capability negotiation may change between 3.x releases with at least 6 weeks' notice. Sellers implementing SI MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract and the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201) for planned changes. +</Note> + +<Card title="SI Chat Protocol" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol"> + Full specification including session lifecycle, implementing agents, and implementing hosts. +</Card> + +--- + +### Published signal definitions for data providers + +Data providers can publish signal definitions via `adagents.json` `signals[]`, following the same pattern as publishers declaring properties. + +| Publishers | Data providers | +|------------|----------------| +| Declare **properties** | Declare **signals** | +| Use `property_ids` / `property_tags` | Use `signal_ids` / `signal_tags` | +| Buyers verify via `publisher_domain` | Buyers verify via `data_provider_domain` | + +Signals now have explicit `value_type` (binary, categorical, numeric) with typed targeting, and structured `signal_id` objects that reference the data provider's published definitions. + +<Card title="Data provider guide" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/signals/data-providers"> + Complete implementation guide for publishing signal definitions. +</Card> + +--- + +## rc.1 to rc.2 highlights + +This page covers the full v2 → v3 shift. If you already adopted `3.0.0-rc.1`, these are the most important rc.2 changes to review before upgrading. + +### Creative workflow and library changes + +`build_creative` now supports inline preview (`include_preview`), multi-format output (`target_format_ids`), quality tiers, catalog-driven `item_limit`, and library retrieval using `creative_id` with optional `concept_id`, `media_buy_id`, `package_id`, and `macro_values`. `preview_creative` also adds quality control. Creative library operations are now explicitly Creative Protocol tasks: `list_creatives` and `sync_creatives` live with the rest of the creative lifecycle, and capability discovery adds `supports_generation`, `supports_transformation`, and `has_creative_library` so buyers can route requests intentionally. + +### Planning, accounts, and sandbox refinements + +`account_resolution` is removed; buyers now use `require_operator_auth` to determine the auth model and initial account-reference shape. Sandbox support moves to `account.sandbox`, and sandbox can participate in the natural account key for buyer-declared account flows. Product discovery adds `preferred_delivery_types`, `exclusivity`, and `time_budget`, with `incomplete` in responses when the seller cannot finish within the requested budget. Packages and product allocations can now carry per-package `start_time` / `end_time`, and `delivery_measurement` becomes optional on products. + +### Compliance and governance refinements + +Creative compliance now includes disclosure persistence semantics in addition to position and duration, allowing formats to declare which persistence modes they can enforce. Campaign governance also lands in rc.2 with `sync_plans`, `check_governance`, `report_plan_outcome`, and `get_plan_audit_logs`, plus `governance_context` for canonical plan extraction. `sync_governance` provides a dedicated task for syncing governance agent endpoints to accounts, replacing the previous approach of embedding `governance_agents` on `sync_accounts` and `list_accounts` requests. + +For the exhaustive rc.2 change list, see the [Release Notes](/dist/docs/3.2.0-beta.4/reference/release-notes#version-300-rc2) and [CHANGELOG.md](https://github.com/adcontextprotocol/adcp/blob/main/CHANGELOG.md#300-rc2). + +--- + +## rc.3 to 3.0 highlights + +<Info> +**Upgrading from rc.3?** See [rc.3 → 3.0 prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades) for the breaking changes table, before/after examples, and migration steps. +</Info> + +### Specialisms and compliance catalog + +Storyboards move into the protocol at `/compliance/{version}/` with a new `specialisms` field on `get_adcp_capabilities`. 21 specialisms roll up to 6 domains; four 3.1 archetypes ship with `status: preview`. See the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). Renames: `broadcast-platform` → `sales-broadcast-tv`, `social-platform` → `sales-social`. Merge: `property-governance` + `collection-governance` → `inventory-lists`. Promotion: `sponsored_intelligence` specialism → full protocol. + +### Capabilities model simplification + +The capabilities model is streamlined for 3.0: redundant boolean gates are removed. If a `content_standards` object exists in `get_adcp_capabilities`, the agent supports content standards — no separate boolean needed. + +`reporting_capabilities` is now required on every product. Geo capability fields remain typed: `geo_countries` is boolean; `geo_regions` accepts its legacy boolean or a country/value-aware object; and `geo_metros` and `geo_postal_areas` use structured objects. Region inclusion and exclusion may be declared independently. + +See the [prerelease upgrade notes](/dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades#capabilities-model-simplification) for the full list of removed fields and migration steps. + +### Governance across purchase types + +Campaign governance extends beyond media buys to cover brand rights licensing, signal activation, and creative services — any purchase where budget or policy rules apply. `governance_context` replaces `media_buy_id` as the identifier that ties governance actions together across a campaign's lifecycle. A `purchase_type` field on `check_governance` and `report_plan_outcome` distinguishes the governed activity. + +### GOVERNANCE_DENIED error and schema consistency + +`GOVERNANCE_DENIED` is added to the standard error codes with correctable recovery, enabling governance-rejected operations to return structured errors. All request/response schemas across governance, collection, property, sponsored-intelligence, and content-standards protocols gain optional `context` and `ext` fields for application metadata and protocol extensions. `signal_id` is now required on signal items in `get_signals` responses. The `comply_test_controller` schema is flattened from a oneOf union to a flat object with `scenario` discriminant. + +### Per-request version declaration + +All request schemas now include `adcp_version` (release-precision, e.g., `"3.1"`), allowing v3 buyers to declare which release their payloads conform to. Sellers validate against their advertised `adcp.supported_versions` array on `get_adcp_capabilities` and echo `adcp_version` at the envelope root on every response. Unsupported releases return `VERSION_UNSUPPORTED`. When omitted, sellers default to their highest supported version. + +3.1 also retains `adcp_major_version` (integer) as a backwards-compatible legacy field, but release-precision `adcp_version` is the primary wire field going forward. See [Version negotiation](/dist/docs/3.2.0-beta.4/reference/versioning#version-negotiation) for the negotiation contract, migration timeline, and SDK pinning examples. + +Note: both fields are v3-only — v2 clients cannot set either (the fields do not exist in v2 schemas). Multi-version sellers detect v2 payloads by structural cues (missing `buying_mode`, `fixed_rate` vs `fixed_price`, `geo_postal_codes` vs `geo_postal_areas`, etc.) rather than by these fields. + +### Collection lists + +Collection lists extend brand safety from properties to content programs. Like property lists, collection lists are curated sets — but they target shows, series, and other content programs across platforms using distribution identifiers (IMDb, Gracenote, EIDR) for cross-publisher matching. + +New targeting overlay fields `collection_list` and `collection_list_exclude` enable both inclusion and exclusion targeting. A new genre taxonomy enum normalizes genre classification across buyers and sellers. + +<Card title="Collection lists" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists"> + Task reference for collection list creation and management. +</Card> + +### Broadcast TV support + +Linear TV sellers can now fully participate in AdCP. This release adds the protocol primitives that distinguish broadcast from digital: + +- **Broadcast creative identifiers** — `industry_identifiers` on creative assets and manifests, with `creative-identifier-type` enum (`ad_id`, `isci`, `clearcast_clock`, `idcrea`). Broadcast creatives carry the traffic or clearance identifier used by the relevant workflow, which ties spots to rotation instructions and traffic systems. +- **Broadcast spot formats** — Reference formats for :15, :30, and :60 spots. Video file only — no VAST, no impression trackers, no clickthrough URLs. The absence of tracker asset slots in a format signals that third-party pixel tracking is not supported. +- **Agency Estimate Number** — `agency_estimate_number` on media buys and packages. The financial reference that links broadcast orders to agency media plans and billing. +- **Measurement windows** — `measurement_windows` on `reporting_capabilities` for Live, C3, and C7 maturation. `measurement_window` on `billing_measurement` declares which window the guarantee is reconciled against. +- **Delivery data completeness** — `is_final` and `measurement_window` on per-package delivery data. Buyers know whether numbers are provisional or closed, and which measurement window they represent. Applies to any channel with maturing data (broadcast, podcast, long-tail content). + +<Card title="Broadcast TV" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/creative/channels/broadcast"> + Channel guide covering spot formats, creative identifiers, measurement windows, and how broadcast differs from CTV. +</Card> + +### Structured measurement terms + +Guaranteed buys gain a formal negotiation surface: `measurement_terms` defines billing measurement vendor, IVT threshold, and viewability floor. Sellers declare defaults on products, buyers propose overrides at `create_media_buy`, sellers accept/reject/adjust. A `cancellation_policy` schema declares notice periods and penalties for guaranteed products. + +### Unified vendor pricing + +Pricing models extend from signals to creative, governance, and property list agents. Creative agents return `pricing_options[]` on `list_creatives` and `build_creative` responses. Property lists carry `pricing_options[]`. All vendor pricing uses a shared `vendor-pricing-option.json` schema (cpm, percent_of_media, flat_fee). + +### Offline reporting delivery + +Sellers can declare offline reporting delivery methods (SFTP, S3, GCS, Azure Blob) in `get_adcp_capabilities` via `reporting_delivery_methods`. Accounts specify a `reporting_bucket` for file delivery. Products declare `supports_offline_delivery` in `reporting_capabilities`. File formats include CSV, JSON, Parquet, Avro, and ORC. + +### Trusted Match Protocol extensions + +TMP gains a provider registration schema (`provider-registration.json`) formalizing provider endpoints, capabilities, lifecycle status (active/inactive/draining), and per-provider timeout budgets. A `GET /health` endpoint enables router-side health monitoring. TMPX adds exposure tracking with country-partitioned identity resolution and macro connectivity. + +Identity Match requests now accept an `identities` array (1-3 tokens per request) instead of a single `user_token` + `uid_type` pair. Publishers send every identity token they have; buyers resolve on whichever graph matches. The router filters `identities` per provider (minimum-necessary-data) and re-signs before forwarding — the forwarded set must be a subset of what the publisher sent. RFC 8785 JCS canonicalization is used for both signature and cache-key derivation, and `consent_hash` partitions the cache by consent state. `rampid_derived` is added to the `uid-type` enum. + +TMP remains pre-release in 3.0. The stable surface is targeted for 3.1.0. + +### Brand schema extensions + +`brand.json` gains a generic `agents` array for declaring brand-associated agents, visual tokens (`border_radius`, `elevation`, `spacing`, extended color roles), and structured font definitions with `weight`, `style`, `stretch`, `optical_size`, and `usage` fields. + +### Required tasks reference + +A new [Required tasks by protocol](/dist/docs/3.2.0-beta.4/protocol/required-tasks) reference page consolidates required, conditional, and optional tasks across all AdCP protocols by agent role — a single page to verify your implementation covers the minimum surface. + +### Experimental surfaces + +AdCP 3.0 ships a core of stable surfaces under the [3.x stability guarantees](/dist/docs/3.2.0-beta.4/reference/versioning#3x-stability-guarantees), plus four surfaces that are part of the core protocol but not yet frozen. These surfaces are being co-developed with design partners — **OpenAds, Scope3, Yahoo, ONX, and Triton Digital** — running them in production engagements that shape the graduation path. Experimental surfaces carry `x-status: experimental` in their schemas, and sellers implementing them declare the feature id in `experimental_features` on `get_adcp_capabilities`. They may change between 3.x releases with at least 6 weeks' notice. + +| Surface | Feature id | Why experimental | +|---|---|---| +| [Brand rights lifecycle](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights) | `brand.rights_lifecycle` | Legal-construct surface added late in the 3.0 cycle. First enterprise deployments will expose edge cases in partial rights, sublicensing, revocation, and dispute resolution. | +| [Campaign governance](/dist/docs/3.2.0-beta.4/governance/campaign/specification) | `governance.campaign` | Multi-party governance semantics (approval conflicts, audit provenance, tie-breaking under Embedded Human Judgment) are not yet settled. | +| [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match/) | `trusted_match.core` | Privacy architecture will evolve with regulator engagement; TMPX exposure tokens, country-partitioned identity, and Offer creative data are expected to change. | +| [Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) | `sponsored_intelligence.core` | Conversational brand experiences are a new advertising model. Session lifecycle, UI components, identity/consent object shape, and capability negotiation are expected to evolve as first-party AI hosts and brand agents integrate. | + +The experimental label is deliberately scoped — everything else in 3.0 follows the normal 6-month deprecation notice. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract, graduation criteria, and client guidance. + +### Signal pricing: custom escape hatch + +Vendor pricing gains a `custom` model alongside `cpm`, `percent_of_media`, `flat_fee`, and `per_unit`. Requires a human-readable `description` and a structured `metadata` object. Buyers SHOULD route custom pricing through operator review before commitment — automatic selection is not recommended. + +Motivation: performance kickers, tiered volume, hybrid (flat + CPM), and outcome-shared pricing are already appearing in the field. Shipping the escape hatch now avoids retrofit pain when real deployments hit a construct the enumerated models cannot express. Structured metadata keeps the model machine-inspectable without a schema change per new pattern. + +--- + +## Breaking changes + +### Media channel taxonomy + +v2's 9 channels are replaced by 20 planning-oriented channels. Five channels carried over unchanged (`display`, `social`, `ctv`, `podcast`, `dooh`). The remaining four are split, removed, or renamed. + +<Warning> +All code that reads or writes channel values must be updated. +</Warning> + +| v2 channel | v3 channel(s) | Notes | +|------------|---------------|-------| +| `display` | `display` | Unchanged | +| `video` | `olv`, `linear_tv`, `cinema` | Split by distribution context (`ctv` was already separate in v2) | +| `audio` | `radio`, `streaming_audio` | Split by distribution (`podcast` was already separate in v2) | +| `native` | Removed | Use format-level properties instead | +| `social` | `social` | Unchanged | +| `ctv` | `ctv` | Unchanged | +| `podcast` | `podcast` | Unchanged | +| `dooh` | `dooh` | Unchanged | +| `retail` | `retail_media` | Renamed for clarity | + +New channels in v3 (no v2 equivalent): `search`, `linear_tv`, `radio`, `streaming_audio`, `ooh`, `print`, `cinema`, `email`, `gaming`, `retail_media`, `influencer`, `affiliate`, `product_placement`, `sponsored_intelligence`. + +<Note> +The `gaming` channel covers intrinsic in-game ads, rewarded video, and playable ads. Rewarded video in gaming apps could also be classified as `olv` — use `gaming` when the inventory comes from a gaming budget. +</Note> + +<Card title="Channels deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/channels"> + Complete mapping guide with examples for each v2 channel, multi-channel products, and capability discovery. +</Card> + +--- + +### Pricing option field renames + +v3 separates **hard constraints** (publisher-enforced prices) from **soft hints** (historical percentiles). `fixed_rate` becomes `fixed_price`, and `price_guidance.floor` moves to top-level `floor_price`. + +| v2 field | v3 field | Notes | +|----------|----------|-------| +| `fixed_rate` | `fixed_price` | Renamed for clarity (it's a price, not a rate) | +| `price_guidance.floor` | `floor_price` | Moved to top level as hard constraint | + +These fields map to standard deal types: `fixed_price` corresponds to Programmatic Guaranteed (PG) and Preferred Deals, while `floor_price` corresponds to Private Marketplace (PMP) auctions. Open auction inventory omits both fields. + +<Card title="Pricing deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/pricing"> + Fixed-price vs auction examples, price guidance schema, flat-rate pricing, minimum spend, and transition period handling. +</Card> + +--- + +### Creative assignments with weighting + +`creative_ids` string arrays are replaced by `creative_assignments` objects that support delivery weighting and placement targeting. + +| v2 field | v3 field | +|----------|----------| +| `creative_ids` (string array) | `creative_assignments` (object array with `creative_id`, `weight`, `placement_ids`) | + +<Card title="Creatives deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/creatives"> + Weighted assignments, placement targeting, asset discovery with the unified `assets` array, repeatable groups, and format cards. +</Card> + +--- + +### Geo targeting with named systems + +Metro and postal targeting values now carry explicit system information, supporting global markets. Metro values are grouped by system using `{ "system": "...", "values": [...] }` objects; native postal values use `{ "country": "...", "system": "...", "values": [...] }`. + +| v2 field | v3 field | +|----------|----------| +| `geo_metros` (string array) | `geo_metros` (system/values objects) | +| `geo_postal_codes` (string array) | `geo_postal_areas` (country/system/values objects) | + +v3 also adds `geo_metros_exclude` and `geo_postal_areas_exclude` for negative targeting (e.g., target the US except the New York DMA). + +<Card title="Geo targeting deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting"> + Metro and postal system reference tables, exclusion targeting, capability discovery, and a full targeting example. +</Card> + +--- + +### Other targeting changes + +v3 adds several targeting fields beyond geo: + +| Field | Description | +|-------|-------------| +| `daypart_targets` | Time-of-day and day-of-week targeting windows | +| `age_restriction` | Age-gating for restricted content | +| `device_platform` | Operating system targeting (iOS, Android, Windows, tvOS, etc.) | +| `device_type` | Device form factor targeting (desktop, mobile, tablet, ctv, dooh, unknown) | +| `language` | Content language targeting | +| `keyword_targets` / `negative_keywords` | Keyword targeting for search and retail media with match types (broad, phrase, exact) and per-keyword bid prices | +| `device_type_exclude` | Negative device form factor targeting | +| `geo_proximity` | Point-based proximity targeting via travel time isochrones, radius, or GeoJSON geometry | + +These fields are optional additions — they don't replace any v2 fields. + +--- + +### Unified asset discovery + +Formats now use an `assets` array with `required` boolean instead of `assets_required`. See the [creatives deep dive](/dist/docs/3.2.0-beta.4/reference/migration/creatives#asset-discovery). + +--- + +### Catalogs replace promoted_offerings + +The `promoted_offerings` creative asset type and `promoted_offering` string field are removed. Catalogs are now first-class protocol objects with their own sync lifecycle (`sync_catalogs`), format-level requirements (`catalog_requirements`), and conversion event alignment. + +| v2 field | v3 replacement | +|----------|---------------| +| `promoted_offerings` (creative asset) | `catalogs` field on creative manifest | +| `promoted_offering` (string on media-buy) | Removed — use `brand` + `brief` | +| `promoted_offering` (string on creative-manifest) | Removed — use `catalogs` field | + +<Card title="Catalogs deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/catalogs"> + Before/after examples, sync_catalogs workflow, catalog_requirements discovery, and migration checklist. +</Card> + +--- + +### Brand identity unification + +Inline `brand_manifest` objects are replaced by brand references (`BrandRef`). Task schemas reference brands by `{ domain, brand_id }` instead of passing manifests inline. Brand data is resolved from `brand.json` or the registry at execution time. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `brand_manifest` (inline object) | `brand` (`{ domain, brand_id }`) | + +Affects: `get_products`, `create_media_buy`, `build_creative`, and property list schemas. + +<Card title="Brand identity deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/brand-identity"> + BrandRef schema, resolution flow, before/after examples, and migration steps. +</Card> + +--- + +### Product delivery forecasts + +`estimated_exposures` is replaced by a structured `forecast` field using the `DeliveryForecast` type. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `estimated_exposures` (integer) | `forecast` (DeliveryForecast with time periods, metric ranges, methodology) | + +--- + +### Proposal refinement via buying mode + +`proposal_id` is removed from the `get_products` request. Refinement now uses `buying_mode: "refine"` with a typed `refine` array of change-requests (see [typed refinement](#typed-refinement-with-seller-acknowledgment)). Session continuity (`context_id` in MCP, `contextId` in A2A) carries conversation history across calls. + +Proposal execution via `create_media_buy` with `proposal_id` is unchanged. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `proposal_id` on `get_products` request | Removed — use `buying_mode: "refine"` | + +--- + +### Optimization goals redesign + +`optimization_goal` (singular object) is replaced by `optimization_goals` (array). Each goal is a discriminated union on `kind`: + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `optimization_goal` (single object) | `optimization_goals` (array) | +| Implicit single goal | `priority` field for multi-goal ordering | + +Two goal kinds: +- **`metric`** — Seller-native delivery metrics (clicks, views, reach, engagements, etc.) with `cost_per` or `threshold_rate` targets +- **`event`** — Conversion tracking with `event_sources` array and optional `value_field`/`value_factor` + +<Card title="Optimization goals deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/optimization-goals"> + Goal kinds, reach optimization, multi-goal priority, product capabilities, and migration steps. +</Card> + +--- + +### Signals pricing restructure + +The legacy `pricing: { cpm }` object on signals is replaced by a structured `pricing_options` array with three pricing models. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `pricing.cpm` (number) | `pricing_options[]` (array of pricing model objects) | + +Three models: `cpm`, `percent_of_media` (with optional `max_cpm`), `flat_fee`. + +<Card title="Signals deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/signals"> + Pricing models, deliver_to flattening, usage reporting, and migration steps. +</Card> + +--- + +### Signals deliver_to flattening + +The nested `deliver_to` object in `get_signals` request is replaced with two top-level fields. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `deliver_to.destinations` | `destinations` (top-level) | +| `deliver_to.countries` | `countries` (top-level) | + +--- + +### AudienceMember external_id required + +`external_id` is promoted from a uid-type enum value to a required top-level field on AudienceMember. Every member must have a buyer-assigned stable identifier plus at least one matchable identifier. + +<Card title="Audiences deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/reference/migration/audiences"> + Before/after examples, uid-type changes, sync_audiences usage, and migration steps. +</Card> + +--- + +### Typed refinement with seller acknowledgment + +`refine` is redesigned from a nested object with `overall`/`products`/`proposals` to a flat typed array. Each entry is discriminated by `scope`: + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `refine.overall` (string) | `{ "scope": "request", "ask": "..." }` array entry | +| `refine.products[].product_id` | `{ "scope": "product", "product_id": "..." }` | +| `refine.proposals[].proposal_id` | `{ "scope": "proposal", "proposal_id": "..." }` | +| `refine.products[].notes` | `ask` field | + +Product and proposal entries use the prefixed id field (`product_id`, `proposal_id`) matching AdCP's id naming convention throughout the protocol. `action` is optional on product and proposal entries and defaults to `"include"` — orchestrators only need to set it explicitly for `"omit"`, `"more_like_this"` (product), or `"finalize"` (proposal). + +Sellers respond with `refinement_applied` — a positionally-matched array where each entry reports `status` (`applied`, `partial`, `unable`) and optional `notes`. Entries echo the matching id field (`product_id` / `proposal_id`) for cross-validation. + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442061", + "buying_mode": "refine", + "refine": [ + { "scope": "request", "ask": "more video, less display" }, + { "scope": "product", "product_id": "prod_video_premium", "ask": "add 16:9 format" }, + { "scope": "product", "product_id": "prod_display_ros", "action": "omit" }, + { "scope": "proposal", "proposal_id": "prop_balanced_v1", "action": "finalize" } + ] +} +``` + +**Seller migration note.** The shape change is breaking for sellers as well as buyers. Sellers that return `refinement_applied` MUST now echo `scope` and the matching id field (`product_id` for product scope, `proposal_id` for proposal scope) — the pre-rename `{status, notes}`-only entries are rejected by the tightened response schema. Missing `action` on incoming refine entries MUST be treated as `action: "include"`, not as a parse error. Re-issue your seller tests against the 3.0 request schema to catch any orchestrator code still emitting the generic `id` field — the validator now rejects it with `must NOT have additional properties`. + +<Card title="Refinement deep dive" icon="arrow-right" href="/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement"> + Change-request types, seller acknowledgment, and before/after examples. +</Card> + +--- + +### Creative assignments restructured + +`SyncCreativesRequest.assignments` changed from a `{ creative_id: package_id[] }` map to a typed array with explicit fields. + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `assignments` (object map) | `assignments` (array of `{ creative_id, package_id, weight, placement_ids }`) | + +--- + +### Signals account and field consistency + +Two consistency changes to signals schemas: + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `account_id` (string) on `get_signals` and `activate_signal` | `account` (AccountReference object) | +| `deployments` on `activate_signal` | `destinations` (renamed for consistency with `get_signals`) | + +--- + +### Package catalogs as array + +| v2/beta field | v3 rc.1 field | +|---------------|---------------| +| `catalog` (single Catalog object) on Package | `catalogs` (array of Catalog refs) | + +--- + +### Brand tone structured format + +Brand `tone` is now an object type only — string format is removed. Structured tone includes `voice`, `attributes`, `dos`, and `donts` fields. Existing string values should migrate to `{ "voice": "<previous-string>" }`. + +| v2/beta field | v3 rc.2 field | +|---------------|---------------| +| `tone` (string or object) | `tone` (object: `{ voice, attributes, dos, donts }`) | + +--- + +### Account resolution removed + +`account_resolution` capability field is removed. `require_operator_auth` now determines the auth model and account reference style: `true` means account-id namespaces (discover via `list_accounts` when exposed, pass `account_id`), `false` means buyer-declared accounts (declare via `sync_accounts`, pass natural key). + +| v2/beta/rc.1 field | v3 rc.2 field | +|---------------------|---------------| +| `account_resolution` capability | Removed — use `require_operator_auth` | + +--- + +### Privacy and consent + +AdCP does not define its own consent framework. Privacy signals (TCF 2.0, GPP, US Privacy String) should be passed via the brief's `ext` field or through transport-level headers. Sellers that require consent signals should declare this in `get_adcp_capabilities` using the extension mechanism. + +--- + +## Removed in v3 + +| Removed | Replacement | +|---------|-------------| +| `adcp-extension.json` agent card | `get_adcp_capabilities` task | +| `list_authorized_properties` task | `get_adcp_capabilities` portfolio section | +| `assets_required` in formats | `assets` array with `required` boolean | +| `preview_image` in formats | `format_card` object | +| `creative_ids` in packages | `creative_assignments` array | +| `geo_postal_codes` | `geo_postal_areas` | +| `fixed_rate` in pricing | `fixed_price` | +| `price_guidance.floor` | `floor_price` (top-level) | +| `promoted_offerings` asset type | `catalogs` field on creative manifest | +| `promoted_offering` on media-buy | Removed — use `brand` + `brief` | +| `promoted_offering` on creative-manifest | `catalogs` field | +| `brand_manifest` (inline object) | `brand` ref (`{ domain, brand_id }`) | +| `estimated_exposures` on Product | `forecast` (DeliveryForecast) | +| `proposal_id` on `get_products` request | Session continuity (`context_id` / `contextId`) | +| `refine` object with `overall`/`products`/`proposals` | `refine` array of typed change-requests | +| `creative_brief` on `build_creative` request | `brief` asset type in manifest `assets` map | +| `supports_brief` capability | `supports_compliance` | +| `creative-brief-ref.json` schema | Deleted — briefs are now asset types | +| `deployments` on `activate_signal` | `destinations` | +| `account_id` (string) on signals tasks | `account` (AccountReference) | +| `report_usage.kind` and `report_usage.operator_id` | Removed | +| `catalog` (singular) on Package | `catalogs` (array) | +| `account_resolution` capability | `require_operator_auth` determines account model | +| `X-Dry-Run` HTTP header | `sandbox: true` on account reference | +| `X-Test-Session-ID` HTTP header | Removed — sandbox accounts provide test isolation | +| `X-Mock-Time` HTTP header | Removed | +| `delete_content_standards` task | Archive via `update_content_standards` instead | +| `get_property_features` task | Property list filters + `get_adcp_capabilities` for feature discovery | +| `tone` as string on brand.json | Object only: `{ voice, attributes, dos, donts }` | +| `FormatCategory` enum / `type` on formats | Filter by `asset_types` or `format_ids` instead | +| `broadcast-platform` specialism | Renamed to `sales-broadcast-tv` | +| `social-platform` specialism | Renamed to `sales-social` | +| `property-governance` + `collection-governance` specialisms | Merged into `inventory-lists` | +| `sponsored_intelligence` specialism | Promoted to full protocol in `supported_protocols` | + +--- + +## Migration checklists + +<AccordionGroup> + <Accordion title="All implementations" defaultOpen> + These breaking changes affect anyone reading or writing AdCP data: + + - [ ] Update channel enum values to [new taxonomy](/dist/docs/3.2.0-beta.4/reference/migration/channels) + - [ ] Rename `fixed_rate` -> `fixed_price` in [pricing options](/dist/docs/3.2.0-beta.4/reference/migration/pricing) + - [ ] Move `price_guidance.floor` -> `floor_price` ([pricing details](/dist/docs/3.2.0-beta.4/reference/migration/pricing)) + - [ ] Replace `creative_ids` with [`creative_assignments`](/dist/docs/3.2.0-beta.4/reference/migration/creatives) + - [ ] Add system specification to [metro/postal targeting](/dist/docs/3.2.0-beta.4/reference/migration/geo-targeting) + - [ ] Rename `geo_postal_codes` -> `geo_postal_areas` + - [ ] Handle new `geo_metros_exclude` and `geo_postal_areas_exclude` fields + - [ ] Update format parsing to use [`assets` array](/dist/docs/3.2.0-beta.4/reference/migration/creatives#asset-discovery) + - [ ] Replace `preview_image` reads with [`format_card`](/dist/docs/3.2.0-beta.4/reference/migration/creatives#format-cards-replacing-preview_image) rendering + - [ ] Replace `list_authorized_properties` calls with `get_adcp_capabilities` portfolio + - [ ] Remove `promoted_offerings` from creative manifest assets and replace with [`catalogs` field](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) + - [ ] Remove `promoted_offering` string from media buy and creative manifest objects + - [ ] Update `optimization_goal` to [`optimization_goals`](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) (array of discriminated union) + - [ ] Handle `external_id` as required field on AudienceMember + - [ ] Replace `brand_manifest` with `brand` ref (`{ domain, brand_id }`) in all task calls + - [ ] Replace `estimated_exposures` reads with `forecast` (DeliveryForecast) on products + - [ ] Remove `proposal_id` from `get_products` requests — use session continuity for refinement + - [ ] Update `refine` from object to typed array with `scope` discriminator + - [ ] Handle `recovery` field on errors for retry/correction logic + - [ ] Update `catalog` to `catalogs` (array) on packages + - [ ] Update signals `account_id` to `account` (AccountReference) + - [ ] Rename signals `deployments` to `destinations` + - [ ] Pass `buying_mode` (now required) on `get_products` + - [ ] Move `creative_brief` to `brief` asset type in manifest `assets` map + - [ ] Handle `report_usage` without `kind` and `operator_id` fields + - [ ] Update `SyncCreativesRequest.assignments` from object map to typed array + - [ ] Migrate brand `tone` from string to object format (`{ voice, attributes, dos, donts }`) + - [ ] Remove `account_resolution` reads — use `require_operator_auth` instead + - [ ] Read sandbox support from `account.sandbox` instead of `media_buy.features.sandbox` + - [ ] Remove `X-Dry-Run`, `X-Test-Session-ID`, and `X-Mock-Time` header handling — use `sandbox: true` on account references instead + - [ ] Add `type: "dooh"` inside `flat_rate.parameters` when DOOH parameters are provided + - [ ] Treat `list_creatives` and `sync_creatives` as Creative Protocol operations + - [ ] Remove `delete_content_standards` calls — archive via `update_content_standards` + - [ ] Remove `get_property_features` calls — use property list filters + - [ ] Remove `format_types` / `type` filters — use `asset_types` or `format_ids` instead + - [ ] Validate all requests/responses against v3 schemas + </Accordion> + + <Accordion title="Seller agents (publishers, SSPs, networks)"> + Update all data structures to v3 format (channels, pricing, geo targeting), then implement new capabilities: + + - [ ] Implement `get_adcp_capabilities` task (including `account` capabilities) + - [ ] Remove `adcp-extension.json` from agent card + - [ ] Implement `sync_accounts` for account provisioning + - [ ] Return proposals with delivery forecasts from `get_products` when applicable + - [ ] Support property list filtering in `get_products` if integrating with governance agents + - [ ] Handle catalogs synced via [`sync_catalogs`](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) with approval workflow + - [ ] Declare `metric_optimization` capabilities on products + - [ ] Declare `reporting` capabilities in `get_adcp_capabilities` for dimension breakdowns + - [ ] Support `reporting_dimensions` parameter on `get_media_buy_delivery` + - [ ] Return `refinement_applied` array when processing `refine` requests + - [ ] Implement `rejected` status and `rejection_reason` on media buys + - [ ] Support `fields` projection parameter on `get_products` + - [ ] Declare `supported_pricing_models` in `get_adcp_capabilities` + - [ ] Support `time_budget` on `get_products` and return `incomplete` when work cannot finish in budget + - [ ] Declare sandbox support in `account.sandbox`, not `media_buy.features.sandbox` + - [ ] Stop checking for `X-Dry-Run` header — honor `sandbox: true` on account references instead + - [ ] Support `preferred_delivery_types`, `exclusivity`, optional `delivery_measurement`, and package-level `start_time` / `end_time` + </Accordion> + + <Accordion title="Buyer agents and orchestrators (DSPs, agencies, brands)"> + Update all requests and response handling to v3 format, then integrate new capabilities: + + - [ ] Resolve brands via [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol) before placing buys + - [ ] Call `sync_accounts` to establish billing relationships + - [ ] Update to call `get_adcp_capabilities` for runtime discovery + - [ ] Evaluate proposals and delivery forecasts when returned by sellers + - [ ] Use the [Registry API](/dist/docs/3.2.0-beta.4/registry) for brand/property resolution and agent discovery + - [ ] Pass property lists to filter inventory when working with governance agents + - [ ] Invoke SI sessions when connecting users with brand agents + - [ ] Sync catalogs via [`sync_catalogs`](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) before submitting creatives + - [ ] Add `conversion_events` to catalogs for attribution tracking + - [ ] Update `optimization_goal` to `optimization_goals` array in `create_media_buy` + - [ ] Pass `pricing_option_id` when activating signals with pricing options + - [ ] Use `reporting_dimensions` for dimension breakdowns in delivery reporting + - [ ] Handle `refinement_applied` response for typed refinement feedback + - [ ] Use `recovery` field on errors for automated retry/correction + - [ ] Use `fields` projection on `get_products` for efficient discovery + - [ ] Handle `rejected` status on media buys + - [ ] Use `action: "deactivate"` on `activate_signal` for campaign cleanup + - [ ] Integrate `get_rights` / `acquire_rights` for licensed content campaigns + - [ ] Handle `visual_guidelines` from `brand.json` for creative generation + - [ ] Read `require_operator_auth` and `account.sandbox` when choosing account and sandbox flows + - [ ] Handle `time_budget` / `incomplete` for bounded-latency product discovery + - [ ] Use creative capability flags (`supports_generation`, `supports_transformation`, `has_creative_library`) to route build vs library workflows + - [ ] Submit plans to governance agents via `check_governance` when campaign governance is in use + </Accordion> + + <Accordion title="Signals agents (data providers, measurement vendors)"> + Update schema references from v2 to v3. Signals Protocol doesn't use media channels in its core model. + + - [ ] Update schema references from v2 to v3 + - [ ] Ensure `get_adcp_capabilities` returns `major_versions: [3]` + - [ ] Return structured `signal_id` objects in `get_signals` responses + - [ ] Include `value_type` field in signal responses + - [ ] Support `signal_ids` parameter in `get_signals` requests for ID-based lookup + - [ ] Update from legacy `pricing` to structured `pricing_options` array + - [ ] Handle top-level `destinations`/`countries` instead of nested `deliver_to` + - [ ] Add `idempotency_key` support to `report_usage` + - [ ] Support `action: "deactivate"` on `activate_signal` + - [ ] Include `categories` and `range` metadata in signal entries + - [ ] Update `account_id` to `account` (AccountReference) + - [ ] Rename `deployments` to `destinations` + </Accordion> + + <Accordion title="Data providers (new in v3)"> + Publish signal definitions via `adagents.json`. See [Data Provider Guide](/dist/docs/3.2.0-beta.4/signals/data-providers). + + - [ ] Create published signal definitions in `/.well-known/adagents.json` + - [ ] Define signals with `id`, `name`, `value_type`, and optional metadata + - [ ] Add `signal_tags` for grouping and efficient authorization + - [ ] Authorize signals agents using `signal_ids` or `signal_tags` authorization types + - [ ] Validate the file using AdAgents.json Builder + </Accordion> + + <Accordion title="Creative agents (creative management, DCO providers)"> + Support new asset discovery and integrate brand identity. The `FormatCategory` enum and format `type` field are removed in v3 — filter formats by `asset_types` or `format_ids` instead. + + - [ ] Support `assets` array with `required` boolean (replaces `assets_required`) + - [ ] Replace `preview_image` with `format_card` rendering + - [ ] Resolve brand identity via `brand.json` for on-brand creative generation + - [ ] Support `catalog` field on creative manifests (replaces [`promoted_offerings`](/dist/docs/3.2.0-beta.4/reference/migration/catalogs) asset) + - [ ] Declare `catalog_requirements` on formats that render catalog items + - [ ] Update schema references from v2 to v3 + - [ ] Support `provenance` object on creative manifests and assets + - [ ] Support `brief` and `catalog` as asset types in the `assets` map + - [ ] Handle `compliance.required_disclosures` on creative briefs + - [ ] Check format `supported_disclosure_positions` compatibility + - [ ] Declare `supports_compliance` in capabilities (replaces `supports_brief`) + - [ ] Handle `visual_guidelines` from `brand.json` for on-brand asset generation + - [ ] Support `include_preview`, `target_format_ids`, `quality`, and `item_limit` on `build_creative` + - [ ] Support library retrieval via `creative_id` and declare `supports_generation`, `supports_transformation`, `has_creative_library` + - [ ] Implement `list_creatives` and `sync_creatives` as Creative Protocol operations + - [ ] Support `quality` parameter on `preview_creative` + - [ ] Declare disclosure persistence support via format `disclosure_capabilities` + </Accordion> + + <Accordion title="Brands (new in v3)"> + Establish machine-readable brand and operator identity. See [brand.json specification](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json). + + - [ ] Host `/.well-known/brand.json` on your domain + - [ ] Declare brand portfolio, properties, and authorized operators + - [ ] Optionally provide brand data (logos, colors, fonts, tone) inline in `brand.json` or via brand agent + - [ ] Add `visual_guidelines` to `brand.json` for generative creative systems + - [ ] Implement `get_rights` / `acquire_rights` / `update_rights` if licensing content + - [ ] Register in the [community brand registry](/dist/docs/3.2.0-beta.4/registry) if not hosting `brand.json` + </Accordion> + + <Accordion title="Governance agents (new in v3)"> + Implement brand suitability capabilities. See [Governance Protocol](/dist/docs/3.2.0-beta.4/governance). + + - [ ] Implement property list tasks (`create_property_list`, `get_property_list`, etc.) + - [ ] Implement content standards tasks (`create_content_standards`, `calibrate_content`, etc.) + - [ ] Implement `get_adcp_capabilities` with `governance` in `supported_protocols` + - [ ] Implement `provenance_required` enforcement on creative policy + - [ ] Support `verification` results from AI detection services + - [ ] Implement `get_creative_features` for creative evaluation + - [ ] Declare `creative_features` in `get_adcp_capabilities` + - [ ] Implement campaign governance tasks (`sync_plans`, `check_governance`, `report_plan_outcome`, `get_plan_audit_logs`) when offering plan-level governance + </Accordion> + + <Accordion title="Sponsored Intelligence agents (new in v3 — experimental)"> + Implement conversational brand experiences. SI ships in 3.0 as an [experimental surface](/dist/docs/3.2.0-beta.4/reference/experimental-status) (`sponsored_intelligence.core`) — session lifecycle, UI components, and capability negotiation may change between 3.x releases with 6 weeks' notice. Sellers MUST declare `sponsored_intelligence.core` in `experimental_features`. See [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol). + + - [ ] Implement SI session tasks (`si_initiate_session`, `si_send_message`, `si_terminate_session`) + - [ ] Implement `get_adcp_capabilities` with `sponsored_intelligence` in `supported_protocols` and `sponsored_intelligence.core` in `experimental_features` + </Accordion> +</AccordionGroup> + +--- + +## Getting help + +- **Community**: [Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) +- **Issues**: [GitHub Issues](https://github.com/adcontextprotocol/adcp/issues) +- **Support**: support@adcontextprotocol.org diff --git a/dist/docs/3.2.0-beta.4/registry/index.mdx b/dist/docs/3.2.0-beta.4/registry/index.mdx new file mode 100644 index 0000000000..889fc67a2e --- /dev/null +++ b/dist/docs/3.2.0-beta.4/registry/index.mdx @@ -0,0 +1,875 @@ +--- +title: Registry API +sidebarTitle: Overview +description: "Public REST API for brand resolution, property lookup, agent discovery, and authorization in the AdCP ecosystem." +"og:title": "AdCP — Registry API" +--- + +The AgenticAdvertising.org registry provides a public REST API for resolving brands and properties, discovering agents, and validating authorization in the AdCP ecosystem. + +## Base URL + +``` +https://agenticadvertising.org +``` + +Most endpoints are **public and require no authentication**. [Authenticated endpoints](#authenticated-endpoints) require a Bearer token. + +The full [OpenAPI 3.1 specification](https://agenticadvertising.org/openapi/registry.yaml) is available for code generation and tooling. It is also discoverable at `/.well-known/openapi.yaml`. + +## Quick Start + +Resolve a brand domain to its canonical identity: + +<CodeGroup> + +```bash cURL +curl "https://agenticadvertising.org/api/brands/resolve?domain=acmecorp.com" +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/brands/resolve?domain=acmecorp.com" +); +const brand = await res.json(); +console.log(brand.brand_name, brand.canonical_domain); +``` + +```python Python +import requests + +brand = requests.get( + "https://agenticadvertising.org/api/brands/resolve", + params={"domain": "acmecorp.com"} +).json() +print(brand["brand_name"], brand["canonical_domain"]) +``` + +</CodeGroup> + +```json Response +{ + "canonical_id": "acmecorp.com", + "canonical_domain": "acmecorp.com", + "brand_name": "Acme Corp", + "keller_type": "master", + "house_domain": "acmecorp.com", + "source": "brand_json" +} +``` + +## Rate Limits + +| Endpoint | Limit | +|----------|-------| +| Brand bulk resolve (`/api/brands/resolve/bulk`) | 20 requests and 100 unique domain resolutions/minute per IP; 25 domains and 16 KB per request | +| Property bulk resolve (`/api/properties/resolve/bulk`) | 20 requests/minute per IP | +| Brand reads (`/api/brands/resolve`, `/api/brands/brand-json`) | 60 requests/minute per IP | +| Save endpoints (`/api/brands/save`, `/api/properties/save`) | 60 requests/hour per user | +| Crawl request (`/api/registry/crawl-request`) | 5 minutes per domain, 30 requests/hour per user | +| All other endpoints | No limit | + +Rate-limited endpoints return `429 Too Many Requests` when the limit is exceeded. Brand bulk resolve returns `503` with a `Retry-After` header when too much resolution work is already queued. + +## Endpoint Groups + +<CardGroup cols={2}> + <Card title="Brand Resolution" icon="fingerprint" href="/dist/docs/3.2.0-beta.4/registry/index#brand-resolution"> + Resolve domains to canonical brand identities, fetch brand.json files, and browse the brand registry. + </Card> + <Card title="Property Resolution" icon="building" href="/dist/docs/3.2.0-beta.4/registry/index#property-resolution"> + Resolve publisher domains to property information, validate adagents.json, and browse properties. + </Card> + <Card title="Agent Discovery" icon="robot" href="/dist/docs/3.2.0-beta.4/registry/index#agent-discovery"> + List, search, and filter agents by inventory profile. Browse publishers and view registry statistics. + </Card> + <Card title="Change Feed" icon="clock-rotate-left" href="/dist/docs/3.2.0-beta.4/registry/index#change-feed"> + Poll a cursor-based feed of registry changes for local sync. + </Card> + <Card title="Lookups & Authorization" icon="shield-check" href="/dist/docs/3.2.0-beta.4/registry/index#lookups--authorization"> + Look up agents by domain, validate product authorization, and check property authorization in real time. + </Card> +</CardGroup> + +## Lookups by entity + +Three endpoints answer different questions about who is in the registry. They span two tag groups in the API reference, so use this table to pick the right lookup surface before diving into endpoint-specific parameters. + +| Endpoint | Auth surface | What it returns | +|----------|--------------|------------------| +| `GET /api/registry/agents` | Public catalog; authenticated AgenticAdvertising.org API-tier members also see `members_only` agents. | The AgenticAdvertising.org-attested member-enrolled agent catalog, with optional filters and enrichment for health, capabilities, properties, compliance, measurement metrics, and verification state. | +| `GET /api/registry/operator?domain=X` | Auth-aware: anonymous callers see `public`; AgenticAdvertising.org API-tier members also see `members_only`; profile owners can also see `private`. | The agents operated by the queried entity plus the publishers that trust those agents. | +| `GET /api/registry/publisher?domain=X` | Public and unauthenticated; AgenticAdvertising.org membership does not change the response shape. | The inventory the queried entity publishes (`properties[]`) and the agents it authorizes (`authorized_agents[]` from `adagents.json`). | + +**`GET /api/registry/agents`** — use this when you want to browse or filter the public agent population. See [Registering an agent](/dist/docs/3.2.0-beta.4/registry/registering-an-agent) for how agents end up in this catalog. Reference: [List agents endpoint](#agent-discovery) under Agent Discovery. + +**`GET /api/registry/operator?domain=X`** — use this when you have one entity in hand and want its agent footprint. + +**`GET /api/registry/publisher?domain=X`** — use this when you have one publisher in hand and want its inventory and delegations. + +The response's `formats[]` is a lossy display projection, not the complete publisher contract. It omits custom-format schema pointers, channel applicability, and legacy projection metadata. Pass `include=placements` to receive provenance-labeled placement summaries with resolved canonical format options for placement eligibility. Consumers doing creative validation or needing omitted declaration fields must fetch the resolved raw catalog using the returned community `registry_url` or publisher `hosting.resolved_url` / `hosting.expected_url`. The registry lookup chooses the publisher-origin/community rung and reports provenance; the raw document supplies the complete declarations. + +### Brand Resolution + +These endpoints resolve domains to brand identities. The `source` field identifies the provenance of the selected registry record. When more than one candidate fact exists for a domain, selection is deterministic: `hosted` wins over `brand_json`, then `community`, then `enriched`. Ties among stored rows use the most recently validated record and a stable ID tie-breaker. A normal read prefers that durable stored winner on a source tie; `fresh=true` lets a successful live origin read win a tie, but never override a higher-provenance stored record. Identical normal requests therefore do not randomly change records or labels. + +| Source | Meaning | +|--------|----------| +| `hosted` | Registered by a domain owner whose control of the domain has been verified | +| `brand_json` | Resolved from the domain's `/.well-known/brand.json` file | +| `enriched` | Enriched via Brandfetch API | +| `community` | Submitted by a community member | + +All sources produce the same resolution response structure, but they are not equivalent evidence. `hosted` and `brand_json` are backed by domain control; `community` and `enriched` describe what the registry has learned without proving that the domain operator asserted it. `source` is identity provenance, not proof of a house relationship—use `relationship_trust` for that. To get full brand identity data (logos, colors, tone), use `/api/brands/enrich` or look up the brand in the registry. + +#### Reading trust + +A domain is authoritative for its own identity — TLS proves the document came from that domain and nothing more. Relationships between a brand and a house need both sides to publish them, so resolution reports how each relationship was established rather than flattening it into a single answer. + +For third-party verification, call `GET /api/brands/resolve?domain=<leaf-domain>` and inspect `relationship_trust`. Only `mutual` and `inline` are reciprocated relationships suitable for extending trust to `house_domain`: + +- `mutual` means the leaf publishes `house_domain` and the house names the leaf in `brand_refs[]`; `relationship_verified_at` reports when the resolver last observed both sides agreeing. +- `inline` means the house's own canonical document defines the leaf, so the ownership statement and identity come from the house authority itself. + +Every other value is non-reciprocated. In particular, `claimed_house_domain` with `leaf_only` is one side's self-assertion and must not authorize the leaf as part of that house. There is no separate ordered-chain endpoint in v3: the hierarchy is one level deep, and the reciprocated `house_domain` edge in this response is the supported ownership-verification result. + +An absent `relationship_trust` is not the same as `standalone`: it means the selected record carries no relationship verdict. Consumers must treat missing evidence as unknown, not as evidence that no relationship exists. + +| `relationship_trust` | Meaning | +|---|---| +| `inline` | The house's own document defines the brand. | +| `mutual` | Both sides publish the relationship. The trust-extending edge. | +| `leaf_only` | The brand claims a house whose reciprocal declaration is missing, not yet active, or older than the resolver's trust ceiling. See `claimed_house_domain`. | +| `house_only` | A house claims the brand, which has not claimed the house. | +| `standalone` | The brand claims no house. | +| `unverifiable` | A claimed house exists but could not be checked. | + +`house_domain` is only set on a trust-extending relationship; a one-sided claim appears as `claimed_house_domain`. For `mutual`, `relationship_verified_at` records when both sides were last seen agreeing — it does not advance while the house side is unreachable. `relationship_declared_at` records the house's `brand_refs[].effective_at`, falling back to the resolver's durable first observation when the publisher omits it. AgenticAdvertising.org's reference resolver requires both clocks to remain live: confirmation may be retained for at most 24 hours while the house is unreachable, and declarations age out after 180 days even when re-confirmation keeps succeeding. Future declarations remain `leaf_only` until their effective time. Callers can apply stricter policies to either timestamp. + +Following a redirect never lets a domain adopt a house's identity. When a domain's brand.json points at a house that does not name the domain back — in `properties[]` as `relationship: "owned"`, or in `brand_refs[]` — the response carries the claim (`claimed_house_domain` with `relationship_trust: leaf_only`) and no brand identity. A house that lists a domain with `direct`, `delegated`, or `ad_network` is declaring a monetization path, not ownership, so it does not resolve that domain's identity either. If you expected an identity here, the house is missing its half of the relationship. + +`fresh=true` bypasses the resolution cache and refetches from the origin. When that fetch fails and a stored record is returned instead, `live_brand_json` carries that request's failed-fetch diagnostics so you can distinguish "stored evidence returned" from "origin checked successfully." Apply your own freshness policy to that fallback rather than silently treating it as live. + +Pre-v3 documents are promoted to canonical v3 identity for the response, flagged with `promoted_from_schema` and `migration_warnings`. Promotion covers identity only; legacy relationship data is preserved opaquely and never becomes a trust claim. In particular, a warning with `field: "house"` means the legacy house object was moved to `legacy_metadata.legacy_house` and did **not** establish `house_domain`. The publisher must add `house_domain` to the leaf document and a reciprocal `brand_refs[]` entry to the house document. + +#### Trust fields in brand lists + +`/api/brands/registry` and `/api/brands/find` include `relationship_trust`, `relationship_verified_at`, and `claimed_house_domain` on each result row. These are cached from the last crawler resolution cycle and use the same semantics as the `relationship_trust` field on `/api/brands/resolve` responses. The cache staleness is bounded by the crawl interval. + +An absent `relationship_trust` in a list result means trust has not yet been computed for that brand — it MUST NOT be interpreted as `standalone`. For an authoritative, real-time verdict use `/api/brands/resolve`. + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/brands/resolve` | Resolve a domain to its canonical brand | +| POST | `/api/brands/resolve/bulk` | Resolve up to 25 domains at once | +| GET | `/api/brands/brand-json` | Fetch raw brand.json for a domain | +| GET | `/api/brands/registry` | List all brands (search, pagination) with cached trust state | +| GET | `/api/brands/enrich` | Enrich brand data via Brandfetch | +| GET | `/api/brands/history` | Edit history for a brand | +| POST | `/api/brands/save` | Save or update a community brand (auth required) | + +### Property Resolution + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/properties/resolve` | Resolve a domain to its property info | +| POST | `/api/properties/resolve/bulk` | Resolve up to 100 domains at once | +| GET | `/api/properties/registry` | List all properties (search, pagination) | +| GET | `/api/properties/validate` | Validate a domain's adagents.json | +| GET | `/api/properties/history` | Edit history for a property | +| POST | `/api/properties/save` | Save or update a hosted property (auth required) | + +### Agent Discovery + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/registry/agents` | List all member-enrolled agents — filter by type (`?type=brand|rights|measurement|governance|creative|sales|buying|signals`) | +| GET | `/api/registry/agents/search` | Search agents by inventory profile (auth required) | +| GET | `/api/registry/publishers` | List all publishers | +| GET | `/api/registry/stats` | Registry statistics | +| POST | `/api/registry/crawl-request` | Request re-crawl of a publisher domain (auth required) | + +#### Measurement-vendor discovery + +To discover measurement vendors specifically (Adelaide-style attention, Scope3-style emissions, Nielsen DAR, IAS/DV custom quality, etc.), filter the agent list by `type=measurement`: + +```bash +curl "https://agenticadvertising.org/api/registry/agents?type=measurement" +``` + +This returns every measurement agent enrolled in the registry by an AgenticAdvertising.org member organization. + +**Per-metric catalog discovery.** Each measurement agent publishes its full per-metric catalog at [`get_adcp_capabilities.measurement.metrics[]`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities#measurement) — the canonical, vendor-controlled source of truth. AgenticAdvertising.org crawls each measurement agent's `get_adcp_capabilities` on a TTL and stores the result; passing `?capabilities=true` folds the catalog into the response next to `creative_capabilities` and `signals_capabilities`. + +##### Trust and external links + +The registry caches measurement catalogs; it does not endorse or independently review their links or claims. Read each URL according to its field-level purpose: + +| Field | Meaning | What it does not prove | +|-------|---------|------------------------| +| `methodology_url` | Vendor-published methodology documentation for the metric. | That AgenticAdvertising.org, an accreditor, or another independent party reviewed the methodology. | +| `standard_reference` | The industry-standard document the vendor says the metric implements. | That the implementation conforms to the standard or holds accreditation. | +| `accreditations[].evidence_url` | The vendor-supplied pointer intended to lead to the accreditor's public listing or other public evidence for the named accreditation. | That the accreditation is valid, current, or independently verified by the registry. | + +An accreditation entry is a vendor assertion while `verified_by_aao` is `false`. Treat it as independently verified only when a separate, explicit attestation or verification state establishes who verified the claim, what was verified, and when. Enrollment, catalog caching, a plausible accreditor name, and an `evidence_url` alone do not establish that state. + +Clients must treat all three fields as untrusted external-link input. Parse the value as a URL, offer clickable links only for HTTPS destinations, show the destination hostname, and use an external-site confirmation when the destination is not already trusted by the user. A new-tab link should set `target="_blank"` with `rel="noopener noreferrer"`; render escaped text and attributes rather than interpolating catalog values through `innerHTML`. + +Fetching a link is a separate security decision from rendering it. Browser and server clients should not fetch these URLs merely to display a catalog. A service that deliberately retrieves methodology or evidence content must apply its normal SSRF and privacy controls, including blocking private, loopback, link-local, and metadata-service destinations and revalidating every redirect. + +These semantics are stable properties of the named fields, so the response does not repeat them in a top-level `_meta` path list or per-value provenance flag. Such metadata would duplicate the schema contract without turning a vendor-supplied link into verified evidence. + +**Filter parameters** (all imply `type=measurement` when present; an explicit non-measurement type returns 400): + +| Param | Match | Notes | +|-------|-------|-------| +| `metric_id=attention_units` | Exact match on `metrics[].metric_id` | Repeatable; multiple values are AND'd (vendor must carry all named metrics). | +| `accreditation=MRC` | Exact match on `metrics[].accreditations[].accrediting_body` | Repeatable; multiple values are AND'd (vendor must carry all named accreditations). When combined with `metric_id`, a cross-product AND applies — see combined filter semantics below. Vendor-asserted — `verified_by_aao` is always `false` in the response; renderers should mark these as vendor claims, not AgenticAdvertising.org endorsements. | +| `q=attention` | Case-insensitive substring on `metric_id` | v1 scope: metric_id only. Max 64 chars; SQL wildcards (`%`, `_`) rejected. Description/standard fuzzy search is a follow-up. | + +**Combined filter semantics.** When both `metric_id` and `accreditation` are present, per-metric semantics apply: the same `metrics[]` element must satisfy both constraints simultaneously. A vendor with an `attention_units` metric and a separately MRC-accredited `viewability` metric does **not** match — only a vendor whose `attention_units` metric itself carries MRC accreditation does. + +With multiple values, every `(metric_id, accreditation)` pair must be satisfied by at least one metrics element. This is a cross-product AND, not an OR within accreditation: + +```bash +# Vendor must have MRC-accredited attention_units AND MRC-accredited emissions +curl "https://agenticadvertising.org/api/registry/agents?metric_id=attention_units&metric_id=emissions&accreditation=MRC" +``` + +Using multiple `accreditation` values alongside multiple `metric_id` values produces an all-pairs AND (`M × N` constraints) and typically returns few or no results. Prefer single `accreditation` with multiple `metric_id` values for discovery. + +```bash +# All vendors offering attention measurement +curl "https://agenticadvertising.org/api/registry/agents?metric_id=attention_units&capabilities=true" + +# MRC-accredited viewability vendors +curl "https://agenticadvertising.org/api/registry/agents?type=measurement&accreditation=MRC&q=viewab&capabilities=true" +``` + +**Direct call vs. index — when to use which.** Buyers have two paths to a vendor's metric catalog: + +| Use case | Path | Why | +|----------|------|-----| +| Discovery / planning ("which vendors offer attention?") | Registry index (`?metric_id=...`) | Pre-aggregated, cached, fast. Cross-vendor in one call. Stale up to the registry TTL window (typically 24h). | +| Settlement / audit ("does Adelaide currently support metric X?") | Direct call to `get_adcp_capabilities` | Live, canonical, no staleness. The buyer is already calling the measurement agent at delivery / reconciliation time; one extra call is cheap and removes index staleness from the audit trail. | +| Filtering at `get_products` time | Registry index | Buyer is in a fast-path query and the seller's product catalog already needs to know which vendors are valid. | + +#### Creative-agent discovery + +Endpoints publish their canonical build, validation, and preview surface in [`get_adcp_capabilities.creative.supported_formats[]`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). The registry snapshots those self-declarations and supports reverse lookup without calling every candidate. Results can include standalone creative agents and mixed sales/creative agents; registry `type` is the endpoint's primary role, not an exclusion of its other capability blocks. + +Creative filters do not force a primary `type`, because mixed sales/creative endpoints are valid renderer candidates. Multiple `format_kind` or `creative_operation` values are OR'd within that parameter; different parameters must match the same `supported_formats[]` entry. + +| Param | Match | +|---|---| +| `format_kind` | Exact canonical `format.format_kind` | +| `publisher_domain` | Exact publisher namespace on `format` | +| `format_option_id` | Exact publisher format option on `format` | +| `capability_id` | Exact agent-local capability identifier | +| `creative_operation` | `build`, `validate`, or `preview` | + +```bash +# Agents claiming they can build a fictional publisher's exact vertical-video contract +curl "https://agenticadvertising.org/api/registry/agents?publisher_domain=shorts.streamhaus.example&format_option_id=vertical_video&creative_operation=build&capabilities=true" + +# Generic hosted-video builders +curl "https://agenticadvertising.org/api/registry/agents?format_kind=video_hosted&creative_operation=build" +``` + +These are endpoint self-claims, not publisher endorsements. Before production use, call the selected endpoint's `get_adcp_capabilities` directly to refresh the declaration and then route `build_creative` with that entry's `capability_id` when `operations` includes `build`. + +### Change Feed + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/registry/feed` | Poll cursor-based registry change feed (auth required) | +| GET | `/api/registry/feed/stream` | Stream cursor-based registry feed pages over Server-Sent Events (auth required) | + + +### Lookups & Authorization + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/registry/lookup/domain/{domain}` | Find agents authorized for a domain | +| GET | `/api/registry/lookup/property` | Find agents by property identifier | +| GET | `/api/registry/lookup/agent/{agentUrl}/domains` | Get all domains for an agent | +| POST | `/api/registry/validate/product-authorization` | Validate agent product authorization | +| POST | `/api/registry/expand/product-identifiers` | Expand property selectors to identifiers | +| GET | `/api/registry/validate/property-authorization` | Real-time authorization check | + +Authorization validation checks both sides: the publisher's `adagents.json` (does it authorize this agent with the claimed `delegation_type`?) and the operator's `brand.json` (does it declare this property with a matching `relationship`?). + +### Validation Tools + +| Method | Path | Description | +|--------|------|-------------| +| POST | `/api/adagents/validate` | Validate adagents.json for a domain | +| POST | `/api/adagents/create` | Generate adagents.json content | + +### Search + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/search` | Search across brands, publishers, and properties | +| GET | `/api/manifest-refs/lookup` | Find manifest references for a domain | + +### Agent Probing + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/public/discover-agent` | Probe an agent URL for capabilities | +| GET | `/api/public/agent-formats` | Get canonical `creative.supported_formats[]` capabilities from an agent | +| GET | `/api/public/agent-products` | Get products from a sales agent | +| GET | `/api/public/validate-publisher` | Validate a publisher domain | + +## Activity history + +`GET /api/brands/history?domain={domain}` and `GET /api/properties/history?domain={domain}` return the edit history for a registry entry, newest first. These are public endpoints — no authentication required. + +```json Response +{ + "domain": "acmecorp.com", + "total": 3, + "revisions": [ + { + "revision_number": 3, + "editor_name": "Pinnacle Media", + "edit_summary": "Updated logo URL", + "source": "community", + "is_rollback": false, + "created_at": "2026-03-01T12:34:56Z" + }, + { + "revision_number": 2, + "editor_name": "system", + "edit_summary": "API: enriched via Brandfetch", + "source": "enriched", + "is_rollback": false, + "created_at": "2026-02-15T08:00:00Z" + } + ] +} +``` + +Entries with `editor_name: "system"` were written by automated enrichment. When `is_rollback` is `true`, `rolled_back_to` contains the revision number that was restored. Pagination uses `limit` (max 100) and `offset` query parameters. + +## Anti-abuse and anti-homograph controls + +Because `/api/brands/save`, `/api/properties/save`, and the `adagents` validation endpoints accept domain strings from authenticated member organizations, the hosted registry applies a layered floor of anti-abuse controls at save time. These are operational behaviors of the AgenticAdvertising.org registry in the 3.x era — not a new wire surface — and exist so that typosquats, confusable lookalikes, and drive-by brand hijacks cannot get written into the index by a single authenticated caller. + +- **Domain normalization (IDNA 2008 + confusable detection).** Save endpoints SHOULD apply IDNA 2008 to normalize internationalized domain names to ASCII before persistence, and SHOULD then run Unicode confusable-detection (for example, ICU `uspoof` or equivalent) against two corpora: (1) already-registered entries in the index, and (2) a curated high-value-brand deny list maintained by the registry operator. The deny list catches typosquats of well-known brands before those brands themselves are registered (e.g., a `g00gle.com` submission collides with the deny-list entry even if Google has not yet claimed an index row). Ambiguous submissions — mixed-script labels, homograph collisions, disallowed Unicode classes — SHOULD be rejected or flagged for human review rather than silently committed. +- **Ownership proof before commit.** Save endpoints MUST require evidence of domain control before a **new** brand or property entry is committed to the index — this is the threat that motivates the control, since an attacker with a compromised member API key would otherwise be free to bulk-register fresh confusable variants that have no prior entry to conflict with. For **revisions** to an existing community-source entry by the same authenticated organization, re-proof SHOULD be required on a rolling basis (for example, once the prior proof is older than 90 days) but MAY be skipped within that window. Accepted proofs are either a DNS TXT record at `_adcp-owner.{domain}` matching a server-issued nonce, or an HTTP challenge hosted at `/.well-known/adcp-ownership.txt` on the domain. Nonces MUST be single-use, scoped to the `(organization, domain)` pair, and MUST expire within **15 minutes** of issuance; verification MUST consume the nonce on success and invalidate it on failure. A leaked or unused nonce after expiry is dead. Revisions to an existing **authoritative** entry (i.e., one backed by `brand.json` / `adagents.json`) continue to follow the 409 Conflict semantics in [Save brand](#save-brand) and [Save property](#save-property); ownership proof covers the community-source save path. +- **Per-organization rate limits on saves.** In addition to the per-IP rate limits documented in [Rate Limits](#rate-limits), save endpoints SHOULD apply per-organization limits so that a single compromised API key cannot bulk-register confusable variants. The hosted implementation uses a burst-tolerant cap (indicative: tens of saves per hour per org, low-hundreds per day per org); callers exceeding the per-org bucket receive `429 Too Many Requests`. + +These controls are enforced by the hosted AgenticAdvertising.org registry. Self-hosted mirrors consuming the [Change Feed](#change-feed) rely on the hosted registry's save-time checks and do not re-run them — which is consistent with the feed's advisory-identity posture (see `specs/registry-change-feed.md` §Advisory identity material): the feed is change-detection, not a trust anchor, and the publisher's own `adagents.json` pin remains the authoritative identity source (see [`adagents.json` §`signing_keys`](/dist/docs/3.2.0-beta.4/governance/property/adagents#signing_keys)). Operators running an alternative registry implementation SHOULD apply equivalent save-time controls before accepting community-source writes. + +## Authentication + +Public endpoints (resolution, discovery, search) require no authentication. Write endpoints accept either an **organization API key** (server-to-server) or a **user JWT** obtained via OAuth 2.1 (interactive / agent clients). Both are sent in the `Authorization: Bearer ...` header. + +### Option A: Organization API key + +Long-lived, org-scoped. Best for server-to-server integrations where no user is present. + +1. Sign in at [agenticadvertising.org/dashboard/api-keys](https://agenticadvertising.org/dashboard/api-keys) +2. Click **Create key** and copy the generated key + +Pass the key in the `Authorization` header: + +``` +Authorization: Bearer sk_... +``` + +### Option B: User SSO via OAuth 2.1 + +Short-lived, user-scoped. Best for agent clients (MCP, AI assistants, custom apps) where a human is signing in to AAO. A single token works against both `/mcp` and the REST API. + +Discovery follows [RFC 8414](https://datatracker.ietf.org/doc/html/rfc8414) and [RFC 9728](https://datatracker.ietf.org/doc/html/rfc9728): + +- Authorization server metadata: `GET /.well-known/oauth-authorization-server` +- Protected-resource metadata (REST API): `GET /.well-known/oauth-protected-resource/api` +- Protected-resource metadata (MCP): `GET /.well-known/oauth-protected-resource/mcp` + +The flow is authorization code with PKCE. Dynamic client registration ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)) is available at `/register`. Users authenticate via AuthKit; the token is a WorkOS-signed JWT. + +``` +Authorization: Bearer <jwt> +``` + +A valid user JWT proves identity, not entitlement. Endpoints gated on organization membership or admin role (most write endpoints) still return `403` if the authenticated user lacks the required standing. + +Community-mirror submissions are the exception to direct role rejection: `PUT /api/registry/mirrors/{platform}` accepts any authenticated organization. A registry moderator or AgenticAdvertising.org administrator publishes immediately; other callers create a pending proposal and receive `202 Accepted` plus `Location`, `status_url`, and `proposal_digest`. Review decisions must echo that digest, and approval fails if the public mirror changed since submission. Contributor proposals are limited to 1 MiB and 2,000 catalog items. This keeps community contribution open without allowing an organization credential to publish a global fallback catalog on another platform's behalf without bounded, revision-safe review. + +### Authenticated endpoints + +These endpoints require a valid API key. + +#### Save brand + +`POST /api/brands/save` + +Save or update a community brand in the registry. For existing brands, creates a revision-tracked edit. Cannot edit authoritative brands managed via `brand.json` — those return `409 Conflict`. + +**Request body:** + +```json +{ + "domain": "acmecorp.com", + "brand_name": "Acme Corp", + "brand_manifest": { + "name": "Acme Corp", + "description": "A fictional company", + "logos": [{ "url": "https://acmecorp.com/logo.svg", "tags": ["icon"] }], + "colors": [{ "hex": "#FF5733", "type": "accent" }] + } +} +``` + +`domain` and `brand_name` are required. `brand_manifest` (brand identity data) is optional. The brand's `source` is set to `"community"` by the server. Domains are normalized (protocol stripped, lowercased). + +<CodeGroup> + +```bash cURL +curl -X POST "https://agenticadvertising.org/api/brands/save" \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{"domain":"acmecorp.com","brand_name":"Acme Corp"}' +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/brands/save", + { + method: "POST", + headers: { + "Authorization": "Bearer YOUR_API_KEY", + "Content-Type": "application/json", + }, + body: JSON.stringify({ + domain: "acmecorp.com", + brand_name: "Acme Corp", + }), + } +); +const result = await res.json(); +``` + +```python Python +import requests + +result = requests.post( + "https://agenticadvertising.org/api/brands/save", + headers={"Authorization": "Bearer YOUR_API_KEY"}, + json={"domain": "acmecorp.com", "brand_name": "Acme Corp"}, +).json() +``` + +</CodeGroup> + +```json Response (create) +{ + "success": true, + "message": "Brand \"Acme Corp\" saved to registry", + "domain": "acmecorp.com", + "id": "br_abc123" +} +``` + +```json Response (update) +{ + "success": true, + "message": "Brand \"Acme Corp\" updated in registry (revision 2)", + "domain": "acmecorp.com", + "id": "br_abc123", + "revision_number": 2 +} +``` + +#### Save property + +`POST /api/properties/save` + +Save or update a hosted property in the registry. For existing properties, creates a revision-tracked edit. Cannot edit authoritative properties managed via `adagents.json` — those return `409 Conflict`. + +This is an identity-only write surface: the stored document always carries `authorized_agents: []`. Sales authorization lives solely in the publisher's own origin `adagents.json` — the community registry cannot mint or carry it — so any `authorized_agents` sent in the request body is ignored. + +**Request body:** + +```json +{ + "publisher_domain": "examplepub.com", + "properties": [ + { "type": "website", "name": "Example Publisher" } + ], + "contact": { + "name": "Ad Ops", + "email": "adops@examplepub.com" + } +} +``` + +`publisher_domain` is required. `properties` (each requiring `type` and `name`) and `contact` are optional. Domains are normalized (protocol stripped, lowercased). + +<CodeGroup> + +```bash cURL +curl -X POST "https://agenticadvertising.org/api/properties/save" \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "publisher_domain": "examplepub.com", + "properties": [{"type": "website", "name": "Example Publisher"}] + }' +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/properties/save", + { + method: "POST", + headers: { + "Authorization": "Bearer YOUR_API_KEY", + "Content-Type": "application/json", + }, + body: JSON.stringify({ + publisher_domain: "examplepub.com", + properties: [{ type: "website", name: "Example Publisher" }], + }), + } +); +const result = await res.json(); +``` + +```python Python +import requests + +result = requests.post( + "https://agenticadvertising.org/api/properties/save", + headers={"Authorization": "Bearer YOUR_API_KEY"}, + json={ + "publisher_domain": "examplepub.com", + "properties": [{"type": "website", "name": "Example Publisher"}], + }, +).json() +``` + +</CodeGroup> + +```json Response (create) +{ + "success": true, + "message": "Hosted property created for examplepub.com", + "id": "prop_xyz789" +} +``` + +```json Response (update) +{ + "success": true, + "message": "Property 'examplepub.com' updated (revision 2)", + "id": "prop_xyz789", + "revision_number": 2 +} +``` + +#### Change feed + +`GET /api/registry/feed` + +Poll a cursor-based feed of registry changes. Use this to keep a local copy of the registry in sync without re-fetching the full dataset. Events are ordered by UUID v7 `event_id`, providing monotonic cursor progression. The feed retains events for 90 days — expired cursors return `410 Gone`. Each response includes `freshness` metadata so consumers can measure feed lag for the requested type filter. + +**Schema:** [`core/registry-feed-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/registry-feed-response.json) wraps [`core/registry-event.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/registry-event.json) items. + +**Query parameters:** + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `cursor` | UUID | — | Resume after this event ID. Omit for the earliest available events. | +| `types` | string | — | Comma-separated event type filters. Supports glob patterns (e.g. `property.*`). | +| `limit` | number | 100 | Max events per page (1–10,000). | + +**Event types:** + +| Type | Description | +|------|-------------| +| `property.created` | A new property was added to the registry | +| `property.updated` | Property metadata changed | +| `property.merged` | Two property records were merged | +| `property.stale` | Property failed re-crawl validation | +| `property.reactivated` | A stale property passed re-crawl | +| `collection.created` | A new publisher collection was added to the registry | +| `collection.updated` | Collection metadata or distribution identifiers changed | +| `collection.merged` | Two collection records were merged | +| `collection.removed` | A collection is no longer visible in the publisher's authoritative catalog | +| `agent.discovered` | A new `agent_url` appeared in a publisher's `adagents.json` (authorization graph; does not imply the agent is in `/api/registry/agents`) | +| `agent.removed` | An agent was removed from the registry | +| `agent.profile_updated` | Agent inventory profile changed | +| `agent.compliance_changed` | Agent compliance or verification status changed | +| `agent.verification_earned` | Agent earned an AAO Verified badge | +| `agent.verification_lost` | Agent lost an AAO Verified badge | +| `publisher.adagents_discovered` | A publisher's adagents.json was discovered and projected into the registry | +| `publisher.adagents_changed` | A semantic field of a publisher's adagents.json changed, including a formats-only or placements-only revision. The payload includes `changed_fields`, `format_count`, and `placement_count` on newly emitted 3.2 events. | +| `authorization.granted` | An agent was authorized for a property | +| `authorization.revoked` | An authorization was removed | +| `authorization.modified` | An authorization stayed visible, but externally visible metadata changed (including rotation of `signing_keys`) | + +`authorization.*` payloads carry `signing_keys` — the publisher-pinned JWK set from `authorized_agents[*].signing_keys` in `adagents.json`. Consumers verifying inbound TMP signatures key on `kid → JWK`; null when the publisher declared no keys, in which case consumers fall back to the agent-hosted JWKS per [spec R-2](/dist/docs/3.2.0-beta.4/governance/property/adagents#signing_keys). Note that per `specs/registry-change-feed.md` §Advisory identity material the feed is change-detection, not a trust anchor: consumers MUST re-verify against the publisher's own `adagents.json` before acting on identity changes. + +<CodeGroup> + +```bash cURL +curl "https://agenticadvertising.org/api/registry/feed?types=property.*&limit=50" \ + -H "Authorization: Bearer YOUR_API_KEY" +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/registry/feed?types=property.*&limit=50", + { headers: { Authorization: "Bearer YOUR_API_KEY" } } +); +const feed = await res.json(); +// Store feed.cursor for next poll +``` + +```python Python +import requests + +feed = requests.get( + "https://agenticadvertising.org/api/registry/feed", + headers={"Authorization": "Bearer YOUR_API_KEY"}, + params={"types": "property.*", "limit": 50}, +).json() +# Store feed["cursor"] for next poll +``` + +</CodeGroup> + +The crawler compares every semantic top-level field of the normalized document. Changes confined to `formats[]` or `placements[]` therefore emit `publisher.adagents_changed`; changes only to transport/version metadata (`$schema` or `last_updated`) do not. Consumers may use `changed_fields` to target their refresh, but should re-resolve every field they depend on when reading an older retained event that lacks this field. **3.2 migration note:** handlers that previously reacted only to `agents_added`, `agents_removed`, `properties_added`, or `properties_removed` should also inspect `changed_fields` — a formats-only or placements-only revision emits this event with those count fields unchanged and `changed_fields` set to `["formats"]` or `["placements"]`. + +```json Response +{ + "events": [ + { + "event_id": "019539a0-1234-7000-8000-000000000001", + "event_type": "property.created", + "entity_type": "property", + "entity_id": "019539a0-b1c2-7000-8000-000000000002", + "payload": { + "property_rid": "019539a0-b1c2-7000-8000-000000000002", + "classification": "property", + "source": "contributed", + "identifiers": [ + { "type": "domain", "value": "streamer.example.com" } + ] + }, + "actor": "crawler", + "created_at": "2026-03-31T10:00:00.000Z" + } + ], + "cursor": "019539a0-1234-7000-8000-000000000001", + "has_more": true, + "freshness": { + "generated_at": "2026-03-31T10:00:15.000Z", + "latest_event_created_at": "2026-03-31T10:00:00.000Z", + "lag_seconds": 15, + "retention_days": 90 + } +} +``` + +When `has_more` is `true`, pass the returned `cursor` value in the next request to continue polling. When `false`, you've reached the end of the current feed — poll again later with the same cursor to pick up new events. + +`latest_event_created_at` is the newest matching event currently visible to the feed. `lag_seconds` is computed against `generated_at`; alert on it according to your own mirror freshness target. + +`GET /api/registry/feed/stream` provides the same feed pages over Server-Sent Events. Reconnect with your last persisted cursor after disconnects. The stream emits `event: feed` with the same JSON shape shown above and `event: heartbeat` while caught up. Cursors are tied to the same logical `types` subscription; changing filters while reusing a cursor can skip events that were filtered out previously. The stream carries the resume cursor in JSON `data.cursor`, not SSE `id`, so browser `EventSource` clients must reconnect with `?cursor=...`. + +If the cursor has expired (older than 90 days or not found), the response is `410 Gone`: + +```json 410 Gone +{ + "error": "cursor_expired", + "message": "Cursor is older than 90-day retention window. Re-bootstrap from /registry/agents/search, /catalog, and /catalog/collections/sync." +} +``` + +#### Agent search + +`GET /api/registry/agents/search` + +Search agents by inventory profile — channels, markets, content categories, property types, and more. Filters use AND across dimensions and OR within a dimension. Results are ranked by a relevance score based on filter match breadth, inventory depth, and TMP support. + +**Query parameters:** + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `channels` | CSV | — | Filter by channel (e.g. `ctv,olv,display`) | +| `property_types` | CSV | — | Filter by property type (e.g. `ctv_app,website`) | +| `markets` | CSV | — | Filter by market/country code (e.g. `US,GB`) | +| `categories` | CSV | — | Filter by IAB content category (e.g. `IAB-7,IAB-7-1`) | +| `tags` | CSV | — | Filter by tag (e.g. `premium,brand_safe`) | +| `delivery_types` | CSV | — | Filter by delivery type (e.g. `guaranteed,programmatic`) | +| `has_tmp` | boolean | — | Require TMP support (`true` or `false`) | +| `min_properties` | number | — | Minimum number of properties in inventory | +| `cursor` | string | — | Pagination cursor from a previous response | +| `limit` | number | 50 | Max results per page (1–200) | + +Each CSV parameter accepts up to 100 values. + +<CodeGroup> + +```bash cURL +curl "https://agenticadvertising.org/api/registry/agents/search?channels=ctv,olv&markets=US&has_tmp=true" \ + -H "Authorization: Bearer YOUR_API_KEY" +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/registry/agents/search?channels=ctv,olv&markets=US&has_tmp=true", + { headers: { Authorization: "Bearer YOUR_API_KEY" } } +); +const agents = await res.json(); +``` + +```python Python +import requests + +agents = requests.get( + "https://agenticadvertising.org/api/registry/agents/search", + headers={"Authorization": "Bearer YOUR_API_KEY"}, + params={"channels": "ctv,olv", "markets": "US", "has_tmp": "true"}, +).json() +``` + +</CodeGroup> + +```json Response +{ + "results": [ + { + "agent_url": "https://ads.streamhaus.example.com", + "channels": ["ctv", "olv"], + "property_types": ["ctv_app", "website"], + "markets": ["US", "GB", "CA"], + "categories": ["IAB-7", "IAB-7-1"], + "tags": ["premium"], + "delivery_types": ["guaranteed"], + "format_kinds": ["video_hosted", "video_vast"], + "property_count": 42, + "publisher_count": 3, + "has_tmp": true, + "category_taxonomy": null, + "relevance_score": 0.92, + "matched_filters": ["channels", "markets"], + "updated_at": "2026-03-31T10:00:00.000Z" + } + ], + "cursor": "MC45Mjpodh...", + "has_more": false +} +``` + +The `matched_filters` array shows which filter dimensions matched, useful for understanding why a result was returned. The `relevance_score` combines filter match breadth, `ln(property_count + 1)` weighted at 0.1, and a 0.05 boost for TMP support. + +#### Crawl request + +`POST /api/registry/crawl-request` + +Request an immediate re-crawl of a publisher domain. Use this after updating an `adagents.json` file so the registry picks up changes without waiting for the next scheduled crawl. The crawl runs asynchronously — the endpoint returns `202 Accepted` immediately. + +Rate-limited to one request per domain every 5 minutes and 30 requests per user per hour. + +**Request body:** + +```json +{ + "domain": "examplepub.com" +} +``` + +`domain` is required. Domains are normalized (lowercased, trimmed). The endpoint validates the domain format and performs a DNS lookup to reject private/reserved IP addresses. + +<CodeGroup> + +```bash cURL +curl -X POST "https://agenticadvertising.org/api/registry/crawl-request" \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{"domain":"examplepub.com"}' +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/registry/crawl-request", + { + method: "POST", + headers: { + "Authorization": "Bearer YOUR_API_KEY", + "Content-Type": "application/json", + }, + body: JSON.stringify({ domain: "examplepub.com" }), + } +); +const result = await res.json(); // 202 +``` + +```python Python +import requests + +result = requests.post( + "https://agenticadvertising.org/api/registry/crawl-request", + headers={"Authorization": "Bearer YOUR_API_KEY"}, + json={"domain": "examplepub.com"}, +).json() +``` + +</CodeGroup> + +```json 202 Accepted +{ + "message": "Crawl request accepted", + "domain": "examplepub.com" +} +``` + +```json 429 Too Many Requests +{ + "error": "Rate limit exceeded for this domain", + "retry_after": 245 +} +``` + +`retry_after` is the number of seconds to wait before retrying. + +#### Submit brand (legacy) + +`POST /api/brands/discovered/community` + +Submit a brand for review. This endpoint predates `/api/brands/save` — prefer the save endpoint for new integrations. + +### Error responses + +| Status | Description | +|--------|-------------| +| 400 | Missing required fields or invalid domain | +| 401 | Missing or invalid API key | +| 409 | Cannot edit an authoritative brand/property (managed via `brand.json` or `adagents.json`) | +| 410 | Cursor expired (change feed — older than 90-day retention window) | +| 429 | Rate limit exceeded | + +## Protocol vs REST API + +The AdCP protocol defines MCP and A2A tasks for agent-to-agent communication (e.g. `get_products`, `create_media_buy`). The registry REST API is separate — it provides HTTP endpoints for looking up entities in the AgenticAdvertising.org registry. + +**Use the REST API** for discovery and authorization: +- Resolve brand or property domains before making protocol calls +- Discover which agents exist and what they're authorized for +- Validate authorization in real time during ad serving +- Build integrations that browse or search the registry + +**Use MCP/A2A tasks** for transactional operations: +- Fetching products from a sales agent (`get_products`) +- Creating media buys (`create_media_buy`) +- Building creatives (`build_creative`) +- Getting signals (`get_signals`) + +A typical integration uses both: resolve a publisher domain via the registry API, then call the authorized agent's MCP endpoint to transact. diff --git a/dist/docs/3.2.0-beta.4/registry/maintaining-your-agent.mdx b/dist/docs/3.2.0-beta.4/registry/maintaining-your-agent.mdx new file mode 100644 index 0000000000..f33814973f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/registry/maintaining-your-agent.mdx @@ -0,0 +1,154 @@ +--- +title: Maintaining your agent +sidebarTitle: Maintaining your agent +description: "Operator lifecycle guide — how AAO Verified heartbeats work, how to read dashboard status, how to re-probe, and how to interpret comply reports." +"og:title": "AdCP — Maintaining your agent" +--- + +Once your agent is registered in the AAO registry, your responsibilities don't end at enrollment. The registry continuously monitors your agent's protocol conformance via the AAO Verified compliance heartbeat and reflects the current health of your listing in the dashboard. This page covers the full operator lifecycle: what the heartbeat tests, how to read dashboard status indicators, how to manually trigger a re-probe, and how to interpret a comply report. + +## Registration recap + +There is one path into the AAO registry: **an AAO member explicitly enrolls the agent on their member profile**. See [Registering an agent](/dist/docs/3.2.0-beta.4/registry/registering-an-agent) for the full enrollment flow — dashboard or `PUT /api/me/member-profile`, end-to-end in under five minutes. + +After enrollment your agent gets: + +- A catalog entry in `/api/registry/agents` with `visibility: "members_only"` (upgrade to `public` on a paid AAO tier) +- Eligibility for the **AAO Verified** badge, issued automatically once your agent passes the relevant storyboards on the compliance heartbeat + +The next crawler probe will resolve your agent's type from its `get_adcp_capabilities` response — you do not need to set or maintain the type field manually. + +## How the AAO Verified heartbeat works + +AAO continuously re-evaluates your agent's conformance on an approximately **1-hour heartbeat** cadence. Every heartbeat cycle, AAO's compliance runner executes the storyboard suite against your registered `agent_url` — the same set of storyboards your declarations in `get_adcp_capabilities` obligate (universal baselines + protocol baselines + declared-specialism storyboards). + +**What the heartbeat tests:** + +- AdCP wire format and task shape +- Error semantics and error envelopes +- State-machine transitions across the media-buy or applicable lifecycle +- Declared specialisms map to working tools +- Schema conformance and filter behavior +- Idempotency semantics + +The heartbeat is not a registry crawl. A crawl re-reads your `adagents.json` or capability snapshot and updates registry metadata. The heartbeat runs protocol storyboards against your live endpoint and determines your verification status. The two are independent operations. + +### Verified (Spec) vs Verified (Sandbox) + +Both qualifiers run the same storyboards on the same ~1h heartbeat. The difference is where the runner targets: + +| Qualifier | Runner targets | What it attests | +|---|---|---| +| **(Spec)** | Any endpoint you register — test deployment, local dev, sandbox-only stack | AdCP wire format and protocol semantics are correct | +| **(Sandbox)** | Your registered **production** `agent_url` with `account.sandbox: true` on every request | Your production code path honors sandbox flagging with zero real-world side effects | + +See [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) for complete eligibility and attestation details. + +## Dashboard status indicators + +The agent dashboard at [agenticadvertising.org/dashboard/agents](https://agenticadvertising.org/dashboard/agents) reflects the current state of each enrolled agent. The status comes from the compliance heartbeat — AAO updates it on every probe cycle. + +| Status | What it means | Operator action | +|---|---|---| +| **Active** | All storyboards are passing on the current heartbeat. Your AAO Verified badge is live and auto-renewing. | No action needed. Monitor for regressions after deploys. | +| **Degraded** | At least one storyboard started failing. The badge **continues to render** while a 48-hour grace period runs. | Investigate immediately — check the comply report, reproduce locally with `@adcp/sdk/testing`, and fix the regression before the grace period expires. | +| **Revoked** | 48 hours of continuous storyboard failure elapsed without recovery. The qualifier has dropped from the badge. (Sandbox), if separately held, is unaffected — the two axes are independent. | Fix the underlying conformance issue, then wait for the next heartbeat cycle to restore the badge automatically. | +| **Recovery** | Storyboards are passing again after a prior failure. The badge qualifier reissues automatically. | No action needed beyond confirming the fix is stable. | + +<Note> +**Grace period math.** The Degraded state begins on the **first** failed heartbeat. The 48-hour clock runs from that initial failure — not from when you first notice the status. Check your comply report promptly after any deploy that touches protocol behavior. +</Note> + +**Membership lapse** revokes the entire badge immediately, regardless of storyboard results. AAO Verified is contingent on active AAO membership at an API-access tier. + +## How to manually trigger a re-probe + +AAO runs probes automatically on the ~1h heartbeat, but there are three ways to refresh agent state: + +### Registry crawl (metadata update) + +If you've updated your `adagents.json`, `brand.json`, or capability snapshot and want the registry to pick up changes without waiting for the next scheduled crawl, use the crawl-request endpoint: + +<CodeGroup> + +```bash cURL +curl -X POST "https://agenticadvertising.org/api/registry/crawl-request" \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{"domain":"yourcompany.com"}' +``` + +```javascript JavaScript +const res = await fetch( + "https://agenticadvertising.org/api/registry/crawl-request", + { + method: "POST", + headers: { + "Authorization": "Bearer YOUR_API_KEY", + "Content-Type": "application/json", + }, + body: JSON.stringify({ domain: "yourcompany.com" }), + } +); +// Returns 202 Accepted — crawl runs asynchronously +``` + +</CodeGroup> + +This runs asynchronously and returns `202 Accepted`. Rate-limited to one request per domain every 5 minutes and 30 requests per user per hour. + +**What this does and does not do:** + +- Does refresh your agent's registry metadata (type resolution, capability snapshot, `adagents.json` authorization graph) +- Does **not** trigger a compliance heartbeat re-run — the heartbeat storyboards are not re-executed by this endpoint + +### Dashboard Refresh button + +In the agent card on [agenticadvertising.org/dashboard/agents](https://agenticadvertising.org/dashboard/agents), the **Recheck status** button calls `/api/registry/agents/{encodedUrl}/refresh`. It re-reads your agent's registry metadata and, when you own the agent and the capability probe succeeds, runs the full compliance storyboard suite synchronously before updating the dashboard view. + +### Compliance requeue + +The **Requeue comply** button does not run the storyboard suite immediately. It clears `last_checked_at` so the agent is picked up by the next scheduled heartbeat cycle, which can take up to about 1 hour. + +<Note> +If you need to confirm a fix immediately, use **Recheck status** or the dashboard **Test** flow rather than **Requeue comply**. For local reproduction, run the same storyboards with `@adcp/sdk/testing`. +</Note> + +## How to read a comply report + +The comply report appears in your agent's dashboard panel under the AAO Verified section. It shows the result of the most recent heartbeat run. + +### Report structure + +| Field | What it means | +|---|---| +| **Overall verdict** | `passed` — all applicable storyboards passed. `failed` — at least one storyboard failed. `degraded` — first failure detected; grace period running. | +| **Storyboard results** | Per-storyboard breakdown. Each entry has a `verdict` and an optional `failure_reason`. | +| **Specialism coverage** | Which declared specialisms were tested, and which storyboards each obligates. | +| **Heartbeat timestamp** | When this probe ran. | + +### Per-storyboard verdicts + +| Verdict | Meaning | +|---|---| +| `passed` | The storyboard's assertions all evaluated true against your agent's response. | +| `failed` | At least one assertion failed. The `failure_reason` field identifies which assertion and what the runner received. | +| `skipped` | The storyboard does not apply to your declared specialisms or current protocol version. | +| `not_applicable` | The storyboard tests an operation your agent has not declared support for — graded `not_applicable` rather than `failed`. Common for optional tools and controller-only storyboards. | + +### Debugging a failure + +1. Note the storyboard name from the failed row (e.g. `signed_requests`, `pagination_integrity`, `comply-controller-mode-gate`). +2. Find the storyboard definition in the [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog). +3. Reproduce locally: + ```bash + npx @adcp/sdk@latest storyboard run signed_requests --agent-url https://your-agent-url.example/mcp + ``` +4. The local runner gives the same assertions as the heartbeat. Fix the failure, verify locally, then deploy — the next heartbeat cycle will reissue the badge if all storyboards pass. + +## Related + +- [Registering an agent](/dist/docs/3.2.0-beta.4/registry/registering-an-agent) — the enrollment path, fields, and programmatic registration. +- [Registry API overview](/dist/docs/3.2.0-beta.4/registry) — `POST /api/registry/crawl-request` and the full endpoint catalog. +- [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) — full lifecycle states, axis semantics, and badge embedding. +- [Compliance Catalog](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog) — the storyboard index, per-specialism coverage, and how to run storyboards locally. diff --git a/dist/docs/3.2.0-beta.4/registry/registering-an-agent.mdx b/dist/docs/3.2.0-beta.4/registry/registering-an-agent.mdx new file mode 100644 index 0000000000..1cf816498d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/registry/registering-an-agent.mdx @@ -0,0 +1,116 @@ +--- +title: Registering an agent +sidebarTitle: Registering an agent +description: "How agents appear in the AAO registry — the single enrollment path and what AAO membership unlocks." +"og:title": "AdCP — Registering an agent" +--- + +The AdCP registry catalog (`/api/registry/agents`, `/api/registry/publishers`) contains only AAO-attested, member-enrolled agents. To appear in the catalog, an AAO member must explicitly enroll the agent on their member profile. + +## How agents end up in the registry + +There is one path: **an AAO member adds the agent to their member profile** via the dashboard or `PUT /api/me/member-profile`. End-to-end via the dashboard: under five minutes. + +1. **Sign in or sign up.** Go to [agenticadvertising.org/auth/login](https://agenticadvertising.org/auth/login). New here? Use **Sign up** to create your account, then accept your AAO organization invite (or [start a membership](https://agenticadvertising.org/membership) if your org isn't on AAO yet). +2. **Open the agents dashboard.** Once signed in, go to [agenticadvertising.org/dashboard/agents](https://agenticadvertising.org/dashboard/agents). The URL auto-resolves your org context. +3. **Click `+ Register agent`** in the top-right of the page. (On a brand-new org with no agents yet, the empty-state CTA reads **Register your first agent** and triggers the same flow.) +4. **Talk to Addie.** The button drops you into chat with Addie pre-loaded with the prompt *"Help me register my agent."* Addie will walk you through: + - **Agent URL** — e.g. `https://agent.yourcompany.com/mcp` + - **Display name** (optional) + - **Auth method** — pick one: None · Static bearer · Static basic · OAuth client credentials. *(Interactive OAuth user authorization is configured separately — register with **None** here, then click **Authorize** on the agent card to sign in.)* + - **Auth fields** — only the ones your chosen method needs (bearer token, or `token_endpoint` + `client_id` + `client_secret` for client credentials, etc.) + - **Protocol** — defaults to MCP; Addie asks only if your URL is ambiguous +5. **Done.** Addie calls `save_agent` and your agent lands in the registry catalog with `visibility: "members_only"` (visible to other paying AAO members — Professional, Builder, Member, or Leader; not publicly listed). +6. **Optional — go public.** Back on `/dashboard/agents`, change the agent's visibility from **Members only** to **Public**. Public visibility requires a paid AAO tier (Professional, Builder, Member, or Leader) and a primary brand domain on your member profile so the agent can be added to your `brand.json`. + +**Type is resolved server-side.** You will not be asked for the agent's type — type (`brand`, `sales`, `buying`, `measurement`, `creative`, `signals`, etc.) is resolved from the agent's capability snapshot. `resolveAgentTypes()` reads the most recent snapshot from the crawler; if no snapshot exists yet, the type field saved is whatever the client supplied, and the next crawler probe overwrites it. Either way, you can't pin a wrong type permanently. + +**What this path attests:** the member has signed AAO terms; the URL, name, and contact are explicitly declared; the type is probe-verified. Visibility can be `public`, `members_only`, or `private` — see [Visibility](#visibility) below. + +There is no auto-population from crawled `adagents.json` files. Agents listed in third-party `adagents.json` files populate the publisher-authorization graph used by the Operator lookup endpoint (`GET /api/registry/operator?domain=X`), `/api/registry/lookup/domain`, and `hasValidAdagents`, but they do not create catalog entries. + +## Programmatic registration (for CI, scripts, agents) + +To register agents from CI, a deploy hook, or your own agent — without the dashboard or Addie — use the per-agent REST endpoints under `/api/me/agents`. They share the same visibility gate, server-side type resolution, and audit log as the dashboard path, so the `members_only` default, the `tier_required` check on `public`, and the type smuggle-protection all apply identically. + +Authenticate with a WorkOS API key (`Authorization: Bearer sk_…`) or an OAuth user JWT. Mint an API key under [agenticadvertising.org/dashboard/api-keys](https://agenticadvertising.org/dashboard/api-keys). + +| Endpoint | Purpose | +|---|---| +| `GET /api/me/agents` | List my registered agents | +| `POST /api/me/agents` | Register an agent | +| `PATCH /api/me/agents/{url}` | Update an agent | +| `DELETE /api/me/agents/{url}` | Remove an agent | + +The path parameter on PATCH and DELETE is the agent's `url`, URL-encoded (e.g. `https%3A%2F%2Fagent.example.com%2Fmcp`). `POST` is idempotent on `url`: new entries return `201`; re-posting the same `url` updates the existing entry and returns `200`. Each successful write returns `{ agent, warnings? }` — `warnings` lists any tier-driven visibility downgrades (e.g. an Explorer-tier caller asking for `public` is stored as `members_only` with a `visibility_downgraded` warning). + +### Prerequisites + +- An AAO member profile must already exist for your organization. Create one via the dashboard or `POST /api/me/member-profile` first; the agent endpoints return `404` until then. +- For `visibility: "public"`, your organization needs a paid AAO tier (Professional, Builder, Member, or Leader) and a `primary_brand_domain` set on the profile so the agent can be added to your `brand.json`. See [Visibility](#visibility) below. + +## What this means if you are not an AAO member + +You cannot self-register today. Your operator must be an AAO member to enroll your agent in the registry catalog. + +Crawl-discovered listings (your agent referenced in someone's `adagents.json`) populate the authorization graph used for property-authorization checks but do not create a catalog entry — `/api/registry/agents` is members-only. + +[Become a member](https://agenticadvertising.org/membership) to access the registration path. + +## Visibility + +Member-enrolled agents have one of three visibility levels: + +| Visibility | Who sees it | +|---|---| +| `public` | Anyone — anonymous calls to `/api/registry/agents` and `/api/registry/operator?domain=X` | +| `members_only` | AAO API-tier members on `/api/registry/operator?domain=X` | +| `private` | Profile owner only | + +The `/api/registry/operator?domain=X` endpoint is auth-aware: anonymous callers see only `public` agents; authenticated AAO API-tier callers see `members_only` agents; profile owners additionally see `private` agents. + +## Membership benefits + +| Capability | Description | +|---|---| +| Catalog visibility | Your agent appears in `/api/registry/agents` | +| Self-attest type, name, contact | You declare and edit the agent's identity | +| Edit your own listing | Profile owner controls all fields | +| `members_only` and `private` visibility | Scope agent visibility beyond `public` | +| AAO Verified badge | Eligible after passing storyboards | +| Storyboard test access | Run protocol-conformance tests against your agent | +| Compliance reporting | Reports against your agent's protocol use | +| Trust signal to consumers | "Member of AAO; signed terms; attested" | + +[Become a member](https://agenticadvertising.org/membership) to access the registered path. + +## Verifying how your agent appears + +Query the registry directly: + +<CodeGroup> + +```bash cURL +curl "https://agenticadvertising.org/api/registry/agents" \ + | jq '.agents[] | select(.url == "https://your-agent-url.example/mcp")' +``` + +```javascript JavaScript +const res = await fetch("https://agenticadvertising.org/api/registry/agents"); +const { agents } = await res.json(); +const yours = agents.find((a) => a.url === "https://your-agent-url.example/mcp"); +console.log(yours); +``` + +</CodeGroup> + +If your agent's URL is in the response, it is enrolled and `member` identifies the AAO organization that owns the listing. If it is not in the response, no AAO member has enrolled it — ask your operator to enroll it via their member profile, or [become a member](https://agenticadvertising.org/membership) and self-enroll. + +To check whether your agent is referenced in a publisher's `adagents.json` (for authorization purposes, separate from catalog enrollment), call `/api/registry/lookup/domain/{domain}` against the publisher's domain. + +## Related + +- [Registry overview](/dist/docs/3.2.0-beta.4/registry) — endpoint catalog, lookup flows, and brand resolution. +- `GET /api/registry/operator?domain=X` — auth-aware per-entity view of agents and authorizations. +- `GET /api/registry/agents` — full registry catalog. +- `POST /api/registry/crawl-request` - refresh a publisher's `adagents.json` mapping in the authorization graph. diff --git a/dist/docs/3.2.0-beta.4/signals/data-providers.mdx b/dist/docs/3.2.0-beta.4/signals/data-providers.mdx new file mode 100644 index 0000000000..86a8c8d12b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/data-providers.mdx @@ -0,0 +1,728 @@ +--- +title: Data Provider Guide +sidebarTitle: Data Providers +description: "Publish signal definitions as a data provider using adagents.json. Define signal value types, authorize signal agents, and enable AI-driven audience discovery and verification through AdCP." +"og:title": "AdCP — Data Provider Guide" +--- + +# Data Provider Guide + +This guide explains how data providers publish signal definitions via `adagents.json` `signals[]`, enabling AI agents to discover, verify authorization, and activate signals for advertising campaigns. + +## The Problem + +Data providers (Pinnacle Data, Meridian Analytics, Apex Segments, etc.) own valuable audience and contextual data, but integrating with the growing ecosystem of AI-powered advertising agents presents challenges: + +**Discovery is fragmented.** Each signals agent (Luminary Data, Nova DSP, etc.) needs custom integrations to know what signals you offer. There's no standard way for an AI agent to ask "what automotive purchase intent signals does Pinnacle Data have?" + +**Authorization is opaque.** When a buyer receives a signal from a signals agent, they can't verify that the agent is actually authorized to resell it. They have to trust the intermediary. + +**Signal semantics are inconsistent.** Without standardized definitions, an AI agent can't know whether "auto_intenders" is a binary segment, a propensity score, or a multi-value category—making it impossible to construct proper targeting expressions. + +**Scaling requires N×M integrations.** Every data provider needs custom integrations with every signals agent. This doesn't scale. + +## The Solution + +Published signal definitions solve these problems by letting data providers publish machine-readable descriptions of their signals at a well-known URL. This enables: + +- **Discovery**: AI agents can find signals via natural language ("find automotive purchase intent signals") or structured lookup +- **Authorization verification**: Buyers can verify authorization by checking the data provider's domain directly +- **Typed targeting**: Signal definitions include value types (binary, categorical, numeric) so agents can construct correct targeting expressions +- **Scalable partnerships**: Authorize agents once in `adagents.json`; as you add signals, authorized agents automatically have access + +## Overview + +Data providers own audience and contextual data (purchase intent, demographics, behavioral segments). The `signals[]` publishing model lets you publish your signals in a standardized format that: + +- Enables discovery via natural language queries +- Provides authorization verification for agents +- Describes signal characteristics (binary, categorical, numeric) +- Supports tag-based grouping for efficient authorization + +This follows the same pattern as publishers declaring properties - instead of "what ad placements exist," you're declaring "what signals exist." + +## The Parallel Pattern + +| Publishers | Data Providers | +|------------|----------------| +| Declare **properties** (websites, apps) | Declare **signals** (audiences, segments) | +| Authorize agents to **sell inventory** | Authorize agents to **resell signals** | +| Use `property_ids` / `property_tags` | Use `signal_ids` / `signal_tags` | +| Buyers verify via `publisher_domain` | Buyers verify via `data_provider_domain` | + +Both use `/.well-known/adagents.json` as the publishing mechanism. A single `adagents.json` file can declare both `properties` and `signals` simultaneously — see [Unified declaration model](/dist/docs/3.2.0-beta.4/governance/property/adagents#unified-declaration-model). + +## File Location + +Data providers host their published signal definitions at: + +``` +https://your-domain.com/.well-known/adagents.json +``` + +Following [RFC 8615](https://datatracker.ietf.org/doc/html/rfc8615) well-known URI conventions. + +## Basic Structure + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Pinnacle Auto Data", + "email": "partnerships@pinnacle-auto-data.com", + "domain": "pinnacle-auto-data.com" + }, + "signals": [ + { + "id": "likely_ev_buyers", + "name": "Likely EV Buyers", + "description": "Consumers modeled as likely to purchase an electric vehicle in the next 12 months", + "value_type": "binary", + "tags": ["automotive", "green"] + } + ], + "signal_tags": { + "automotive": { + "name": "Automotive Signals", + "description": "Vehicle-related audience segments" + }, + "green": { + "name": "Green/Sustainability", + "description": "Environmentally-conscious consumer segments" + } + }, + "authorized_agents": [ + { + "url": "https://signals-agent.example.com", + "authorized_for": "All automotive signals", + "authorization_type": "signal_tags", + "signal_tags": ["automotive"] + } + ], + "last_updated": "2025-01-15T10:00:00Z" +} +``` + +## Signal Definition + +Each signal in the `signals` array describes a targetable segment: + +The signal definition is not itself a `signal_ref`. In `adagents.json`, the hosting domain supplies the namespace, so the definition only needs its local `id`. A media-buy product that makes this provider-published signal selectable points back to it with `signal_ref: { "scope": "data_provider", "data_provider_domain": "<this adagents.json domain>", "signal_id": "<signals[].id>" }`. If a seller publishes its own `signals[]`, the seller can be the data-provider domain for these references; `scope: "data_provider"` means adagents.json-resolved, not necessarily third-party. + +### Required Fields + +| Field | Type | Description | +|-------|------|-------------| +| `id` | string | Unique identifier within your published `signals[]`. Pattern: `^[a-zA-Z0-9_-]+$` | +| `name` | string | Human-readable signal name | +| `value_type` | enum | Data type: `binary`, `categorical`, or `numeric` | + +### Optional Fields + +| Field | Type | Description | +|-------|------|-------------| +| `description` | string | Detailed description of what this signal represents | +| `tags` | array | Tags for grouping (lowercase, alphanumeric: `^[a-z0-9_-]+$`) | +| `allowed_values` | array | For categorical signals: valid values | +| `range` | object | For numeric signals: `{ min, max, unit }` | +| `demographic_predicate` | object | Authoritative demographic meaning for the signal. AdCP 3.2 supports canonical age bounds with explicit unknown-age membership. Names and taxonomy labels do not substitute for this field; age predicates require `restricted_attributes: ["age"]`. | +| `restricted_attributes` | array | Restricted attribute categories this signal touches (e.g., `["health_data"]`). Enables structural governance matching. | +| `policy_categories` | array | Policy categories this signal is sensitive for (e.g., `["children_directed"]`). Enables structural governance matching. | +| `taxonomy` | object | External taxonomy metadata for discovery, review, and translation. Does not change `value_type` or package targeting grammar. | +| `data_sources` | array | IAB Data Transparency Standard-aligned source categories used to compile the signal. | +| `methodology` | enum | How membership or attribute values were determined: `observed`, `declared`, `derived`, `inferred`, or `modeled`. | +| `modeling` | object | Required when `methodology` is `modeled` or `audience_expansion` is `true`. Includes seed source, training jurisdictions, AI risk class, and disclosure notes. | +| `countries` | array | ISO 3166-1 alpha-2 countries where the signal is applicable. | +| `consent_basis` | array | GDPR Article 6 lawful basis or consent basis for processing this signal's data. Use `countries`, `policy_categories`, and disclosure fields for non-GDPR obligations. | +| `data_subject_rights` | object | Per-signal rights-routing channels and commitments for access, erasure, objection, and related requests. Use this when routing or SLA varies by signal, upstream source, or custom/private signal context. | + +### Definition Enrichment + +Use enrichment fields when buyers, sellers, governance agents, or regulators need more than a name and value type: + +| Purpose | Fields | When to use | +|---------|--------|-------------| +| Discovery and taxonomy | `taxonomy`, `taxonomy.values`, `taxonomy.value_mappings`, `taxonomy.parent_match_behavior` | The signal maps to an external audience, content, retail-media, or provider-owned taxonomy. For categorical signals, `value_mappings` maps each package-targeting `allowed_values[]` string to a stable taxonomy node; each mapping value should match an `allowed_values[]` entry. | +| Source and methodology | `data_sources`, `methodology`, `segmentation_criteria`, `criteria_url`, `refresh_cadence`, `lookback_window`, `onboarder` | The provider wants DTS-style transparency. `onboarder` is required for offline or public-record sources. | +| Modeling and disclosure | `modeling`, `audience_expansion`, `device_expansion` | Required when `methodology` is `modeled` or `audience_expansion` is `true`. `device_expansion` is for deterministic cross-device expansion; probabilistic cross-device inference should use modeling. `modeling.training_data_jurisdictions` must be non-empty. If `modeling.disclosure.required` is `true`, `modeling.disclosure.jurisdictions` is required. | +| Privacy and governance | `countries`, `consent_basis`, `restricted_attributes`, `policy_categories`, `art9_basis` | The signal may be jurisdictionally limited, policy-sensitive, or subject to special-category review. | +| Rights routing | `data_subject_rights` | Rights requests route differently by signal or upstream source. Each routing block must include at least one channel supporting one or more of access, erasure, or objection. `response_sla_days` is the maximum response time for the declared channels. Signal definitions do not declare Global Privacy Control support, and consumers must not infer GPC handling from this routing block. | + +```json +{ + "id": "vehicle_ownership", + "name": "Current vehicle ownership", + "description": "Declared or inferred current household vehicle ownership.", + "value_type": "categorical", + "allowed_values": ["luxury_ev", "luxury_non_ev", "mid_range", "economy", "none"], + "taxonomy": { + "ref": "https://taxonomy.example.com/audience/v1", + "version": "1.0", + "values": [ + { "id": "auto.vehicle_ownership", "path": "Automotive > Vehicle ownership" } + ], + "value_mappings": [ + { + "value": "luxury_ev", + "taxonomy_value_id": "auto.vehicle_ownership.luxury_ev", + "path": "Automotive > Vehicle ownership > Luxury EV" + } + ], + "parent_match_behavior": "exact_only" + }, + "data_sources": ["online_survey", "transaction"], + "methodology": "derived", + "subject_type": "household", + "resolution_method": "mixed", + "countries": ["US"], + "consent_basis": ["consent"], + "data_subject_rights": { + "channels": [ + { + "rights": ["access", "erasure", "objection"], + "url": "https://privacy.pinnacle-data.example/requests", + "countries": ["US"] + } + ], + "response_sla_days": 30 + } +} +``` + +Taxonomy parent nodes do not imply targeting expansion by themselves. If `parent_match_behavior` is `descendants_supported`, the seller may expand known, version-pinned parent nodes internally, typically by ORing children in its execution system. Package targeting still uses the signal's declared `value_type`. + +### Publishing large definition resources + +Provider-published `adagents.json` is the authoritative definition surface, but +large external resources do not need to be duplicated in every `get_signals` +listing. For large taxonomies, long segmentation criteria, or +jurisdiction-specific disclosure text, publish stable pointers such as `taxonomy.ref`, +`criteria_url`, and `modeling.disclosure.jurisdictions[].disclosure_url`; use +`taxonomy.etag` when the taxonomy has its own freshness validator. For +provider-published public signals, the `signal_ref` already points to the +authoritative definition: fetch the provider's `/.well-known/adagents.json` +(following `authoritative_location` when present) and select the matching +`signals[].id`. Buyers cache the fetched `adagents.json` document by resolved +authoritative URL plus the existing `catalog_etag`, HTTP `ETag`/`Last-Modified`, +or a bounded TTL; clients must not key signal-definition caches by validator +alone. No signal-specific validator is required. Signal agents can then return +compact discovery listings while buyers fetch the full definition only when they +need the deeper review context. + +## Signal Value Types + +### Binary Signals + +User either matches or doesn't. Most common type. + +```json +{ + "id": "likely_ev_buyers", + "name": "Likely EV Buyers", + "value_type": "binary", + "tags": ["automotive", "purchase_intent"] +} +``` + +**Targeting**: Include or exclude users matching this signal. + +### Categorical Signals + +User has one of several possible values. + +```json +{ + "id": "vehicle_ownership", + "name": "Current Vehicle Ownership", + "value_type": "categorical", + "allowed_values": ["luxury_ev", "luxury_non_ev", "mid_range", "economy", "none"] +} +``` + +**Targeting**: Target users with specific values (e.g., "users who own a luxury EV or luxury non-EV"). + +### Numeric Signals + +User has a score or measurement within a range. + +```json +{ + "id": "purchase_propensity", + "name": "Auto Purchase Propensity", + "value_type": "numeric", + "range": { + "min": 0, + "max": 1, + "unit": "score" + } +} +``` + +**Targeting**: Target users within a value range (e.g., "propensity score > 0.7"). + +## Authorization Patterns + +### Pattern 1: Signal IDs (Direct References) + +Authorize specific signals by ID: + +Here `signal_ids` means local catalog IDs from this `adagents.json` `signals[]` array, not the deprecated `SignalId` object used by older Signals Protocol payloads. + +```json +{ + "authorized_agents": [ + { + "url": "https://premium-agent.example.com", + "authorized_for": "Premium automotive signals only", + "authorization_type": "signal_ids", + "signal_ids": ["likely_ev_buyers", "luxury_auto_intenders"] + } + ] +} +``` + +**Best for**: Specific, limited signal sets. Fine-grained control. + +### Pattern 2: Signal Tags (Efficient Grouping) + +Authorize all signals with certain tags: + +```json +{ + "authorized_agents": [ + { + "url": "https://full-signal-agent.example.com", + "authorized_for": "All automotive signals", + "authorization_type": "signal_tags", + "signal_tags": ["automotive"] + } + ] +} +``` + +**Best for**: Large signal sets. As you add signals with the tag, agents automatically get access. + +## Signal Tags + +The `signal_tags` object provides metadata for tags used in signals: + +```json +{ + "signal_tags": { + "automotive": { + "name": "Automotive Signals", + "description": "Vehicle ownership, purchase intent, and service signals" + }, + "premium": { + "name": "Premium Signals", + "description": "High-value segments with enhanced pricing" + } + } +} +``` + +**Why define tags?** +- Human-readable context for buyers exploring your signal definitions +- Enables efficient authorization ("all premium signals") +- Groups related signals for easier discovery + +## How Buyers Use Your Signal Definitions + +### 1. Discovery + +Buyers call `get_signals` on a signals agent. The agent may use your published definitions for: +- Natural language matching ("find automotive purchase intent signals") +- Structured lookup by `signal_ref` + +### 2. Authorization Verification + +When a buyer receives a signal, they can verify authorization: + +```json +{ + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-auto-data.com", + "signal_id": "likely_ev_buyers" + } +} +``` + +The buyer fetches `https://pinnacle-auto-data.com/.well-known/adagents.json` and checks: +1. Does the signal exist in the `signals` array? +2. Is the signals agent in `authorized_agents`? +3. Does the authorization cover this signal (by ID or tag)? + +### 3. Targeting + +Based on `value_type`, buyers construct targeting expressions: + +```json +// Binary targeting +{ + "signal_ref": { "scope": "data_provider", "data_provider_domain": "pinnacle-auto-data.com", "signal_id": "likely_ev_buyers" }, + "value_type": "binary", + "value": true +} + +// Categorical targeting +{ + "signal_ref": { "scope": "data_provider", "data_provider_domain": "pinnacle-auto-data.com", "signal_id": "vehicle_ownership" }, + "value_type": "categorical", + "values": ["luxury_ev", "luxury_non_ev"] +} + +// Numeric targeting +{ + "signal_ref": { "scope": "data_provider", "data_provider_domain": "pinnacle-auto-data.com", "signal_id": "purchase_propensity" }, + "value_type": "numeric", + "min_value": 0.7 +} +``` + +## Local and External Signal References + +Not all signals come from third-party data providers. Sellers and publishers can also define their own signals - custom models, first-party data, or composite segments - the same way they define other named resources in `adagents.json`. When those signals are meant to be portable and externally referenceable, publish them in the `signals` array and reference them from products with `scope: "data_provider"` using the seller's own publishing domain. When they are only meaningful within one product/package context, expose them only as product-local `signal_targeting_options` with `scope: "product"`. + +Use `signal_ref` for `get_signals`, media-buy product targeting, and package-level buy-time targeting: + +| Reference | Meaning | +|--------|--------| +| `{ "scope": "product", "signal_id": "high_intent_shoppers" }` | Product-local signal option, meaningful inside the selected product/package context | +| `{ "scope": "data_provider", "data_provider_domain": "pinnacle-data.example", "signal_id": "auto_intenders" }` | Signal defined in a data provider's published adagents.json `signals[]` | +| `{ "scope": "signal_source", "signal_source_url": "https://signals.example/.well-known/adcp/signals", "signal_id": "custom_model_run_123" }` | Source-native signal not published in upstream adagents.json `signals[]` | + +```json +{ + "signal_ref": { "scope": "product", "signal_id": "custom_auto_intenders" }, + "value_type": "binary", + "value": true +} +``` + +```json +{ + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "auto_intenders" + }, + "value_type": "binary", + "value": true +} +``` + +The older `signal_id.source` shape is deprecated and retained only for backwards compatibility with older Signals Protocol clients. New discovery, activation, and media-buy targeting surfaces use `signal_ref`. For product-local signals exposed on both `get_products` and a product-contextual `get_signals` response, `signal_ref.signal_id` MUST match across both surfaces. + +## Complete Example + +A full `adagents.json` signal definition set for an automotive data provider: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Pinnacle Auto Data", + "email": "partnerships@pinnacle-auto-data.com", + "domain": "pinnacle-auto-data.com" + }, + "signals": [ + { + "id": "likely_ev_buyers", + "name": "Likely EV Buyers", + "description": "Consumers modeled as likely to purchase an electric vehicle in the next 12 months based on vehicle registration, financial, and behavioral data", + "value_type": "binary", + "tags": ["automotive", "premium"] + }, + { + "id": "vehicle_ownership", + "name": "Current Vehicle Ownership", + "description": "Current vehicle category owned by the consumer", + "value_type": "categorical", + "allowed_values": ["luxury_ev", "luxury_non_ev", "mid_range", "economy", "none"], + "tags": ["automotive"] + }, + { + "id": "purchase_propensity", + "name": "Auto Purchase Propensity", + "description": "Likelihood score of purchasing any new vehicle in the next 6 months", + "value_type": "numeric", + "range": { "min": 0, "max": 1, "unit": "score" }, + "tags": ["automotive"] + } + ], + "signal_tags": { + "automotive": { + "name": "Automotive Signals", + "description": "Vehicle-related audience segments" + }, + "premium": { + "name": "Premium Signals", + "description": "High-value premium audience segments with enhanced pricing" + } + }, + "authorized_agents": [ + { + "url": "https://luminary-data.com/.well-known/adcp/signals", + "authorized_for": "All Pinnacle automotive signals via Luminary Data", + "authorization_type": "signal_tags", + "signal_tags": ["automotive"] + }, + { + "url": "https://nova-dsp.com/.well-known/adcp/signals", + "authorized_for": "Pinnacle premium signals only", + "authorization_type": "signal_ids", + "signal_ids": ["likely_ev_buyers"] + } + ], + "last_updated": "2025-01-15T10:00:00Z" +} +``` + +## Location data provider example + +A geo/mobility provider's published signal definitions use the same structure but with location-specific signals. Here's the `signals` array for a provider publishing foot traffic and mobility data: + +```json +{ + "signals": [ + { + "id": "store_visitors", + "name": "Store Visitors", + "description": "Consumers who visited a specified retail location in the past 30 days based on opted-in mobile device data", + "value_type": "binary", + "tags": ["geo", "foot_traffic"] + }, + { + "id": "visit_frequency", + "name": "Location Visit Frequency", + "description": "Monthly visit count to a specified location category", + "value_type": "numeric", + "range": { "min": 0, "max": 30, "unit": "visits_per_month" }, + "tags": ["geo", "frequency"] + }, + { + "id": "commute_pattern", + "name": "Commute Pattern", + "description": "Categorized daily commute behavior based on observed travel patterns", + "value_type": "categorical", + "allowed_values": ["urban_transit", "suburban_driver", "remote_worker", "hybrid"], + "tags": ["geo", "behavioral"] + } + ] +} +``` + +Note how the three value types map to different geo concepts: `binary` for yes/no store visitation, `numeric` for visit frequency with a meaningful range, and `categorical` for classified mobility behavior. + +## Identity / demographic provider example + +An identity company's published signal definitions can include consumer segments derived from financial records, surveys, and public data. Note: these are **targeting segments**, not raw data. Credit-derived signals may carry regulatory obligations (FCRA) — consult your compliance team before publishing. + +```json +{ + "signals": [ + { + "id": "household_income", + "name": "Household Income Tier", + "description": "Modeled household income bracket based on financial and demographic indicators", + "value_type": "categorical", + "allowed_values": ["under_50k", "50k_75k", "75k_100k", "100k_150k", "150k_250k", "over_250k"], + "tags": ["demographic", "income"] + }, + { + "id": "life_stage", + "name": "Life Stage", + "description": "Life stage classification derived from demographic and behavioral indicators", + "value_type": "categorical", + "allowed_values": ["young_adult", "early_career", "established_family", "empty_nester", "retired"], + "tags": ["demographic", "life_stage"] + }, + { + "id": "credit_active", + "name": "Active Credit Seeker", + "description": "Consumer has actively applied for new credit products in the past 90 days", + "value_type": "binary", + "tags": ["financial", "in_market", "credit"] + } + ] +} +``` + +Identity companies often also provide cross-device identity graphs, but identity resolution as a service (matching Device A to Person B) is not yet part of the AdCP protocol. See the [signals ecosystem guide](/dist/docs/3.2.0-beta.4/signals/ecosystem#identity-companies) for more on this boundary. + +## Retail media provider example + +Retailers have first-party purchase data that doubles as high-value targeting signals. A retail media network can publish signals alongside its properties in the same `adagents.json`: + +```json +{ + "signals": [ + { + "id": "category_buyer", + "name": "Category Buyer", + "description": "Purchased in the specified product category within the past 90 days", + "value_type": "categorical", + "allowed_values": ["electronics", "home", "beauty", "grocery", "fashion"], + "tags": ["retail", "purchase"] + }, + { + "id": "purchase_frequency", + "name": "Monthly Purchase Frequency", + "description": "Number of purchases in a product category over the trailing 90 days", + "value_type": "numeric", + "range": { "min": 0, "max": 50, "unit": "purchases" }, + "tags": ["retail", "frequency"] + }, + { + "id": "new_to_brand", + "name": "New to Brand", + "description": "Consumer has no prior purchase history with the specified brand in the trailing 12 months", + "value_type": "binary", + "tags": ["retail", "conquest"] + } + ] +} +``` + +Retail signals are especially valuable because they're deterministic — based on actual purchases, not modeled behavior. See the [signals ecosystem guide](/dist/docs/3.2.0-beta.4/signals/ecosystem#retail-media-networks) for the dual-role pattern (publisher + data provider). + +## Validation + +Use the [AdAgents.json Builder](https://agenticadvertising.org/adagents/builder) to validate your published signal definitions, or validate programmatically: + +```bash +curl -X POST https://adcontextprotocol.org/api/adagents/validate \ + -H "Content-Type: application/json" \ + -d '{"domain": "your-domain.com"}' | jq '.data.validation' +``` + +The validator checks: +- Required fields (`id`, `name`, `value_type` for each signal) +- ID patterns (alphanumeric with underscores/hyphens) +- Tag consistency (tags used in signals should be defined in `signal_tags`) +- Authorization references (signal_ids/signal_tags should reference existing signals/tags) + +## Best Practices + +### 1. Use Descriptive IDs + +```json +// Good +{ "id": "likely_ev_buyers" } +{ "id": "household_income_150k_plus" } + +// Avoid +{ "id": "seg_12345" } +{ "id": "a1b2c3" } +``` + +### 2. Provide Complete Metadata + +Include `description` so buyers understand what each signal represents. + +### 3. Use Tags for Scalability + +As your signal set grows, tags enable efficient authorization without listing every signal ID. + +### 4. Document Value Types Clearly + +For categorical signals, always include `allowed_values`. For numeric signals, include `range` with `unit`. + +### 5. Keep Files Updated + +Update `last_updated` timestamp when signals change. Buyers cache these files - stale data causes authorization failures. + +## Declaring governance metadata + +Signal definitions support two optional fields that enable structural governance matching: `restricted_attributes` and `policy_categories`. When declared, governance agents can match signals against a campaign plan's restrictions deterministically instead of relying on semantic inference from signal names. + +### restricted_attributes + +Declare which GDPR Article 9 special categories of personal data a signal touches. Values: `racial_ethnic_origin`, `political_opinions`, `religious_beliefs`, `trade_union_membership`, `health_data`, `sex_life_sexual_orientation`, `genetic_data`, `biometric_data`. + +```json +{ + "id": "chronic_condition_hh", + "name": "Chronic Condition Households", + "description": "Households with modeled indicators of chronic health conditions", + "value_type": "binary", + "tags": ["health", "demographic"], + "restricted_attributes": ["health_data"] +} +``` + +When a campaign plan declares `restricted_attributes: ["health_data"]`, a governance agent blocks this signal without needing to interpret the description. + +### policy_categories + +Declare which policy categories a signal is sensitive for. Policy categories group related regulatory regimes — `children_directed` covers COPPA, UK AADC, and GDPR Article 8. Values are registry-defined category IDs. + +```json +{ + "id": "kids_cartoon_fans", + "name": "Kids Cartoon Fans", + "description": "Children aged 6-12 who watch animated content", + "value_type": "binary", + "tags": ["entertainment", "children"], + "policy_categories": ["children_directed"] +} +``` + +### Combining both fields + +A signal can declare both when it touches restricted personal data and is relevant to a specific regulatory regime: + +```json +{ + "id": "fertility_intent", + "name": "Fertility Intent", + "description": "Consumers researching fertility treatments", + "value_type": "binary", + "tags": ["health", "life_stage"], + "restricted_attributes": ["health_data"], + "policy_categories": ["pharmaceutical_advertising"] +} +``` + +Without governance metadata, a governance agent must infer sensitivity from signal names — this is fragile and produces false positives. Declared attributes enable deterministic matching. + +### Relationship to the Policy Registry + +Signal definitions declare `policy_categories` and `restricted_attributes` using the same vocabulary as the [Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry). These fields enable governance agents to match signal metadata against policy entries during campaign validation. + +| Signal field | Registry equivalent | Purpose | +|-------------|-------------------|---------| +| `policy_categories` | `policy_categories` on [policy entries](/dist/docs/3.2.0-beta.4/governance/policy-registry#policy-category-definitions) | Declares which regulatory regimes the signal touches (e.g., `children_directed`, `health_wellness`) | +| `restricted_attributes` | `restricted_attributes` on [policy categories](/dist/docs/3.2.0-beta.4/governance/policy-registry#restricted-attribute-definitions) | Declares which GDPR Article 9 special categories the signal touches (e.g., `health_data`, `racial_ethnic_origin`) | + +Values MUST match the canonical definitions in the Policy Registry. See [policy category definitions](/dist/docs/3.2.0-beta.4/governance/policy-registry#policy-category-definitions) for the full list of valid `policy_categories` values and [restricted attribute definitions](/dist/docs/3.2.0-beta.4/governance/policy-registry#restricted-attribute-definitions) for valid `restricted_attributes` values. + +## Integration with get_adcp_capabilities + +Signal agents advertise available data providers via `get_adcp_capabilities`: + +```json +{ + "signals": { + "data_provider_domains": ["pinnacle-auto-data.com", "meridian-analytics.com", "apex-segments.com"] + } +} +``` + +This tells buyers which data providers' published signal definitions the agent can access. + +## Next Steps + +1. **Create your adagents.json** with your published signal definitions +2. **Host at** `/.well-known/adagents.json` on your domain +3. **Validate** using the AdAgents.json Builder +4. **Partner with signals agents** who will resell your data +5. **Add agents to authorized_agents** as partnerships are established + +## Related Documentation + +- [Signals Protocol Overview](/dist/docs/3.2.0-beta.4/signals/overview) - How signals work in AdCP +- [get_signals Task](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) - Signal discovery API +- [activate_signal Task](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) - Signal activation API +- [adagents.json Tech Spec](/dist/docs/3.2.0-beta.4/governance/property/adagents) - Full adagents.json reference (property-focused) diff --git a/dist/docs/3.2.0-beta.4/signals/ecosystem.mdx b/dist/docs/3.2.0-beta.4/signals/ecosystem.mdx new file mode 100644 index 0000000000..fa4c532226 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/ecosystem.mdx @@ -0,0 +1,523 @@ +--- +title: Signals ecosystem +description: "AdCP signals ecosystem: how data providers, retailers, publishers, CDPs, and identity companies expose and activate audience signals through the signals protocol." +"og:title": "AdCP — Signals ecosystem" +--- + +# Signals ecosystem + +The [Signals Protocol](/dist/docs/3.2.0-beta.4/signals/overview) connects many types of companies. This guide shows how each fits in, what they build, and where to go next. + +## How signals flow + +``` +Data providers ──┐ +Retailers ───────┤ +Publishers ──────┤──→ Published signals ─→ Signal agent ──→ Buyer agent ──→ Campaign targeting +CDPs ────────────┤ (adagents.json) (get_signals) (activate) +Identity cos ────┘ +``` + +Every company that owns targetable data can publish **signal definitions** via `/.well-known/adagents.json`. Signal agents discover these definitions and make them available to buyers through `get_signals` and `activate_signal`. + +## Find your role + +<CardGroup cols={2}> + <Card title="Data provider" icon="database" href="#data-providers"> + You own audience or behavioral data and want to make it available for ad targeting. + </Card> + <Card title="Retail media network" icon="cart-shopping" href="#retail-media-networks"> + You have shopper purchase data and sell both inventory and data. + </Card> + <Card title="Publisher" icon="newspaper" href="#publishers"> + You have contextual and first-party subscriber data alongside your ad inventory. + </Card> + <Card title="Identity company" icon="fingerprint" href="#identity-companies"> + You provide identity resolution, demographic, or financial data. + </Card> + <Card title="Location / mobility provider" icon="location-dot" href="#location-and-mobility-providers"> + You have foot traffic, geofencing, or mobility data. [See how geo signals work →](#location-and-mobility-providers) + </Card> + <Card title="CDP" icon="layer-group" href="#customer-data-platforms"> + You manage brands' first-party data and activate audiences on their behalf. + </Card> + <Card title="Agency" icon="users" href="#agencies-with-data-assets"> + You buy media for clients and have proprietary data assets. + </Card> + <Card title="Data warehouse" icon="warehouse" href="#data-warehouses-and-clean-rooms"> + You store data and enable clean-room collaboration. + </Card> +</CardGroup> + +--- + +## Data providers + +**Examples**: Automotive data companies, financial data providers, behavioral data companies + +**Your role**: You own audience segments, propensity models, or behavioral data. You publish signal definitions so that signal agents can discover and resell your data. + +**What you build**: +1. Published signal definitions in your `/.well-known/adagents.json` describing your signals, their value types, and which agents are authorized to resell them +2. Nothing else — signal agents handle discovery and activation on your behalf + +**Signal types you'd publish**: + +```json +{ + "signals": [ + { + "id": "likely_ev_buyers", + "name": "Likely EV Buyers", + "value_type": "binary", + "description": "Consumers modeled as likely to purchase an EV in the next 12 months", + "tags": ["automotive", "purchase_intent"] + }, + { + "id": "vehicle_ownership", + "name": "Vehicle Ownership Category", + "value_type": "categorical", + "allowed_values": ["luxury_ev", "luxury_ice", "midrange", "economy", "truck_suv"], + "tags": ["automotive", "ownership"] + }, + { + "id": "purchase_propensity", + "name": "Auto Purchase Propensity", + "value_type": "numeric", + "range": { "min": 0, "max": 1, "unit": "score" }, + "tags": ["automotive", "purchase_intent"] + } + ] +} +``` + +**Next steps**: +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — complete walkthrough of published signal definitions +- [Signals specification](/dist/docs/3.2.0-beta.4/signals/specification) — protocol details +- [S3: Signals specialist module](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — hands-on lab with sandbox signal agent + +--- + +## Location and mobility providers + +**Examples**: Foot traffic analytics companies, mobility data platforms, geofenced audience providers + +**Your role**: You publish geographic and behavioral signals derived from opted-in mobile device data — foot traffic patterns, trade areas, dwell time, and commute behavior. These signals let buyers target audiences based on where people go in the physical world. + +**What you build**: +1. Published signal definitions in your `/.well-known/adagents.json` describing your geo signals and their value types +2. Nothing else — signal agents handle discovery and activation on your behalf + +**Example published signal definitions**: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Meridian Geo", + "email": "partnerships@meridiangeo.example", + "domain": "meridiangeo.example" + }, + "signals": [ + { + "id": "competitor_visitors", + "name": "Competitor Store Visitors", + "value_type": "binary", + "description": "Consumers who visited a competitor retail location in the past 30 days based on verified foot traffic data", + "tags": ["geo", "retail", "conquest"] + }, + { + "id": "trade_area_residents", + "name": "Trade Area Residents", + "value_type": "binary", + "description": "Consumers whose primary residence is within a specified trade area defined by drive time or radius", + "tags": ["geo", "proximity"] + }, + { + "id": "visit_frequency", + "name": "Location Visit Frequency", + "value_type": "numeric", + "range": { "min": 0, "max": 30 }, + "description": "Monthly visit count to a specified location category (QSR, grocery, gym, auto dealer)", + "tags": ["geo", "frequency"] + }, + { + "id": "dwell_time", + "name": "Average Dwell Time", + "value_type": "numeric", + "range": { "min": 0, "max": 120, "unit": "minutes" }, + "description": "Average minutes spent on-site, distinguishing drive-bys from intentional visits", + "tags": ["geo", "behavioral", "dwell"] + }, + { + "id": "daypart_visitation", + "name": "Day-Part Visitation", + "value_type": "categorical", + "allowed_values": ["morning_commute", "midday", "evening_commute", "weekend_daytime", "weekend_evening"], + "description": "When consumers typically visit a specified venue type", + "tags": ["geo", "temporal"] + } + ], + "signal_tags": { + "geo": { + "name": "Geographic Signals", + "description": "Location-derived audience segments from opted-in mobile data" + } + }, + "authorized_agents": [ + { + "url": "https://signals-agent.example.com", + "authorized_for": "All geo signals", + "authorization_type": "signal_tags", + "signal_tags": ["geo"] + } + ] +} +``` + +**Activating a geofenced audience**: + +```json +{ + "tool": "activate_signal", + "arguments": { + "signal_agent_segment_id": "meridian_trade_area_residents", + "pricing_option_id": "po_meridian_trade_cpm", + "destinations": [ + { + "type": "platform", + "platform": "nova-dsp", + "account": "agency-seat-789" + } + ] + } +} +``` + +<Note> +AdCP supports location-derived **audience segments** — groups of people who visited a place, live in a trade area, or exhibit a commute pattern. Real-time geofencing triggers (push a message when someone enters a zone) are not yet part of the protocol. See the [roadmap](/dist/docs/3.2.0-beta.4/reference/roadmap) for planned extensions. +</Note> + +**Next steps**: +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — complete walkthrough of published signal definitions +- [Signals specification](/dist/docs/3.2.0-beta.4/signals/specification) — protocol details +- [S3: Signals specialist module](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — hands-on lab with sandbox signal agent + +--- + +## Retail media networks + +**Examples**: Marketplace advertising platforms, grocery delivery ad networks + +**Your dual role**: You're both a **publisher** (selling ad inventory on your marketplace) and a **data provider** (your shopper purchase data is valuable for targeting on other platforms). + +### As a publisher + +You sell sponsored products and display inventory. This uses the [Media Buy Protocol](/dist/docs/3.2.0-beta.4/media-buy/index) — declare your properties in `adagents.json`, build a sales agent, handle `get_products` and `create_media_buy`. + +### As a data provider + +Your first-party purchase data (category buyers, loyalty tiers, basket value, new-to-brand) is valuable beyond your own inventory. You can publish these as signals in the same `adagents.json` file alongside your properties. + +**Combined adagents.json** (properties for inventory + signals for data): + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "Acme Marketplace", + "email": "partnerships@acme-marketplace.example", + "domain": "acme-marketplace.example" + }, + "properties": [ + { + "property_id": "marketplace_web", + "property_type": "website", + "name": "Acme Marketplace", + "identifiers": [ + {"type": "domain", "value": "acme-marketplace.example"} + ], + "supported_channels": ["retail_media", "display"] + } + ], + "signals": [ + { + "id": "category_buyer", + "name": "Category Buyer", + "value_type": "categorical", + "allowed_values": ["electronics", "home", "beauty", "grocery", "fashion"], + "description": "Purchased in category in past 90 days", + "tags": ["retail", "purchase"] + }, + { + "id": "loyalty_tier", + "name": "Loyalty Program Tier", + "value_type": "categorical", + "allowed_values": ["platinum", "gold", "silver", "bronze"], + "tags": ["retail", "loyalty"] + }, + { + "id": "new_to_brand", + "name": "New to Brand", + "value_type": "binary", + "description": "Never purchased from specified brand on marketplace", + "tags": ["retail", "conquest"] + } + ], + "authorized_agents": [ + { + "url": "https://signals-agent.example.com", + "authorized_for": "All retail signals", + "authorization_type": "signal_tags", + "signal_tags": ["retail"] + } + ] +} +``` + +**Key insight**: Your closed-loop purchase data is often the most valuable signal in the ecosystem because it's deterministic. While behavioral models predict intent, you have actual transaction proof. + +**Closed-loop measurement**: Your purchase data also enables attribution. When a campaign targets your shopper signals and the consumer buys the advertised product on your marketplace, you can measure that conversion directly. Use [`sync_event_sources`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources) to register your purchase event feed with buyer agents, then [`log_event`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event) to report conversions. This closes the loop from targeting to measurement without relying on third-party attribution — a significant advantage for retail media. + +**Next steps**: +- [Commerce media guide](/dist/docs/3.2.0-beta.4/media-buy/commerce-media) — maps retail concepts to AdCP +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — how to publish your signal definitions +- [Conversion tracking](/dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index) — closed-loop measurement with `sync_event_sources` and `log_event` +- [Seller integration guide](/dist/docs/3.2.0-beta.4/building/operating/seller-integration) — building your sales agent + +--- + +## Publishers + +**Examples**: News publishers, streaming platforms, content networks + +**Your role**: You have contextual signals (content category, article sentiment) and first-party subscriber data (engagement level, subscription tenure). These complement your ad inventory. + +**What you already have**: Properties in `adagents.json` and a sales agent for the Media Buy Protocol. + +**What you can add**: Signal definitions in the same `adagents.json`, turning your contextual intelligence and subscriber data into targetable signals available across the ecosystem. + +**Publisher signal types**: + +| Signal | Value type | Description | +|--------|-----------|-------------| +| Content category | Categorical | IAB taxonomy classification of page content | +| Article sentiment | Categorical | Positive, neutral, negative, mixed | +| Engaged reader | Binary | High-attention subscribers (5+ articles/week) | +| Subscriber tenure | Numeric | Months of active subscription | + +**Why this matters**: Your contextual signals are increasingly valuable as third-party cookies decline. An advertiser buying CTV inventory from one publisher can target using your contextual intelligence from another — if you publish it as a signal. + +**Next steps**: +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — add signals to your existing adagents.json +- [Publisher/seller track](/dist/docs/3.2.0-beta.4/learning/tracks/publisher) — build your sales agent (if you haven't already) +- [S3: Signals specialist module](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — understand the buyer's perspective + +--- + +## Identity companies + +**Examples**: Cross-device identity providers, demographic data companies, credit-derived data companies + +**Your role**: You provide identity resolution (linking devices to people to households) and consumer data derived from financial records, public data, or surveys. + +**What fits in AdCP today**: Your **consumer segments** — household income tiers, life stages, credit activity, cross-device reach — map directly to signal value types: + +```json +{ + "signals": [ + { + "id": "household_income", + "name": "Household Income Tier", + "value_type": "categorical", + "allowed_values": ["under_50k", "50k_75k", "75k_100k", "100k_150k", "150k_250k", "over_250k"], + "tags": ["demographic", "income"] + }, + { + "id": "life_stage", + "name": "Life Stage", + "value_type": "categorical", + "allowed_values": ["young_adult", "early_career", "established_family", "empty_nester", "retired"], + "tags": ["demographic", "life_stage"] + }, + { + "id": "household_composition", + "name": "Household Composition", + "value_type": "categorical", + "allowed_values": ["single", "couple_no_children", "family_young_children", "family_teens", "multigenerational"], + "tags": ["demographic", "household"] + }, + { + "id": "cross_device_reach", + "name": "Cross-Device Household Reach", + "value_type": "numeric", + "range": { "min": 1, "max": 12 }, + "description": "Identified devices linked to household via deterministic identity graph", + "tags": ["identity", "cross_device"] + } + ] +} +``` + +**What doesn't fit (yet)**: Your core identity resolution service — matching Device A to Person B — is infrastructure that enhances other signals, not a signal itself. AdCP doesn't yet have a protocol for identity resolution as a service. This is on the [roadmap](/dist/docs/3.2.0-beta.4/reference/roadmap). + +**Where you add value today**: +1. **Publish demographic and financial segments** as signal definitions +2. **Enhance other providers' signals** with cross-device reach (your identity graph makes their binary signals addressable across more devices) +3. **Partner with signal agents** who can combine your identity data with other providers' behavioral data + +<Note> +**Data governance for credit-derived signals**: Signals derived from credit bureau data may carry regulatory obligations under FCRA and similar frameworks. AdCP publishes these as targeting segments (income tiers, credit activity), not raw financial data — but your compliance team should review which segments are permissible for advertising use cases. The `activate_signal` deactivation mechanism supports compliance workflows when consent is withdrawn or regulatory requirements change. +</Note> + +**Next steps**: +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — publish your signal definitions +- [Platform/intermediary track](/dist/docs/3.2.0-beta.4/learning/tracks/platform) — if you're building infrastructure that connects data to platforms + +--- + +## Customer data platforms + +**Examples**: Customer data platforms, audience management platforms, marketing data platforms + +**Your role**: Brands store their first-party data in your platform. You help them build audience segments and activate those segments for ad targeting. The brand owns the data — you're the infrastructure. + +**The ownership question**: In the standard data provider model, the provider publishes signals under their own domain. For CDPs, the **brand** owns the data but the **CDP** operates the infrastructure. Two approaches: + +### Approach 1: CDP as signal agent + +The CDP operates a signal agent that serves brand-specific custom segments. Each brand's segments are scoped to their account: + +```json +{ + "tool": "get_signals", + "arguments": { + "signal_spec": "High lifetime value customers for retargeting", + "account": { + "brand": { "domain": "acme-brand.example" } + } + } +} +``` + +The signal agent returns only segments authorized for that brand's account. This maps naturally to how CDPs already work — brand-scoped audience management. + +### Approach 2: Brand publishes definitions, CDP hosts agent + +The brand lists their custom signals in their own `adagents.json` (at `acme-brand.example/.well-known/adagents.json`) with the CDP's signal agent as an authorized agent. This gives the brand transparency and control over what's published. + +**CDP signal types**: + +| Signal | Value type | Use case | +|--------|-----------|----------| +| High LTV customer | Binary | Retention and upsell campaigns | +| Cart abandoner | Binary | Real-time retargeting | +| Engagement score | Numeric (0-100) | Prioritize high-intent prospects | +| Churn risk | Categorical | Win-back campaigns | + +**Key concern — privacy**: First-party data activation must respect consent. The CDP is responsible for ensuring that only consented segments are published. The `activate_signal` task supports `deactivate` action for compliance (removing segments from platforms when consent is withdrawn or campaigns end). + +**Next steps**: +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — signal definition structure +- [Platform/intermediary track](/dist/docs/3.2.0-beta.4/learning/tracks/platform) — building MCP-based infrastructure +- [Signals specification](/dist/docs/3.2.0-beta.4/signals/specification) — protocol conformance requirements + +--- + +## Agencies with data assets + +**Examples**: Agency holding companies with data divisions, independent agencies with proprietary audience platforms + +**Your dual role**: You **consume** signals for client campaigns (buyer side) and **provide** proprietary signals from your data assets (provider side). + +### As a signal consumer + +Your buying agents use `get_signals` to find targeting data for client campaigns. You work across multiple brands, each with their own account: + +```json +{ + "tool": "get_signals", + "arguments": { + "signal_spec": "In-market luxury auto intenders", + "account": { + "brand": { "domain": "client-brand.example" } + }, + "destinations": [ + { "type": "platform", "platform": "the-trade-desk", "account": "agency-ttd-seat" } + ] + } +} +``` + +### As a signal provider + +Your data division's proprietary signals (identity graph, purchase panels, custom models) can be published via `adagents.json` and made available through signal agents — either your own or third-party. + +**Multi-brand management**: Each client brand has its own account context. Signals activated for one brand are not visible to others. Your agency seat on DSP platforms may be shared, but signal activations are brand-scoped. + +**Next steps**: +- [Buyer/brand track](/dist/docs/3.2.0-beta.4/learning/tracks/buyer) — media buying with AdCP +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — publish your proprietary signals +- [S3: Signals specialist module](/dist/docs/3.2.0-beta.4/learning/specialist/signals) — hands-on signal discovery and activation + +--- + +## Data warehouses and clean rooms + +**Examples**: Cloud data platforms with advertising data products, data collaboration platforms + +**Your role**: You sit between data (brands, providers, retailers) and activation (DSPs, sales agents). The question is how signals flow to and from your platform. + +### Activating signals into your platform + +A buyer or agency wants to match a signal provider's audience against data that lives in your warehouse — without moving either party's raw data. In AdCP terms, your platform is a **destination** in `activate_signal`: + +```json +{ + "tool": "activate_signal", + "arguments": { + "signal_agent_segment_id": "trident_likely_ev_buyers", + "pricing_option_id": "po_trident_ev_cpm", + "destinations": [ + { + "type": "platform", + "platform": "apex-data-cloud", + "account": "brand-clean-room-456" + } + ] + } +} +``` + +The signal agent pushes segment membership into your clean room. The brand's first-party data stays in place. Overlap analysis, lookalike modeling, or measurement happens inside your environment. + +### Activating signals from your platform + +Data that lives in your warehouse — a retailer's purchase data, a brand's CRM segments, a provider's behavioral models — can be published as signals. The signal agent queries your platform's APIs to serve `get_signals` requests. The underlying data never leaves the warehouse; only targeting keys (segment IDs, activation keys) flow to DSPs. + +A retailer whose shopper data lives in your platform would: +1. Publish signal definitions via `adagents.json` describing their signals +2. Partner with a signal agent that has API access to your platform +3. The signal agent handles `get_signals` (checking availability) and `activate_signal` (pushing targeting keys to DSPs) + +### What you'd build + +To participate as a destination platform, you'd implement the receiving side: accept segment activations from signal agents, match against data in your environment, and return activation keys. This is analogous to how DSPs accept audience segments today. + +**Next steps**: +- [Platform/intermediary track](/dist/docs/3.2.0-beta.4/learning/tracks/platform) — MCP server architecture +- [Signals specification](/dist/docs/3.2.0-beta.4/signals/specification) — destination and deployment model +- [Industry landscape](/dist/docs/3.2.0-beta.4/building/concepts/industry-landscape) — how AdCP fits alongside other standards +- [Working group](/dist/docs/3.2.0-beta.4/community/working-group) — help shape clean room integration patterns + +--- + +## Try it hands-on + +The training agent's signals tenant at `https://test-agent.adcontextprotocol.org/signals/mcp` includes sandbox signal providers covering automotive data, geo/mobility, retail purchase data, identity/demographics, publisher contextual signals, and CDP audiences. + +Use `get_signals` to discover signals and `activate_signal` to activate them — all in sandbox mode with no real data or cost. + +<Card title="Start the signals specialist module" icon="play" href="https://agenticadvertising.org/chat"> + Tell Addie: "I'd like to start the signals specialist module" — or just describe your role and ask how you fit into the signals ecosystem. +</Card> diff --git a/dist/docs/3.2.0-beta.4/signals/key-concepts.mdx b/dist/docs/3.2.0-beta.4/signals/key-concepts.mdx new file mode 100644 index 0000000000..41a684dd8d --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/key-concepts.mdx @@ -0,0 +1,158 @@ +--- +title: Key concepts +description: "AdCP signal types (binary, categorical, numeric), signal references, discovery via get_signals, activation via activate_signal, and authorization through adagents.json." +"og:title": "AdCP — Signals key concepts" +--- + +# Key concepts + +The Signals Protocol enables AI agents to discover, activate, and manage data signals for advertising campaigns. Signals represent targetable audiences, contextual categories, geographic regions, and other data attributes. + +## What are signals? + +Signals are data segments used for targeting or measurement in advertising campaigns: + +- **Audience signals**: User segments based on demographics, interests, or behaviors +- **Contextual signals**: Content categories or page contexts +- **Geographic signals**: Location-based targeting data +- **Temporal signals**: Time-based targeting patterns +- **Multi-dimensional signals**: Combined or custom signal types + +## Signal value types + +Every signal has a `value_type` that determines how buyers construct targeting expressions: + +### Binary + +User either matches or doesn't. The most common type. + +```json +{ + "id": "likely_ev_buyers", + "name": "Likely EV Buyers", + "value_type": "binary", + "tags": ["automotive", "purchase_intent"] +} +``` + +**Targeting**: Include or exclude users matching this signal. + +### Categorical + +User has one of several possible values. + +```json +{ + "id": "vehicle_ownership", + "name": "Current Vehicle Ownership", + "value_type": "categorical", + "allowed_values": ["luxury_ev", "luxury_non_ev", "mid_range", "economy", "none"] +} +``` + +**Targeting**: Target users with specific values (e.g., "users who own a luxury EV or luxury non-EV"). + +### Numeric + +User has a score or measurement within a range. + +```json +{ + "id": "purchase_propensity", + "name": "Auto Purchase Propensity", + "value_type": "numeric", + "range": { "min": 0, "max": 1, "unit": "score" } +} +``` + +**Targeting**: Target users within a value range (e.g., "propensity score > 0.7"). + +## Signal references + +Signals use `signal_ref.scope` as the identity discriminator: + +| Scope | Fields | Verification | +|--------|--------|--------------| +| `data_provider` | `data_provider_domain` + `signal_id` | Verifiable via the publisher domain's adagents.json `signals[]` | +| `signal_source` | `signal_source_url` + `signal_id` | Trust-based — buyer trusts the issuing signal source | +| `product` | `signal_id` | Product-local; meaningful only in the selected product/package context | + +**Data-provider signals** come from external data providers who publish their offerings at `/.well-known/adagents.json`. Buyers can independently verify that a seller or signal source is authorized to resell them. + +**Signal-source signals** are proprietary to a signal source and use `scope: "signal_source"` with that source's `signal_source_url` when they are not published in adagents.json `signals[]`. + +The legacy `signal_id.source` object is deprecated. New `get_signals`, product targeting, and buy-time references use `signal_ref`. + +## Task schemas + +| Task | Purpose | +|------|---------| +| [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) | Discover signals matching campaign criteria; required for every signals agent | +| [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) | Activate a marketplace signal for use in campaigns; required for `signal_marketplace` conformance | + +Every conformant Signals Protocol agent supports `get_signals`. Activation is a +separate obligation for agents that claim marketplace activation support, +advertise activation/deactivation, or return signals that require buyer-managed +activation. Discovery-only owned-signal agents can conform to the baseline +without exposing `activate_signal`. + +### Discovery with get_signals + +Buyers describe what they need in natural language. The signal agent searches across its authorized data-provider signals and its own proprietary signals: + +```json +{ + "tool": "get_signals", + "arguments": { + "signal_spec": "In-market auto buyers with high purchase propensity" + } +} +``` + +The response includes matching signals with pricing, size estimates, and value type metadata — everything a buyer agent needs to make a targeting decision. + +### Activation with activate_signal + +Once a buyer selects a marketplace signal, they activate it on their DSP or data platform: + +```json +{ + "tool": "activate_signal", + "arguments": { + "signal_agent_segment_id": "trident_likely_ev_buyers", + "pricing_option_id": "po_trident_ev_cpm", + "destinations": [ + { + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-seat-123" + } + ] + } +} +``` + +The signal agent pushes segment membership to the specified platform. The buyer's campaign can then target against it using the platform's standard tools. + +## Agent integration + +The Signals Protocol operates within the broader [AdCP ecosystem](/dist/docs/3.2.0-beta.4/intro#the-adcp-ecosystem-layers). Signal agents integrate directly with decisioning platforms (DSPs, orchestration platforms), eliminating intermediary reporting and usage tracking. Signal agents advertise their available data providers via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities). + +Once signals are activated on a platform, all usage reporting, billing, and campaign metrics are handled directly by that platform. + +## Authorization and trust + +Data providers control who can resell their signals via the `authorized_agents` array in their `adagents.json`. Two patterns: + +- **Signal IDs**: Authorize specific local `signals[].id` values in the data provider's catalog — fine-grained control +- **Signal tags**: Authorize all signals with certain tags — scales as catalogs grow + +Buyers can verify authorization by fetching the data provider's `adagents.json` and checking whether the seller or signal source appears in `authorized_agents`. + +## Go deeper + +- [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — how to publish signal definitions +- [Signals ecosystem](/dist/docs/3.2.0-beta.4/signals/ecosystem) — how each type of company participates +- [Protocol specification](/dist/docs/3.2.0-beta.4/signals/specification) — formal conformance requirements +- [get_signals task reference](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) — discovery API details +- [activate_signal task reference](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) — activation API details diff --git a/dist/docs/3.2.0-beta.4/signals/overview.mdx b/dist/docs/3.2.0-beta.4/signals/overview.mdx new file mode 100644 index 0000000000..a3989fba50 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/overview.mdx @@ -0,0 +1,212 @@ +--- +title: Signals protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/signals-01-planner-brief.png +"og:title": "AdCP — Signals protocol" +description: "Follow a media buyer from campaign brief to signal activation across automotive, geo, and retail data — a visual walkthrough of the AdCP signals workflow." +--- + +<img src="/images/walkthrough/signals-01-planner-brief.png" alt="Sam stands at a whiteboard sketching a targeting plan, surrounded by floating holographic data icons — audiences, locations, purchase behavior" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Sam is a senior media buyer at Pinnacle Agency. His client, Nova Motors, is launching the Volta EV — their first electric vehicle. The brief: reach in-market auto buyers with high purchase propensity, near dealerships, and focus on consumers who haven't bought a Nova vehicle before. + +Without AdCP, Sam would be emailing three data providers for segment availability, waiting for IO sign-offs, then uploading CSV segment files to two separate DSP platforms — a process that takes days and breaks every time a provider updates their taxonomy. With AdCP, his agency platform handles it in minutes. + +This walkthrough follows Sam from brief to live targeting. + +## Step 1: Describe what you need + +Sam starts with what he wants to accomplish, not a segment taxonomy. + +<img src="/images/walkthrough/signals-02-natural-language-search.png" alt="Sam types a search on his laptop as three data streams flow outward to location, retail, and audience data provider icons — one query, three sources" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam's agency platform translates the brief into a `get_signals` call. No need to know which providers have what — the signal agent searches across all of them: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "signal_spec": "In-market EV buyers with high purchase propensity, near auto dealerships" +} +``` + +The signal agent searches published definitions from every authorized data provider — automotive, geo/mobility, retail, identity — and returns what matches. + +<Accordion title="Agency language → protocol terms"> + +| What Sam says | What the protocol calls it | +|---|---| +| Target audience | Signal (from `get_signals`) | +| Segment taxonomy | Signal definitions (`adagents.json` `signals[]`) | +| Data provider | Signal source (`data_provider_domain`) | +| Activate on my DSP | `activate_signal` with destination | +| Audience or inventory availability | `coverage_forecast` for authoritative signal-level coverage; optional deprecated `coverage_percentage` only as a legacy scalar fallback | +| Data cost | `pricing_options` in signal response | + +</Accordion> + +## Step 2: Review what comes back + +<img src="/images/walkthrough/signals-03-results-materialize.png" alt="Sam reviews signal results on a wall screen, arms crossed — three groups of data cards with different colored accents showing location, retail, and audience data" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +The signal agent returns matches from multiple providers. Each signal has a value type, pricing, and coverage estimate: + +```mermaid +sequenceDiagram + participant Platform as Sam's Agency Platform + participant Agent as Signal Agent + participant Auto as Trident Auto Data + participant Geo as Meridian Geo + participant Retail as ShopGrid + + Platform->>Agent: get_signals ("in-market EV buyers near dealerships") + + par Search catalogs + Agent->>Auto: Search catalog + Auto-->>Agent: likely_ev_buyers (binary), purchase_propensity (numeric) + Agent->>Geo: Search catalog + Geo-->>Agent: competitor_visitors (binary), trade_area_residents (binary) + Agent->>Retail: Search catalog + Retail-->>Agent: category_buyer (categorical), new_to_brand (binary) + end + + Agent-->>Platform: 8 matching signals with pricing +``` + +Sam sees signals from three providers he didn't have to find or negotiate with individually: + +- **Trident Auto Data** — `purchase_propensity` (numeric, 0-1 score). CPM: \$1.50. `likely_ev_buyers` (binary). CPM: \$2.50. +- **Meridian Geo** — `competitor_visitors` (binary, people who visited competing dealerships). CPM: \$2.00. +- **ShopGrid** — `new_to_brand` (binary). CPM: \$3.50. `category_buyer` (categorical: electronics, automotive, home). CPM: \$3.00. + +Sam notices that `purchase_propensity` is numeric — his agent can set a threshold (score > 0.7) to focus budget on high-intent prospects rather than a blunt include/exclude. He also sees that `category_buyer` is categorical, so he can target "automotive" specifically without paying for the full ShopGrid audience. The `competitor_visitors` signal catches his eye — it comes from Meridian Geo, a data company founded by Kai Lindstr&#246;m to make location and behavioral data accessible through open protocols. Sam picks three signals: `purchase_propensity` for intent scoring, Meridian Geo's `competitor_visitors` for conquest targeting near rival dealerships, and `new_to_brand` to reach households that haven't bought a Nova before. + +## Step 3: Verify and select + +Before activating third-party data, Pinnacle Agency requires verification. Sam's platform fetches the data provider's published definitions directly: + +``` +https://shopgrid.example/.well-known/adagents.json +``` + +And confirms: +1. The `new_to_brand` signal exists in ShopGrid's catalog +2. The signal agent is listed in `authorized_agents` +3. The authorization covers retail signals (via `signal_tags: ["retail"]`) + +If the authorization check had failed — say ShopGrid had revoked the agent's access — Sam would see the signal flagged before spending a dollar on it. This independent verification means buyers don't have to take the signal agent's word for data provenance. + +## Step 4: Activate on your platforms + +<img src="/images/walkthrough/signals-04-activation-flow.png" alt="Split scene — Sam activates signal segments from his tablet below, data streams flow up to platforms, while Kai monitors activation metrics on his laptop above" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam activates his three signals on two DSPs — Nova DSP for programmatic display (broad reach, lower CPMs) and StreamHaus for premium CTV inventory (household-level targeting for the brand spot): + +```mermaid +sequenceDiagram + participant Platform as Agency Platform + participant Agent as Signal Agent + participant DSP1 as Nova DSP (display) + participant DSP2 as StreamHaus (CTV) + + par Activate signals + Platform->>Agent: activate_signal (purchase_propensity → Nova DSP) + Agent->>DSP1: Push segment + DSP1-->>Agent: deployed + + Platform->>Agent: activate_signal (competitor_visitors → Nova DSP) + Agent->>DSP1: Push segment + DSP1-->>Agent: deployed + + Platform->>Agent: activate_signal (new_to_brand → StreamHaus) + Agent->>DSP2: Push segment + DSP2-->>Agent: deployed + end + + Agent-->>Platform: 3 signals active, deployment IDs returned +``` + +Each activation call specifies the destination platform and account: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json", + "idempotency_key": "c3d4e5f6-a7b8-4901-c234-901234567890", + "signal_agent_segment_id": "shopgrid_new_to_brand", + "pricing_option_id": "po_shopgrid_retail_cpm", + "destinations": [ + { + "type": "platform", + "platform": "streamhaus", + "account": "agency-ctv-seat-456" + } + ] +} +``` + +The signal agent pushes segment membership to each platform. Sam gets back deployment IDs he can reference when building media buys. + +### Buying through a sales agent + +Sam also wants to run a sponsored article campaign through Wonderstruck, a premium publisher with its own sales agent. Instead of activating the signal on a specific DSP, Sam activates it on the sales agent directly — Wonderstruck handles its own DSP coordination: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json", + "idempotency_key": "d4e5f6a7-b8c9-4012-d345-012345678901", + "signal_agent_segment_id": "shopgrid_new_to_brand", + "pricing_option_id": "po_shopgrid_retail_cpm", + "destinations": [ + { + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.example" + } + ] +} +``` + +The sales agent records the activation internally. When Sam later calls `create_media_buy` through Wonderstruck, the signal-based targeting is already in place — Sam doesn't need to know which DSP Wonderstruck uses behind the scenes. + +## Step 5: Build the campaign + +<img src="/images/walkthrough/signals-05-campaign-targeting.png" alt="Sam views three targeting layers stacking on a large screen — location, audience, and purchase data overlap and glow where they intersect" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Now the signals are live on both platforms. Sam's agent builds media buys using [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). The activated signals are already available as targeting segments on each DSP — the media buy references the products discovered via [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products), and the DSP applies the signal-based targeting automatically. + +- **Display (Nova DSP)**: Sam selects a display product that targets `purchase_propensity > 0.7` AND `competitor_visitors = true`. This reaches high-intent auto buyers who've been visiting competing dealerships. +- **CTV (StreamHaus)**: Sam selects a CTV product targeting `new_to_brand = true`. This reaches households that haven't purchased a Nova vehicle with a brand awareness spot. + +The key point: signals and media buys are separate concerns. The Signals Protocol gets data onto platforms. The [Media Buy Protocol](/dist/docs/3.2.0-beta.4/media-buy/index) gets campaigns running on those platforms. They compose together — Sam didn't need a custom integration between his signal providers and his DSPs. + +## Step 6: Manage and measure + +The campaign runs. Two weeks in, display CPAs are running 40% above target while CTV is pacing well. Sam reallocates: he deactivates the geo signal on Nova DSP to reduce display data costs: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json", + "idempotency_key": "e5f6a7b8-c9d0-4123-e456-123456789012", + "signal_agent_segment_id": "meridian_competitor_visitors", + "action": "deactivate", + "destinations": [ + { + "type": "platform", + "platform": "nova-dsp", + "account": "agency-display-seat-123" + } + ] +} +``` + +Deactivation removes the segment from the platform. Billing stops. The CTV signals stay active — each activation is independent. + +<img src="/images/walkthrough/signals-06-ecosystem-view.png" alt="Sam and Kai stand together in front of a large display showing the signals marketplace — data providers flowing through a hub to buyers, collaborating across the ecosystem" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Every step uses a standard AdCP task. Sam didn't need to know which data providers exist, negotiate individual contracts, or build custom integrations per DSP. Data providers like Kai Lindstr&#246;m's Meridian Geo publish their signal definitions once, and the signal agent handles discovery across all of them. Each platform handles targeting with its standard tools once segments arrive. + +## Go deeper + +- **Key concepts**: [Signal types, sources, and authorization](/dist/docs/3.2.0-beta.4/signals/key-concepts) — the building blocks behind this walkthrough +- **Ecosystem**: [Who participates and how](/dist/docs/3.2.0-beta.4/signals/ecosystem) — data providers, retailers, publishers, CDPs, agencies, identity companies +- **Publish your data**: [Data provider guide](/dist/docs/3.2.0-beta.4/signals/data-providers) — how to create published signal definitions +- **Protocol spec**: [Signals specification](/dist/docs/3.2.0-beta.4/signals/specification) — formal requirements and conformance +- **Get certified**: The [Signals specialist module](/dist/docs/3.2.0-beta.4/learning/specialist/signals) teaches signal discovery and activation through interactive labs with a sandbox signal agent diff --git a/dist/docs/3.2.0-beta.4/signals/specification.mdx b/dist/docs/3.2.0-beta.4/signals/specification.mdx new file mode 100644 index 0000000000..60c749ab31 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/specification.mdx @@ -0,0 +1,266 @@ +--- +title: Signals Specification +description: "Formal AdCP signals protocol specification. Transport requirements, get_signals and activate_signal task schemas, conformance criteria, error handling, activation key security, and RFC 2119 requirements." +"og:title": "AdCP — Signals Specification" +sidebarTitle: Specification +--- + +**Status**: Request for Comments +**Last Updated**: January 25, 2026 + +This document defines the Signals Protocol specification. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +## Abstract + +The Signals Protocol defines a standard interface for AI-powered signal discovery, activation, and management systems. This protocol enables AI assistants to help marketers discover, activate, and manage data signals (audiences, contextual, geographical, temporal, and multi-dimensional data) through natural language interactions. + +## Protocol Overview + +The Signals Protocol provides: + +- Natural language signal discovery based on marketing objectives +- Multi-platform signal discovery in a single request +- Signal activation for specific platforms and accounts +- Transparent pricing with CPM and revenue share models +- Signal size reporting with unit types (individuals, devices, households) + +## Transport Requirements + +Signal agents MUST support at least one of the following transports: + +| Transport | Protocol | Description | +|-----------|----------|-------------| +| MCP | Model Context Protocol | Tool-based interaction via JSON-RPC | +| A2A | Agent-to-Agent | Message-based interaction | + +Signal agents SHOULD support MCP as the preferred transport. + +Signal agents MUST declare Signals Protocol support via `get_adcp_capabilities`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-adcp-capabilities-response.json", + "status": "completed", + "adcp": { + "major_versions": [2], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["signals"] +} +``` + +## Core Concepts + +### Request Roles + +Every signal request involves two roles: + +- **Orchestrator**: The platform making the API request (e.g., a buyer agent or AI assistant) +- **Account**: The commercial relationship on whose behalf the request is made. See [Accounts Protocol](/dist/docs/3.2.0-beta.4/accounts/overview). + +### Signal Agent Types + +**Private Signal Agents** — owned by a single account with exclusive access: +- Signal agents MUST return `REFERENCE_NOT_FOUND` for unauthorized accounts — the + same response as "agent does not exist." Distinguishing "exists but unauthorized" + from "does not exist" would enable cross-tenant enumeration of private agents. + See the uniform-response MUST in + [error-handling.mdx](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling) for the full + set of observable channels that MUST match on both paths. +- Signal agents MUST NOT expose private signals across accounts + +**Marketplace Signal Agents** — license signal data to multiple accounts: +- Signal agents MUST support public wholesale feed access without account registration +- Signal agents SHOULD support account-personalized wholesale feed views for registered accounts + +### Identifiers + +- **`signal_agent_segment_id`**: Opaque signal handle issued by the signal source. Signals Protocol responses MUST return this for each signal and orchestrators MUST use it in `activate_signal` requests. For seller-offered media-buy signal targeting, buyers use `signal_ref` as the named signal reference and include `signal_agent_segment_id` only when the selected product option exposes a distinct execution handle. + +- **`activation_key`**: Key for external deployment targeting. Signal agents MUST return this when `is_live: true` AND the caller has access to the deployment. Orchestrators MUST use this for platform or destination targeting (not `signal_agent_segment_id`). For seller-offered signals selected on a sales-agent media buy, use `packages[].targeting_overlay.signal_targeting_groups`; include `activation_key` only when the seller requires a prior activation key. + +### Governance metadata + +Signal definitions MAY include `restricted_attributes` and `policy_categories` fields to enable structural governance matching. Data providers SHOULD declare these so governance agents can deterministically evaluate compliance rather than inferring sensitivity from signal names. + +Age-defined signals MAY include `demographic_predicate` with canonical inclusive age bounds and explicit unknown-age membership. This field is authoritative for demographic compilation; names, descriptions, and taxonomy labels are not. Any signal carrying an age predicate MUST also declare `restricted_attributes` containing `age`. + +- **`restricted_attributes`**: Array of GDPR Article 9 special category values this signal touches. Governance agents SHOULD prefer declared attributes over semantic inference. +- **`policy_categories`**: Array of policy category IDs this signal is sensitive for. Governance agents match these against a plan's `policy_categories` to flag sensitive data usage. + +See [Declaring governance metadata](/dist/docs/3.2.0-beta.4/signals/data-providers#declaring-governance-metadata) for implementation details. + +### Enrichment and progressive disclosure + +Rich definition fields such as `taxonomy.values[]`, `taxonomy.value_mappings[]`, `segmentation_criteria`, `onboarder`, and `modeling.disclosure.jurisdictions[]` describe the authoritative signal definition. They are not required to be repeated in every discovery listing. + +Signal agents SHOULD treat `get_signals` as a discovery and availability surface. For broad search results and wholesale feed pages, agents SHOULD return compact listings with stable identity, display metadata, pricing, deployment status, and cache validators or disclosure pointers when available. For provider-published public signals, `signal_ref` is the definition pointer: orchestrators fetch the provider's `/.well-known/adagents.json` (following `authoritative_location` when present) and select the matching `signals[].id`. Large taxonomies, long segmentation criteria, and jurisdiction-specific disclosure text SHOULD be fetched from that authoritative signal definition or from declared URLs such as `taxonomy.ref`, `criteria_url`, and `modeling.disclosure.jurisdictions[].disclosure_url`. + +When the provider file includes the existing `adagents.json` `catalog_etag`, or the HTTP response includes `ETag` or `Last-Modified`, orchestrators SHOULD cache the fetched `adagents.json` document by resolved authoritative URL plus that validator, then resolve `signal_ref.signal_id` within the cached document. Clients MUST NOT key signal-definition caches by validator alone. Use `taxonomy.etag` for taxonomy documents that have their own freshness validator. Agents MAY include inline excerpts for review, ranking, or lookup-by-reference flows, but SHOULD avoid duplicating full external resources across every item in a large `get_signals` response. + +Orchestrators that need richer metadata inline MAY set `fields` on `get_signals`, using the same response-projection pattern as `get_products.fields`, to request specific listing or definition fields such as `taxonomy`, `data_sources`, `methodology`, `modeling`, `countries`, `consent_basis`, or `data_subject_rights`. Agents SHOULD honor requested fields for exact lookup, refinement, small custom-signal result sets, and private/source-native signals that do not have a public `adagents.json` definition. `fields` is a projection request, not an entitlement grant; agents MAY redact requested definition fields unless the caller is authorized for the underlying lineage, methodology, and rights-routing metadata. When a seller or federating agent projects another provider's `consent_basis` or `art9_basis` into a `get_signals` row, the value remains the provider-declared signal-definition posture; the seller MUST NOT rewrite it into the seller's own processing basis. For broad discovery and wholesale pages, agents MAY still return compact pointers instead of inlining large definition resources. + +### Definition enrichment fields + +Signal definitions MAY carry additional fields for transparency, governance, and review: + +- **Taxonomy metadata**: `taxonomy.ref`, `taxonomy.values[]`, `taxonomy.value_mappings[]`, and `taxonomy.parent_match_behavior` describe how the signal maps to an external or provider-owned taxonomy. These fields do not change package targeting grammar. +- **Source and methodology disclosure**: `data_sources`, `methodology`, `segmentation_criteria`, `criteria_url`, `refresh_cadence`, `lookback_window`, and `onboarder` describe how the segment was compiled. Offline and public-record source categories require `onboarder`. +- **Modeling disclosure**: `modeling` is required when `methodology` is `modeled` or `audience_expansion` is `true`. Required modeling disclosures must name the jurisdictions where the disclosure applies. +- **Jurisdiction and privacy metadata**: `countries`, GDPR-scoped `consent_basis`, `restricted_attributes`, `policy_categories`, and `art9_basis` let governance agents evaluate use constraints structurally. Federating agents that surface a peer's signal MUST treat the peer's `countries[]` as an upper bound, re-check it against the buyer's intended deployment countries, and only apply narrower local policy. +- **Data-subject-rights routing**: `data_subject_rights.channels[]` declares where access, erasure, objection, portability, or rectification requests route for this signal. At least one channel must support one or more of access, erasure, or objection. `response_sla_days` is signal-scoped because custom/private signals and upstream-specific routes may not share a public provider-wide policy surface. Global Privacy Control support is not declared on signal definitions, and consumers MUST NOT infer GPC handling from `data_subject_rights`. + +### Runtime validation notes + +The Signal Definition schema uses JSON Schema draft-07 `if`/`then` and `contains` +for constraints that many SDK generators do not preserve. Consumers and SDKs +SHOULD implement runtime guards for these cases: + +- `value_type: "categorical"` with `taxonomy` requires `taxonomy.value_mappings`. +- `audience_scope: "single_domain"` requires `originating_domain`. +- `methodology: "modeled"` or `audience_expansion: true` requires `modeling`. +- Offline or public-record `data_sources[]` require `onboarder`. +- `data_subject_rights.channels[]` must include at least one channel supporting one or more of access, erasure, or objection. + +`art9_basis` is policy-required rather than schema-required because Article 9 +applicability depends on jurisdiction and use. Governance agents SHOULD run a +runtime check: when `restricted_attributes[]` is non-empty and the planned use +touches Article 9 jurisdictions, require `art9_basis` or raise a review issue +before activation. + +## Tasks + +The Signals Protocol defines two task schemas. All conformant Signals Protocol +agents implement `get_signals` for discovery. Agents that claim the +marketplace activation specialism, advertise activation/deactivation, or return +signals that require buyer-managed activation implement `activate_signal` as the +activation lifecycle surface. + +### get_signals + +**Schema**: [`get-signals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json) / [`get-signals-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-response.json) + +**Reference**: [`get_signals` task](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) + +Discover signals matching campaign criteria. + +**Requirements:** +- Orchestrators MUST include `signal_spec`, `signal_refs`, or deprecated `signal_ids` +- Signal agents MUST return all required fields per response schema +- Signal agents MUST include `activation_key` when `is_live: true` AND caller has deployment access + +### activate_signal + +**Schema**: [`activate-signal-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json) / [`activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-response.json) + +**Reference**: [`activate_signal` task](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) + +Activate a signal for use on a decisioning platform. `activate_signal` is required for agents claiming `signal_marketplace`, advertising activation/deactivation, or returning signals that require buyer-managed activation; discovery-only owned-signal agents are not required to expose it. + +**Requirements:** +- Orchestrators MUST include `signal_agent_segment_id` and `destinations` +- For governed accounts, orchestrators MUST pass a valid `governance_context` from `check_governance`; signal agents MUST reject governed activations that omit or fabricate it +- On success, signal agents MUST return a `deployments` array with `is_live` for each deployment +- Signal agents MUST return `activation_key` when `is_live: true` AND caller has deployment access +- On failure, signal agents MUST return an `errors` array (with no `deployments` array) + +## Error Handling + +Signal agents MUST return errors using the [standard AdCP error schema](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). + +Signal agents MUST use Signals Protocol error codes as defined in the [Error Handling Reference](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling). + +## Security Considerations + +### Transport Security + +All Signals Protocol communications MUST use HTTPS with TLS 1.2 or higher. + +### Authentication + +- Orchestrators MUST authenticate with signal agents using valid credentials +- Signal agents MUST validate credentials before processing requests +- Signal agents SHOULD use account context to determine catalog access level + +### Activation Key Security + +- Signal agents MUST only return `activation_key` to authenticated callers with deployment access +- Signal agents MUST NOT return activation keys for deployments the caller cannot access + +### Data Minimization + +- Signal agents MUST NOT return signals the authenticated agent or account is not authorized to access + +## Conformance + +### Signal Agent Conformance + +A conformant baseline Signals Protocol agent MUST: + +1. Support at least one specified transport (MCP or A2A) +2. Implement `get_signals` per schema +3. Return required fields as defined in response schemas +4. Use specified error codes +5. Enforce access control for private signals and, when activation is supported, + activation keys + +Agents claiming a marketplace activation specialism or otherwise advertising +activation support MUST also implement `activate_signal` per schema. Discovery- +only owned-signal agents MAY conform to the Signals Protocol baseline without +implementing `activate_signal`. + +### Orchestrator Conformance + +A conformant Signals Protocol orchestrator MUST: + +1. Authenticate with signal agents +2. Include required fields as defined in request schemas +3. Handle async activation responses when using `activate_signal` +4. Use `activation_key` for external deployment targeting when activation is in + scope, and use package-level `signal_targeting_groups` for seller-offered + signal selection on sales-agent media buys + +When a seller-offered signal should be applied only to specific packages on a sales-agent buy, orchestrators SHOULD carry that selection in `create_media_buy.packages[].targeting_overlay.signal_targeting_groups`, including the selected signal `pricing_option_id` when required and the selected `signal_ref`. `get_signals` is the broader discovery surface, while the selected product's inline `signal_targeting_options` when present and `signal_targeting_rules` govern buy-time eligibility and pricing; wholesale products can omit inline options and rely on `get_signals` for candidate discovery. `included_signals` is descriptive only: it identifies signals already bundled into or planned into the product, but does not make them selectable. If the product option or `get_signals` result exposes a separate `signal_agent_segment_id` required by the seller, buyers echo it as an execution handle; otherwise `signal_ref` is sufficient. This is the package-level binding; `audience_include` and `audience_exclude` remain scoped to buyer-managed audiences from `sync_audiences`. + +## Implementation Notes + +### Multi-Platform Discovery + +Orchestrators MAY request signals across multiple platforms in a single `get_signals` call. + +Signal agents SHOULD return deployment information for all requested platforms. + +### Activation Timing + +Signal activation is typically asynchronous: +- Simple activations: 1-2 hours +- Complex deployments: up to 24-48 hours + +Orchestrators MUST NOT assume immediate availability after activation request. + +### Destination Type Selection + +The `activate_signal` request supports two destination types. The choice depends on the buyer's execution path: + +- Orchestrators buying through a Sales Agent SHOULD use `type: "agent"` destinations with the SA's URL. The SA handles downstream platform coordination — which DSP it uses is an implementation detail. +- Orchestrators buying directly on a DSP SHOULD use `type: "platform"` destinations. The orchestrator is responsible for ensuring the activation platform matches where campaigns will run. +- Signal marketplace agents MUST support both destination types per the destination schema. + +### Creative signal fan-out and trafficking compatibility + +`build_creative` may fan out over `signal_conditions` ([#5240](https://github.com/adcontextprotocol/adcp/issues/5240)) — a keep-all production axis that produces one distinct creative group per signal condition (e.g. a rain creative AND a sun creative). Each produced group is tagged with the `signal_condition` (a `SignalTargeting`) it is FOR. + +**Trafficking-compatibility invariant (normative).** A creative built FOR one signal condition MUST NOT serve into a package targeting an incompatible condition. The sales agent enforces this **reject-at-trafficking** on `create_media_buy` / `sync_creatives`: assigning a creative whose `signal_condition` is incompatible with the package's signal targeting is rejected with `SIGNAL_TARGETING_INCOMPATIBLE`. This is NOT enforced at `build_creative` — at the build layer the signal pointer is advisory (the buyer-attached-input contract); enforcement lives at the trafficking boundary. + +**Matching.** Compatibility is matched on shared `signal_ref` identity — namespaced `signal_agent_segment_id` / data-provider-scoped `signal_ref` is the primary path, categorical `{signal_id, value}` the fallback. For `value_type: numeric` the comparison is range-overlap (WG-open: range-overlap vs exact-match). This is the **same** `signal_ref` identity used by `packages[].targeting_overlay.signal_targeting_groups` on `create_media_buy`, which is what makes the cross-agent match structurally possible without a shared-taxonomy registry. + +## Schema Reference + +| Schema | Description | +|--------|-------------| +| [`signals/get-signals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json) | get_signals request | +| [`signals/get-signals-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-response.json) | get_signals response | +| [`signals/activate-signal-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json) | activate_signal request | +| [`signals/activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-response.json) | activate_signal response | +| [`core/deployment.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/deployment.json) | Deployment target | +| [`core/activation-key.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/core/activation-key.json) | Activation key | diff --git a/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal.mdx b/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal.mdx new file mode 100644 index 0000000000..58cf5e0e6c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal.mdx @@ -0,0 +1,549 @@ +--- +title: activate_signal +description: "activate_signal is the AdCP task for pushing audience segments to DSPs and sales agents. Supports async activation, deactivation for data governance, and returns platform-specific activation keys." +"og:title": "AdCP — activate_signal" +--- + + +**Task**: Activate a signal for use on a specific platform/account. + +**Response Time**: Minutes to days (asynchronous with potential human-in-the-loop) + +**Request Schema**: [`https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-request.json) +**Response Schema**: [`https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/activate-signal-response.json) + +The `activate_signal` task handles the entire activation lifecycle, including: +- Initiating the activation request +- Monitoring activation progress +- Returning the final deployment status + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `idempotency_key` | string | Yes | Client-generated unique key for this request. Prevents duplicate activations on retries. MUST be unique per (seller, request) pair. Min 16 chars. See [Idempotency](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#idempotency) for normative semantics. | +| `signal_agent_segment_id` | string | Yes | Opaque signal handle from [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) for the signal to activate | +| `action` | string | No | `"activate"` (default) or `"deactivate"`. Deactivating removes segments from downstream platforms for data governance compliance (GDPR, CCPA). | +| `destinations` | Destination[] | Yes | Target destination(s) for activation (see Destination Object below) | +| `account` | [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account for this activation. Associates with a commercial relationship established via [`sync_accounts`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts). | +| `pricing_option_id` | string | Yes (if signal has pricing options) | The pricing option selected from `pricing_options` in the [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) response. Records the buyer's pricing commitment at activation time. Pass this same value in subsequent [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) calls. | +| `governance_context` | string | Conditional | Opaque approval context returned by [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) for this activation. Required when the activation account has a registered governance agent. | + +## Governance + +Signal activation is a spend-commit event when the selected signal carries activation, usage, or CPM fees. For governed accounts, the buyer-side orchestrator MUST call [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance) before `activate_signal` with `purchase_type: "signal_activation"` and a normalized activation payload that includes the spend basis, such as `total_budget` or `budget`. + +When `check_governance` approves the activation, pass the returned `governance_context` into `activate_signal`. If the account has a governance agent registered via [`sync_governance`](/dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance) and the request omits a valid `governance_context`, the signal agent MUST reject the request with [`PERMISSION_DENIED`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-permission-denied). If `check_governance` denies the activation, the buyer MUST NOT call `activate_signal`. + +### Destination Object + +Each deployment target uses a `type` field to discriminate between platform-based and agent-based deployments: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `type` | string | Yes | Discriminator: "platform" for DSPs, "agent" for sales agents | +| `platform` | string | Conditional* | Platform identifier (e.g., 'the-trade-desk', 'amazon-dsp'). Required when type="platform" | +| `agent_url` | string (URI) | Conditional* | URL identifying the sales agent. Required when type="agent" | +| `account` | string | No | Account identifier on the platform or agent | + +*`platform` is required when `type="platform"`, `agent_url` is required when `type="agent"`. + +**Activation Keys**: If the authenticated caller has access to any of the deployment targets in the request, the signal agent will include `activation_key` in the response for those deployments. + +**Permission Model**: The signal agent determines key inclusion based on the caller's authentication and authorization. For example: +- A sales agent receives keys for deployments matching its `agent_url` +- A buyer with credentials for multiple DSP platforms receives keys for all those deployments +- Access is determined by the signal agent's permission system, not by flags in the request + +## Response Structure + +All AdCP responses include: +- **message**: Human-readable summary of the activation status +- **context_id**: Session continuity identifier for tracking progress +- **data**: Task-specific payload (see Response Data below) + +The response structure is identical across protocols, with only the transport wrapper differing: +- **MCP**: Returns complete response as flat JSON +- **A2A**: Returns as artifacts with message in text part, data in data part + +For asynchronous operations like activation, both protocols support: +- **Status tracking**: Check completion status via task_id +- **Progress updates**: Real-time updates on activation progress + +## Response Data + +```json +{ + "deployments": [ + { + "type": "platform", + "platform": "string", + "account": "string", + "activation_key": { + "type": "segment_id", + "segment_id": "string" + }, + "estimated_activation_duration_minutes": "number", + "deployed_at": "string" + } + ], + "errors": [ + { + "code": "string", + "message": "string", + "field": "string", + "suggestion": "string", + "details": {} + } + ] +} +``` + +### Field Descriptions + +- **deployments**: Array of deployment results for each deployment target + - **platform**: Platform identifier for DSPs (either platform or agent_url will be present) + - **agent_url**: URL identifying the deployment agent (either platform or agent_url will be present) + - **account**: Account identifier if applicable + - **activation_key**: The key to use for targeting (see Activation Key below). Only present if the authenticated caller has access to this deployment. + - **estimated_activation_duration_minutes**: Estimated completion time for async operations + - **deployed_at**: ISO 8601 timestamp when activation completed +- **errors**: Optional array of errors and warnings encountered during activation + - **code**: Standardized error code for programmatic handling + - **message**: Human-readable error description with context + - **field**: Field path associated with the error (optional) + - **suggestion**: Suggested fix for the error (optional) + - **details**: Additional activation-specific error details (optional) + +### Activation Key Object + +The activation key represents how to use the signal on a deployment target. It can be either a segment ID or a key-value pair: + +**Segment ID format (typical for DSP platforms):** +```json +{ + "type": "segment_id", + "segment_id": "ttd_segment_12345" +} +``` + +**Key-Value format (typical for sales agents):** +```json +{ + "type": "key_value", + "key": "audience_segment", + "value": "luxury_auto_intenders" +} +``` + +### Using Activation Keys + +The activation key tells the buyer how to reference the signal on the destination. The execution path depends on the destination type: + +**Platform destinations** — The `activation_key` contains a `segment_id`, a platform-native identifier. The signal agent pushed segment data to the DSP; the buyer references this key when configuring campaign targeting on that platform. The buyer is responsible for ensuring the activation platform matches where it will run campaigns. + +**Agent destinations** — The `activation_key` confirms the signal is live on the sales agent. The SA records the activation internally and can apply signal-based targeting when fulfilling media buys through [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy). When the seller exposes selectable signals through inline `Product.signal_targeting_options` or through [`get_signals`](/dist/docs/3.2.0-beta.4/signals/tasks/get_signals) for wholesale products that omit inline options, the buyer selects those signals in `packages[].targeting_overlay.signal_targeting_groups`, carrying the selected `signal_ref`, `pricing_option_id` when required, and any separate seller execution handle required by the product option or signal result. The buyer does not need to know which DSP the SA uses — downstream platform coordination is the SA's responsibility. + +**Choosing a destination type**: Use `type: "platform"` when buying directly on a DSP. Use `type: "agent"` when buying through a Sales Agent — the SA coordinates its own DSP targeting as an implementation detail. + +## Protocol-Specific Examples + +The AdCP payload is identical across protocols. Only the request/response wrapper differs. + +### MCP Request - Sales Agent Activation +```json +{ + "tool": "activate_signal", + "arguments": { + "signal_agent_segment_id": "luxury_auto_intenders", + "pricing_option_id": "po_cpm_usd", + "destinations": [{ + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com" + }] + } +} +``` + +### MCP Response - Synchronous (Key-Value) +Immediate response with activation key: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Signal successfully activated on Wonderstruck sales agent", + "context_id": "ctx-signals-123", + "deployments": [{ + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com", + "is_live": true, + "activation_key": { + "type": "key_value", + "key": "audience_segment", + "value": "luxury_auto_intenders_v2" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] +} +``` + +### MCP Request - DSP Platform Activation +```json +{ + "tool": "activate_signal", + "arguments": { + "signal_agent_segment_id": "luxury_auto_intenders", + "pricing_option_id": "po_cpm_usd", + "destinations": [{ + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123-ttd" + }] + } +} +``` + +### MCP Response - Asynchronous (Segment ID) +Initial response: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Initiating activation of 'Luxury Auto Intenders' on The Trade Desk", + "context_id": "ctx-signals-123", + "deployments": [{ + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123-ttd", + "is_live": false, + "estimated_activation_duration_minutes": 30 + }] +} +``` + +After polling for completion: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Signal successfully activated on The Trade Desk", + "context_id": "ctx-signals-123", + "deployments": [{ + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123-ttd", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ttd_agency123_lux_auto" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] +} +``` + +### A2A Request + +#### Natural Language Invocation + +Text-only invocation requires a separate generic A2A interface whose Agent +Card does not mark the AdCP v3 profile as required. It is not an AdCP profile +invocation. + +#### Explicit Skill Invocation +```javascript +await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "activate_signal", + input: { + idempotency_key: crypto.randomUUID(), + signal_agent_segment_id: "luxury_auto_intenders", + pricing_option_id: "po_cpm_usd", + destinations: [{ + type: "platform", + platform: "the-trade-desk", + account: "agency-123-ttd" + }] + } + } + }] + } +}); +``` + +### A2A Response + +A non-streaming `SendMessage` response selects the completed Task branch. A +client that needs transport progress uses the official `SendStreamingMessage` +or `SubscribeToTask` operation and consumes `StreamResponse` SSE frames. + +```json +{ + "task": { + "id": "task-signal-001", + "contextId": "ctx-signals-123", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "artifact-signal-activation-abc123", + "name": "signal_activation_result", + "parts": [ + { "text": "Signal successfully activated on The Trade Desk" }, + { "data": { + "status": "completed", + "deployments": [{ + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123-ttd", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ttd_agency123_lux_auto" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] + } } + ] + }] + } +} +``` + +### Protocol Transport +- **MCP**: Returns task_id for polling-based asynchronous operation tracking or webhook-based push notifications +- **A2A**: Returns the typed result in a completed Task; clients may opt into the official streaming operations for transport progress +- **Data Consistency**: Both protocols contain identical AdCP data structures and version information + +### Webhook Support + +For long-running activations (when initial response is `submitted`), configure a webhook to receive the complete response when activation completes: + +```javascript +const response = await session.call('activate_signal', + { + signal_agent_segment_id: "luxury_auto_intenders", + pricing_option_id: "po_cpm_usd", + destinations: [{ + type: "platform", + platform: "the-trade-desk", + account: "agency-123-ttd" + }] + }, + { + webhook_url: "https://buyer.com/webhooks/adcp/activate_signal/agent_id/op_id", + webhook_auth: { type: "bearer", credentials: "secret-token" } + } +); +``` + +When activation completes, you receive the full `activate_signal` response: + +```http +POST /webhooks/adcp/activate_signal/agent_id/op_id HTTP/1.1 +Content-Type: application/json +Authorization: Bearer secret-token + +{ + "deployments": [{ + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123-ttd", + "activation_key": { + "type": "segment_id", + "segment_id": "ttd_agency123_lux_auto" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] +} +``` + +See **[Webhooks](/dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks)** for complete details on webhook configuration and reliability. + +## Scenarios + +### Async Activation - Initial Response (Pending) +**Message**: "I've initiated activation of 'Luxury Automotive Context' on PubMatic for account brand-456-pm. This typically takes about 60 minutes. I'll monitor the progress and notify you when it's ready to use." + +**Complete Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "I've initiated activation of 'Luxury Automotive Context' on PubMatic for account brand-456-pm. This typically takes about 60 minutes. I'll monitor the progress and notify you when it's ready to use.", + "context_id": "ctx-signals-def456", + "deployments": [{ + "type": "platform", + "platform": "pubmatic", + "account": "brand-456-pm", + "is_live": false, + "estimated_activation_duration_minutes": 60 + }] +} +``` + +### Async Activation - Final Response (Deployed) +**Message**: "Excellent! The 'Luxury Automotive Context' signal is now live on PubMatic. You can start using it immediately with the activation key provided. The activation completed faster than expected - just 52 minutes." + +**Complete Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Excellent! The 'Luxury Automotive Context' signal is now live on PubMatic. You can start using it immediately with the activation key provided. The activation completed faster than expected - just 52 minutes.", + "context_id": "ctx-signals-def456", + "deployments": [{ + "type": "platform", + "platform": "pubmatic", + "account": "brand-456-pm", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "pm_brand456_peer39_lux_auto" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] +} +``` + +### Sync Activation - Sales Agent (Immediate) +**Message**: "Signal successfully activated on Wonderstruck sales agent. Use the key-value pair in your targeting configuration." + +**Complete Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Signal successfully activated on Wonderstruck sales agent. Use the key-value pair in your targeting configuration.", + "context_id": "ctx-signals-ghi789", + "deployments": [{ + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com", + "is_live": true, + "activation_key": { + "type": "key_value", + "key": "audience_segment", + "value": "luxury_auto_context_v2" + }, + "deployed_at": "2025-01-15T14:31:00Z" + }] +} +``` + +### Success with Warnings +**Message**: "Successfully activated 'Luxury Automotive Context' on PubMatic, but noted some configuration issues. The signal is live and ready to use, though performance may be sub-optimal until the account settings are updated." + +**Complete Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "completed", + "message": "Successfully activated 'Luxury Automotive Context' on PubMatic, but noted some configuration issues. The signal is live and ready to use, though performance may be sub-optimal until the account settings are updated.", + "context_id": "ctx-signals-def456", + "deployments": [{ + "type": "platform", + "platform": "pubmatic", + "account": "brand-456-pm", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "pm_brand456_peer39_lux_auto" + }, + "deployed_at": "2025-01-15T14:30:00Z" + }] +} +``` + +<Note> +Warnings about suboptimal configuration are conveyed in the `message` field. The `errors` array is reserved for actual failures — the activate_signal response uses a strict success/error discriminated union where `deployments` and `errors` are mutually exclusive. +</Note> + +### Error Response (Failed) +**Message**: "I couldn't activate the signal on PubMatic. Your account 'brand-456-pm' doesn't have permission to use Peer39 data. Please contact your PubMatic account manager to enable Peer39 access, then we can try again." + +**Complete Response**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/activate-signal-response.json", + "status": "failed", + "message": "I couldn't activate the signal on PubMatic. Your account 'brand-456-pm' doesn't have permission to use Peer39 data. Please contact your PubMatic account manager to enable Peer39 access, then we can try again.", + "context_id": "ctx-signals-def456", + "errors": [ + { + "code": "DEPLOYMENT_UNAUTHORIZED", + "message": "Account brand-456-pm not authorized for Peer39 data on PubMatic", + "field": "deployment.account", + "suggestion": "Contact your PubMatic account manager to enable Peer39 data access for your account", + "details": { + "account_id": "brand-456-pm", + "deployment_url": "https://pubmatic.com", + "data_provider": "peer39", + "required_permission": "third_party_data_access" + } + } + ] +} +``` + +## Error Codes + +### Activation Errors +- [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found): Referenced `signal_agent_segment_id` doesn't exist or is not accessible to the calling account (`error.field` identifies the failing parameter) +- `ACTIVATION_FAILED`: Could not activate signal for unspecified reasons +- `ALREADY_ACTIVATED`: Signal already active on the specified platform/account +- `DEPLOYMENT_UNAUTHORIZED`: Can't deploy to platform/account due to permissions +- `INVALID_PRICING_MODEL`: Requested pricing model not available for this signal + +### Configuration Warnings +- `SUBOPTIMAL_CONFIGURATION`: Signal activated but account settings may impact performance +- `SLOW_ACTIVATION`: Activation taking longer than expected but still in progress +- `FREQUENCY_CAP_RESTRICTIVE`: Signal activated but account frequency caps may reduce performance + +## Error Handling Philosophy + +### Status vs Errors +- **Task Status**: Indicates overall activation outcome (`deployed`, `failed`, etc.) +- **Errors Array**: Contains specific issues, warnings, and remediation steps +- **Partial Success**: Signal can be `deployed` while still having warnings in `errors` array + +### Error Types +- **Fatal Errors**: Prevent activation (status = `failed`) +- **Warnings**: Signal activates successfully but with caveats (status = `deployed` + errors) +- **Configuration Issues**: Non-blocking problems that affect performance + +## Usage Notes + +1. **Account-Specific**: Include the `account` parameter for account-specific activations +2. **Platform-Wide**: Omit the `account` parameter for platform-wide activations +3. **Async Operation**: This is a long-running task that provides status updates +4. **Monitoring**: Use task ID to monitor progress via polling or SSE +5. **Idempotent**: Safe to retry if activation fails + +## Implementation Guide + +### Generating Activation Messages + +The `message` field should provide clear status updates and actionable information: + +```python +def generate_activation_message(status, signal_info, request): + if status == "pending": + return f"I've initiated activation of '{signal_info.name}' on {request.platform} for account {request.account}. This typically takes about {signal_info.estimated_duration} minutes. I'll monitor the progress and notify you when it's ready to use." + + elif status == "processing": + progress_details = get_progress_details() + time_remaining = calculate_time_remaining() + return f"Good progress on the activation. {progress_details}. About {time_remaining} minutes remaining." + + elif status == "deployed": + actual_duration = calculate_actual_duration() + timing_note = "faster than expected" if actual_duration < signal_info.estimated_duration else "as expected" + return f"Excellent! The '{signal_info.name}' signal is now live on {request.platform}. You can start using it immediately in your campaigns with the ID '{signal_info.platform_id}'. The activation completed {timing_note} - just {actual_duration} minutes." + + elif status == "failed": + error_explanation = explain_error_in_context(error_code) + next_steps = get_remediation_steps(error_code) + return f"I couldn't activate the signal on {request.platform}. {error_explanation}. {next_steps}" +``` diff --git a/dist/docs/3.2.0-beta.4/signals/tasks/get_signals.mdx b/dist/docs/3.2.0-beta.4/signals/tasks/get_signals.mdx new file mode 100644 index 0000000000..402c2f09d1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/signals/tasks/get_signals.mdx @@ -0,0 +1,1221 @@ +--- +title: get_signals +description: "get_signals is the AdCP task for discovering audience and contextual signals. Search by natural language or signal reference, filter by platform and CPM, and get real-time deployment status with activation keys." +"og:title": "AdCP — get_signals" +--- + + +**Task**: Discover signals based on description, with details about where they are deployed. + +**Response Time**: ~60 seconds (inference/RAG with back-end systems) + +**Request Schema**: [`https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-request.json) +**Response Schema**: [`https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-response.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/signals/get-signals-response.json) + +The `get_signals` task returns both signal metadata and real-time deployment status across platforms, allowing agents to understand availability and guide the activation process. + +On a media buy, select a seller- or source-native result through [`targeting_overlay.signal_targeting_groups`](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting#signal_targeting_groups), preserving its `signal_ref` and any supplied execution, pricing, or activation identity. Do not copy a `signal_agent_segment_id` into `audience_include` or `audience_exclude`: those fields accept only buyer-managed `audience_id` values registered through [`sync_audiences`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences). + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `discovery_mode` | string | No (v3.1+ SHOULD include) | `"brief"` (default) or `"wholesale"`. `"brief"`: existing behavior — `signal_spec`, `signal_refs`, or deprecated `signal_ids` is required, agent performs inference/RAG. `"wholesale"`: raw wholesale signals feed enumeration — `signal_spec`, `signal_refs`, and `signal_ids` MUST NOT be provided; agent returns its full priced signals feed, paginated, scoped by `filters` / `account` / `destinations` / `countries` when present. **Timing semantics:** `"wholesale"` is a wholesale signals feed read — agents SHOULD respond synchronously and MUST NOT route through the async/Submitted arm; partial completion uses [`incomplete[]`](#incomplete-array). Agents receiving requests from pre-v3.1 clients without `discovery_mode` MUST default to `"brief"`. Probe support via [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) (`signals.discovery_modes`). | +| `signal_spec` | string | Conditional | Natural language description of the desired signals. Required when `discovery_mode` is `"brief"` and both `signal_refs` and legacy `signal_ids` are absent. MUST NOT be provided when `discovery_mode` is `"wholesale"`. | +| `signal_refs` | SignalRef[] | Conditional | Specific signals to look up by reference. Required when `discovery_mode` is `"brief"` and `signal_spec` is absent. MUST NOT be provided when `discovery_mode` is `"wholesale"`. | +| `signal_ids` | SignalID[] | Conditional | **Deprecated.** Use `signal_refs` instead. Legacy specific-signal lookup for older clients. MUST NOT be provided when `discovery_mode` is `"wholesale"`. | +| `account` | [AccountRef](/dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents#account-references) | No | Account for this request. When provided, the signals agent returns per-account pricing options if configured. In wholesale mode, this is the rate-card scope; when omitted the agent returns default rate-card pricing or omits `pricing_options` entirely. | +| `destinations` | Destination[] | No | Filter signals to those activatable on specific agents/platforms. When omitted, returns all signals available on the current agent. See Destination Object below. | +| `countries` | string[] | No | Countries where signals will be used (ISO 3166-1 alpha-2 codes) | +| `filters` | Filters | No | Filters to refine results (see Filters Object below). In wholesale mode, filters constrain the enumerated signals feed (e.g., `filters.data_providers: ["acme-data"]` returns only that provider's signals). | +| `fields` | string[] | No | Specific signal fields to include in the response, aligned with `get_products.fields`. Required identity and activation fields are always included when required by the response schema. Use for progressive disclosure of rich definition metadata such as `demographic_predicate`, `taxonomy`, `data_sources`, `methodology`, `segmentation_criteria`, `criteria_url`, `onboarder`, `modeling`, `countries`, `consent_basis`, `restricted_attributes`, `policy_categories`, `art9_basis`, and `data_subject_rights`. Agents SHOULD honor requested fields for exact lookup, refinement, small custom-signal result sets, and private/source-native signals when available. `fields` is a projection request, not an entitlement grant; agents MAY redact requested definition fields unless the caller is authorized for the underlying lineage, methodology, and rights-routing metadata. A projected `demographic_predicate`, `consent_basis`, or `art9_basis` from another provider remains provider-declared; sellers and federating agents MUST NOT substitute their own semantics or processing basis. Broad discovery and wholesale pages MAY still return compact pointers to provider-published definitions or disclosure URLs. | +| `if_wholesale_feed_version` | string | No | Opaque `wholesale_feed_version` token from a prior `get_signals` response. When provided, the agent compares against its current wholesale signals feed version for the caller's `cache_scope` and MAY return `unchanged: true` (with `signals` omitted) if nothing has changed. See [Wholesale feed versioning](#wholesale-feed-versioning) and [Cache layering](#cache-layering). | +| `if_pricing_version` | string | No | Opaque `pricing_version` token from a prior response. MUST only be sent together with `if_wholesale_feed_version`. Evaluation order: `if_wholesale_feed_version` mismatch → full payload; `if_wholesale_feed_version` matches but `if_pricing_version` mismatches → full payload (so the caller sees updated `pricing_options`); both match → agent MAY return `unchanged: true`. Agents that don't track pricing separately ignore this. | +| `max_results` | number | No | **Deprecated.** Use `pagination.max_results` instead. When both are present, `pagination.max_results` takes precedence. Will be removed in AdCP 4.0. | +| `pagination` | object | No | Pagination envelope. `pagination.max_results` (max: 100, default: 50) controls page size; `pagination.cursor` (opaque token from previous response) advances pages. Required for wholesale (signals feeds may be large). | +| `push_notification_config` | PushNotificationConfig | No | Optional webhook channel for async terminal completion/failure notifications on `brief` semantic discovery. `submitted` responses with a `task_id` remain pollable through [`get_task_status`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/protocol/get-task-status-request.json) (legacy `tasks/get`) whether or not this field is present. If the request includes this field and the agent returns `submitted`, the agent MUST deliver at least the terminal completion/failure notification to the configured webhook; intermediate progress notifications are MAY. If the agent cannot honor the webhook channel, it MUST reject the request with a structured error instead of silently accepting. Ignored for `wholesale`; agents MUST NOT route wholesale reads through the Submitted arm because this field is present. | + +<Note> +`discovery_mode: "wholesale"` is an AdCP 3.1+ discovery shape. When the +caller cannot assume a 3.1+ signals surface or wholesale support, clients +should first call [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities) +and confirm that `signals.discovery_modes` includes `"wholesale"` before +issuing a wholesale request. If the field is absent or lists only `"brief"`, +treat the agent as brief-only and use `signal_spec`, `signal_refs`, or +deprecated `signal_ids`. +</Note> + +### Async discovery + +`discovery_mode: "brief"` MAY return `submitted` when semantic discovery depends on slow provider queries or review that cannot finish before the initial response. Polling `get_task_status` (legacy `tasks/get`) with `task_id` is always valid. If `push_notification_config` is present and the agent returns `submitted`, the agent also sends at least the terminal completion/failure notification to that webhook; intermediate progress notifications are optional. `discovery_mode: "wholesale"` remains a synchronous feed read and reports partial completion via `incomplete[]`, not `submitted`. + +### Destination Object + +Each deployment target uses a `type` field to discriminate between platform-based and agent-based deployments: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `type` | string | Yes | Discriminator: "platform" for DSPs, "agent" for sales agents | +| `platform` | string | Conditional* | Platform identifier (e.g., 'the-trade-desk', 'amazon-dsp'). Required when type="platform" | +| `agent_url` | string (URI) | Conditional* | URL identifying the sales agent. Required when type="agent" | +| `account` | string | No | Account identifier on the platform or agent | + +*`platform` is required when `type="platform"`, `agent_url` is required when `type="agent"`. + +**Destination filtering**: Signals are returned if they are available on *any* of the requested destinations (OR semantics). Destinations where a signal is not available are omitted from that signal's response `deployments` array. A `PARTIAL_COVERAGE` warning may be included when some destinations don't support the signal. + +**Activation Keys**: If the authenticated caller has access to any of the destinations in the request, the signal agent will include `activation_key` fields in the response for those deployments (when `is_live: true`). + +**Permission Model**: The signal agent determines key inclusion based on the caller's authentication and authorization. For example: +- A sales agent receives keys for deployments matching its `agent_url` +- A buyer with credentials for multiple DSP platforms receives keys for all those deployments +- Access is determined by the signal agent's permission system, not by flags in the request + +### Filters Object + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `catalog_types` | string[] | No | Filter by catalog type ("marketplace", "custom", "owned") | +| `data_providers` | string[] | No | Filter by specific data providers | +| `max_cpm` | number | No | Maximum CPM price filter. Excludes signals where all CPM-based pricing options exceed this value. Signals without CPM-based pricing options are not affected by this filter. | +| `min_coverage_percentage` | number | No | Minimum coverage requirement | + +<Note> +`catalog_types`, the deprecated `catalog_signals` capability flag, and the deprecated `signal_id.source: "catalog"` value are legacy wire terms. In new prose, read them as provider-published signal definitions in adagents.json `signals[]`. Existing 3.x agents may continue to accept or emit them for compatibility, but new callers SHOULD use `signal_ref` and MUST NOT require `signals.features.catalog_signals` before using the Signals protocol. +</Note> + +## Response Structure + +All AdCP responses include: +- **message**: Human-readable summary of the operation result +- **context_id**: Session continuity identifier for follow-up requests +- **data**: Task-specific payload (see Response Data below) + +The response structure is identical across protocols, with only the transport wrapper differing: +- **MCP**: Returns complete response as flat JSON +- **A2A**: Returns as artifacts with message in text part, data in data part + +## Response Data + +```json +{ + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "string", + "signal_id": "string" + }, + "signal_agent_segment_id": "string", + "name": "string", + "description": "string", + "signal_type": "string", + "data_provider": "string", + "coverage_percentage": "number (optional, deprecated)", + "coverage_forecast": { + "method": "estimate", + "forecast_range_unit": "availability", + "scope": { + "kind": "inventory", + "label": "network price-priority inventory" + }, + "bucket_semantics": "exclusive", + "bucket_completeness": "partial", + "points": [ + { + "label": "not present", + "dimensions": [ + { + "kind": "signal", + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "weather-data.example", + "signal_id": "weather" + }, + "signal_value": null, + "presence": "absent" + } + ], + "metrics": { + "impressions": { "mid": 280000 }, + "coverage_rate": { "mid": 0.28 } + } + }, + { + "label": "hot", + "dimensions": [ + { + "kind": "signal", + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "weather-data.example", + "signal_id": "weather" + }, + "signal_value": "hot", + "presence": "present" + } + ], + "metrics": { + "impressions": { "mid": 180000 }, + "coverage_rate": { "mid": 0.18 } + } + } + ] + }, + "deployments": [ + { + "type": "agent", + "agent_url": "string", + "account": "string", + "is_live": "boolean", + "activation_key": { + "type": "segment_id", + "segment_id": "string" + }, + "estimated_activation_duration_minutes": "number" + } + ], + "pricing_options": [ + { + "pricing_option_id": "string", + "model": "cpm | percent_of_media | flat_fee | per_unit | custom", + "...": "..." + } + ] + } + ] +} +``` + +<Note> +`get_signals` is a discovery and availability surface, not a requirement to +inline every field from the authoritative signal definition. For broad search +results and wholesale feed pages, signal agents SHOULD keep each listing +compact and use stable references plus cacheable disclosure pointers for large +definition resources. Buyers can dereference provider-published definitions +from `signal_ref`: fetch the provider's `/.well-known/adagents.json` (following +`authoritative_location` when present) and select the matching `signals[].id`. +Cache the fetched `adagents.json` document by resolved authoritative URL plus +`catalog_etag`, HTTP `ETag` / `Last-Modified`, or a bounded TTL, then resolve +`signal_ref.signal_id` within that cached document. Use `taxonomy.etag` only for +taxonomy documents that have their own freshness validator. These reuse existing +provider-file and taxonomy validators; `get_signals` does not define a separate +signal-definition validator, and clients must not key signal-definition caches by +validator alone. +</Note> + +### Definition field inclusion + +Buyers that need richer review context in the same call can set `fields`. This +uses the same response-projection pattern as `get_products.fields`, rather than +introducing a separate lookup task. + +Required identity and activation fields are always included when required by the +response schema. Additional values request optional listing fields or rich +definition metadata inline, including `taxonomy`, `data_sources`, `methodology`, +`segmentation_criteria`, `criteria_url`, `refresh_cadence`, `lookback_window`, +`onboarder`, `modeling`, `audience_expansion`, `device_expansion`, `countries`, +`consent_basis`, `restricted_attributes`, `policy_categories`, `art9_basis`, and +`data_subject_rights`. + +When `consent_basis` or `art9_basis` is projected for another provider's signal, +the value remains provider-declared signal-definition posture. Sellers and +federating agents MUST NOT substitute their own processing basis for the +provider-declared basis. + +Agents SHOULD honor requested fields for exact lookup, refinement, and small +custom-signal result sets when the fields are available. For broad discovery and +wholesale pages, agents MAY still return compact listings with pointers to +provider-published definitions, taxonomy documents, criteria pages, and +disclosure URLs when inlining the requested fields would make the page too +large. This keeps static signals cacheable through `adagents.json` while letting +custom or brief-specific signals return deeper inline context when useful. + +### Field Descriptions + +- **signals**: Array of matching signals + - **signal_ref**: Canonical signal reference. Use `scope: "data_provider"` for signals resolved through adagents.json `signals[]`, `scope: "signal_source"` for source-native signals that are not published in adagents.json `signals[]`, and `scope: "product"` only in product-contextual responses. New responses SHOULD include this field. + - **signal_id**: Deprecated legacy SignalId object. New clients should read `signal_ref`; during the migration window, older responses may include only `signal_id`. + - **signal_agent_segment_id**: Opaque signal handle issued by this signal source. Use it verbatim for [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal); do not treat it as a globally portable signal ID. For package-level `signal_targeting_groups`, `signal_ref` is the buy-time identity and this handle is echoed only when the selected product option exposes it as a separate execution handle. + - **name**: Human-readable signal name + - **description**: Detailed signal description + - **demographic_predicate**: Authoritative demographic meaning projected from the signal definition. Age predicates carry inclusive bounds and explicit unknown-age membership; names alone are not machine-readable semantics. + - **signal_type**: Type of signal. One of: + - `marketplace` — resold third-party segment (provider authorization verifiable via the provider's `adagents.json`) + - `owned` — first-party segment derived from data the signal source directly owns + - `custom` — source-native segment built on demand from models, composites, or buyer inputs (not attributable to a standing upstream provider) + - **data_provider**: Human-readable source name when applicable. For `scope: "data_provider"` signals this is the data provider; for `scope: "signal_source"` signals it may identify the signal source or proprietary origin. + - **coverage_percentage**: Optional deprecated legacy scalar percentage of audience coverage. Use only as a fallback for clients that do not consume `coverage_forecast`. When **coverage_forecast** is present, `coverage_forecast` is authoritative for signal-level discovery and this scalar is fallback-only. If `coverage_forecast` includes an absent bucket over the same denominator, `coverage_percentage` should align with `100 * (1 - absent coverage_rate.mid)`. + - **coverage_forecast**: Optional forecast-shaped availability guidance for the signal. `scope` declares the denominator, `bucket_semantics` declares whether returned value buckets are `exclusive` or `overlapping`, and `bucket_completeness` declares whether the returned buckets are a full denominator partition or a partial histogram. Each point can use a `kind: "signal"` dimension with canonical `signal_ref`, `presence: "present"` for any present value, `presence: "present"` plus `signal_value` for a specific value bucket, or `presence: "absent"` plus `signal_value: null` for the not-present bucket. `metrics.coverage_rate` is a 0.0-1.0 fraction of the declared scope. + - **deployments**: Array of destination deployments + - **agent_url**: URL identifying the destination agent + - **account**: Account identifier if applicable + - **is_live**: Whether signal is currently active on this deployment + - **activation_key**: The key to use for targeting (see Activation Key below). **Only present when `is_live=true` and the authenticated caller has access to this deployment.** + - **estimated_activation_duration_minutes**: Time to activate if not live + - **pricing_options**: Array of pricing options for this signal when it has an incremental price. Pass the selected `pricing_option_id` in [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) or package-level `signal_targeting_groups` for billing verification. Omitted when pricing is unavailable to the caller, bundled into the destination product, or has no incremental cost. + - **pricing_option_id**: Unique identifier for this pricing option + - **model**: Pricing model — `cpm`, `percent_of_media`, `flat_fee`, `per_unit`, or `custom` + - `model: "cpm"` — `cpm` (number, cost per thousand impressions), `currency` (ISO 4217) + - `model: "percent_of_media"` — `percent` (0–100), `currency` (ISO 4217), `max_cpm` (optional CPM cap: effective charge = `min(percent × media_spend_per_mille, max_cpm)`) + - `model: "flat_fee"` — `amount` (fixed charge), `currency` (ISO 4217), `period` (`monthly`, `quarterly`, `annual`, or `campaign`) + - `model: "per_unit"` — `unit` (what is counted), `unit_price` (cost per one unit), `currency` (ISO 4217) + - `model: "custom"` — `description` (human-readable), `metadata` (structured parameters), `currency` (optional). Escape hatch for performance kickers, tiered volume, hybrid formulas, or any construct the standard models cannot express. Buyers SHOULD route custom pricing through operator review before commitment. + +Select the pricing option that matches your billing model. For direct signal activation, pass its `pricing_option_id` in `report_usage` for billing verification; for seller-offered signals selected on a media product, pass it in package-level `targeting_overlay.signal_targeting_groups.groups[].signals[].pricing_option_id`. If a signal offers multiple models (e.g., CPM and flat fee), choose based on your expected delivery volume and campaign structure. + +### Response Metadata + +| Field | Type | Description | +|-------|------|-------------| +| `wholesale_feed_version` | string | Opaque token representing the version of the wholesale signals feed state used to compose this response. Treat as opaque — no format, no ordering, no inspection. Returned on every response by agents implementing conditional-fetch. See [Wholesale feed versioning](#wholesale-feed-versioning). | +| `pricing_version` | string | Optional finer-grained token. Changes when prices move while `wholesale_feed_version` only changes for structure/metadata. Agents not separating these MAY omit `pricing_version`. | +| `cache_scope` | string | `"public"` or `"account"`. **REQUIRED on every response** (schema-enforced — the safety property of the two-layer cache depends on it). When the request had no `account`, MUST be `"public"`. When the request had `account`, the agent declares either `"public"` (account prices off the rate card — caller dedupes) or `"account"` (account-specific overrides). See [Cache layering](#cache-layering). | +| `unchanged` | boolean | Present and `true` ONLY when the request carried `if_wholesale_feed_version` (and/or `if_pricing_version`) matching the agent's current version for the caller's `cache_scope`, in which case `signals[]` MUST be omitted; `wholesale_feed_version`, `cache_scope`, and `pricing_version` (when used) MUST still be echoed. Agents MUST NOT emit `unchanged: false` — absence of the field IS the "response carries signals" signal (one shape per state). Callers receiving `unchanged: true` MUST NOT mutate their local wholesale signals mirror. | +| `incomplete` | IncompleteEntry[] | Declares what the agent could not finish within the caller's `time_budget` or due to internal limits. See [Incomplete array](#incomplete-array). | +| `pagination` | PaginationResponse | `has_more`, `cursor`, optional `total_count`. Required for wholesale mode. | + +### Activation Key Object + +The activation key represents how to use the signal on a deployment target. It can be either a segment ID or a key-value pair: + +**Segment ID format:** +```json +{ + "type": "segment_id", + "segment_id": "ttd_segment_12345" +} +``` + +**Key-Value format:** +```json +{ + "type": "key_value", + "key": "audience_segment", + "value": "luxury_auto_intenders" +} +``` + +## Protocol-Specific Examples + +The AdCP payload is identical across protocols. Only the request/response wrapper differs. + +### MCP Request - Sales Agent Requesting Signals + +A sales agent querying for signals. Because the authenticated caller is wonderstruck.salesagents.com, the signal agent will include activation keys in the response: + +```json +{ + "tool": "get_signals", + "arguments": { + "signal_spec": "High-income households interested in luxury goods", + "destinations": [ + { + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com" + } + ], + "countries": ["US"], + "filters": { + "max_cpm": 5.0, + "catalog_types": ["marketplace"] + }, + "pagination": { + "max_results": 5 + } + } +} +``` + +### MCP Response - With Activation Key + +Because the authenticated caller matches the deployment target, the response includes the activation key: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Found 1 luxury segment matching your criteria. Already activated for your sales agent.", + "context_id": "ctx-signals-123", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "luxury_auto_intenders" + }, + "signal_agent_segment_id": "luxury_auto_intenders", + "name": "Luxury Automotive Intenders", + "description": "High-income individuals researching luxury vehicles", + "signal_type": "marketplace", + "data_provider": "Pinnacle Data", + "coverage_forecast": { + "method": "estimate", + "forecast_range_unit": "availability", + "scope": { + "kind": "inventory", + "label": "eligible destination inventory" + }, + "bucket_semantics": "exclusive", + "bucket_completeness": "partial", + "points": [ + { + "label": "present", + "dimensions": [ + { + "kind": "signal", + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "pinnacle-data.example", + "signal_id": "luxury_auto_intenders" + }, + "presence": "present" + } + ], + "metrics": { + "coverage_rate": { "mid": 0.12 } + } + } + ] + }, + "deployments": [ + { + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com", + "is_live": true, + "activation_key": { + "type": "key_value", + "key": "audience_segment", + "value": "luxury_auto_intenders_v2" + } + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 3.50, + "currency": "USD" + } + ] + } + ] +} +``` + +### MCP Response - Multiple Pricing Options + +Some signals offer multiple pricing models. The buyer selects one and passes its `pricing_option_id` in [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) for direct signal usage or in package-level `signal_targeting_groups` when the signal is selected on a media buy: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Found 1 segment matching your criteria. Three pricing options are available: CPM at $3.50, 15% of media spend, or $5,000/month flat fee.", + "context_id": "ctx-signals-456", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "acmedata.com", + "signal_id": "eco_conscious_shoppers" + }, + "signal_agent_segment_id": "eco_conscious_shoppers", + "name": "Eco-Conscious Shoppers", + "description": "Users with demonstrated interest in sustainable and eco-friendly products", + "signal_type": "marketplace", + "data_provider": "Acme Data", + "coverage_percentage": 18, + "deployments": [ + { + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "eco_seg_789" + } + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_eco_cpm", + "model": "cpm", + "cpm": 3.50, + "currency": "USD" + }, + { + "pricing_option_id": "po_eco_pom", + "model": "percent_of_media", + "percent": 15, + "max_cpm": 1.50, + "currency": "USD" + }, + { + "pricing_option_id": "po_eco_flat", + "model": "flat_fee", + "amount": 5000, + "period": "monthly", + "currency": "USD" + } + ] + } + ] +} +``` + +### MCP Request - Buyer Querying Multiple DSP Platforms + +A buyer checking availability across multiple DSP platforms: + +```json +{ + "tool": "get_signals", + "arguments": { + "signal_spec": "High-income households interested in luxury goods", + "destinations": [ + { + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123" + }, + { + "type": "platform", + "platform": "amazon-dsp" + } + ], + "countries": ["US"], + "filters": { + "max_cpm": 5.0, + "catalog_types": ["marketplace"] + }, + "pagination": { + "max_results": 5 + } + } +} +``` + +### MCP Response - Buyer With Multi-Platform Access + +A buyer with credentials for both The Trade Desk and Amazon DSP receives keys for both platforms: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Found 1 luxury segment matching your criteria. Already activated on The Trade Desk, pending activation on Amazon DSP.", + "context_id": "ctx-signals-123", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "experian.com", + "signal_id": "luxury_auto_intenders" + }, + "signal_agent_segment_id": "luxury_auto_intenders", + "name": "Luxury Automotive Intenders", + "description": "High-income individuals researching luxury vehicles", + "signal_type": "marketplace", + "data_provider": "Experian", + "coverage_percentage": 12, + "deployments": [ + { + "type": "platform", + "platform": "the-trade-desk", + "account": "agency-123", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ttd_agency123_exp_lux_auto" + } + }, + { + "type": "platform", + "platform": "amazon-dsp", + "is_live": false, + "estimated_activation_duration_minutes": 60 + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 3.50, + "currency": "USD" + } + ] + } + ] +} +``` + +### A2A Request + +#### Natural Language Invocation + +Text-only invocation requires a separate generic A2A interface whose Agent +Card does not mark the AdCP v3 profile as required. It is not an AdCP profile +invocation. + +#### Explicit Skill Invocation +```javascript +await a2a.send({ + message: { + messageId: crypto.randomUUID(), + role: "ROLE_USER", + parts: [{ + data: { + skill: "get_signals", + input: { + signal_spec: "High-income households interested in luxury goods", + destinations: [ + { + type: "agent", + agent_url: "https://thetradedesk.com", + account: "agency-123" + }, + { + type: "agent", + agent_url: "https://advertising.amazon.com/dsp" + } + ], + countries: ["US"], + filters: { + max_cpm: 5.0, + catalog_types: ["marketplace"] + }, + pagination: { + max_results: 5 + } + } + } + }] + } +}); +``` + +### A2A Response + +A non-streaming `SendMessage` response selects the Task branch: + +```json +{ + "task": { + "id": "task-signal-discovery-001", + "contextId": "ctx-signals-123", + "status": { "state": "TASK_STATE_COMPLETED" }, + "artifacts": [{ + "artifactId": "artifact-signal-discovery-def456", + "name": "signal_discovery_result", + "parts": [ + { "text": "Found one matching luxury segment." }, + { "data": { + "status": "completed", + "cache_scope": "account", + "signals": [{ + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "provider.example", + "signal_id": "luxury_auto_intenders" + }, + "signal_agent_segment_id": "luxury_auto_intenders", + "name": "Luxury Automotive Intenders", + "description": "People researching luxury vehicles", + "signal_type": "marketplace", + "deployments": [{ + "type": "platform", + "platform": "the-trade-desk", + "is_live": false + }] + }] + } } + ] + }] + } +} +``` + +### Protocol Transport +- **MCP**: Direct tool call with arguments, returns complete response as flat JSON +- **A2A**: Skill invocation with input, returns structured artifacts with message and data separated +- **Data Consistency**: Both protocols contain identical AdCP data structures and version information + +## Scenarios + +### All Platforms Discovery + +Discover all available deployments across platforms: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "signal_spec": "Contextual segments for luxury automotive content", + "destinations": [ + { "type": "platform", "platform": "index-exchange", "account": "agency-123-ix" }, + { "type": "platform", "platform": "openx" }, + { "type": "platform", "platform": "pubmatic", "account": "brand-456-pm" } + ], + "countries": ["US"], + "filters": { + "data_providers": ["Peer39"], + "catalog_types": ["marketplace"] + } +} +``` + +### Response + +**Message**: "Found luxury automotive contextual segment from Peer39 with 15% coverage. Live on Index Exchange and OpenX, pending activation on Pubmatic." + +**Payload**: +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [{ + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "peer39.com", + "signal_id": "peer39_luxury_auto" + }, + "signal_agent_segment_id": "peer39_luxury_auto", + "name": "Luxury Automotive Context", + "description": "Pages with luxury automotive content and high viewability", + "signal_type": "marketplace", + "data_provider": "Peer39", + "coverage_percentage": 15, + "deployments": [ + { + "type": "platform", + "platform": "index-exchange", + "account": "agency-123-ix", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ix_agency123_peer39_lux_auto" + } + }, + { + "type": "platform", + "platform": "index-exchange", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ix_peer39_luxury_auto_gen" + } + }, + { + "type": "platform", + "platform": "openx", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ox_peer39_lux_auto_456" + } + }, + { + "type": "platform", + "platform": "pubmatic", + "account": "brand-456-pm", + "is_live": false, + "estimated_activation_duration_minutes": 60 + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 2.50, + "currency": "USD" + } + ] + }] +} +``` + +### Response Fields + +- **context_id** (string): Context identifier for session persistence +- **signals** (array): Array of matching signals + - **signal_agent_segment_id** (string): Opaque signal handle issued by this signal source. Use it verbatim for [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal); do not treat it as a globally portable signal ID. For media-buy signal groups, `signal_ref` is the buy-time identity and this handle is echoed only when the selected product option exposes it as a separate execution handle. + - **name** (string): Human-readable signal name + - **description** (string): Detailed signal description + - **signal_type** (string): `marketplace` (resold third-party), `owned` (signal source first-party data), or `custom` (source-native segment built on demand) + - **data_provider** (string, optional): Human-readable source/provider name when applicable + - **coverage_percentage** (number, optional, deprecated): Legacy scalar estimated reach percentage. Use only as a fallback when `coverage_forecast` is absent or unsupported by the client. + - **coverage_forecast** (object, optional): Forecast-shaped coverage breakdown with an explicit denominator and availability points. Use `presence: "present"` with omitted `signal_value` for an aggregate "any present value" bucket; add `signal_value` only when the row is for a specific value. Use `bucket_semantics: "exclusive"` when returned buckets do not overlap, or `"overlapping"` when multi-value signals can make returned rates sum above 1.0. Use `bucket_completeness: "complete"` only when the returned buckets cover the declared denominator; otherwise use `"partial"` and buyers must treat omitted share as undisclosed, other, or unsupported buckets. + +Use `coverage_forecast` as the authoritative field for signal-first discovery: "how much inventory has this signal or its values?" Use product or proposal forecasts with `kind: "signal"` dimensions as the authoritative surface for product-specific planning: "how does this signal restrict this product's baseline availability?" Bucket-specific filtering is client-side for now; request filters such as `min_coverage_percentage` still use the legacy scalar. + - **deployments** (array): Platform-specific deployment information + - **platform** (string): Target platform name + - **account** (string, nullable): Specific account if account-specific + - **is_live** (boolean): Whether signal is currently active + - **activation_key** (object): The key to use for targeting. Only present when `is_live=true` and the caller has access. See Activation Key Object above. + - **estimated_activation_duration_minutes** (number, optional): Time to activate if not live + - **pricing_options** (array): Array of pricing options available for this signal when it has an incremental price. Select one and pass its `pricing_option_id` in [`report_usage`](/dist/docs/3.2.0-beta.4/accounts/tasks/report_usage) or package-level `signal_targeting_groups`. + - **pricing_option_id** (string): Unique identifier for this pricing option + - **model** (string): Pricing model — `cpm`, `percent_of_media`, `flat_fee`, `per_unit`, or `custom` + +## Error Codes + +### Discovery Errors +- [`REFERENCE_NOT_FOUND`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-reference-not-found): Referenced `signal_agent_segment_id` doesn't exist, + OR a private signal agent is not visible to this account. The same code is + returned whether the resource exists but is unauthorized or truly does not + exist — sellers MUST NOT distinguish the two (see `error.field` to + identify which typed parameter failed to resolve). See the uniform-response + MUST in error-handling.mdx. +- `AGENT_ACCESS_DENIED`: Authenticated agent's credentials did not authorize access to this signal agent + +### Discovery Warnings +- `PRICING_UNAVAILABLE`: Pricing data temporarily unavailable for one or more platforms +- `PARTIAL_COVERAGE`: Some requested platforms don't support this signal type +- `STALE_DATA`: Some signal metadata may be outdated due to provider refresh delays + +## Usage Notes + +1. **Authentication-Based Keys**: Activation keys are only returned when the authenticated caller matches one of the deployment targets +2. **Permission Security**: The signal agent determines key inclusion based on caller identity, not request flags +3. **Deployment Status**: Check `is_live` to determine if activation is needed +4. **Multiple Deployments**: Query multiple deployment targets to check availability across platforms +5. **Activation Required**: If `is_live` is false, use the [`activate_signal`](/dist/docs/3.2.0-beta.4/signals/tasks/activate_signal) task +6. **The message field** provides a quick summary of the most relevant findings + +## Seller-offered signals on media products + +A sales agent that owns or is authorized to apply targeting signals exposes buy-time product eligibility through [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products). It can also expose a broader cross-product signal feed through `get_signals` when buyers need discovery or activation before package selection: + +- `get_products` declares whether a product has package-level signal targeting. `products[].included_signals` describes non-selectable signals already bundled into or planned into a product. Inline `products[].signal_targeting_options` can carry a product-specific menu, price, activation handle, default, grouping hint, or brief/refine-selected subset; wholesale products can omit inline options and use `get_signals` as the selectable signal feed. +- `get_signals` optionally returns cross-product signal metadata, including `signal_ref`, `signal_agent_segment_id`, value metadata, and any default or account-scoped `pricing_options`. +- [`create_media_buy`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy) selects the signal for a package in `packages[].targeting_overlay.signal_targeting_groups`, carrying the selected signal `pricing_option_id`, `signal_ref`, and any separate seller execution handle when required. + +This gives buyers a product-first buy-time eligibility path without forcing products to duplicate a large wholesale signal feed: use the selected product's inline `signal_targeting_options` when present and `signal_targeting_rules` to determine what may be applied on that package. When a product omits inline options but allows signal targeting, use `get_signals` for candidate discovery and activation metadata, then use `get_products.filters.signal_targeting` or a product-specific `get_products` query to confirm the candidate set is selectable and jointly composable for the intended product before calling `create_media_buy`. When both surfaces include pricing, the product-scoped `signal_targeting_options[].pricing_options` price is authoritative for that product. For product-local signals exposed on both surfaces, `signal_ref.signal_id` in the product option MUST match the seller's `get_signals.signals[].signal_ref.signal_id` for the same signal. `included_signals` is descriptive only and does not make a signal selectable. + +For media-buy product targeting, product options and package groups use the same `signal_ref` identity: `scope: "product"` for product-local signal options, `scope: "data_provider"` with `data_provider_domain` for signals defined in published adagents.json `signals[]`, or `scope: "signal_source"` for source-native custom signals that are not published in adagents.json `signals[]`. When a provider-published signal is selected, buyers can verify the seller's authorization by checking the provider's `adagents.json` `authorized_agents` rules for the signal id or tags. The older Signals Protocol `signal_id.source` shape is deprecated and retained only for backwards compatibility. + +## Wholesale signals feed + +When a consumer (storefront, federated marketplace, registry) needs to mirror a signals agent's full priced signals feed, set `discovery_mode: "wholesale"` and omit `signal_spec` / `signal_refs` / deprecated `signal_ids`. When the caller cannot assume a 3.1+ signals surface or wholesale support, first check `get_adcp_capabilities.signals.discovery_modes` for `"wholesale"`. Wholesale enumeration is symmetric with [`get_products` `buying_mode: "wholesale"`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products): synchronous, paginated, firm-priced, with partial completion declared via `incomplete[]`. + +### Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "discovery_mode": "wholesale", + "account": { "account_id": "acct_123" }, + "filters": { + "catalog_types": ["marketplace", "owned"], + "data_providers": ["acme-data", "nova-insights"] + }, + "pagination": { "max_results": 50 } +} +``` + +### Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Returning 50 of 312 signals in wholesale mode.", + "context_id": "ctx-wholesale-001", + "cache_scope": "public", + "wholesale_feed_version": "v2026-05-18T08:00:00Z-acme-rev412", + "signals": [ + { + "signal_ref": { "scope": "data_provider", "data_provider_domain": "acme-data.com", "signal_id": "luxury_auto_intenders" }, + "signal_agent_segment_id": "sigagent_seg_4421", + "name": "Luxury Auto Intenders", + "description": "Households researching premium vehicles in the last 30 days.", + "signal_type": "marketplace", + "data_provider": "Acme Data", + "coverage_percentage": 18.4, + "deployments": [ + { "type": "platform", "platform": "the-trade-desk", "is_live": true, + "activation_key": { "type": "segment_id", "segment_id": "ttd_seg_99821" } } + ], + "pricing_options": [ + { "pricing_option_id": "po_cpm_1", "model": "cpm", "cpm": 2.50, "currency": "USD" } + ] + } + ], + "pagination": { "has_more": true, "cursor": "eyJvIjo1MH0=", "total_count": 312 } +} +``` + +### Authorization and provenance + +Marketplace signals (`signal_type: "marketplace"`) remain attributable to their upstream data provider. Wholesale enumeration does not collapse provenance: + +- Each marketplace signal carries `data_provider`. +- Consumers SHOULD verify provider authorization via the provider's `adagents.json` — the signals agent's URL must appear in the provider's authorization list for that signal class. +- Storefronts and registries MAY use wholesale enumeration plus `adagents.json` cross-reference to materialize a data-publisher signal view: for each known data provider, the set of signals available via authorized signals agents, with prices. + +### Pricing + +`pricing_options[]` MUST be populated for authenticated callers when the agent has firm standalone signal prices to declare. When `account` is omitted, the agent returns default rate-card pricing or omits `pricing_options[]` (in which case the caller MUST re-query with `account` or use product-scoped pricing from `get_products` before composing). Unauthenticated callers MAY receive signal metadata without pricing. Signals bundled into a media product or carrying no incremental cost MAY omit `pricing_options[]`. + +### Capability declaration + +Signals agents declare wholesale support in [`get_adcp_capabilities`](/dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities): + +```json +{ + "signals": { + "discovery_modes": ["brief", "wholesale"] + } +} +``` + +Agents not declaring `"wholesale"` MAY return [`INVALID_REQUEST`](/dist/docs/3.2.0-beta.4/building/verification/compliance-catalog#error-code-invalid-request) for wholesale calls. Because wholesale discovery is AdCP 3.1+, the capability declaration is the canonical support signal when a caller cannot assume a 3.1+ signals surface or wholesale support; callers SHOULD probe before issuing wholesale requests. + +## Wholesale feed versioning + +Even with wholesale enumeration, a consumer mirroring an agent's signals feed would re-fetch every paginated page on each poll just to detect changes. To avoid that, `get_signals` supports an opaque `wholesale_feed_version` token returned on every response. Pass it back via `if_wholesale_feed_version` on a subsequent call and the agent MAY short-circuit with `unchanged: true` — no signal payload, no per-page diff. + +This is the seller-side wholesale signals feed returned by `get_signals`. It is not a [`sync_catalogs`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs) feed; `sync_catalogs` manages buyer-provided campaign input feeds on a seller account. + +### Unchanged response + +**Request:** + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "discovery_mode": "wholesale", + "if_wholesale_feed_version": "v2026-05-18T08:00:00Z-acme-rev412" +} +``` + +**Response (wholesale signals feed unchanged):** + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Wholesale signals feed unchanged since v2026-05-18T08:00:00Z-acme-rev412.", + "context_id": "ctx-abc-789", + "unchanged": true, + "wholesale_feed_version": "v2026-05-18T08:00:00Z-acme-rev412", + "pricing_version": "v2026-05-18T08:00:00Z-acme-rev412", + "cache_scope": "public" +} +``` + +When `unchanged: true`, `signals[]` MUST be omitted and consumers MUST NOT mutate their local wholesale signals mirror. + +### Wholesale signals feed changed — full payload returned (abbreviated) + +```json test=false +{ + "message": "Returning 312 signals (wholesale feed version advanced).", + "context_id": "ctx-abc-790", + "wholesale_feed_version": "v2026-05-18T10:15:00Z-acme-rev415", + "pricing_version": "v2026-05-18T10:15:00Z-acme-rev415", + "cache_scope": "public", + "signals": [ + { + "signal_ref": { "scope": "data_provider", "data_provider_domain": "acme-data.com", "signal_id": "luxury_auto_intenders" }, + "signal_agent_segment_id": "sigagent_seg_4421", + "name": "Luxury Auto Intenders", + "description": "Households researching premium vehicles in the last 30 days.", + "signal_type": "marketplace", + "data_provider": "Acme Data", + "coverage_percentage": 18.4, + "deployments": [ + { "type": "platform", "platform": "the-trade-desk", "is_live": true, + "activation_key": { "type": "segment_id", "segment_id": "ttd_seg_99821" } } + ], + "pricing_options": [ + { "pricing_option_id": "po_cpm_1", "model": "cpm", "cpm": 2.50, "currency": "USD" } + ] + } + ], + "pagination": { "has_more": true, "cursor": "eyJvIjo1MH0=", "total_count": 312 } +} +``` + +### Rules + +- Tokens are **opaque**. No format, no ordering, no inspection. +- A returned `wholesale_feed_version` is scope-keyed via `cache_scope`. Callers cache `(cache_scope, wholesale_feed_version)` pairs alongside the `(account, filters, discovery_mode, destinations, countries)` tuple used. See [Cache layering](#cache-layering) for the two-layer model. +- `pricing_version` is an optional finer-grained token: when present, it changes when prices move but `wholesale_feed_version` changes only when structure/metadata moves. Common for rate-card sweeps that don't change segment metadata. +- **`if_pricing_version` requires `if_wholesale_feed_version`.** Pricing has no structural baseline of its own. Sending `if_pricing_version` without `if_wholesale_feed_version` is a schema-level error. The agent's evaluation is two-stage: wholesale feed mismatch returns the full payload; wholesale feed match with pricing mismatch also returns the full payload (so the caller sees updated `pricing_options`); both match → `unchanged: true`. +- **`filters` canonicalization.** Agents MUST treat the `filters` object as canonicalized before hashing into the `wholesale_feed_version` keyspace: keys sorted lexicographically, omitted-and-default values treated identically, array values sorted where the filter has set semantics (e.g., `catalog_types`, `data_providers`). Callers that pass equivalent-but-differently-shaped filter objects MUST receive the same `wholesale_feed_version`. Prevents silent stale-mirror bugs from key-order or default-elision differences. **Forward-compat default:** new filter fields added in 3.x minor versions MUST declare set-vs-sequence semantics; absent an explicit declaration, the rule defaults to **set-semantics**. +- **Pagination interaction.** Agents MUST return `wholesale_feed_version` on every paginated page (not only the first) when they declare `wholesale_feed_versioning.supported: true`; agents that do not declare versioning SHOULD do the same. If the wholesale feed mutates between pages, the new version surfaces on the next page and the caller MUST restart pagination from `cursor: null` — the partial pages already received describe a stale version. +- **`unchanged: true` and in-progress pagination.** A caller mid-pagination MAY send `if_wholesale_feed_version` matching the version their pages so far were drawn from. If the agent confirms `unchanged: true`, the response omits `signals[]` and pagination envelope entirely; the caller abandons their in-progress walk under that version. Agents MAY NOT use the conditional-fetch short-circuit to skip individual pages within an active pagination — `unchanged` is feed-versus-cached-version, not per-page. +- Pre-v3.1 agents that ignore `if_wholesale_feed_version` simply return the full payload — semantically correct, just inefficient. + +For pushed change tracking beyond conditional fetch, see `specs/wholesale-feed-webhooks.md`. Wholesale feed webhooks carry the changed signal payload, pricing payload, removal tombstone, or bulk-change summary; `get_signals` remains the repair and reconciliation read. + +## Cache layering + +Signals agents publish two notional layers: a **public layer** (the rate-card / structural view) and **per-account overlays** (account-specific pricing for premium buyers). The conditional-fetch path is layer-aware via `cache_scope`. + +**Two-layer cache.** + +| Layer | Cache key | What's stored | +|---|---|---| +| Public | `(agent, discovery_mode, filters, destinations, countries)` | `wholesale_feed_version_public`, the wholesale signals feed payload as seen without an account ref | +| Account overlay | `(agent, discovery_mode, filters, destinations, countries, account_id)` | `wholesale_feed_version_account`, the wholesale signals feed payload when `cache_scope: "account"` was returned | + +**Behavior.** + +- Requests without `account` always return `cache_scope: "public"`. Callers cache under the public key. +- Requests with `account` return `cache_scope: "public"` OR `"account"` (agent MUST declare; no default). + - `"public"`: this account prices off the rate card. Caller MAY dedupe — the version and payload are the same as the unauthenticated view. + - `"account"`: this response carries account-specific overrides. Caller caches under the account overlay key. +- Agents MAY downgrade an account from `"account"` back to `"public"` — callers SHOULD interpret this as "this account no longer has overrides" and drop their overlay. + +**Conditional fetch with `if_wholesale_feed_version`.** Send the token paired with whichever scope it was returned in. The agent compares against the current version for that scope. If the caller's token belongs to an `"account"` scope but the agent responds with `cache_scope: "public"`, that's the downgrade signal. + +**Webhook invalidation.** Wholesale feed webhook events declare `applies_to.scope` on `*.priced` and `*.updated` payloads. Agents MUST apply the same account/caller authorization predicate used by `get_signals discovery_mode: "wholesale"` when deciding which subscribers receive signal webhooks: + +- `applies_to: { scope: "public" }` → invalidate the public-layer cache; all account overlays referencing that public version are also stale. +- `applies_to: { scope: "account", account_ids: [...] }` → invalidate only the named accounts' overlays. +- `applies_to: { scope: "account" }` without `account_ids` → seller withholds the affected set; the per-subscriber scope filter routes the event only to subscribers whose principal is in the affected set. + +See `specs/wholesale-feed-webhooks.md` §"Cache layering and event scoping" for the full webhook-side spec. + +## Incomplete array + +When the agent cannot complete all work within the caller's `time_budget` (or due to internal limits), the response includes `incomplete` — an array declaring what is missing. Callers can use `estimated_wait` to decide whether to retry with a larger budget. + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `scope` | string | Yes | `"signals"`: not all matching signals were returned. `"pricing"`: signals returned but pricing is absent or unconfirmed. `"wholesale_feed"`: in wholesale mode, full feed enumeration could not complete. | +| `description` | string | Yes | Human-readable explanation of what is missing and why. | +| `estimated_wait` | Duration | No | How much additional time would resolve this scope. | + +## Iterative refinement + +`get_signals` supports iterative refinement without a separate mode flag. The combination of `signal_spec` and `signal_refs` determines the operation: + +| Fields provided | Behavior | +|----------------|----------| +| `signal_spec` only | Discovery — find signals matching the description | +| `signal_refs` only | Exact lookup — return specific signals by reference | +| `signal_refs` + `signal_spec` | Refinement — start from known signals, adjust per the spec | +| `discovery_mode: "wholesale"` (neither `signal_spec` nor `signal_refs`) | Wholesale — enumerate the agent's full priced signals feed. See [Wholesale signals feed](#wholesale-signals-feed). | + +To refine previous results, pass back the `signal_ref` values from signals you want to keep, and provide an updated `signal_spec` describing what to change: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-request.json", + "signal_spec": "Same audience but with broader coverage, ideally above 20%", + "signal_refs": [ + { + "scope": "data_provider", + "data_provider_domain": "experian.com", + "signal_id": "luxury_auto_intenders" + } + ], + "destinations": [ + { + "type": "agent", + "agent_url": "https://wonderstruck.salesagents.com" + } + ], + "countries": ["US"] +} +``` + +The signal agent uses the provided IDs as a starting point and the spec as adjustment guidance, returning signals that reflect both the original selection and the requested changes (e.g., broader segments from the same provider, or comparable segments from alternative providers with higher coverage). + +### Response - Multiple Signals Found + +```json +{ + "message": "I found 3 signals matching your luxury goods criteria. The best option is 'Affluent Shoppers' with 22% coverage, already live across all requested platforms. 'High Income Households' offers broader reach (35%) but requires activation on OpenX. All signals are priced between $2-4 CPM.", + "context_id": "ctx-signals-abc123", + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "acme-data.com", + "signal_id": "affluent_shoppers" + }, + "signal_agent_segment_id": "acme_affluent_shoppers", + "name": "Affluent Shoppers", + "description": "Users with demonstrated luxury purchase behavior", + "signal_type": "marketplace", + "data_provider": "Acme Data", + "coverage_percentage": 22, + "deployments": [ + { + "type": "platform", + "platform": "index-exchange", + "account": "agency-123-ix", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ix_agency123_acme_aff_shop" + } + }, + { + "type": "platform", + "platform": "openx", + "account": "agency-123-ox", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ox_agency123_affluent_789" + } + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 3.50, + "currency": "USD" + } + ] + } + // ... more signals + ] +} +``` + +### Response - Partial Success with Warnings + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "Found 2 luxury signals, but encountered some platform limitations. The 'Premium Auto Shoppers' signal has limited reach due to data restrictions, and pricing data is unavailable for one platform. Review the warnings below for optimization suggestions.", + "context_id": "ctx-signals-abc123", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [ + { + "signal_ref": { + "scope": "data_provider", + "data_provider_domain": "experian.com", + "signal_id": "premium_auto_shoppers" + }, + "signal_agent_segment_id": "premium_auto_shoppers", + "name": "Premium Auto Shoppers", + "description": "High-value automotive purchase intenders", + "signal_type": "marketplace", + "data_provider": "Experian", + "coverage_percentage": 8, + "deployments": [ + { + "type": "platform", + "platform": "the-trade-desk", + "is_live": true, + "activation_key": { + "type": "segment_id", + "segment_id": "ttd_exp_auto_premium" + } + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 4.50, + "currency": "USD" + } + ] + } + ], + "errors": [ + { + "code": "PRICING_UNAVAILABLE", + "message": "Pricing data temporarily unavailable for The Trade Desk platform", + "field": "signals[0].pricing_options", + "suggestion": "Retry in 15-30 minutes when platform pricing feed updates", + "details": { + "affected_platform": "the-trade-desk", + "last_updated": "2025-01-15T12:00:00Z", + "retry_after": 1800 + } + }, + { + "code": "PRICING_UNAVAILABLE", + "message": "Pricing data temporarily unavailable for Amazon DSP", + "field": "filters.platforms", + "suggestion": "Pricing will be available during activation, or try again later", + "details": { + "affected_platform": "amazon-dsp", + "retry_after": 1800 + } + } + ] +} +``` + +### Response - No Signals Found + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/signals/get-signals-response.json", + "status": "completed", + "message": "I couldn't find any signals matching 'underwater basket weavers' in the requested platforms. This appears to be a very niche audience. Consider broadening your criteria to 'craft enthusiasts' or 'hobby communities' for better results. Alternatively, we could create a custom signal for this specific audience.", + "context_id": "ctx-signals-abc123", + "cache_scope": "public", + "wholesale_feed_version": "sig_v2026-05-18T08:00:00Z-public-rev12", + "signals": [] +} +``` + +## Implementation Guide + +### Generating Signal Messages + +The `message` field should provide actionable insights: + +```python +def generate_signals_message(signals, request): + if not signals: + return generate_no_signals_message(request.signal_spec) + + best_signal = find_best_signal(signals) + + if len(signals) == 1: + signal = signals[0] + deployment_status = get_deployment_summary(signal, request.destinations) + pricing = signal.pricing_options[0] if signal.pricing_options else None + if pricing: + p = pricing.pricing + if p.model == "cpm": + price_commentary = f"Priced at ${p.cpm:.2f} CPM {p.currency}." + elif p.model == "percent_of_media": + cap = f", capped at ${p.max_cpm:.2f} CPM" if getattr(p, "max_cpm", None) else "" + price_commentary = f"Priced at {p.percent}% of media spend{cap}." + elif p.model == "flat_fee": + price_commentary = f"Flat fee of {p.amount} {p.currency} per {p.period}." + else: + price_commentary = "" + else: + price_commentary = "" + coverage_commentary = f" with {signal.coverage_percentage}% coverage" if getattr(signal, "coverage_percentage", None) is not None else "" + return f"I found a perfect match: '{signal.name}' from {signal.data_provider}{coverage_commentary}. {deployment_status} {price_commentary}" + else: + return f"I found {len(signals)} signals matching your {extract_key_criteria(request.signal_spec)} criteria. {describe_best_option(best_signal)} {get_pricing_range(signals)}." + +def get_deployment_summary(signal, requested_deployments): + live = [d for d in signal.deployments if d.is_live] + pending = [d for d in signal.deployments if not d.is_live] + + if not pending: + return "Already live on all requested deployments, ready to use immediately." + elif live: + activation_time = max((d.estimated_activation_duration_minutes or 0) for d in pending) + return f"Live on {len(live)} deployment(s). Activation on {len(pending)} more would take about {activation_time} minutes." + else: + return "Requires activation on all deployments, which typically takes 1-2 hours." +``` diff --git a/dist/docs/3.2.0-beta.4/slack-invite-recovery.js b/dist/docs/3.2.0-beta.4/slack-invite-recovery.js new file mode 100644 index 0000000000..b688df2703 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/slack-invite-recovery.js @@ -0,0 +1,58 @@ +(function routeSlackInvitesThroughRecoveryGuide() { + 'use strict'; + + var guideUrl = 'https://docs.adcontextprotocol.org/docs/community/joining-slack'; + + function isJoiningGuide() { + return /\/community\/joining-slack\/?$/.test(window.location.pathname); + } + + function rewriteDirectInvites(root) { + if (isJoiningGuide()) return; + if (root.matches && root.matches('a[href^="https://join.slack.com/"]')) { + root.href = guideUrl; + } + root.querySelectorAll('a[href^="https://join.slack.com/"]').forEach(function(anchor) { + anchor.href = guideUrl; + }); + } + + function repairJoiningGuideTerminology(root) { + if (!isJoiningGuide()) return; + var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT); + var textNode; + while ((textNode = walker.nextNode())) { + textNode.nodeValue = textNode.nodeValue.replace( + /\bAAO members\b/g, + 'AgenticAdvertising.org member organizations' + ); + } + } + + function start() { + rewriteDirectInvites(document); + repairJoiningGuideTerminology(document); + new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + mutation.addedNodes.forEach(function(node) { + if (node.nodeType === Node.TEXT_NODE && isJoiningGuide()) { + node.nodeValue = node.nodeValue.replace( + /\bAAO members\b/g, + 'AgenticAdvertising.org member organizations' + ); + return; + } + if (node.nodeType !== Node.ELEMENT_NODE) return; + rewriteDirectInvites(node); + repairJoiningGuideTerminology(node); + }); + }); + }).observe(document.documentElement, { childList: true, subtree: true }); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', start, { once: true }); + } else { + start(); + } +})(); diff --git a/dist/docs/3.2.0-beta.4/snippets/compliance-error-codes.mdx b/dist/docs/3.2.0-beta.4/snippets/compliance-error-codes.mdx new file mode 100644 index 0000000000..94a480044f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/snippets/compliance-error-codes.mdx @@ -0,0 +1,1180 @@ +--- +title: Compliance Error Codes +description: "Canonical AdCP error codes with recovery classifications, remediation guidance, and complete human-readable definitions." +"og:title": "AdCP — Compliance Error Codes" +--- + +{/* + This file is generated by scripts/generate-compliance-snippets.mjs. + Do not edit it by hand. Regenerate with `npm run build:compliance`. + Sources: static/schemas/source/enums/error-code.json +*/} + +| Code | Recovery | Suggested action | +|------|----------|------------------| +| `ACCOUNT_AMBIGUOUS` | correctable | pass explicit account_id or a more specific natural key | +| `ACCOUNT_IDENTITY_CONFLICT` | correctable | choose a different operator or operator_unit identity, or retain the account's current identity; do not retry the same desired identity unchanged | +| `ACCOUNT_MOVED` | correctable | replace the stale reference with error.details.current_account, refresh through list_accounts, and retry with a fresh idempotency key | +| `ACCOUNT_NOT_FOUND` | terminal | verify account via list_accounts or contact seller | +| `ACCOUNT_PAYMENT_REQUIRED` | terminal | buyer must resolve billing | +| `ACCOUNT_REQUIRED` | correctable | pass account, or reference an existing resource whose owning account the service can resolve | +| `ACCOUNT_SETUP_REQUIRED` | correctable | check details.setup for URL or instructions | +| `ACCOUNT_SUSPENDED` | terminal | contact seller to resolve suspension | +| `ACTION_NOT_ALLOWED` | correctable | branch on error.details.reason: for wrong_status, wait for or transition to a status listed under the action's allowed_statuses; for mode_mismatch, this is a flow switch (not a retry against update_media_buy) — follow the mode named in available_actions[&lt;action&gt;].mode (await the seller's webhook for requires_approval); for not_supported_on_product or not_supported_on_buy, do not retry — the action is unavailable on this buy and buyer must select a different product or renegotiate | +| `AGENT_BLOCKED` | terminal | surface to a human at the buyer — the relationship is permanently denied and is reinstated only through offline operator action with the seller, not via any seller-callable AdCP task | +| `AGENT_SUSPENDED` | terminal | surface to a human at the buyer — the agent cannot unilaterally lift a suspension; re-onboarding with the seller offline may resolve | +| `AMBIGUOUS_BIDDING_POLICY` | correctable | remove either the canonical bidding block or all legacy bidding fields from the effective package | +| `AUDIENCE_TOO_SMALL` | correctable | broaden targeting or upload more audience members | +| `AUTHORIZATION_REQUIRED` | correctable | complete or restore the required downstream platform connection, identity, creator, or post authorization; use error.details.missing_connections, authorization_url, authorization_instructions, or reference_authorization when present | +| `AUTH_INVALID` | terminal | do NOT auto-retry — credentials were rejected; rotate keys, refresh OAuth tokens once if applicable, otherwise escalate to a human | +| `AUTH_MISSING` | correctable | provide credentials via the auth header and retry | +| `AUTH_REQUIRED` | correctable | provide credentials when missing; do NOT auto-retry rejected credentials — escalate for rotation | +| `BIDDING_PLACEMENT_CONFLICT` | correctable | align media-buy and package bidding scopes with the provider's supported placement, or choose a compatible budget mode/product combination | +| `BILLING_NOT_PERMITTED_FOR_AGENT` | correctable | retry with error.details.suggested_billing (typically 'operator') when present; when absent, surface to a human at the buyer — the agent cannot unilaterally extend its commercial relationship and MUST NOT auto-retry | +| `BILLING_NOT_SUPPORTED` | correctable | check get_adcp_capabilities for supported_billing and resubmit with a supported value, or omit billing to accept the seller's default | +| `BILLING_OUT_OF_BAND` | terminal | do not retry — billing for this account runs through a non-AdCP channel. Pre-filter via capabilities.creative.bills_through_adcp before sending report_usage; flag the account in the buyer's routing table and fall back to the ad server's native billing export for cost reconciliation | +| `BRAND_REQUIRED` | correctable | include brand (domain plus optional brand_id) on the request | +| `BUDGET_CAP_REACHED` | correctable | raise max_spend, or reduce max_creatives/max_variants, to produce the remaining items | +| `BUDGET_EXCEEDED` | correctable | reduce requested amount or increase budget allocation | +| `BUDGET_EXHAUSTED` | terminal | buyer must add funds or increase budget cap | +| `BUDGET_TOO_LOW` | correctable | increase budget or check capabilities.media_buy.limits | +| `CAMPAIGN_SUSPENDED` | transient | wait for the escalation to resolve; contact the plan operator if the suspension persists | +| `CATALOG_LIMIT_EXCEEDED` | correctable | remove unused catalogs, or contact the seller to raise the limit | +| `COMPLIANCE_UNSATISFIED` | correctable | choose a format that supports the required disclosure positions and persistence modes, or remove the disclosure requirement | +| `CONFIGURATION_ERROR` | terminal | surface to a human at the seller — the buyer cannot resolve a seller-side deployment misconfiguration and MUST NOT auto-retry | +| `CONFLICT` | transient | re-read the resource and retry with current state | +| `CONFLICTING_SELECTORS` | correctable | emit one canonical format selector route, or make every required legacy 3.x compatibility projection select the same product format contract under the canonical v2-narrows-v1 comparison | +| `CREATIVE_DEADLINE_EXCEEDED` | correctable | check creative_deadline via get_media_buys before submitting changes, or negotiate a deadline extension with the seller | +| `CREATIVE_INACCESSIBLE` | correctable | verify the asset URLs in creative_manifest are reachable without agent-side credentials, then re-submit | +| `CREATIVE_LOCALE_NOT_ACCEPTED` | correctable | supply or assign a creative variant matching every in-scope format option's accepted_language_ranges, narrow placement scope, choose a compatible format option, or change an ineligible serve_default | +| `CREATIVE_NOT_FOUND` | correctable | verify creative_id via list_creatives, or sync_creatives to register it | +| `CREATIVE_REJECTED` | correctable | revise the creative according to the applicable advertising policy or validated accessibility criteria | +| `CREATIVE_VALUE_NOT_ALLOWED` | correctable | pick a value from error.details.allowed_values (or re-fetch the format) and resubmit | +| `CREDENTIAL_IN_ARGS` | terminal | do NOT auto-retry — auto-retry re-logs the credential on each attempt. Move authentication material or caller-supplied trust material out of request args (top-level, <code>{"context"}</code>, <code>{"ext"}</code>, any nested location) onto the relevant transport authentication/trust channel or account provisioning path (Authorization: Bearer, RFC 9421 signature/JWKS, mTLS, MCP/A2A authentication framing); rotate any leaked credential, then resubmit | +| `EVALUATOR_AGENT_NOT_ACCEPTED` | correctable | replace the evaluator agent_url (evaluator.feature_agent.agent_url or the evaluator agent-form agent_url) with one from the seller's published accepted_verifiers, or drop the evaluator agent pointer to fall back to seller-default ranking | +| `FEED_FETCH_FAILED` | correctable | check URL accessibility, authentication, and that content matches the declared feed_format | +| `FIELD_NOT_PERMITTED` | correctable | drop the disallowed field(s) and retry | +| `FORMAT_DECLARATION_DIVERGENT` | correctable | advisory — seller-side fix needed: producer is emitting disagreeing format_ids and format_options for the same product. Buyer SDK SHOULD prefer format_options and surface the divergent product to operators; do not auto-retry | +| `FORMAT_DECLARATION_V1_AMBIGUOUS` | correctable | advisory — seller-side fix needed: the v2 declaration's canonical has only family-level structural registry entries (no invertible literal). Seller MUST author v1_format_ref on the v2 declaration to disambiguate; SDKs MUST NOT synthesize. Do not auto-retry | +| `FORMAT_DECLARATION_V1_LOSSY_MULTI_SIZE` | correctable | advisory — emitted alongside the partial v1 emission, NOT in place of it: the v2 declaration carries <code>{"params.sizes[]"}</code> with N entries but only M v1_format_ref entries (M &lt; N), so v1 buyers see partial size coverage on the product. Seller-side fix: add v1_format_ref entries for the missing sizes. SDK MAY (non-normative) fan out automatically by catalog lookup. Non-fatal — do not auto-retry | +| `FORMAT_NOT_SUPPORTED` | correctable | refresh get_adcp_capabilities creative.supported_formats[] and retry with a capability_id whose operations contains the intended build, preview, or validate operation | +| `FORMAT_OPTION_UNRESOLVED` | correctable | advisory — publisher-side fix needed: a placement's <code>{"format_options[].format_option_id"}</code> references a <code>{"format_option_id"}</code> that does not exist in this file's top-level <code>{"formats[]"}</code>. Buyer SDK MUST fail closed for that placement (drop the format from the placement's accepted set) and surface this code. Publisher fix: either declare the missing format option in <code>{"formats[]"}</code> or remove the reference from the placement. Do not auto-retry | +| `FORMAT_PROJECTION_FAILED` | correctable | advisory — seller-side fix needed: ask the seller to add an explicit <code>{"canonical"}</code> field on the legacy format declaration, or contribute a registry entry (format_id_glob or structural match) to v1-canonical-mapping.json. Do not auto-retry; the product is still valid on the legacy named-format path | +| `GOVERNANCE_DENIED` | correctable | restructure the buy, escalate to human spending authority, or contact the governance agent for details | +| `GOVERNANCE_UNAVAILABLE` | transient | retry with backoff; if the agent remains unreachable, the buyer MUST contact the plan's governance operator | +| `IDEMPOTENCY_CONFLICT` | correctable | use a fresh UUID v4 for the new request, or resend the exact original payload to get the cached response | +| `IDEMPOTENCY_EXPIRED` | correctable | perform a natural-key check to determine whether the original request succeeded; if no evidence of success, generate a fresh idempotency_key for a new attempt | +| `IDEMPOTENCY_IN_FLIGHT` | transient | wait top-level error.retry_after seconds and retry with the SAME idempotency_key — MUST NOT mint a fresh key (turns a safe retry into a double-execution race) | +| `INVALID_FEED_FORMAT` | correctable | verify the feed content matches the declared format | +| `INVALID_PRICING_OPTION` | correctable | verify pricing_option_id against the product's pricing_options from get_products or the vendor's discovery response, then resubmit with a valid ID | +| `INVALID_REQUEST` | correctable | check request parameters and fix | +| `INVALID_STATE` | correctable | check current status via get_media_buys and adjust request | +| `INVALID_USAGE_DATA` | correctable | check required fields for the vendor type (vendor_cost, currency, account at minimum), fix invalid values, and resubmit | +| `IO_REQUIRED` | correctable | review the proposal's insertion_order, accept terms, and include io_acceptance on accept_proposal; use create_media_buy only for 3.x compatibility | +| `ITEM_VALIDATION_FAILED` | correctable | check item_issues for per-item rejection reasons and fix the offending items | +| `MEDIA_BUY_NOT_FOUND` | correctable | verify media_buy_id; for legacy correlation use get_media_buys plus context, such as context.internal_campaign_id | +| `MULTI_FINALIZE_UNSUPPORTED` | correctable | sequence single-proposal finalize calls — one finalize entry per get_products refine[] call or per refine_proposals refinements[] call | +| `NOT_CANCELLABLE` | correctable | check the seller's cancellation policy or contact the seller | +| `PACKAGE_NOT_FOUND` | correctable | verify package_id; for legacy package correlation use get_media_buys plus package context, such as context.buyer_ref | +| `PAYMENT_TERMS_NOT_SUPPORTED` | correctable | omit payment_terms to accept the seller's default, retry with a different supported value, or negotiate offline | +| `PERMISSION_DENIED` | correctable | call check_governance to mint a valid token, or contact the seller to resolve the underlying permission; when error.details.scope is 'agent' with reason 'sandbox_only' the rejection is terminal-pending-onboarding — surface to a human rather than auto-retrying. For suspended/blocked agent relationships, sellers emit AGENT_SUSPENDED / AGENT_BLOCKED instead (those codes carry recovery: terminal directly). | +| `PIXEL_TRACKER_LOSSY_DOWNGRADE` | correctable | advisory — emitted alongside the v1 downgrade emission: SDK collapsed a pixel_tracker asset to v1 <code>{"{asset_type: url, url_type: tracker_pixel}"}</code> for a seller that doesn't support pixel_tracker natively. The URL still fires; what's lost is in <code>{"error.details.lost_fields"}</code> (event variant, method:js execution context, or custom event timing). Buyer decision: accept the loss (most counter pixels survive), or fail the buy and route to a 3.1-capable seller. Non-fatal — do not auto-retry | +| `PIXEL_TRACKER_UPGRADE_INFERRED` | correctable | advisory — emitted when a 3.1 SDK upgrades a v1 url+tracker_pixel asset to pixel_tracker by inferring event and method from asset_id conventions. The inference may not match the buyer's original intent; check <code>{"error.details.inferred_event"}</code> / <code>{"inferred_method"}</code> and re-prompt the seller for explicit values if precise measurement matters. Non-fatal — do not auto-retry | +| `PLACE_TARGET_UNAVAILABLE` | correctable | resolve the pinned value against the current catalog, review any replacement, and submit an intentional package targeting update | +| `PLAN_NOT_FOUND` | correctable | verify plan_id via sync_plans, or register the plan first | +| `POLICY_VIOLATION` | correctable | review policy requirements in the error details | +| `PRIVATE_FIELD_IN_PUBLIC_PLACEMENT` | correctable | seller-side fix needed: remove private operational fields (<code>{"visibility"}</code>, <code>{"source"}</code>, <code>{"origin"}</code>, <code>{"delivery_mappings"}</code>, or similar) from public placement objects. Consumers MUST fail closed for the affected placement and alert operators; do not echo private field values in logs or error details | +| `PRODUCT_EXPIRED` | correctable | re-discover with get_products to find current inventory | +| `PRODUCT_NOT_FOUND` | correctable | remove invalid IDs and retry, or re-discover with get_products | +| `PRODUCT_UNAVAILABLE` | correctable | choose a different product | +| `PROPOSAL_EXPIRED` | correctable | call request_proposals and finalize a fresh proposal, or re-discover and finalize through legacy get_products | +| `PROPOSAL_NOT_COMMITTED` | correctable | finalize the draft through refine_proposals, or through the legacy get_products refine action | +| `PROPOSAL_NOT_FOUND` | correctable | request and finalize a fresh proposal, then retry | +| `PROVENANCE_CLAIM_CONTRADICTED` | correctable | revise the provenance claim to match the verifier's observation or replace the creative; auto-retry without correction will not pass | +| `PROVENANCE_DIGITAL_SOURCE_TYPE_MISSING` | correctable | set provenance.digital_source_type to a value from the digital-source-type enum and resubmit | +| `PROVENANCE_DISCLOSURE_MISSING` | correctable | set provenance.disclosure.required and, when true, populate disclosure.jurisdictions | +| `PROVENANCE_EMBEDDED_MISSING` | correctable | attach at least one embedded_provenance entry from a supported provider and resubmit | +| `PROVENANCE_REQUIRED` | correctable | attach a provenance object - at minimum digital_source_type - and resubmit | +| `PROVENANCE_SYNTHETIC_DEPICTION_MISSING` | correctable | assess the creative, set provenance.synthetic_depiction to true or false, and resubmit | +| `PROVENANCE_VERIFIER_NOT_ACCEPTED` | correctable | replace verify_agent.agent_url with one from the seller's published accepted_verifiers, drop verify_agent if the embedding is self-verifiable, or re-embed with a verifier the seller accepts | +| `RATE_LIMITED` | transient | wait top-level error.retry_after seconds when present, then retry | +| `READ_ONLY_SCOPE` | correctable | use a non-mutating alternative, or surface to the operator to request a scope that permits mutation | +| `REFERENCE_NOT_FOUND` | correctable | verify the referenced identifier exists and is accessible to the caller | +| `REQUOTE_REQUIRED` | correctable | refine accepted_proposal_id into an amendment and apply it through accept_proposal, or keep control_media_buy inside the accepted envelope; 3.1 compatibility callers must adjust or rediscover | +| `SCOPE_INSUFFICIENT` | correctable | the agent cannot broaden its own scope - surface to the operator rather than auto-retry | +| `SERVICE_UNAVAILABLE` | transient | retry with exponential backoff | +| `SESSION_NOT_FOUND` | correctable | initiate a new session via si_initiate_session | +| `SESSION_TERMINATED` | correctable | initiate a new session via si_initiate_session | +| `SIGNAL_NOT_FOUND` | correctable | verify signal_id via get_signals, or confirm the signal is available from this agent | +| `SIGNAL_TARGETING_INCOMPATIBLE` | correctable | assign the creative to a package whose signal targeting matches the creative's signal_condition, or rebuild the creative for the package's condition; match on shared signal_ref identity (compare signal_agent_segment_id exactly when both carry it, else categorical signal_ref + value) | +| `SIGNED_RESPONSE_ENVELOPE_EXPIRED` | transient | re-invoke the designated task (verify_brand_claim or verify_brand_claims) to obtain a freshly signed response with a current exp window | +| `SIGNED_RESPONSE_REQUEST_HASH_MISMATCH` | correctable | re-invoke the designated task with the intended request parameters — the signed response's request_hash does not match the verifier's recomputed hash of the actual request; if the mismatch persists across retries, investigate JCS request-binding canonicalization between caller and responder | +| `SIGNED_RESPONSE_TENANT_MISMATCH` | correctable | verify the request targeted the correct brand domain and agent_url, then re-invoke; if the mismatch persists, the responding agent's server-side tenant resolution may be misconfigured | +| `STALE_RESPONSE` | transient | advisory — emitted alongside a populated payload that was served from cache past the seller's freshness target because an upstream or sub-agent was unreachable. The response is usable; treat as non-fatal. Inspect <code>{"error.details.cache_age_seconds"}</code> to decide whether to immediately retry for fresh data or accept the cached value; the seller's own service is healthy, so retry is safe (it does not amplify the upstream failure) | +| `TERMS_REJECTED` | correctable | adjust the proposed terms and retry, or omit measurement_terms to accept the product's defaults | +| `UNPRICEABLE_OUTPUT` | correctable | target an output format the transformer prices, or have the seller add a pricing option covering it | +| `UNSUPPORTED_FEATURE` | correctable | check get_adcp_capabilities and remove unsupported fields | +| `UNSUPPORTED_GRANULARITY` | correctable | pick a granularity from the product's reporting_capabilities.windowed_pull_granularities (via get_adcp_capabilities) and resubmit, or omit time_granularity to fall back to cumulative date-range pulls | +| `UNSUPPORTED_PROVISIONING` | correctable | re-issue with the entry shape the seller supports — <code>{"account: {account_id: ...}"}</code> for settings-update sellers with account-id namespaces, or <code>{"brand+operator+billing"}</code> for provisioning sellers; check seller documentation or capability declaration for which modes are implemented | +| `VALIDATION_ERROR` | correctable | review error details and fix field values | +| `VAST_PARSE_FAILED` | correctable | inspect error.details.reason (not_xml, no_vast_root, no_ad, no_media_file), fix the VAST document, and resubmit | +| `VAST_VERSION_MISMATCH` | correctable | re-tag with a version from error.details.supported_versions, or correct the asset's declared vast_version to match the document | +| `VAST_WRAPPER_DEPTH_EXCEEDED` | correctable | inspect error.details.reason (depth, loop, timeout); flatten the wrapper chain, reduce redirects below the format's max_wrapper_depth, or fix the failing hop | +| `VERSION_UNSUPPORTED` | correctable | re-pin to a release in supported_versions and retry, or call get_adcp_capabilities without a version pin to discover supported_versions | + +### Full descriptions + +<AccordionGroup> +<a id="error-code-account-ambiguous"></a> + +<Accordion title="ACCOUNT_AMBIGUOUS — correctable"> + +**Suggested action:** pass explicit account_id or a more specific natural key + +Natural key resolves to multiple accounts. Recovery: correctable (pass explicit account_id or a more specific natural key). + +</Accordion> +<a id="error-code-account-identity-conflict"></a> + +<Accordion title="ACCOUNT_IDENTITY_CONFLICT — correctable"> + +**Suggested action:** choose a different operator or operator_unit identity, or retain the account's current identity; do not retry the same desired identity unchanged + +The complete operator_identity requested through sync_accounts would rekey the account onto a natural key already owned by another account. The seller MUST reject the change atomically, MUST NOT merge the accounts, and MUST preserve both accounts and every account-scoped resource unchanged. Distinct from CONFLICT, which reports a transient stale revision or concurrent write. Recovery: correctable (choose a different operator or operator_unit identity, or retain the account's current identity; do not retry the same desired identity unchanged). + +</Accordion> +<a id="error-code-account-moved"></a> + +<Accordion title="ACCOUNT_MOVED — correctable"> + +**Suggested action:** replace the stale reference with error.details.current_account, refresh through list_accounts, and retry with a fresh idempotency key + +An authorized caller used a former natural key that was tombstoned after the same account was rekeyed through sync_accounts. The seller MUST return the current canonical reference in error.details.current_account, conforming to error-details/account-moved.json, and MUST NOT provision or resolve a second account from the former key. Sellers retain the tombstone while the account or any account-scoped historical resources are retained. To avoid a cross-tenant existence oracle, sellers return ACCOUNT_MOVED only when the caller is authorized to resolve the current account; otherwise they return ACCOUNT_NOT_FOUND. Recovery: correctable (replace the stale account reference with details.current_account, refresh through list_accounts, and retry with a fresh idempotency key). + +</Accordion> +<a id="error-code-account-not-found"></a> + +<Accordion title="ACCOUNT_NOT_FOUND — terminal"> + +**Suggested action:** verify account via list_accounts or contact seller + +The account reference could not be resolved. Recovery: terminal (verify account via list_accounts or contact seller). + +</Accordion> +<a id="error-code-account-payment-required"></a> + +<Accordion title="ACCOUNT_PAYMENT_REQUIRED — terminal"> + +**Suggested action:** buyer must resolve billing + +Account has an outstanding balance requiring payment before new buys. Recovery: terminal (buyer must resolve billing). + +</Accordion> +<a id="error-code-account-required"></a> + +<Accordion title="ACCOUNT_REQUIRED — correctable"> + +**Suggested action:** pass account, or reference an existing resource whose owning account the service can resolve + +The service must resolve the commercial account before it can determine governance applicability, but the request and referenced resource do not identify one. Recovery: correctable (pass account, or use a resource bound to an account). + +</Accordion> +<a id="error-code-account-setup-required"></a> + +<Accordion title="ACCOUNT_SETUP_REQUIRED — correctable"> + +**Suggested action:** check details.setup for URL or instructions + +Natural key resolved but the account needs setup before use. Recovery: correctable (check details.setup for URL or instructions). + +</Accordion> +<a id="error-code-account-suspended"></a> + +<Accordion title="ACCOUNT_SUSPENDED — terminal"> + +**Suggested action:** contact seller to resolve suspension + +Account has been suspended. Recovery: terminal (contact seller to resolve suspension). + +</Accordion> +<a id="error-code-action-not-allowed"></a> + +<Accordion title="ACTION_NOT_ALLOWED — correctable"> + +**Suggested action:** branch on error.details.reason: for wrong_status, wait for or transition to a status listed under the action's allowed_statuses; for mode_mismatch, this is a flow switch (not a retry against update_media_buy) — follow the mode named in available_actions[&lt;action&gt;].mode (await the seller's webhook for requires_approval); for not_supported_on_product or not_supported_on_buy, do not retry — the action is unavailable on this buy and buyer must select a different product or renegotiate + +The requested mutation maps to an action that is not currently available on this media buy. Sellers MUST populate <code>{"error.details"}</code> with <code>{"attempted_action"}</code> (the <code>{"media_buy_valid_action"}</code> value the request maps to), <code>{"reason"}</code> (an <code>{"action-not-allowed-reason"}</code> value: <code>{"wrong_status"}</code>, <code>{"not_supported_on_product"}</code>, <code>{"not_supported_on_buy"}</code>, or <code>{"mode_mismatch"}</code>), and <code>{"currently_available_actions"}</code> (echo of the buy's resolved <code>{"available_actions[]"}</code> so the buyer SDK can offer recovery without a separate get_media_buys round-trip). Recovery: correctable when <code>{"reason"}</code> is <code>{"wrong_status"}</code> (wait for or transition to an allowed status) or <code>{"mode_mismatch"}</code> (re-issue through the appropriate flow). Terminal-for-this-buy when <code>{"reason"}</code> is <code>{"not_supported_on_product"}</code> or <code>{"not_supported_on_buy"}</code> — buyers select a different product or renegotiate buy terms. + +</Accordion> +<a id="error-code-agent-blocked"></a> + +<Accordion title="AGENT_BLOCKED — terminal"> + +**Suggested action:** surface to a human at the buyer — the relationship is permanently denied and is reinstated only through offline operator action with the seller, not via any seller-callable AdCP task + +The calling buyer agent's commercial relationship with the seller is permanently denied — the agent is blocked. Sibling to <code>{"AGENT_SUSPENDED"}</code> on the agent-relationship axis but with no recovery path (a suspension may lift via re-onboarding; a block does not). The code itself is the discriminator — same posture as <code>{"AGENT_SUSPENDED"}</code>: no <code>{"error.details"}</code> payload, no per-agent commercial state, cross-tenant onboarding oracle clamp + channel-coverage requirements normative in error-handling.mdx Per-Agent Authorization Gate. Recovery: terminal (no autonomous recovery — the agent MUST surface to a human at the buyer; relationships are reinstated only through offline operator action with the seller, not via any seller-callable AdCP task). + +</Accordion> +<a id="error-code-agent-suspended"></a> + +<Accordion title="AGENT_SUSPENDED — terminal"> + +**Suggested action:** surface to a human at the buyer — the agent cannot unilaterally lift a suspension; re-onboarding with the seller offline may resolve + +The calling buyer agent's commercial relationship with the seller is temporarily paused — the agent is onboarded but currently suspended. Sibling to <code>{"ACCOUNT_SUSPENDED"}</code> (account-wide) and <code>{"CAMPAIGN_SUSPENDED"}</code> (per-plan) but scoped to the agent-relationship axis (orthogonal to any specific account on that agent). The code itself is the discriminator — it does NOT carry an <code>{"error.details"}</code> payload (mirroring <code>{"BILLING_NOT_PERMITTED_FOR_AGENT"}</code>'s discriminator-by-code pattern), and MUST NOT carry per-agent commercial state (rate cards, payment terms, credit limit, billing entity, contact channels) since full disclosure of per-agent state in a single probe is a per-agent oracle. Cross-tenant onboarding oracle clamp + channel-coverage requirements (response shape, HTTP/A2A/MCP status, headers, side effects, observability, latency parity, retry-counter side channel) are normative in error-handling.mdx Per-Agent Authorization Gate; this description does not restate them to avoid drift. Recovery: terminal (re-onboarding may resolve the suspension; the agent MUST surface to a human at the buyer rather than auto-retrying — the agent cannot unilaterally lift a suspension, and re-attempts only reinforce the gate). + +</Accordion> +<a id="error-code-ambiguous-bidding-policy"></a> + +<Accordion title="AMBIGUOUS_BIDDING_POLICY — correctable"> + +**Suggested action:** remove either the canonical bidding block or all legacy bidding fields from the effective package + +The same effective package combines the canonical bidding block with legacy bid_price or monetary optimization-goal target fields, so two bidding interpretations are present. Sellers MUST reject rather than choosing a winner. Recovery: correctable (emit only the 3.2 bidding block or only one legacy representation). + +</Accordion> +<a id="error-code-audience-too-small"></a> + +<Accordion title="AUDIENCE_TOO_SMALL — correctable"> + +**Suggested action:** broaden targeting or upload more audience members + +Audience segment is below the minimum required size for targeting. Recovery: correctable (broaden targeting or upload more audience members). + +</Accordion> +<a id="error-code-authorization-required"></a> + +<Accordion title="AUTHORIZATION_REQUIRED — correctable"> + +**Suggested action:** complete or restore the required downstream platform connection, identity, creator, or post authorization; use error.details.missing_connections, authorization_url, authorization_instructions, or reference_authorization when present + +The caller is authenticated, but the referenced object requires an additional downstream platform connection, identity, creator, or post authorization before the seller can complete the requested action. Typical use: <code>{"sync_creatives"}</code> with a <code>{"published_post"}</code> reference where the seller can resolve the post but the owning identity has not authorized paid serving, or authorization has expired/revoked and can be restored. Distinct from <code>{"AUTH_MISSING"}</code> / <code>{"AUTH_INVALID"}</code> (caller credentials) and from <code>{"PERMISSION_DENIED"}</code> (seller policy denies the caller). Sellers SHOULD include recovery details conforming to <code>{"error-details/authorization-required.json"}</code>, especially <code>{"error.details.missing_connections[]"}</code> when the caller needs to complete one of several platform connections. Legacy recovery hints such as <code>{"authorization_url"}</code>, <code>{"authorization_instructions"}</code>, or <code>{"reference_authorization"}</code> remain valid when safe to disclose. Recovery: correctable (complete or restore the required authorization, then retry). + +</Accordion> +<a id="error-code-auth-invalid"></a> + +<Accordion title="AUTH_INVALID — terminal"> + +**Suggested action:** do NOT auto-retry — credentials were rejected; rotate keys, refresh OAuth tokens once if applicable, otherwise escalate to a human + +Credentials were presented but rejected — revoked, malformed signature, or a key no longer in the seller's keystore. Sellers MUST return this code when an <code>{"Authorization"}</code> header was present but verification failed. Recovery: terminal. Exception: agents with a valid OAuth 2.1 refresh grant MAY treat this as correctable when the rejection reason is token expiry — silently refresh and retry once; if the refresh fails or the seller explicitly signals revocation, escalate to human. + +</Accordion> +<a id="error-code-auth-missing"></a> + +<Accordion title="AUTH_MISSING — correctable"> + +**Suggested action:** provide credentials via the auth header and retry + +No credentials were presented. Sellers MUST return this code when no <code>{"Authorization"}</code> header was included in the request. Recovery: correctable (provide credentials via the auth header and retry). + +</Accordion> +<a id="error-code-auth-required"></a> + +<Accordion title="AUTH_REQUIRED — correctable"> + +**Suggested action:** provide credentials when missing; do NOT auto-retry rejected credentials — escalate for rotation + +**Deprecated** — use <code>{"AUTH_MISSING"}</code> (no credentials presented) or <code>{"AUTH_INVALID"}</code> (credentials presented and rejected). Retained as a backward-compatible alias during the 3.x deprecation window. Recovery: correctable. + +</Accordion> +<a id="error-code-bidding-placement-conflict"></a> + +<Accordion title="BIDDING_PLACEMENT_CONFLICT — correctable"> + +**Suggested action:** align media-buy and package bidding scopes with the provider's supported placement, or choose a compatible budget mode/product combination + +The authored media-buy/package bidding scopes cannot be represented by the provider's native campaign, package, or shared-strategy placement rules. Sellers MUST detect this before any provider mutation and SHOULD identify the conflicting scopes and provider constraint in error.details. Recovery: correctable (remove or align package overrides, move the policy to the supported scope, or choose a compatible budget mode/product combination). + +</Accordion> +<a id="error-code-billing-not-permitted-for-agent"></a> + +<Accordion title="BILLING_NOT_PERMITTED_FOR_AGENT — correctable"> + +**Suggested action:** retry with error.details.suggested_billing (typically 'operator') when present; when absent, surface to a human at the buyer — the agent cannot unilaterally extend its commercial relationship and MUST NOT auto-retry + +The seller's <code>{"supported_billing"}</code> capability accepts the requested model, but the calling buyer agent's commercial relationship with the seller does not — e.g., the agent is onboarded as passthrough-only (no payments relationship — only the operator can be invoiced) and <code>{"billing: 'agent'"}</code> or <code>{"billing: 'advertiser'"}</code> is rejected even though the seller supports both at the capability level. Distinct from <code>{"BILLING_NOT_SUPPORTED"}</code> (seller-wide capability) by being narrowly per-buyer-agent: the gate is the seller's onboarding record for this caller, not the seller's global wire capability. Sellers MUST emit this code only after agent identity has been established via signed-request derivation or a credential-to-agent mapping in the seller's onboarding record; callers without established identity MUST receive <code>{"BILLING_NOT_SUPPORTED"}</code> instead, to prevent the distinct code from acting as an onboarding oracle. The recovery shape is deliberately minimal — <code>{"error.details"}</code> MUST conform to <code>{"error-details/billing-not-permitted-for-agent.json"}</code> (<code>{"rejected_billing"}</code> plus an optional single <code>{"suggested_billing"}</code> retry value, typically <code>{"operator"}</code>) and MUST NOT carry the agent's full permitted-billing subset, rate cards, payment terms, credit limit, billing entity, or any other per-agent commercial state. Recovery: correctable (retry with <code>{"error.details.suggested_billing"}</code> when present; when absent, surface to a human at the buyer — the agent cannot unilaterally extend its commercial relationship and MUST NOT auto-retry, since payments-relationship onboarding with the seller is offline). + +</Accordion> +<a id="error-code-billing-not-supported"></a> + +<Accordion title="BILLING_NOT_SUPPORTED — correctable"> + +**Suggested action:** check get_adcp_capabilities for supported_billing and resubmit with a supported value, or omit billing to accept the seller's default + +The seller declines the requested <code>{"billing"}</code> value either at the seller-wide capability level (<code>{"supported_billing"}</code> does not include the value) or at the per-account-relationship level (e.g., the seller accepts <code>{"operator"}</code> billing in general but has no direct billing relationship with the operator on this specific account). The default reject code for billing-value mismatches; <code>{"error.details"}</code> SHOULD conform to <code>{"error-details/billing-not-supported.json"}</code> (<code>{"scope"}</code> ∈ <code>{"{\"capability\", \"account\"}"}</code> plus optional <code>{"supported_billing"}</code> echo for the <code>{"\"capability\""}</code> scope) so callers can dispatch without parsing prose. Distinct from <code>{"BILLING_NOT_PERMITTED_FOR_AGENT"}</code>, which is narrowly scoped to the calling buyer agent's commercial relationship with the seller (passthrough-only vs agent-billable) rather than to the seller's capability or per-account state. Sellers MUST emit <code>{"BILLING_NOT_PERMITTED_FOR_AGENT"}</code> only when agent identity has been established via signed-request derivation or a credential-to-agent mapping in the seller's onboarding record; in all other cases (unauthenticated callers and bearer credentials not mapped to a specific agent record) sellers MUST return <code>{"BILLING_NOT_SUPPORTED"}</code> and MUST omit <code>{"error.details.scope"}</code> — emitting the per-agent code or the <code>{"\"account\""}</code>-scope hint without established identity is a cross-tenant onboarding oracle (same uniform-response shape required by the <code>{"*_NOT_FOUND"}</code> family). Recovery: correctable (check <code>{"get_adcp_capabilities"}</code> for <code>{"supported_billing"}</code> and resubmit with a value the seller supports, or omit <code>{"billing"}</code> to accept the seller's default). + +</Accordion> +<a id="error-code-billing-out-of-band"></a> + +<Accordion title="BILLING_OUT_OF_BAND — terminal"> + +**Suggested action:** do not retry — billing for this account runs through a non-AdCP channel. Pre-filter via capabilities.creative.bills_through_adcp before sending report_usage; flag the account in the buyer's routing table and fall back to the ad server's native billing export for cost reconciliation + +A creative-agent billing-loop operation (<code>{"report_usage"}</code> is the canonical case) received a well-formed record that the agent will not bill on because this account bills via a non-AdCP channel — flat license, SaaS contract, bundled enterprise agreement, or any other out-of-band arrangement. The agent returns <code>{"accepted: 0"}</code> with the offending record(s) listed in <code>{"errors[]"}</code> carrying this code; the request itself is valid and silent acceptance would break buyer-side reconciliation. Distinct from <code>{"BILLING_NOT_SUPPORTED"}</code> (the seller declines a specific <code>{"billing"}</code> value on a media-buy account where AdCP billing is otherwise in scope) and <code>{"BILLING_NOT_PERMITTED_FOR_AGENT"}</code> (per-buyer-agent commercial gate on an otherwise-billable surface) by signaling that the entire billing surface is offline for this account, not that a specific value or caller is rejected. Buyers SHOULD pre-filter by reading <code>{"capabilities.creative.bills_through_adcp"}</code> from <code>{"get_adcp_capabilities"}</code> before issuing <code>{"report_usage"}</code>; agents that have not yet declared the capability remain in the probe-to-discover mode. The error is returned per-record (in the <code>{"report_usage"}</code> response <code>{"errors[]"}</code> array with <code>{"field"}</code> pointing at <code>{"usage[N]"}</code> or a specific record subpath), not at the envelope level. The code itself is the discriminator; no <code>{"error.details"}</code> shape is defined for this code (mirroring <code>{"CONFIGURATION_ERROR"}</code>'s discriminator-by-code pattern). Recovery: terminal — auto-retry will not change the outcome; the buyer SHOULD flag the account in its routing table so reconciliation falls back to the ad server's native billing export (or whatever offline channel the agent uses) rather than expecting AdCP-side cost truth. + +</Accordion> +<a id="error-code-brand-required"></a> + +<Accordion title="BRAND_REQUIRED — correctable"> + +**Suggested action:** include brand (domain plus optional brand_id) on the request + +A billable operation was attempted without a brand reference. Every billable operation requires either a seller-assigned <code>{"account_id"}</code> or a natural key including <code>{"brand"}</code>. Recovery: correctable (include <code>{"brand"}</code> — <code>{"domain"}</code> plus optional <code>{"brand_id"}</code> — on the request). + +</Accordion> +<a id="error-code-budget-cap-reached"></a> + +<Accordion title="BUDGET_CAP_REACHED — correctable"> + +**Suggested action:** raise max_spend, or reduce max_creatives/max_variants, to produce the remaining items + +build_creative stopped producing early because the next leaf would exceed the request's max_spend ceiling. Normally a SUCCESSFUL partial build (BuildCreativeVariantSuccess with budget_status: 'capped' and an advisory BUDGET_CAP_REACHED entry — every returned leaf is real and billed); returned as a terminal error only when even the first leaf would exceed the cap (no partial possible). Distinct from BUDGET_EXCEEDED (would exceed a media-buy/package allocation — a rejection) and BUDGET_EXHAUSTED (already spent). Recovery: correctable (raise max_spend, or reduce max_creatives/max_variants). + +</Accordion> +<a id="error-code-budget-exceeded"></a> + +<Accordion title="BUDGET_EXCEEDED — correctable"> + +**Suggested action:** reduce requested amount or increase budget allocation + +Operation would exceed the allocated budget for the media buy or package. Distinct from BUDGET_EXHAUSTED (already spent) and BUDGET_TOO_LOW (below minimum). Recovery: correctable (reduce requested amount or increase budget allocation). + +</Accordion> +<a id="error-code-budget-exhausted"></a> + +<Accordion title="BUDGET_EXHAUSTED — terminal"> + +**Suggested action:** buyer must add funds or increase budget cap + +Account or campaign budget has been fully spent. Distinct from BUDGET_TOO_LOW (rejected at submission). Recovery: terminal (buyer must add funds or increase budget cap). + +</Accordion> +<a id="error-code-budget-too-low"></a> + +<Accordion title="BUDGET_TOO_LOW — correctable"> + +**Suggested action:** increase budget or check capabilities.media_buy.limits + +Budget is below the seller's minimum. Recovery: correctable (increase budget or check capabilities.media_buy.limits). + +</Accordion> +<a id="error-code-campaign-suspended"></a> + +<Accordion title="CAMPAIGN_SUSPENDED — transient"> + +**Suggested action:** wait for the escalation to resolve; contact the plan operator if the suspension persists + +Campaign governance has been suspended pending human review; the governance agent MUST reject <code>{"check_governance"}</code> and <code>{"report_plan_outcome"}</code> calls on the affected plan until the escalation is resolved. Distinct from <code>{"ACCOUNT_SUSPENDED"}</code> (account-wide) — this is scoped to a single plan/campaign. Recovery: transient (wait for the escalation to resolve; contact the plan operator if the suspension persists). + +</Accordion> +<a id="error-code-catalog-limit-exceeded"></a> + +<Accordion title="CATALOG_LIMIT_EXCEEDED — correctable"> + +**Suggested action:** remove unused catalogs, or contact the seller to raise the limit + +The account has reached its maximum catalog count. Recovery: correctable (remove unused catalogs, or contact the seller to raise the limit). + +</Accordion> +<a id="error-code-compliance-unsatisfied"></a> + +<Accordion title="COMPLIANCE_UNSATISFIED — correctable"> + +**Suggested action:** choose a format that supports the required disclosure positions and persistence modes, or remove the disclosure requirement + +A required disclosure from the brief's compliance section cannot be satisfied by the target format — either the required position or the required persistence mode is not in the format's disclosure_capabilities. Recovery: correctable (choose a format that supports the required disclosure positions and persistence modes, or remove the disclosure requirement). + +</Accordion> +<a id="error-code-configuration-error"></a> + +<Accordion title="CONFIGURATION_ERROR — terminal"> + +**Suggested action:** surface to a human at the seller — the buyer cannot resolve a seller-side deployment misconfiguration and MUST NOT auto-retry + +The seller's deployment is misconfigured in a way that prevents handling the request — the buyer cannot fix it, retrying will not help, and reporting to the seller's operator is the only remediation. Examples: account declared with <code>{"mode: 'mock'"}</code> but no <code>{"mock_upstream_url"}</code> populated; platform declared with <code>{"mode: 'live'"}</code> or <code>{"mode: 'sandbox'"}</code> but no <code>{"upstream_url"}</code> declared; required environment variable unset on the seller process. Distinct from <code>{"INVALID_REQUEST"}</code> (buyer-fixable; the request itself is malformed), <code>{"SERVICE_UNAVAILABLE"}</code> (transient; retry-with-backoff may succeed), <code>{"UNSUPPORTED_FEATURE"}</code> (capability mismatch — the seller does not implement the requested specialism), <code>{"ACCOUNT_SETUP_REQUIRED"}</code> (buyer-side onboarding incomplete; this code is seller-side deployment incomplete), and <code>{"GOVERNANCE_UNAVAILABLE"}</code> (governance-agent-scoped; transient). Wire placement. The deployment cannot produce a success artifact, so sellers MUST flip transport-level failure markers (HTTP 5xx, MCP <code>{"isError: true"}</code>, A2A <code>{"failed"}</code>) and populate both layers per the two-layer model in <code>{"error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model"}</code>. The code itself is the discriminator; no <code>{"error.details"}</code> shape is defined for this code (mirroring the minimal-disclosure precedent of <code>{"AGENT_SUSPENDED"}</code> / <code>{"AGENT_BLOCKED"}</code>). Sellers SHOULD populate <code>{"error.message"}</code> with operator-actionable detail (which metadata key is missing, which env var is unset) and MUST NOT include credentials, connection strings, or stack traces — the message is wire-visible to the buyer. Recovery: terminal — the buyer MUST surface to the seller's operator and MUST NOT auto-retry (retries cannot resolve a misconfigured deployment until the operator intervenes). + +</Accordion> +<a id="error-code-conflict"></a> + +<Accordion title="CONFLICT — transient"> + +**Suggested action:** re-read the resource and retry with current state + +Concurrent modification detected. The resource was modified by another request between read and write. Recovery: transient (re-read the resource and retry with current state). + +</Accordion> +<a id="error-code-conflicting-selectors"></a> + +<Accordion title="CONFLICTING_SELECTORS — correctable"> + +**Suggested action:** emit one canonical format selector route, or make every required legacy 3.x compatibility projection select the same product format contract under the canonical v2-narrows-v1 comparison + +A 3.x package request carries multiple resolvable format selector routes that select different canonical product format declaration sets. Sellers MUST first resolve every present route independently (<code>{"format_option_refs"}</code>, direct <code>{"format_kind"}</code> plus <code>{"params"}</code>, and deprecated <code>{"format_ids"}</code>) without applying precedence. An unresolved option reference or an unprojectable legacy ID is rejected with <code>{"UNSUPPORTED_FEATURE"}</code>, not this code. Once all routes resolve, sellers derive the product <code>{"format_options[]"}</code> entries selected by each route using directional product satisfaction and require those sets to match. Legacy parameter compatibility uses the asymmetric v2-narrows-v1 relation defined by canonical formats, not raw object equality. For fixed-size image selectors, both width and height participate in compatibility. Sellers MUST reject different format shapes, selected option sets, or incompatible dimensions rather than silently choosing the canonical route. <code>{"error.field"}</code> SHOULD point at the conflicting package, and <code>{"error.details"}</code> SHOULD identify the supplied selector routes and their normalized canonical summaries. Recovery: correctable (emit one canonical selector route, or make a required legacy 3.x compatibility projection select the same product format contract). + +</Accordion> +<a id="error-code-creative-deadline-exceeded"></a> + +<Accordion title="CREATIVE_DEADLINE_EXCEEDED — correctable"> + +**Suggested action:** check creative_deadline via get_media_buys before submitting changes, or negotiate a deadline extension with the seller + +Creative change submitted after the package's creative_deadline. Distinct from CREATIVE_REJECTED (content-policy, brand-safety, or accessibility-review failure). Recovery: correctable (check creative_deadline via get_media_buys before submitting changes, or negotiate a deadline extension with the seller). + +</Accordion> +<a id="error-code-creative-inaccessible"></a> + +<Accordion title="CREATIVE_INACCESSIBLE — correctable"> + +**Suggested action:** verify the asset URLs in creative_manifest are reachable without agent-side credentials, then re-submit + +A creative governance agent (get_creative_features) could not retrieve the submitted creative_manifest assets for evaluation — an asset URL was unreachable, returned an error, or required credentials the agent does not hold. Distinct from CREATIVE_NOT_FOUND (a creative_id absent from the agent's library, not an asset-fetch failure) and CREATIVE_REJECTED (assets retrieved but failed creative review). Recovery: correctable (verify the asset URLs are reachable without agent-side credentials, then re-submit). + +</Accordion> +<a id="error-code-creative-locale-not-accepted"></a> + +<Accordion title="CREATIVE_LOCALE_NOT_ACCEPTED — correctable"> + +**Suggested action:** supply or assign a creative variant matching every in-scope format option's accepted_language_ranges, narrow placement scope, choose a compatible format option, or change an ineligible serve_default + +A creative bound to a locale-constrained product format has no materialized variant matching locale_policy.accepted_language_ranges, lacks protocol-declared locale topology, or uses serve_default with a seller-ineligible default variant. Seller ranges use RFC 4647 Basic Filtering and are applied independently for every placement where the assignment may serve, before buyer Lookup, locale_fallbacks, or default selection. Distinct from CREATIVE_REJECTED because this is a mechanically discoverable assignment-eligibility mismatch, not subjective content review. error.field SHOULD point to the offending creative or assignment; error.details SHOULD include format_option_id when present, accepted_language_ranges, available_variant_locales, and placement identity when applicable. Recovery: correctable (supply or assign a matching materialized locale variant, narrow placement scope, choose a compatible format option, or change an ineligible serve_default). + +</Accordion> +<a id="error-code-creative-not-found"></a> + +<Accordion title="CREATIVE_NOT_FOUND — correctable"> + +**Suggested action:** verify creative_id via list_creatives, or sync_creatives to register it + +Referenced creative does not exist in the agent's creative library. Recovery: correctable (verify creative_id via list_creatives, or sync_creatives to register it). Sellers MUST return this code uniformly for any creative_id not owned by the calling account — never distinguish 'exists in another tenant' from 'does not exist', which would enable cross-tenant enumeration. + +</Accordion> +<a id="error-code-creative-rejected"></a> + +<Accordion title="CREATIVE_REJECTED — correctable"> + +**Suggested action:** revise the creative according to the applicable advertising policy or validated accessibility criteria + +Creative failed content-policy, brand-safety, or accessibility review. For deadline violations, see CREATIVE_DEADLINE_EXCEEDED. Accessibility failures SHOULD use structured details conforming to error-details/accessibility-violation.json. Recovery: correctable (revise the creative according to the applicable policy or validated accessibility criteria). + +</Accordion> +<a id="error-code-creative-value-not-allowed"></a> + +<Accordion title="CREATIVE_VALUE_NOT_ALLOWED — correctable"> + +**Suggested action:** pick a value from error.details.allowed_values (or re-fetch the format) and resubmit + +A submitted text-asset value is not in the format's declared <code>{"allowed_values"}</code> list. Distinct from <code>{"CREATIVE_REJECTED"}</code> (generic creative-review failure) by being a closed-set constraint violation that the buyer can resolve mechanically without policy interpretation — the seller has published the complete list of acceptable values on the format, and any value outside that list is rejected by definition. The seller MUST set <code>{"error.field"}</code> to the offending asset's path within the manifest (e.g., <code>{"creatives[0].creative_manifest.assets[0].value"}</code> or the field name declared by the format) and SHOULD include the format's <code>{"allowed_values"}</code> array in <code>{"error.details.allowed_values"}</code> so the buyer agent can re-prompt its LLM with constrained sampling. Recovery: correctable (select a value from <code>{"allowed_values"}</code> and resubmit). + +</Accordion> +<a id="error-code-credential-in-args"></a> + +<Accordion title="CREDENTIAL_IN_ARGS — terminal"> + +**Suggested action:** do NOT auto-retry — auto-retry re-logs the credential on each attempt. Move authentication material or caller-supplied trust material out of request args (top-level, <code>{"context"}</code>, <code>{"ext"}</code>, any nested location) onto the relevant transport authentication/trust channel or account provisioning path (Authorization: Bearer, RFC 9421 signature/JWKS, mTLS, MCP/A2A authentication framing); rotate any leaked credential, then resubmit + +The seller detected authentication material or caller-supplied trust material placed in request args (top-level, in <code>{"context"}</code>, in <code>{"ext"}</code>, or any other nested location in the task payload) instead of arriving on the relevant transport authentication or trust channel. This includes buyer-principal credentials that should arrive on the inbound transport (<code>{"Authorization: Bearer"}</code> per RFC 6750 §2 for HTTP, RFC 9421 signature headers for signed requests, MCP/A2A authentication framing per RFC 9728 §3), and evaluator-call credentials or JWK/JWKS/JWKS-URI trust material smuggled into evaluator-related payload fields instead of being established through the creative agent's outbound transport authentication to the evaluator. Distinct from <code>{"AUTH_REQUIRED"}</code> (no credentials presented or presented credentials rejected on the transport channel) and <code>{"PERMISSION_DENIED"}</code> (authenticated caller not authorized for the action). Distinct from the receiver-side credentials carried in <code>{"push_notification_config.authentication.credentials"}</code>, which configure the seller's webhook callback authentication and are not buyer-principal or evaluator-call credentials — those are an explicit carve-out and MUST NOT trigger this code. Sellers SHOULD reject credential-in-args under AdCP 3.1; the requirement upgrades to MUST 90 days after the 3.1 publication date. Recovery: terminal — the agent MUST NOT auto-retry. Auto-retry against this code re-logs the credential on each attempt across the seller's request logs, observability stack, and any LLM-context surfaces in the buyer-side recovery loop, exactly the prompt-injection exfiltration surface that motivated the rule. Wire placement. Sellers MUST flip transport-level failure markers (HTTP 4xx, MCP <code>{"isError: true"}</code>, A2A <code>{"failed"}</code>) and populate both layers per the two-layer model in <code>{"error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model"}</code>. The code itself is the discriminator; no <code>{"error.details"}</code> shape is defined, and <code>{"error.field"}</code> MUST NOT echo the offending credential value or any prefix of it (e.g., <code>{"\"Bearer ey...\""}</code>). <code>{"error.message"}</code> MUST be generic and MUST NOT contain credential material. Sellers MUST drop the smuggled credential from logs, audit rows, and observability spans before persisting the rejection — the rejection itself is otherwise an exfiltration surface. + +</Accordion> +<a id="error-code-evaluator-agent-not-accepted"></a> + +<Accordion title="EVALUATOR_AGENT_NOT_ACCEPTED — correctable"> + +**Suggested action:** replace the evaluator agent_url (evaluator.feature_agent.agent_url or the evaluator agent-form agent_url) with one from the seller's published accepted_verifiers, or drop the evaluator agent pointer to fall back to seller-default ranking + +Buyer attached an evaluator agent pointer on <code>{"build_creative"}</code> — <code>{"evaluator.feature_agent.agent_url"}</code> or the <code>{"evaluator"}</code> agent-form <code>{"agent_url"}</code> — that does not match (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments) any entry in the seller's <code>{"creative_policy.accepted_verifiers[].agent_url"}</code>. The producing agent does not call buyer-asserted endpoints outside its allowlist; this mirrors <code>{"PROVENANCE_VERIFIER_NOT_ACCEPTED"}</code> for the gate/rank evaluator path — the buyer represents which on-list agent it used, the seller is the agent-of-record and calls only allowlisted agents. <code>{"error.field"}</code> MUST point at the offending <code>{"agent_url"}</code> path; <code>{"error.details"}</code> SHOULD include a reference to the product whose <code>{"creative_policy.accepted_verifiers"}</code> the buyer should consult. Recovery: correctable (replace the agent_url with one from the seller's published <code>{"accepted_verifiers"}</code>, or drop the evaluator agent pointer to fall back to seller-default ranking). + +</Accordion> +<a id="error-code-feed-fetch-failed"></a> + +<Accordion title="FEED_FETCH_FAILED — correctable"> + +**Suggested action:** check URL accessibility, authentication, and that content matches the declared feed_format + +Platform could not fetch the catalog feed URL during sync_catalogs. Recovery: correctable (check URL accessibility, authentication, and that the content matches the declared feed_format). + +</Accordion> +<a id="error-code-field-not-permitted"></a> + +<Accordion title="FIELD_NOT_PERMITTED — correctable"> + +**Suggested action:** drop the disallowed field(s) and retry + +A request field is not in the caller's <code>{"field_scopes"}</code> allowlist for this task. Sellers declaring <code>{"field_scopes"}</code> on the account's <code>{"authorization"}</code> object MUST reject any request that sets a non-allowlisted field with this code. Distinct from <code>{"VALIDATION_ERROR"}</code> (schema/business-rule violation) - the field is valid, just not writable by this caller. <code>{"error.field"}</code> MUST identify the exact offending field path (e.g., <code>{"packages[0].budget"}</code>); when multiple fields are disallowed, sellers SHOULD return one error per field, or MAY enumerate them in <code>{"error.details.fields"}</code>. Recovery: correctable and agent-autonomous - agent may drop the disallowed field(s) and retry. + +</Accordion> +<a id="error-code-format-declaration-divergent"></a> + +<Accordion title="FORMAT_DECLARATION_DIVERGENT — correctable"> + +**Suggested action:** advisory — seller-side fix needed: producer is emitting disagreeing format_ids and format_options for the same product. Buyer SDK SHOULD prefer format_options and surface the divergent product to operators; do not auto-retry + +Non-fatal advisory raised when a product carries BOTH <code>{"format_ids"}</code> (v1) AND <code>{"format_options"}</code> (v2) and the two disagree (different canonical, different dimensions, different orientation) after projection. The producer's contract is that both shapes MUST refer to the same underlying declaration; divergence is a producer bug. + +Either side MAY emit this code: a SELLER may self-detect on emit (own producer bug; rare), or more commonly a consumer-SDK detects on consumption. SDKs MUST prefer <code>{"format_options"}</code> (the richer surface) when both are present and MUST surface the divergent product so it's observable rather than silently picked-one-and-dropped-other. Hard-failing the entire <code>{"get_products"}</code> response is discouraged — it punishes downstream buyers for the producer bug. + +**Surface placement (normative).** Same single-surface mandate as <code>{"FORMAT_PROJECTION_FAILED"}</code>: SDKs that detect this on consumption MUST augment the response's <code>{"errors[]"}</code> array with an entry carrying <code>{"source: \"sdk\""}</code>, <code>{"sdk_id: \"<package>@<version>\""}</code>, <code>{"code: \"FORMAT_DECLARATION_DIVERGENT\""}</code>, and the field+details described below. Logger-only is insufficient; lint-output channels are NOT acceptable as the surface (the multi-hop agent network needs warnings to propagate across SDK boundaries via the wire response). + +<code>{"error.field"}</code> MUST point at the offending product; <code>{"error.details"}</code> SHOULD carry <code>{"{ product_id, format_ids, format_options_summary, divergence_reason }"}</code> so buyer SDKs can flag the producer for follow-up. + +**Multi-hop deduplication.** Each hop that detects the same divergence SHOULD deduplicate by <code>{"(code, field)"}</code> rather than re-emit; the existing entry's <code>{"sdk_id"}</code> identifies which earlier processor saw it first. + +Recovery: correctable but seller-side — buyer can't fix divergent declarations, only flag them. + +</Accordion> +<a id="error-code-format-declaration-v1-ambiguous"></a> + +<Accordion title="FORMAT_DECLARATION_V1_AMBIGUOUS — correctable"> + +**Suggested action:** advisory — seller-side fix needed: the v2 declaration's canonical has only family-level structural registry entries (no invertible literal). Seller MUST author v1_format_ref on the v2 declaration to disambiguate; SDKs MUST NOT synthesize. Do not auto-retry + +Non-fatal advisory raised when an SDK detects that a product's v2 declaration cannot be unambiguously projected back to a single v1 named format because the v1-canonical-mapping registry has only family-level structural entries for this canonical (no invertible <code>{"format_id_glob"}</code> literal). The family is known (e.g., 'this is a video_vast'); the specific v1 named format isn't pickable mechanically. Distinct from <code>{"FORMAT_PROJECTION_FAILED"}</code> (registry-coverage gap, correctable by adding a registry entry) — ambiguity is structural: the family is defined but a specific format can't be picked without seller assertion. + +Surface placement: same single-mandate as <code>{"FORMAT_PROJECTION_FAILED"}</code> and <code>{"FORMAT_DECLARATION_DIVERGENT"}</code> — SDKs MUST augment the response's <code>{"errors[]"}</code> array with an entry carrying <code>{"source: \"sdk\""}</code>, <code>{"sdk_id"}</code>, <code>{"code: \"FORMAT_DECLARATION_V1_AMBIGUOUS\""}</code>, <code>{"field"}</code> pointing at the offending declaration, and <code>{"error.details"}</code> SHOULD carry <code>{"{ format_kind, registry_matches: [<list of structural entries that matched at family level>], product_id }"}</code> so adopters can see why the inversion was ambiguous. + +**SDKs MUST NOT synthesize a v1_format_ref** in this case (or any other case). v1↔v2 explicit pairing is seller-asserted only — SDKs encountering family-only registry matches MUST treat the v2 declaration as v1-unreachable and surface this code rather than invent a plausible v1 format_id. The seller's path: author <code>{"v1_format_ref"}</code> on the v2 declaration to disambiguate (the authoritative pairing per <code>{"v1-canonical-mapping.json"}</code> resolution step 1), or accept that v1-only buyers won't see this product. Recovery: correctable but seller-side — buyer can't disambiguate without the seller's assertion. + +</Accordion> +<a id="error-code-format-declaration-v1-lossy-multi-size"></a> + +<Accordion title="FORMAT_DECLARATION_V1_LOSSY_MULTI_SIZE — correctable"> + +**Suggested action:** advisory — emitted alongside the partial v1 emission, NOT in place of it: the v2 declaration carries <code>{"params.sizes[]"}</code> with N entries but only M v1_format_ref entries (M &lt; N), so v1 buyers see partial size coverage on the product. Seller-side fix: add v1_format_ref entries for the missing sizes. SDK MAY (non-normative) fan out automatically by catalog lookup. Non-fatal — do not auto-retry + +Non-fatal advisory raised when a v2 declaration carries <code>{"params.sizes[]"}</code> with N entries but only M v1_format_ref entries (M &lt; N). The seller has asserted some v1 named formats but not enough to cover all declared sizes — v1-only buyers see partial coverage on the product. Emitted **alongside** the partial v1 emission (NOT in place of it): the product still appears on the v1 wire under the M sizes the seller covered; this code tells v1-aware downstream agents that N-M sizes were dropped from the projection. + +Surface placement: SDKs that detect on emission OR consumption MUST augment the response's <code>{"errors[]"}</code> with <code>{"source: \"sdk\""}</code> (or <code>{"\"producer\""}</code> if the seller self-detects on emit), <code>{"sdk_id"}</code>, <code>{"code: \"FORMAT_DECLARATION_V1_LOSSY_MULTI_SIZE\""}</code>, <code>{"field"}</code> pointing at the offending declaration, and <code>{"error.details"}</code> SHOULD carry <code>{"{ product_id, declared_sizes: [{w,h}, …], covered_sizes: [{w,h}, …], dropped_sizes: [{w,h}, …] }"}</code> so buyer agents see which sizes were lost. + +**SDKs MAY (non-normative) fan out automatically** by catalog lookup — for each entry in <code>{"sizes[]"}</code> lacking a corresponding <code>{"v1_format_ref"}</code>, the SDK consults the AAO catalog for the per-size v1 named format (e.g., for <code>{"{width: 728, height: 90}"}</code> look up <code>{"display_728x90_image"}</code>) and emits it under <code>{"format_ids[]"}</code>. This is opt-in (requires catalog access); when SDKs fan out, they SHOULD still emit this code as a transparency advisory so downstream consumers know the v1 emit was synthesized rather than seller-asserted. + +Recovery: warning — non-fatal, no retry. Seller fix: add <code>{"v1_format_ref[]"}</code> entries for the missing sizes. + +</Accordion> +<a id="error-code-format-not-supported"></a> + +<Accordion title="FORMAT_NOT_SUPPORTED — correctable"> + +**Suggested action:** refresh get_adcp_capabilities creative.supported_formats[] and retry with a capability_id whose operations contains the intended build, preview, or validate operation + +A requested creative operation route is not supported by this creative agent. On the canonical 3.2 path, returned when build_creative.target_capability_id(s), preview_creative.target_capability_id, or validate_input targets[] kind capability does not match an advertised creative.supported_formats[].capability_id carrying the requested operation. Also returned when preview renderer inference has zero or multiple compatible matches. Sellers SHOULD attribute the error to the selector field and MAY include supported capability IDs in error.details.supported_capability_ids when safe. Deprecated target_format_id(s) and preview format_id retain legacy named-format error attribution during the 3.x compatibility window. Recovery: correctable (read get_adcp_capabilities creative.supported_formats[] and retry with a capability_id whose operations contains the intended operation). + +</Accordion> +<a id="error-code-format-option-unresolved"></a> + +<Accordion title="FORMAT_OPTION_UNRESOLVED — correctable"> + +**Suggested action:** advisory — publisher-side fix needed: a placement's <code>{"format_options[].format_option_id"}</code> references a <code>{"format_option_id"}</code> that does not exist in this file's top-level <code>{"formats[]"}</code>. Buyer SDK MUST fail closed for that placement (drop the format from the placement's accepted set) and surface this code. Publisher fix: either declare the missing format option in <code>{"formats[]"}</code> or remove the reference from the placement. Do not auto-retry + +Non-fatal advisory raised when a placement in <code>{"adagents.json"}</code> (or any consumer of <code>{"placement-definition.json"}</code>) carries <code>{"format_options[].format_option_id"}</code> referencing a <code>{"format_option_id"}</code> that does NOT exist in the file's top-level <code>{"formats[]"}</code>. The reference is broken — the publisher's catalog claims the placement accepts a format option that isn't declared. + +**Resolution scope is same-file only.** Cross-file <code>{"format_option_id"}</code> lookup is not supported by design (closes off format_option_id squatting across publisher boundaries — a malicious file cannot reference another publisher's format_option_id and claim its narrowing). Buyer SDKs MUST fail closed for the placement (drop the format from the placement's accepted format set) and MUST surface this code rather than silently dropping or guessing what the publisher meant. + +Surface placement: same single-mandate as the other FORMAT_* codes — SDKs that detect on consumption MUST augment the response's <code>{"errors[]"}</code> with <code>{"source: \"sdk\""}</code>, <code>{"sdk_id"}</code>, <code>{"code: \"FORMAT_OPTION_UNRESOLVED\""}</code>, <code>{"field"}</code> pointing at the offending placement (e.g., <code>{"placements[2].format_options[1].format_option_id"}</code>), and <code>{"error.details"}</code> SHOULD carry <code>{"{ placement_id, format_option_id, declared_format_options: [<list of format_option_ids actually in formats[]>] }"}</code> so the publisher can fix. + +Recovery: correctable but publisher-side — buyer can't fix; publisher either declares the missing format option in <code>{"formats[]"}</code> or removes the reference from the placement. + +</Accordion> +<a id="error-code-format-projection-failed"></a> + +<Accordion title="FORMAT_PROJECTION_FAILED — correctable"> + +**Suggested action:** advisory — seller-side fix needed: ask the seller to add an explicit <code>{"canonical"}</code> field on the legacy format declaration, or contribute a registry entry (format_id_glob or structural match) to v1-canonical-mapping.json. Do not auto-retry; the product is still valid on the legacy named-format path + +Non-fatal advisory raised when a legacy named format on a product cannot be projected to a canonical-formats <code>{"ProductFormatDeclaration"}</code> via the resolution order in <code>{"v1-canonical-mapping.json"}</code> (explicit <code>{"canonical"}</code> field → format_id_glob → structural match → fail-closed). The product is still valid on the legacy named-format path; only the 3.1+ <code>{"format_options"}</code> projection failed. Primarily a **consumer-SDK concern** — the seller didn't fail; the consumer-side SDK couldn't project on their behalf. <code>{"error.field"}</code> MUST point at the offending product (e.g., <code>{"products[3].format_ids[0]"}</code>); <code>{"error.details"}</code> SHOULD carry <code>{"{ format_id, product_id, resolution_failure: \"no_explicit_canonical\" \u007c \"no_registry_match\" \u007c \"no_structural_match\" }"}</code> so buyer SDKs can route remediation (suggest the seller add an explicit <code>{"canonical"}</code> field, or file a registry PR). + +**Surface placement (normative).** SDKs that detect this on consumption MUST augment the response's <code>{"errors[]"}</code> array with an entry carrying <code>{"source: \"sdk\""}</code>, <code>{"sdk_id: \"<package>@<version>\""}</code>, <code>{"code: \"FORMAT_PROJECTION_FAILED\""}</code>, and the field+details described above. This is the single mandated surface — logger-only is insufficient and a separate lint-output channel is NOT acceptable (AdCP is a multi-hop agent network; warnings need to propagate across hops or each hop has to re-detect locally). Sellers MAY emit this code on their own response when they self-detect a non-projectable format on emit; producer-emitted entries omit <code>{"source"}</code> (or set <code>{"source: \"producer\""}</code>). The response stays 200/success regardless of who emits; this is non-fatal. + +**Multi-hop deduplication.** Each hop that detects the same condition SHOULD deduplicate by <code>{"(code, field)"}</code> rather than re-emit. The existing entry's <code>{"sdk_id"}</code> identifies which earlier processor saw it first; downstream SDKs SHOULD NOT add a second entry for the same <code>{"(code, field)"}</code> pair unless they have materially different <code>{"error.details"}</code> (e.g., a different <code>{"resolution_failure"}</code> reason from a different registry version). + +Recovery: correctable (seller-side action — add explicit <code>{"canonical"}</code> field on the legacy format file, contribute a v1-canonical-mapping registry entry, or author a 3.1+ <code>{"ProductFormatDeclaration"}</code> with <code>{"v1_format_ref"}</code> linking back). See canonical-formats.mdx 'Dual emission and v2↔v1 projection' for the full rules. + +</Accordion> +<a id="error-code-governance-denied"></a> + +<Accordion title="GOVERNANCE_DENIED — correctable"> + +**Suggested action:** restructure the buy, escalate to human spending authority, or contact the governance agent for details + +A registered governance agent denied the transaction. Sellers MUST place the denial in the operation's structured rejection arm when one exists (e.g., <code>{"acquire_rights"}</code> → <code>{"AcquireRightsRejected"}</code>, or an <code>{"approval_webhook"}</code> delivery → <code>{"CreativeRejected"}</code>); otherwise in <code>{"errors[]"}</code> + <code>{"adcp_error"}</code>. Buyers MUST dispatch on the response's discriminated <code>{"status"}</code> first and fall back to <code>{"errors[].code"}</code> / <code>{"adcp_error.code"}</code> only when no rejection arm exists for that operation. The buyer may restructure the buy (e.g., reduce budget, split into smaller transactions), escalate to human spending authority, or contact the governance agent for details. Recovery: correctable. + +Wire placement (full guidance). Governance denial is a structured business outcome, not a system error — the governance call SUCCEEDED and the agent returned a denial verdict. Two cases: + +1. Operation or webhook payload defines a structured rejection arm. The arm IS the canonical denial shape. The seller populates <code>{"reason"}</code> (human-readable, propagating governance findings) and <code>{"suggestions"}</code> (optional) and does NOT additionally emit <code>{"GOVERNANCE_DENIED"}</code> in <code>{"errors[]"}</code> or <code>{"adcp_error"}</code>. The rejection arms enforce this at the schema layer: e.g., <code>{"AcquireRightsRejected"}</code> and <code>{"CreativeRejected"}</code> both declare <code>{"not: { required: [errors] }"}</code>, so dual-emission is already a schema violation. The code does not appear on the wire when the rejection arm is used. Transport-level success markers MUST NOT be flipped (HTTP 200, MCP <code>{"isError: false"}</code>, A2A <code>{"succeeded"}</code>) — the operation completed successfully and produced a structured response. + +2. Operation response has no rejection arm (e.g., <code>{"create_media_buy"}</code> returns Success / Error / Submitted arms only). The seller populates <code>{"errors[].code: GOVERNANCE_DENIED"}</code> in the payload AND <code>{"adcp_error.code: GOVERNANCE_DENIED"}</code> on the envelope per the two-layer model in <code>{"error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model"}</code>. Transport-level failure markers DO flip in this case (HTTP 4xx, MCP <code>{"isError: true"}</code>, A2A <code>{"failed"}</code>) — the task could not produce a success artifact. + +The rule generalizes to any current or future operation or webhook payload whose response defines a discriminated rejection arm. In either placement, sellers SHOULD propagate governance findings verbatim — buyers' recovery decisions depend on what specifically was rejected. <code>{"GOVERNANCE_DENIED"}</code> is reserved for verdicts received from a reachable governance agent; if the governance call itself failed (timeout, network, config error), use <code>{"GOVERNANCE_UNAVAILABLE"}</code> instead. + +</Accordion> +<a id="error-code-governance-unavailable"></a> + +<Accordion title="GOVERNANCE_UNAVAILABLE — transient"> + +**Suggested action:** retry with backoff; if the agent remains unreachable, the buyer MUST contact the plan's governance operator + +A registered governance agent is unreachable. Sellers MUST place this code in <code>{"errors[]"}</code> + <code>{"adcp_error"}</code> (never a structured rejection arm) and flip transport-level failure markers (HTTP 5xx, MCP <code>{"isError: true"}</code>, A2A <code>{"failed"}</code>). Distinct from <code>{"GOVERNANCE_DENIED"}</code> (agent reachable and explicitly denied — see that code's wire-placement guidance). Recovery: transient (retry with backoff; if the agent remains unreachable, the buyer MUST contact the plan's governance operator — the seller MUST NOT proceed with the media buy without a valid decision). + +Wire placement (full guidance). Governance unavailability is a system error — the governance call FAILED (timeout, network, config error) and the seller could not get a verdict at all. Always populate both layers per the two-layer model in <code>{"error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model"}</code>. Do NOT use a structured rejection arm for unavailability even when the task offers one — the buyer's recovery semantics differ (retry-with-backoff for unavailability vs. restructure-or-escalate for denial), and conflating them masks the system-error signal. + +</Accordion> +<a id="error-code-idempotency-conflict"></a> + +<Accordion title="IDEMPOTENCY_CONFLICT — correctable"> + +**Suggested action:** use a fresh UUID v4 for the new request, or resend the exact original payload to get the cached response + +An earlier request with the same idempotency_key was processed with a different canonical payload within the seller's replay window. Distinct from CONFLICT (concurrent write) — this indicates the client reused a key across semantically different requests. Recovery: correctable (use a fresh UUID v4 for the new request, or resend the exact original payload to get the cached response). + +</Accordion> +<a id="error-code-idempotency-expired"></a> + +<Accordion title="IDEMPOTENCY_EXPIRED — correctable"> + +**Suggested action:** perform a natural-key check to determine whether the original request succeeded; if no evidence of success, generate a fresh idempotency_key for a new attempt + +The idempotency_key was seen previously but its cached response has been evicted because it is past the seller's declared replay_ttl_seconds. Distinct from IDEMPOTENCY_CONFLICT (different payload within window) — this indicates the retry arrived too late for at-most-once guarantees. Recovery: correctable (perform a natural-key reconciliation — e.g., call get_media_buys for the relevant account/status scope and match returned media_buys[].context.internal_campaign_id — to determine whether the original request succeeded, then either accept that result or generate a fresh idempotency_key for a new attempt). If the buyer has any evidence the prior call succeeded (partial response received before crash, entry in the buyer's own DB, a webhook fired), the buyer MUST do the natural-key reconciliation BEFORE minting a new key — minting a new key in that situation is exactly how double-creation happens. + +</Accordion> +<a id="error-code-idempotency-in-flight"></a> + +<Accordion title="IDEMPOTENCY_IN_FLIGHT — transient"> + +**Suggested action:** wait top-level error.retry_after seconds and retry with the SAME idempotency_key — MUST NOT mint a fresh key (turns a safe retry into a double-execution race) + +A prior request with the same <code>{"idempotency_key"}</code> is still being processed and has not yet produced a cached response. The second request arrived before the first completed. Sellers MAY return this code instead of blocking the second caller until the first finishes — useful when the first call invokes a slow downstream system (SSP, ad server, payment provider). Distinct from IDEMPOTENCY_CONFLICT (different canonical payload — a client bug) and from CONFLICT (concurrent modification of a different resource) — IDEMPOTENCY_IN_FLIGHT is the seller telling the buyer 'your retry was correct but your previous attempt is still running, come back shortly.' Sellers SHOULD populate top-level <code>{"error.retry_after"}</code> with an integer-second wait hint based on the first request's elapsed time and expected completion. Buyers MUST treat this as transient and MUST NOT mint a fresh <code>{"idempotency_key"}</code> — minting a new key turns a safe retry into a double-execution race. Recovery: transient (wait <code>{"error.retry_after"}</code> seconds and retry with the same <code>{"idempotency_key"}</code>; the second attempt will either replay the now-cached response or, if still in flight, return IDEMPOTENCY_IN_FLIGHT again). + +</Accordion> +<a id="error-code-invalid-feed-format"></a> + +<Accordion title="INVALID_FEED_FORMAT — correctable"> + +**Suggested action:** verify the feed content matches the declared format + +Catalog feed content does not match the declared feed_format. Recovery: correctable (verify the feed content matches the declared format, e.g. XML for google_merchant_center). + +</Accordion> +<a id="error-code-invalid-pricing-option"></a> + +<Accordion title="INVALID_PRICING_OPTION — correctable"> + +**Suggested action:** verify pricing_option_id against the product's pricing_options from get_products or the vendor's discovery response, then resubmit with a valid ID + +A <code>{"pricing_option_id"}</code> referenced in the request does not exist on the target account or product. Returned per-record in <code>{"report_usage"}</code> responses and at the request level for <code>{"create_media_buy"}</code> when the submitted pricing option cannot be resolved. <code>{"error.field"}</code> SHOULD point at the offending record path (e.g., <code>{"usage[1].pricing_option_id"}</code> or <code>{"packages[0].pricing_option_id"}</code>). Distinct from <code>{"PRODUCT_NOT_FOUND"}</code> (the product itself is unknown) by being narrowly about a pricing option within a known product or account. Recovery: correctable (verify <code>{"pricing_option_id"}</code> against the product's <code>{"pricing_options"}</code> from <code>{"get_products"}</code> or the vendor's discovery response, then resubmit with a valid ID). + +</Accordion> +<a id="error-code-invalid-request"></a> + +<Accordion title="INVALID_REQUEST — correctable"> + +**Suggested action:** check request parameters and fix + +Request is malformed, missing required fields, or violates schema constraints. Recovery: correctable (check request parameters and fix). + +</Accordion> +<a id="error-code-invalid-state"></a> + +<Accordion title="INVALID_STATE — correctable"> + +**Suggested action:** check current status via get_media_buys and adjust request + +Operation is not permitted for the resource's current status (e.g., updating a completed or canceled media buy, or modifying a canceled package). Recovery: correctable (check current status via get_media_buys and adjust request). + +</Accordion> +<a id="error-code-invalid-usage-data"></a> + +<Accordion title="INVALID_USAGE_DATA — correctable"> + +**Suggested action:** check required fields for the vendor type (vendor_cost, currency, account at minimum), fix invalid values, and resubmit + +A usage record in <code>{"report_usage"}</code> has missing or invalid fields — required fields absent, values out of range, or type mismatches. Returned per-record in the <code>{"report_usage"}</code> response <code>{"errors[]"}</code> array. <code>{"error.field"}</code> SHOULD point at the offending field path (e.g., <code>{"usage[0].vendor_cost"}</code>, <code>{"usage[0].currency"}</code>). Distinct from <code>{"INVALID_REQUEST"}</code> (top-level request malformed) by being scoped to individual usage records within an otherwise well-formed request. Recovery: correctable (check required fields for the vendor type — at minimum <code>{"vendor_cost"}</code>, <code>{"currency"}</code>, and <code>{"account"}</code> — fix the offending values, and resubmit). + +</Accordion> +<a id="error-code-io-required"></a> + +<Accordion title="IO_REQUIRED — correctable"> + +**Suggested action:** review the proposal's insertion_order, accept terms, and include io_acceptance on accept_proposal; use create_media_buy only for 3.x compatibility + +The committed proposal requires a signed insertion order but no io_acceptance was provided. Recovery: correctable (review the proposal's insertion_order, accept terms, and include io_acceptance on accept_proposal; 3.x compatibility callers use create_media_buy). + +</Accordion> +<a id="error-code-item-validation-failed"></a> + +<Accordion title="ITEM_VALIDATION_FAILED — correctable"> + +**Suggested action:** check item_issues for per-item rejection reasons and fix the offending items + +One or more catalog items failed schema validation during sync_catalogs. Recovery: correctable (check item_issues for per-item rejection reasons and fix the offending items). + +</Accordion> +<a id="error-code-media-buy-not-found"></a> + +<Accordion title="MEDIA_BUY_NOT_FOUND — correctable"> + +**Suggested action:** verify media_buy_id; for legacy correlation use get_media_buys plus context, such as context.internal_campaign_id + +Referenced media buy does not exist or is not accessible to the requesting agent. Recovery: correctable (verify media_buy_id; when recovering across legacy sellers or missing echoed IDs, reconcile via get_media_buys and the opaque request/response context correlation handle, such as context.internal_campaign_id, rather than deprecated top-level buyer_ref). + +</Accordion> +<a id="error-code-multi-finalize-unsupported"></a> + +<Accordion title="MULTI_FINALIZE_UNSUPPORTED — correctable"> + +**Suggested action:** sequence single-proposal finalize calls — one finalize entry per get_products refine[] call or per refine_proposals refinements[] call + +Returned by sellers that cannot guarantee atomic commit across multiple proposals in a single finalize batch. Two call sites where this applies: (1) a <code>{"get_products"}</code> call with multiple <code>{"action: 'finalize'"}</code> entries in <code>{"refine[]"}</code> targeting different <code>{"proposal_id"}</code> values; (2) a <code>{"refine_proposals"}</code> call with multiple <code>{"action: 'finalize'"}</code> entries in <code>{"refinements[]"}</code> targeting different <code>{"proposal_id"}</code> values. The buyer's intent — atomic multi-proposal finalize — is structurally well-formed and per spec atomic on both surfaces, but this seller's downstream stack cannot satisfy the atomicity guarantee (e.g., the proposals route to two different ad servers with no 2PC). More specific than <code>{"INVALID_REQUEST"}</code> so buyers can distinguish 'this seller doesn't support multi-finalize' from 'the request itself is malformed'. Recovery: correctable (sequence the finalize calls one-<code>{"proposal_id"}</code>-per-call on whichever task surface the buyer is using; there is no capability flag for multi-finalize support, so a successful first-attempt is the only positive discovery signal). See [refinement guide § Finalize is exclusive](/dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement#finalize-is-exclusive-within-refine). + +</Accordion> +<a id="error-code-not-cancellable"></a> + +<Accordion title="NOT_CANCELLABLE — correctable"> + +**Suggested action:** check the seller's cancellation policy or contact the seller + +The media buy or package cannot be canceled in its current state. The seller may have contractual or operational constraints that prevent cancellation. Recovery: correctable (check the seller's cancellation policy or contact the seller). + +</Accordion> +<a id="error-code-package-not-found"></a> + +<Accordion title="PACKAGE_NOT_FOUND — correctable"> + +**Suggested action:** verify package_id; for legacy package correlation use get_media_buys plus package context, such as context.buyer_ref + +Referenced package does not exist within the specified media buy. Recovery: correctable (verify package_id within the media buy; when recovering across legacy sellers or missing echoed product_id, reconcile via get_media_buys and the package-level context correlation handle, such as context.buyer_ref, rather than deprecated top-level buyer_ref). + +</Accordion> +<a id="error-code-payment-terms-not-supported"></a> + +<Accordion title="PAYMENT_TERMS_NOT_SUPPORTED — correctable"> + +**Suggested action:** omit payment_terms to accept the seller's default, retry with a different supported value, or negotiate offline + +The seller does not accept the requested <code>{"payment_terms"}</code> value for this account. Payment terms are never silently remapped — sellers either accept or reject. Distinct from <code>{"BILLING_NOT_SUPPORTED"}</code> (the <code>{"billing"}</code> enum) by being narrowly about the <code>{"payment_terms"}</code> enum on the same account. Recovery: correctable (omit <code>{"payment_terms"}</code> to accept the seller's default, retry with a different value the seller supports, or negotiate offline). + +</Accordion> +<a id="error-code-permission-denied"></a> + +<Accordion title="PERMISSION_DENIED — correctable"> + +**Suggested action:** call check_governance to mint a valid token, or contact the seller to resolve the underlying permission; when error.details.scope is 'agent' with reason 'sandbox_only' the rejection is terminal-pending-onboarding — surface to a human rather than auto-retrying. For suspended/blocked agent relationships, sellers emit AGENT_SUSPENDED / AGENT_BLOCKED instead (those codes carry recovery: terminal directly). + +The authenticated caller is not authorized for the requested action under the seller's own policies, or a required signed credential (e.g., a <code>{"governance_context"}</code> token on a spend-commit) is missing, fails verification, or was issued for a different plan, seller, or phase. Distinct from <code>{"AUTH_MISSING"}</code> (no credentials presented), <code>{"AUTH_INVALID"}</code> (credentials presented but rejected), <code>{"GOVERNANCE_DENIED"}</code> (governance agent denied), <code>{"AGENT_SUSPENDED"}</code> (agent's relationship temporarily paused), and <code>{"AGENT_BLOCKED"}</code> (agent's relationship permanently denied). When the gate that fired is specifically a non-status per-agent provisioning constraint — e.g., the agent is provisioned for sandbox traffic only and the request was against a non-sandbox account — <code>{"error.details"}</code> SHOULD conform to <code>{"error-details/agent-permission-denied.json"}</code> (<code>{"scope: \"agent\""}</code> plus <code>{"reason: \"sandbox_only\""}</code>) so callers can dispatch without parsing prose. Sellers MUST emit <code>{"scope: \"agent\""}</code> only when buyer-agent identity has been established via signed-request derivation or a credential-to-agent mapping in the seller's onboarding record; in all other cases (including bearer credentials not mapped to a specific agent record) sellers MUST return <code>{"PERMISSION_DENIED"}</code> and MUST omit <code>{"error.details.scope"}</code> — emitting the per-agent scope without established identity is a cross-tenant onboarding oracle, and the omit MUST be enforced across every observable channel (response shape, HTTP/A2A/MCP status, headers, side effects, observability, latency parity) per the channel-coverage rules in error-handling.mdx Per-Agent Authorization Gate, mirroring the <code>{"*_NOT_FOUND"}</code> uniform-response rule and <code>{"BILLING_NOT_PERMITTED_FOR_AGENT"}</code>. The <code>{"suspended"}</code> and <code>{"blocked"}</code> per-agent states are NOT carried on this code — sellers MUST emit <code>{"AGENT_SUSPENDED"}</code> / <code>{"AGENT_BLOCKED"}</code> instead, each of which is its own discriminator. Recovery: correctable (call <code>{"check_governance"}</code> to mint a valid token, or contact the seller to resolve the underlying permission); when <code>{"details.reason"}</code> is present the rejection is terminal-pending-onboarding — the agent MUST surface to a human at the buyer rather than auto-retrying, since the agent cannot unilaterally extend its sandbox-only provisioning. + +</Accordion> +<a id="error-code-pixel-tracker-lossy-downgrade"></a> + +<Accordion title="PIXEL_TRACKER_LOSSY_DOWNGRADE — correctable"> + +**Suggested action:** advisory — emitted alongside the v1 downgrade emission: SDK collapsed a pixel_tracker asset to v1 <code>{"{asset_type: url, url_type: tracker_pixel}"}</code> for a seller that doesn't support pixel_tracker natively. The URL still fires; what's lost is in <code>{"error.details.lost_fields"}</code> (event variant, method:js execution context, or custom event timing). Buyer decision: accept the loss (most counter pixels survive), or fail the buy and route to a 3.1-capable seller. Non-fatal — do not auto-retry + +Non-fatal advisory raised when a 3.1 buyer SDK downgrades a <code>{"pixel_tracker"}</code> asset to the v1 <code>{"{asset_type: url, url_type: tracker_pixel}"}</code> shape for a 3.0.x seller that doesn't recognize the new asset type. The URL is still emitted on the wire and the seller will fire it as a tracker pixel; what's lost is the event/method discrimination. + +Downgrade rules (normative): +- <code>{"event: impression"}</code> + <code>{"method: img"}</code> → no loss; emit as <code>{"{asset_type: url, url_type: tracker_pixel, url, asset_id: impression_tracker}"}</code> +- <code>{"event: viewable_mrc_50"}</code> / <code>{"viewable_mrc_100"}</code> / <code>{"viewable_video_50"}</code> / <code>{"audible_video_complete"}</code> → emit with <code>{"asset_id: viewability_tracker"}</code>; advisory <code>{"lost_event: <variant>"}</code> (specific viewability variant collapses to a single v1 slot) +- <code>{"event: click"}</code> → emit with <code>{"asset_id: click_tracker"}</code>; no meaningful loss +- <code>{"event: custom, custom_event_name: X"}</code> → emit with <code>{"asset_id: impression_tracker"}</code> (default tracker_pixel fires on impression); advisory <code>{"lost_event: \"custom\""}</code>, <code>{"lost_custom_event_name: X"}</code> (custom event timing collapses to impression timing) +- <code>{"method: js"}</code> → emit unchanged shape (url, url_type:tracker_pixel); advisory <code>{"lost_method: \"js\""}</code> (v1 seller will fire as HTTP GET; the URL is hit and any counter-based measurement increments, but the response body won't execute as JS — measurement that depends on JS execution, e.g., OMID-style verification, viewability observers, cross-domain cookie setters, won't work. Simple counter pixels still work.) + +Surface: SDK that performs the downgrade MUST augment the response's <code>{"errors[]"}</code> with <code>{"source: \"sdk\""}</code>, <code>{"sdk_id"}</code>, <code>{"code: \"PIXEL_TRACKER_LOSSY_DOWNGRADE\""}</code>, <code>{"field"}</code> pointing at the affected manifest asset path, and <code>{"error.details"}</code> SHOULD carry <code>{"{ asset_id, original_event, original_method, original_custom_event_name (if present), downgrade_target: \"url+tracker_pixel\", lost_fields: [<list>] }"}</code>. One advisory per downgraded asset; SDKs SHOULD NOT collapse multiple downgrades into a single advisory entry — per-asset details let the buyer's measurement-plan owner decide whether each loss is tolerable. + +Recovery: warning — non-fatal, no retry. Buyer-side decision: accept the loss (most simple counter pixels survive), or fail the buy and route to a 3.1-capable seller. Seller-side fix: upgrade to 3.1 and accept <code>{"pixel_tracker"}</code> natively. + +</Accordion> +<a id="error-code-pixel-tracker-upgrade-inferred"></a> + +<Accordion title="PIXEL_TRACKER_UPGRADE_INFERRED — correctable"> + +**Suggested action:** advisory — emitted when a 3.1 SDK upgrades a v1 url+tracker_pixel asset to pixel_tracker by inferring event and method from asset_id conventions. The inference may not match the buyer's original intent; check <code>{"error.details.inferred_event"}</code> / <code>{"inferred_method"}</code> and re-prompt the seller for explicit values if precise measurement matters. Non-fatal — do not auto-retry + +Non-fatal advisory raised when a 3.1 buyer SDK upgrades a v1 <code>{"{asset_type: url, url_type: tracker_pixel}"}</code> to a <code>{"pixel_tracker"}</code> asset by INFERRING the event and method from the v1 asset_id and conventional defaults. The inference is structural — the SDK doesn't have explicit event/method values, only the v1 asset_id hint and <code>{"url_type: tracker_pixel"}</code> (which implies <code>{"method: img"}</code> by default). + +Inference rules (normative): +- <code>{"asset_id: impression_tracker"}</code> → <code>{"event: impression, method: img"}</code> +- <code>{"asset_id: viewability_tracker"}</code> → <code>{"event: viewable_mrc_50, method: img"}</code> (50% is the most common default; specific viewability variant cannot be recovered from v1 shape) +- <code>{"asset_id: click_tracker"}</code> → <code>{"event: click, method: img"}</code> +- <code>{"asset_id: <other>"}</code> → <code>{"event: custom, custom_event_name: <original asset_id>, method: img"}</code> + +Surface: SDK MUST augment the response's <code>{"errors[]"}</code> with <code>{"code: \"PIXEL_TRACKER_UPGRADE_INFERRED\""}</code>, <code>{"field"}</code> pointing at the upgraded asset path, and <code>{"error.details"}</code> SHOULD carry <code>{"{ asset_id, inferred_event, inferred_method, inference_basis: \"asset_id_convention\" \u007c \"default\" }"}</code>. Buyer agents reading the response can re-prompt the seller for explicit values if precise measurement matters. + +Recovery: warning — non-fatal, no retry. Seller-side: upgrade emit path to ship pixel_tracker shape directly when 3.1-capable; until then, conventional asset_id values give the SDK enough signal to upgrade without losing critical semantics. + +</Accordion> +<a id="error-code-place-target-unavailable"></a> + +<Accordion title="PLACE_TARGET_UNAVAILABLE — correctable"> + +**Suggested action:** resolve the pinned value against the current catalog, review any replacement, and submit an intentional package targeting update + +A place identifier previously accepted and pinned on a package can no longer be executed. This is a nonfatal resource-state error returned in get_media_buys.errors[] alongside the affected buy. error.field MUST point to the exact media_buys[N].packages[M].targeting_overlay.geo_places[_exclude][A].values[V] response path. error.details MUST include media_buy_id, package_id, system, system_version, country, place_type, and value. The seller MUST preserve and echo the pinned target rather than silently changing geography. Recovery: correctable (look up the value through the declared resolver at the current catalog version and submit an intentional targeting update). + +</Accordion> +<a id="error-code-plan-not-found"></a> + +<Accordion title="PLAN_NOT_FOUND — correctable"> + +**Suggested action:** verify plan_id via sync_plans, or register the plan first + +Referenced governance plan does not exist or is not accessible to the requesting agent. Recovery: correctable (verify plan_id via sync_plans, or register the plan first). Sellers MUST return this code uniformly for any plan_id not accessible to the calling account — never distinguish 'exists but unauthorized' from 'does not exist', which would enable cross-tenant enumeration of governance plans. + +</Accordion> +<a id="error-code-policy-violation"></a> + +<Accordion title="POLICY_VIOLATION — correctable"> + +**Suggested action:** review policy requirements in the error details + +Request violates the seller's content or advertising policies. Recovery: correctable (review policy requirements in the error details). + +</Accordion> +<a id="error-code-private-field-in-public-placement"></a> + +<Accordion title="PRIVATE_FIELD_IN_PUBLIC_PLACEMENT — correctable"> + +**Suggested action:** seller-side fix needed: remove private operational fields (<code>{"visibility"}</code>, <code>{"source"}</code>, <code>{"origin"}</code>, <code>{"delivery_mappings"}</code>, or similar) from public placement objects. Consumers MUST fail closed for the affected placement and alert operators; do not echo private field values in logs or error details + +Fatal producer-side error raised when a public placement object (<code>{"Product.placements[]"}</code> in <code>{"get_products"}</code> or <code>{"placements[]"}</code> in adagents.json) exposes seller-private operational fields such as <code>{"visibility"}</code>, <code>{"source"}</code>, <code>{"origin"}</code>, or <code>{"delivery_mappings"}</code>. This is a private-data leak, not an ordinary syntactic mismatch. Consumers that detect it MUST fail closed for that placement and surface this code so monitoring can alarm on the leak specifically instead of burying it under generic schema validation. <code>{"error.field"}</code> SHOULD point at the offending placement path and <code>{"error.details"}</code> SHOULD carry <code>{"{ placement_id, leaked_fields: [<field names>] }"}</code> without echoing private field values. Recovery: correctable but seller-side — remove private operational fields from the public placement surface and keep delivery mappings in seller-internal systems. + +</Accordion> +<a id="error-code-product-expired"></a> + +<Accordion title="PRODUCT_EXPIRED — correctable"> + +**Suggested action:** re-discover with get_products to find current inventory + +The seller still recognizes one or more configured product IDs as issued to the authenticated account and referenced discovery/refinement lineage, and they have passed their expires_at timestamps. Sellers are not required to retain expiry tombstones indefinitely; an ID that is no longer resolvable, or is inaccessible to this caller because it belongs to another account or lineage, uses PRODUCT_NOT_FOUND. This distinction MUST NOT become a cross-tenant existence oracle. Recovery: correctable (re-discover through list_products, request_proposals, or the get_products compatibility facade to find current inventory). + +</Accordion> +<a id="error-code-product-not-found"></a> + +<Accordion title="PRODUCT_NOT_FOUND — correctable"> + +**Suggested action:** remove invalid IDs and retry, or re-discover with get_products + +One or more referenced product IDs are unknown or are not resolvable within the authenticated account and configured-offer lineage. A caller-authorized configured ID that is still recognized as expired uses PRODUCT_EXPIRED; once no expiry tombstone remains, or whenever the ID belongs to another account or lineage, PRODUCT_NOT_FOUND applies. Sellers MUST NOT reveal cross-tenant product existence through error choice. Recovery: correctable (remove invalid IDs and retry, or re-discover with get_products). + +</Accordion> +<a id="error-code-product-unavailable"></a> + +<Accordion title="PRODUCT_UNAVAILABLE — correctable"> + +**Suggested action:** choose a different product + +The requested product is sold out or no longer available. Recovery: correctable (choose a different product). + +</Accordion> +<a id="error-code-proposal-expired"></a> + +<Accordion title="PROPOSAL_EXPIRED — correctable"> + +**Suggested action:** call request_proposals and finalize a fresh proposal, or re-discover and finalize through legacy get_products + +A referenced proposal ID has passed its expires_at timestamp. For a committed proposal, the inventory hold has lapsed. Recovery: correctable (call request_proposals and finalize a fresh proposal, or re-discover and finalize through the legacy get_products facade). + +</Accordion> +<a id="error-code-proposal-not-committed"></a> + +<Accordion title="PROPOSAL_NOT_COMMITTED — correctable"> + +**Suggested action:** finalize the draft through refine_proposals, or through the legacy get_products refine action + +The referenced proposal has proposal_status 'draft' and cannot be accepted into a media buy. Recovery: correctable (finalize it through refine_proposals, or through the legacy get_products refine action). + +</Accordion> +<a id="error-code-proposal-not-found"></a> + +<Accordion title="PROPOSAL_NOT_FOUND — correctable"> + +**Suggested action:** request and finalize a fresh proposal, then retry + +The referenced proposal_id is not recognized by the seller — it belongs to a different tenant, was never issued, or was evicted from the seller's session cache before consumption. Distinct from <code>{"PROPOSAL_EXPIRED"}</code> (a known proposal whose <code>{"expires_at"}</code> window has passed) and <code>{"PROPOSAL_NOT_COMMITTED"}</code> (a known proposal still in <code>{"draft"}</code>). Recovery: correctable (request a fresh proposal, finalize it, then retry accept_proposal; 3.x compatibility callers retry create_media_buy). + +</Accordion> +<a id="error-code-provenance-claim-contradicted"></a> + +<Accordion title="PROVENANCE_CLAIM_CONTRADICTED — correctable"> + +**Suggested action:** revise the provenance claim to match the verifier's observation or replace the creative; auto-retry without correction will not pass + +Seller invoked a governance agent from <code>{"creative_policy.accepted_verifiers"}</code> via <code>{"get_creative_features"}</code> and the verifier's result contradicts the buyer's provenance claim - e.g., buyer claims <code>{"digital_source_type: digital_capture"}</code> but the AI-detection feature returns <code>{"ai_generated: true"}</code> above the seller's confidence threshold. Distinct from the <code>{"PROVENANCE_*_MISSING"}</code> family (structural absence) by being an active refutation. <code>{"error.details"}</code> SHOULD be limited to the audit-safe allowlist <code>{"{ agent_url, feature_id, claimed_value, observed_value, confidence }"}</code>; sellers MUST NOT forward arbitrary verifier extension fields, <code>{"detail_url"}</code>, or any verifier response shape that may carry cross-tenant or PII data. When the seller calls a different on-list agent than the buyer nominated (the seller is the verifier-of-record), <code>{"error.details.agent_url"}</code> is the agent the seller actually called and <code>{"error.details.substituted_for"}</code> SHOULD carry the buyer's nominated <code>{"agent_url"}</code> so the buyer can reconcile. Recovery: correctable - buyer revises the provenance claim to match reality (or replaces the creative); auto-retry without correction will not pass. + +</Accordion> +<a id="error-code-provenance-digital-source-type-missing"></a> + +<Accordion title="PROVENANCE_DIGITAL_SOURCE_TYPE_MISSING — correctable"> + +**Suggested action:** set provenance.digital_source_type to a value from the digital-source-type enum and resubmit + +Seller's <code>{"creative_policy.provenance_requirements.require_digital_source_type"}</code> is true and the submitted creative's resolved provenance (after inheritance) has no <code>{"digital_source_type"}</code> value, or has it set to null. Distinct from <code>{"PROVENANCE_REQUIRED"}</code> (no provenance object at all) - provenance is present, just missing this specific field. Recovery: correctable (set <code>{"provenance.digital_source_type"}</code> to a value from the <code>{"digital-source-type"}</code> enum and resubmit). <code>{"error.field"}</code> MUST point at the resolved provenance path that was inspected (e.g., <code>{"creatives[0].creative_manifest.provenance.digital_source_type"}</code>). + +</Accordion> +<a id="error-code-provenance-disclosure-missing"></a> + +<Accordion title="PROVENANCE_DISCLOSURE_MISSING — correctable"> + +**Suggested action:** set provenance.disclosure.required and, when true, populate disclosure.jurisdictions + +Seller's <code>{"creative_policy.provenance_requirements.require_disclosure_metadata"}</code> is true and the submitted creative's resolved provenance has no <code>{"disclosure.required"}</code> boolean, or <code>{"disclosure.required"}</code> is true with no <code>{"disclosure.jurisdictions"}</code> entries. Recovery: correctable (set <code>{"provenance.disclosure.required"}</code> and, when true, populate <code>{"disclosure.jurisdictions"}</code>). <code>{"error.field"}</code> MUST point at <code>{"provenance.disclosure"}</code> (e.g., <code>{"creatives[0].creative_manifest.provenance.disclosure"}</code>). + +</Accordion> +<a id="error-code-provenance-embedded-missing"></a> + +<Accordion title="PROVENANCE_EMBEDDED_MISSING — correctable"> + +**Suggested action:** attach at least one embedded_provenance entry from a supported provider and resubmit + +Seller's <code>{"creative_policy.provenance_requirements.require_embedded_provenance"}</code> is true and the submitted creative's resolved provenance has no <code>{"embedded_provenance"}</code> array, or has it as an empty array. Used in pipelines where sidecar <code>{"c2pa.manifest_url"}</code> is stripped by intermediaries and the seller requires content-stream-resilient provenance. Recovery: correctable (attach at least one <code>{"embedded_provenance"}</code> entry from a supported provider and resubmit, optionally with a <code>{"verify_agent"}</code> pointer matching one of the seller's <code>{"creative_policy.accepted_verifiers"}</code>). <code>{"error.field"}</code> MUST point at <code>{"provenance.embedded_provenance"}</code> on the resolved manifest. + +</Accordion> +<a id="error-code-provenance-required"></a> + +<Accordion title="PROVENANCE_REQUIRED — correctable"> + +**Suggested action:** attach a provenance object - at minimum digital_source_type - and resubmit + +Seller's <code>{"creative_policy.provenance_required"}</code> is true and the submitted creative has no <code>{"provenance"}</code> object on the manifest, on the creative-asset, or on any individual asset. Distinct from <code>{"CREATIVE_REJECTED"}</code> (generic creative-review failure) by being narrowly about provenance presence. Recovery: correctable (attach a provenance object - at minimum <code>{"digital_source_type"}</code> - and resubmit). <code>{"error.field"}</code> MUST point at the path where provenance was expected (e.g., <code>{"creatives[0].creative_manifest"}</code>). + +</Accordion> +<a id="error-code-provenance-synthetic-depiction-missing"></a> + +<Accordion title="PROVENANCE_SYNTHETIC_DEPICTION_MISSING — correctable"> + +**Suggested action:** assess the creative, set provenance.synthetic_depiction to true or false, and resubmit + +Seller's <code>{"creative_policy.provenance_requirements.require_synthetic_depiction"}</code> is true and the submitted creative's resolved provenance (after inheritance) has no <code>{"synthetic_depiction"}</code> boolean. Both <code>{"true"}</code> and <code>{"false"}</code> satisfy the requirement; absence means unassessed. Distinct from <code>{"PROVENANCE_REQUIRED"}</code> (no provenance object at all) and from <code>{"PROVENANCE_CLAIM_CONTRADICTED"}</code> (an independent verifier actively refuted a declared value). Recovery: correctable (assess the creative, set <code>{"provenance.synthetic_depiction"}</code> to true or false, and resubmit). <code>{"error.field"}</code> MUST point at the resolved <code>{"provenance.synthetic_depiction"}</code> path. The declaration does not establish consent, legality, or verification. + +</Accordion> +<a id="error-code-provenance-verifier-not-accepted"></a> + +<Accordion title="PROVENANCE_VERIFIER_NOT_ACCEPTED — correctable"> + +**Suggested action:** replace verify_agent.agent_url with one from the seller's published accepted_verifiers, drop verify_agent if the embedding is self-verifiable, or re-embed with a verifier the seller accepts + +Buyer attached a <code>{"verify_agent.agent_url"}</code> on <code>{"embedded_provenance[]"}</code> or <code>{"watermarks[]"}</code> that does not match (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments) any entry in the seller's <code>{"creative_policy.accepted_verifiers[].agent_url"}</code>. The seller does not call buyer-asserted endpoints outside its allowlist; this is the cross-check that closes the buyer-controlled-URL trust gap. <code>{"error.field"}</code> MUST point at the offending <code>{"verify_agent.agent_url"}</code> path; <code>{"error.details"}</code> SHOULD include a reference to the product whose <code>{"creative_policy.accepted_verifiers"}</code> the buyer should consult (the buyer already has this from <code>{"get_products"}</code>). Recovery: correctable (replace <code>{"verify_agent.agent_url"}</code> with one from the seller's published <code>{"accepted_verifiers"}</code>, drop the <code>{"verify_agent"}</code> entirely if the embedding is self-verifiable, or re-embed evidence using a verifier the seller accepts). + +</Accordion> +<a id="error-code-rate-limited"></a> + +<Accordion title="RATE_LIMITED — transient"> + +**Suggested action:** wait top-level error.retry_after seconds when present, then retry + +Request rate exceeded. Sellers SHOULD populate top-level <code>{"error.retry_after"}</code> with the integer number of seconds to wait. Recovery: transient (wait <code>{"error.retry_after"}</code> seconds when present, then retry). + +</Accordion> +<a id="error-code-read-only-scope"></a> + +<Accordion title="READ_ONLY_SCOPE — correctable"> + +**Suggested action:** use a non-mutating alternative, or surface to the operator to request a scope that permits mutation + +The caller's scope is read-only; the invoked task would mutate state and was rejected. Distinct from <code>{"SCOPE_INSUFFICIENT"}</code> (task not in scope at all) — the task is in some scopes this seller supports, just not this caller's. Recovery: correctable but not agent-autonomous — use a non-mutating alternative, or surface to the operator to request a scope that permits mutation. + +</Accordion> +<a id="error-code-reference-not-found"></a> + +<Accordion title="REFERENCE_NOT_FOUND — correctable"> + +**Suggested action:** verify the referenced identifier exists and is accessible to the caller + +Generic fallback for a referenced identifier, grant, session, or other resource that does not exist or is not accessible by the caller. Use when no resource-specific not-found code applies (e.g., property lists, content standards, rights grants, SI offerings, proposals, catalogs, event sources, collection lists, brands, individual properties). Typed parameters that lack a dedicated standard code MUST also use REFERENCE_NOT_FOUND rather than minting a custom *_NOT_FOUND code. See 'Uniform response for inaccessible references' in error-handling.mdx for the full MUST list. Recovery: correctable. Summary of the uniform-response MUST: sellers MUST return the same response for 'exists but the caller lacks access' as for 'does not exist' across every observable channel — error.code/message/field/details (message MUST be generic; error.field MUST be identical across both cases on typed parameters); HTTP status, A2A task.status.state, and MCP isError; response headers (ETag, Cache-Control, per-type rate-limit buckets, CDN tags); side effects (webhook/audit writes, background-job enqueues, per-type quota counters, DB-shard routing); and observability (logs, APM spans, third-party error telemetry like Sentry/Datadog). Sellers MUST perform the same resolution-and-authorization work on both paths (resolve-then-authorize; on true-miss still run an authorization decision of equivalent shape against an empty principal set so authorizer latency is not a side channel). Cache population MUST NOT be gated on authorization. Polymorphism is evaluated against the tool-schema's declared parameter shape before any lookup, and a tool's declared shape MUST be identical across all callers. + +</Accordion> +<a id="error-code-requote-required"></a> + +<Accordion title="REQUOTE_REQUIRED — correctable"> + +**Suggested action:** refine accepted_proposal_id into an amendment and apply it through accept_proposal, or keep control_media_buy inside the accepted envelope; 3.1 compatibility callers must adjust or rediscover + +A control_media_buy request, or the 3.x update_media_buy facade, would exceed the accepted commercial envelope. The seller is declining the requested shape at the current terms. Distinct from TERMS_REJECTED (measurement) and POLICY_VIOLATION (content). Sellers SHOULD populate error.details.envelope_field with the field path(s) that breached the envelope. AdCP 3.2 callers refine the MediaBuy's accepted_proposal_id to obtain a typed amendment; legacy 3.1 callers adjust the update, rediscover terms, or create a separate buy. + +</Accordion> +<a id="error-code-scope-insufficient"></a> + +<Accordion title="SCOPE_INSUFFICIENT — correctable"> + +**Suggested action:** the agent cannot broaden its own scope - surface to the operator rather than auto-retry + +The authenticated caller is not authorized for the invoked task — the task is not in the caller's <code>{"allowed_tasks"}</code> for this account (discoverable via the <code>{"authorization"}</code> object on sync_accounts / list_accounts responses). Distinct from <code>{"PERMISSION_DENIED"}</code> (generic authz failure, often credential-shaped) by being narrowly about task-level scope. Sellers SHOULD populate <code>{"error.details.introspection_hint"}</code> pointing at where the caller can re-read its scope (strawman: <code>{"{ task: 'list_accounts', account: {...} }"}</code>). Recovery: correctable in the sense that the request can be re-sent after the scope is broadened, but the agent cannot broaden its own scope — this requires operator intervention, and agents SHOULD surface rather than auto-retry. + +</Accordion> +<a id="error-code-service-unavailable"></a> + +<Accordion title="SERVICE_UNAVAILABLE — transient"> + +**Suggested action:** retry with exponential backoff + +Seller service is temporarily unavailable. Retry with exponential backoff. Recovery: transient. + +</Accordion> +<a id="error-code-session-not-found"></a> + +<Accordion title="SESSION_NOT_FOUND — correctable"> + +**Suggested action:** initiate a new session via si_initiate_session + +SI session ID is invalid, expired, or does not exist. Recovery: correctable (initiate a new session via si_initiate_session). + +</Accordion> +<a id="error-code-session-terminated"></a> + +<Accordion title="SESSION_TERMINATED — correctable"> + +**Suggested action:** initiate a new session via si_initiate_session + +SI session has already been terminated and cannot accept further messages. Recovery: correctable (initiate a new session via si_initiate_session). + +</Accordion> +<a id="error-code-signal-not-found"></a> + +<Accordion title="SIGNAL_NOT_FOUND — correctable"> + +**Suggested action:** verify signal_id via get_signals, or confirm the signal is available from this agent + +Referenced signal does not exist in the agent's catalog. Recovery: correctable (verify signal_ref via get_signals, or confirm the signal is available from this agent). Sellers MUST return this code uniformly for any signal_ref not accessible to the calling account — never distinguish 'exists but unauthorized' from 'does not exist', which would enable cross-tenant enumeration. + +</Accordion> +<a id="error-code-signal-targeting-incompatible"></a> + +<Accordion title="SIGNAL_TARGETING_INCOMPATIBLE — correctable"> + +**Suggested action:** assign the creative to a package whose signal targeting matches the creative's signal_condition, or rebuild the creative for the package's condition; match on shared signal_ref identity (compare signal_agent_segment_id exactly when both carry it, else categorical signal_ref + value) + +A creative carrying a signal_condition (from build_creative signal_conditions fan-out, #5240) was assigned to a package whose signal targeting is incompatible — e.g. a sun creative routed to a rain-targeted package. The trafficking-compatibility invariant: a creative built FOR one signal condition MUST NOT serve into a package targeting an incompatible condition. Enforced reject-at-trafficking on the sales side (create_media_buy / sync_creatives), NOT at build_creative (per #5280, signal pointers are advisory at the build layer; enforcement lives at the trafficking boundary). Compatibility is matched on shared signal_ref identity: when both sides carry signal_agent_segment_id, compare the opaque handle exactly; when both carry only categorical &#123;signal_id,value&#125;, compare signal_ref + value-set semantics; equal categorical labels from DIFFERENT providers are NOT compatible absent an explicit equivalence mechanism; when one side has a segment handle and the other only a categorical value, the seller MAY accept only if it can resolve both to the same provider-issued segment, else reject/warn. For value_type:numeric the comparison is range-overlap (WG-open: range-overlap vs exact-match — see RFC #5240 open decisions). error.field SHOULD point at the offending assignment path (e.g. packages[N].creative_assignments[M] or creatives[N]); error.details SHOULD carry the creative's signal_condition and the package's incompatible signal targeting so the buyer can re-route. Distinct from SIGNAL_NOT_FOUND (signal unknown/inaccessible) by being a compatibility mismatch between a known creative condition and a known package condition. Recovery: correctable (assign the creative to a package whose signal targeting matches its signal_condition, or rebuild for the package's condition). + +</Accordion> +<a id="error-code-signed-response-envelope-expired"></a> + +<Accordion title="SIGNED_RESPONSE_ENVELOPE_EXPIRED — transient"> + +**Suggested action:** re-invoke the designated task (verify_brand_claim or verify_brand_claims) to obtain a freshly signed response with a current exp window + +The <code>{"signed_response.payload.exp"}</code> timestamp is at or past the current time after applying the verifier's clock-skew tolerance. The signed envelope was valid when issued but the verification window has closed. Raised by verifiers consuming a designated-task signed response (<code>{"verify_brand_claim"}</code> / <code>{"verify_brand_claims"}</code>) during step 7 of the [response-signing verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#verifier-checklist-responses). Online verifiers MUST reject expired envelopes; audit verifiers MAY verify after <code>{"exp"}</code> as historical evidence that the brand-agent signed the payload during the stated <code>{"iat"}</code>/<code>{"exp"}</code> window, but MUST NOT treat the result as current truth. Distinct from <code>{"STALE_RESPONSE"}</code> (cache-staleness advisory on a populated success payload) by being a cryptographic freshness failure on a signed response envelope. Recovery: transient (re-invoke the designated task to obtain a freshly signed response with a current <code>{"exp"}</code> window). + +</Accordion> +<a id="error-code-signed-response-request-hash-mismatch"></a> + +<Accordion title="SIGNED_RESPONSE_REQUEST_HASH_MISMATCH — correctable"> + +**Suggested action:** re-invoke the designated task with the intended request parameters — the signed response's request_hash does not match the verifier's recomputed hash of the actual request; if the mismatch persists across retries, investigate JCS request-binding canonicalization between caller and responder + +The <code>{"signed_response.payload.request_hash"}</code> does not match the verifier's recomputed SHA-256 hash of the canonical request-binding object <code>{"{ task, brand_domain, agent_url, caller_identity, request }"}</code> for the actual request sent. Raised during step 8 of the [response-signing verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#verifier-checklist-responses). This indicates either a replay of a signed response from a different request, a JCS request-binding canonicalization divergence between signer and verifier, or payload tampering. Verifiers MUST reject the envelope when the recomputed hash does not byte-match the signed <code>{"request_hash"}</code>. <code>{"error.details"}</code> SHOULD carry <code>{"expected_request_hash"}</code> (the verifier's recomputed value) when safe to disclose — the hash binds the response to the exact request that produced it, and divergence is the signal that the binding has been broken. Recovery: correctable (re-invoke the designated task with the intended request parameters; if the mismatch persists across retries, investigate JCS request-binding canonicalization between the caller and the responding agent). + +</Accordion> +<a id="error-code-signed-response-tenant-mismatch"></a> + +<Accordion title="SIGNED_RESPONSE_TENANT_MISMATCH — correctable"> + +**Suggested action:** verify the request targeted the correct brand domain and agent_url, then re-invoke; if the mismatch persists, the responding agent's server-side tenant resolution may be misconfigured + +The <code>{"signed_response.payload.brand_domain"}</code> does not match the verifier's resolved or expected brand tenant for this verification call. Raised during step 9 of the [response-signing verifier checklist](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#verifier-checklist-responses). The responding brand agent derives <code>{"brand_domain"}</code> from server-side tenant resolution, not from caller-supplied request fields (per the response-signing profile in security.mdx), so a mismatch indicates cross-tenant replay, a multi-brand agent routing error, or a mismatch between the verifier's tenant resolution and the responder's. Distinct from <code>{"SIGNED_RESPONSE_REQUEST_HASH_MISMATCH"}</code> (request-binding divergence) by being narrowly about the tenant identity — <code>{"brand_domain"}</code> is a field inside the signed payload that the responder derives independently, not an echo of any caller-supplied value. Recovery: correctable (verify that the request targeted the correct brand domain and agent; re-invoke with the correct brand reference if the request was mis-routed; if the mismatch persists, the responding agent's server-side tenant resolution may be misconfigured). + +</Accordion> +<a id="error-code-stale-response"></a> + +<Accordion title="STALE_RESPONSE — transient"> + +**Suggested action:** advisory — emitted alongside a populated payload that was served from cache past the seller's freshness target because an upstream or sub-agent was unreachable. The response is usable; treat as non-fatal. Inspect <code>{"error.details.cache_age_seconds"}</code> to decide whether to immediately retry for fresh data or accept the cached value; the seller's own service is healthy, so retry is safe (it does not amplify the upstream failure) + +Non-fatal advisory raised when the seller's live fetch to an upstream or sub-agent failed (timeout, connection error, downstream 5xx) and the response payload was satisfied from a cached prior result that is past the seller's freshness target for this surface. Emitted **alongside** a populated success payload — the caller's request still completes from a usable cache hit; this code tells downstream consumers that the data is older than the seller would normally serve. + +Distinct from <code>{"SERVICE_UNAVAILABLE"}</code> (seller's own service is down, no payload — transient, retry-with-backoff) by signalling **graceful degradation**: the seller's own service is fine, but one of its dependencies is currently unreachable and the seller chose to honor the request from cache rather than return empty. Sellers MUST emit <code>{"STALE_RESPONSE"}</code> ONLY when the response payload is non-empty AND derived from a cache entry whose <code>{"cache_age_seconds"}</code> exceeds the surface's freshness target. When no cached entry exists (or the cache hit is within freshness target), sellers MUST NOT emit this code — return the empty-or-fresh response with whatever upstream-failure code applies (e.g., <code>{"SERVICE_UNAVAILABLE"}</code>). + +**Wire placement (normative).** Transport-level success markers stay flipped to success (HTTP 200, MCP <code>{"isError: false"}</code>, A2A <code>{"succeeded"}</code>) — the task ran successfully and produced a response, even if from cache. The advisory rides in <code>{"errors[]"}</code> on the payload and MUST NOT be promoted to <code>{"adcp_error"}</code> on the envelope (envelope-level errors are reserved for the empty-payload failure case per the two-layer model in <code>{"error-handling.mdx#envelope-vs-payload-errors-the-two-layer-model"}</code>). <code>{"error.field"}</code> SHOULD point at the affected payload path (e.g., <code>{"formats"}</code> for <code>{"list_creative_formats"}</code>, <code>{"products"}</code> for <code>{"get_products"}</code>). <code>{"error.details"}</code> SHOULD conform to <code>{"error-details/stale-response.json"}</code> — <code>{"served_from_cache"}</code> (required, always <code>{"true"}</code>), <code>{"cache_age_seconds"}</code> (required), and optionally <code>{"freshness_target_seconds"}</code>, <code>{"upstream"}</code> (the dependency that failed), and <code>{"original_error"}</code> (the underlying failure code/message). + +**Multiple stale upstreams.** When N sub-agents are stale (e.g., a <code>{"list_creative_formats"}</code> registry aggregating from multiple creative agents), the seller SHOULD emit **one <code>{"STALE_RESPONSE"}</code> entry per affected upstream** rather than aggregating — the per-upstream shape mirrors the existing precedent set by <code>{"PIXEL_TRACKER_LOSSY_DOWNGRADE"}</code> (one advisory per downgraded asset) and lets buyer agents reason about which sub-population of the payload is stale. Each entry's <code>{"error.field"}</code> SHOULD narrow to the affected slice (e.g., <code>{"formats"}</code> for formats sourced from the stale upstream). + +Recovery: transient — buyers MUST treat as non-fatal (the response is usable), MAY immediately retry later for fresh data, and SHOULD surface staleness to operators or end users when relevant. <code>{"cache_age_seconds"}</code> is the informational knob for the buyer's own "is this stale enough to bother retrying" policy. + +</Accordion> +<a id="error-code-terms-rejected"></a> + +<Accordion title="TERMS_REJECTED — correctable"> + +**Suggested action:** adjust the proposed terms and retry, or omit measurement_terms to accept the product's defaults + +Buyer-proposed measurement_terms were rejected by the seller. The error details SHOULD identify which specific term was rejected and the seller's acceptable range or supported vendors. Recovery: correctable (adjust the proposed terms and retry, or omit measurement_terms to accept the product's defaults). + +</Accordion> +<a id="error-code-unpriceable-output"></a> + +<Accordion title="UNPRICEABLE_OUTPUT — correctable"> + +**Suggested action:** target an output format the transformer prices, or have the seller add a pricing option covering it + +A creative transformer build targets an output capability that no pricing option covers — no transformer.pricing_options entry has a matching applies_to_output_capability_ids and none is unscoped. The build is rejected rather than billed at a guessed rate. Recovery: correctable. + +</Accordion> +<a id="error-code-unsupported-feature"></a> + +<Accordion title="UNSUPPORTED_FEATURE — correctable"> + +**Suggested action:** check get_adcp_capabilities and remove unsupported fields + +A requested feature or field is not supported by this seller. When rejecting a <code>{"refine_proposals"}</code> request that uses a typed dimension omitted from an explicit <code>{"proposal_refinement.supported_dimensions"}</code> declaration, the error details SHOULD follow <code>{"error-details/unsupported-refinement-dimension.json"}</code> — <code>{"unsupported_dimension"}</code> names the offending dimension and <code>{"supported_dimensions"}</code> echoes the seller's declaration so the buyer can remove or translate the field without another capability round trip. Recovery: correctable (check get_adcp_capabilities and remove unsupported fields). + +</Accordion> +<a id="error-code-unsupported-granularity"></a> + +<Accordion title="UNSUPPORTED_GRANULARITY — correctable"> + +**Suggested action:** pick a granularity from the product's reporting_capabilities.windowed_pull_granularities (via get_adcp_capabilities) and resubmit, or omit time_granularity to fall back to cumulative date-range pulls + +The requested <code>{"time_granularity"}</code> on <code>{"get_media_buy_delivery"}</code> is not in the product's declared <code>{"reporting_capabilities.windowed_pull_granularities"}</code>. Distinct from <code>{"UNSUPPORTED_FEATURE"}</code> (generic capability mismatch) by being narrowly about reporting-window granularity — the buyer asked for hourly pull-recovery on a product that only honors daily pulls, for example. Sellers MAY echo the declared set in <code>{"error.details.supported_granularities"}</code> when the caller is authorized to read the product's reporting capabilities — the same set is already available via <code>{"get_adcp_capabilities"}</code>, so the echo is a convenience, not load-bearing. Sellers MUST NOT echo a granularity set the caller could not otherwise read (per-product capability views vary by buyer entitlement). The <code>{"error.field"}</code> SHOULD point at <code>{"time_granularity"}</code>. Buyers that need higher-frequency recovery than the seller's pull set supports MUST rely on the webhook channel as primary at that frequency — the seller's <code>{"available_reporting_frequencies"}</code> may legitimately exceed <code>{"windowed_pull_granularities"}</code> (e.g., a stream-tap webhook on Kafka with warehouse pulls only at daily). Recovery: correctable (re-issue at a granularity in the declared set, or omit <code>{"time_granularity"}</code> to fall back to cumulative date-range pulls). + +</Accordion> +<a id="error-code-unsupported-provisioning"></a> + +<Accordion title="UNSUPPORTED_PROVISIONING — correctable"> + +**Suggested action:** re-issue with the entry shape the seller supports — <code>{"account: {account_id: ...}"}</code> for settings-update sellers with account-id namespaces, or <code>{"brand+operator+billing"}</code> for provisioning sellers; check seller documentation or capability declaration for which modes are implemented + +The seller does not support the <code>{"sync_accounts"}</code> mode the entry requested. Returned per-entry in the <code>{"sync_accounts"}</code> response when (a) an entry keyed by the natural-key trio (<code>{"brand"}</code> + <code>{"operator"}</code> + <code>{"billing"}</code>) is sent to a seller that does not provision accounts via AdCP — typical for account-id namespaces where accounts are pre-provisioned out of band or discovered via <code>{"list_accounts"}</code>; or (b) an entry keyed by <code>{"account"}</code> (AccountRef) is sent to a seller that has not implemented the settings-update mode. Distinct from <code>{"UNSUPPORTED_FEATURE"}</code> (generic capability mismatch) by being narrowly about which of the two <code>{"sync_accounts"}</code> modes the seller implements. The two modes are mutually exclusive per-entry — the seller MUST NOT silently downgrade or upgrade between them. Sellers MAY declare which modes they implement via <code>{"get_adcp_capabilities"}</code> (forward-looking — capability declaration shape is open). Recovery: correctable (re-issue with the entry shape the seller supports; for account-id namespaces that expose settings updates, that means <code>{"account: {account_id: ...}"}</code> entries; for sellers that only provision via natural key that means the flat <code>{"brand+operator+billing"}</code> shape). The <code>{"error.field"}</code> SHOULD point at the entry index where the unsupported shape was found. + +</Accordion> +<a id="error-code-validation-error"></a> + +<Accordion title="VALIDATION_ERROR — correctable"> + +**Suggested action:** review error details and fix field values + +Request contains invalid field values or violates business rules beyond schema validation. Recovery: correctable (review error details and fix field values). + +</Accordion> +<a id="error-code-vast-parse-failed"></a> + +<Accordion title="VAST_PARSE_FAILED — correctable"> + +**Suggested action:** inspect error.details.reason (not_xml, no_vast_root, no_ad, no_media_file), fix the VAST document, and resubmit + +A submitted <code>{"vast"}</code> asset failed document-level validation: the inline <code>{"content"}</code> (or the document fetched from <code>{"url"}</code>) is not well-formed XML, has no <code>{"<VAST>"}</code> root element, contains no <code>{"<Ad>"}</code> element, or an <code>{"<InLine>"}</code> linear creative carries no <code>{"<MediaFile>"}</code>. Returned by sellers that declare <code>{"creative_specs.vast_validation"}</code> of <code>{"document"}</code> or <code>{"wrapper"}</code>; sellers at the default <code>{"structural"}</code> level do not inspect the VAST document and MUST NOT return this code. Distinct from <code>{"VALIDATION_ERROR"}</code> (manifest-level format validation): the manifest was structurally valid, the VAST document inside it was not. Sellers SHOULD set <code>{"error.field"}</code> to the offending asset path and SHOULD populate <code>{"error.details.reason"}</code> with one of <code>{"not_xml"}</code>, <code>{"no_vast_root"}</code>, <code>{"no_ad"}</code>, <code>{"no_media_file"}</code>. Unresolved ad-server macros in URLs (<code>{"[MACRO]"}</code>, <code>{"${MACRO}"}</code>, <code>{"{UNIVERSAL_MACRO}"}</code>) are opaque tokens, not parse failures. Recovery: correctable (fix the VAST document and resubmit). + +</Accordion> +<a id="error-code-vast-version-mismatch"></a> + +<Accordion title="VAST_VERSION_MISMATCH — correctable"> + +**Suggested action:** re-tag with a version from error.details.supported_versions, or correct the asset's declared vast_version to match the document + +A submitted <code>{"vast"}</code> asset's document declares a <code>{"<VAST version>"}</code> attribute that does not match the asset's declared <code>{"vast_version"}</code>, does not satisfy the format's <code>{"vast_version"}</code> requirement, or is not in the seller's declared <code>{"creative_specs.vast_versions"}</code>. Returned by sellers performing document-level VAST validation (<code>{"creative_specs.vast_validation"}</code> of <code>{"document"}</code> or <code>{"wrapper"}</code>). Distinct from <code>{"VERSION_UNSUPPORTED"}</code> (AdCP protocol version negotiation, unrelated to creative documents). Sellers SHOULD set <code>{"error.field"}</code> to the offending asset path and SHOULD include the accepted versions in <code>{"error.details.supported_versions"}</code>. Recovery: correctable (re-tag with an accepted VAST version, or correct the asset's declared <code>{"vast_version"}</code>). + +</Accordion> +<a id="error-code-vast-wrapper-depth-exceeded"></a> + +<Accordion title="VAST_WRAPPER_DEPTH_EXCEEDED — correctable"> + +**Suggested action:** inspect error.details.reason (depth, loop, timeout); flatten the wrapper chain, reduce redirects below the format's max_wrapper_depth, or fix the failing hop + +Resolving a <code>{"vast"}</code> asset's wrapper chain failed: the chain exceeded the format's declared <code>{"max_wrapper_depth"}</code>, revisited a <code>{"VASTAdTagURI"}</code> already seen in the chain (a loop), or a hop did not resolve within the seller's per-hop timeout. Returned by sellers that declare <code>{"creative_specs.vast_validation: \"wrapper\""}</code>. Sellers SHOULD set <code>{"error.field"}</code> to the offending asset path and SHOULD populate <code>{"error.details.reason"}</code> with one of <code>{"depth"}</code>, <code>{"loop"}</code>, <code>{"timeout"}</code>, plus <code>{"error.details.depth"}</code> with the depth reached. Recovery: correctable (flatten the chain, reduce redirects below the format's <code>{"max_wrapper_depth"}</code>, or fix the failing hop). + +</Accordion> +<a id="error-code-version-unsupported"></a> + +<Accordion title="VERSION_UNSUPPORTED — correctable"> + +**Suggested action:** re-pin to a release in supported_versions and retry, or call get_adcp_capabilities without a version pin to discover supported_versions + +The declared adcp_version (release-precision) or adcp_major_version (deprecated) is not supported by this seller. The error details SHOULD follow <code>{"error-details/version-unsupported.json"}</code> — <code>{"supported_versions"}</code> (release-precision strings) is authoritative for retry; <code>{"supported_majors"}</code> is deprecated. Recovery: correctable (re-pin to a release in supported_versions and retry; or call get_adcp_capabilities without a version pin to discover supported_versions). + +</Accordion> +</AccordionGroup> diff --git a/dist/docs/3.2.0-beta.4/snippets/compliance-storyboard-inventory.mdx b/dist/docs/3.2.0-beta.4/snippets/compliance-storyboard-inventory.mdx new file mode 100644 index 0000000000..f0c337ab12 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/snippets/compliance-storyboard-inventory.mdx @@ -0,0 +1,55 @@ +--- +title: Universal Compliance Storyboards +description: "Graded universal compliance storyboards that every AdCP agent runs, including each scenario's purpose and canonical YAML source." +"og:title": "AdCP — Universal Compliance Storyboards" +--- + +{/* + This file is generated by scripts/generate-compliance-snippets.mjs. + Do not edit it by hand. Regenerate with `npm run build:compliance`. + Sources: dist/compliance/latest/index.json, dist/compliance/latest/universal/*.yaml +*/} + +| Graded storyboard | Purpose | Source | +|-------------------|---------|--------| +| `account-identity-reconciliation` | Validates revision-guarded operator identity rekeying, collision safety, and former-key redirects for sellers that advertise identity updates. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/account-identity-reconciliation.yaml) | +| `agent-notification-configs` | Validates the 3.2 agent-level capabilities.changed registration surface: advertised revision fencing, NO_AUTH rejection, and dry-run clear semantics. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/agent-notification-configs.yaml) | +| `billing-gate-dispatch` | Validates that account.supported_billing is declared and honored by sync_accounts, including out-of-set BILLING_NOT_SUPPORTED rejection, recovery-value consistency, and the distinct per-buyer-agent BILLING_NOT_PERMITTED_FOR_AGENT gate. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/billing-gate-dispatch.yaml) | +| `canonical-format-validate-input` | Validates 3.1 canonical-format dry-run semantics: structural pass/fail across canonical slots and unvalidatable_nondeterministic for seeded products. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/canonical-format-validate-input.yaml) | +| `capability-discovery` | Buyer calls get_adcp_capabilities to discover what an agent supports before making any buying or creative decisions. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/capability-discovery.yaml) | +| `collection-lists-pagination-integrity` | Validates the cursor↔has_more invariant by walking a paginated list_collection_lists response from a continuation page to a terminal page. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/collection-lists-pagination-integrity.yaml) | +| `comply-controller-mode-gate` | Verifies that a seller exposing comply_test_controller refuses calls from live-mode (non-sandbox) accounts with FORBIDDEN. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/comply-controller-mode-gate.yaml) | +| `content-standards-pagination-integrity` | Validates the cursor↔has_more invariant by walking a paginated list_content_standards response from a continuation page to a terminal page. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/content-standards-pagination-integrity.yaml) | +| `deterministic-testing` | Uses comply_test_controller to force state transitions and simulate delivery/budget, verifying state machines and reporting. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/deterministic-testing.yaml) | +| `error-compliance` | Validates that agents return properly structured AdCP errors with correct codes, recovery hints, and transport bindings. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/error-compliance.yaml) | +| `error-compliance-signals` | Validates that signals agents return properly structured AdCP errors with correct codes, recovery hints, and transport bindings. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/error-compliance-signals.yaml) | +| `get-media-buys-pagination-integrity` | Validates that get_media_buys responses carry a well-formed pagination envelope honoring the cursor↔has_more invariant. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/get-media-buys-pagination-integrity.yaml) | +| `get-products-pagination-integrity` | Validates get_products wholesale-mode pagination by walking a seeded product feed from continuation to terminal, while documenting that brief/refine pagination caps returned products in curated results. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/get-products-pagination-integrity.yaml) | +| `get-signals-pagination-integrity` | Validates the cursor↔has_more invariant on a paginated get_signals response by walking from a continuation page to the next page under a broad query. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/get-signals-pagination-integrity.yaml) | +| `idempotency` | Validates that mutating requests enforce idempotency_key — replays return cached responses, key reuse with a different payload returns IDEMPOTENCY_CONFLICT, fresh keys create new resources, and concurrent retries with the same key produce exactly one resource (first-insert-wins under rule 9). | [YAML](https://adcontextprotocol.org/compliance/latest/universal/idempotency.yaml) | +| `notification-config-event-scope` | Validates that sync_accounts.accounts[].notification_configs[] rejects media-buy-anchored notification types. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/notification-config-event-scope.yaml) | +| `notification-config-lifecycle` | Validates account-level notification_configs[] lifecycle behavior on sync_accounts: paused registration, durable echo, subscriber-keyed replacement, and clear. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/notification-config-lifecycle.yaml) | +| `notification-config-rejections` | Validates account-level notification_configs[] semantic rejection for duplicate subscriber keys. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/notification-config-rejections.yaml) | +| `oauth-setup` | Capability-gated evaluation of an agent's RFC 9728 protected-resource metadata and the complete RFC 8414 authorization-server graph it advertises. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/oauth-setup.yaml) | +| `pagination-integrity` | Validates the cursor↔has_more invariant by walking a paginated list_creatives response from a continuation page to a terminal page. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity.yaml) | +| `pagination-integrity-creative-formats` | When an agent still exposes deprecated list_creative_formats compatibility, validates its cursor↔has_more invariant by seeding two formats and walking pages with max_results=1. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-creative-formats.yaml) | +| `pagination-integrity-list-accounts` | Validates list_accounts pagination by seeding sandbox accounts, requesting a small first page, and following its cursor once. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-list-accounts.yaml) | +| `property-lists-pagination-integrity` | Validates the cursor↔has_more invariant by walking a paginated list_property_lists response from a continuation page to a terminal page. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/property-lists-pagination-integrity.yaml) | +| `read-tool-idempotency` | Validates that read-only AdCP tasks and the 3.x get_products compatibility facade accept an optional idempotency_key without strict wrapper rejection. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/read-tool-idempotency.yaml) | +| `schema-validation` | Validates that agent responses conform to AdCP schemas and that temporal constraints are enforced. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/schema-validation.yaml) | +| `schema-validation-signals` | Validates that signals agent responses conform to AdCP schemas with all required fields present and correctly typed. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/schema-validation-signals.yaml) | +| `security` | Every AdCP agent MUST require authentication on protected operations. At least one of static credentials or OAuth MUST be implemented and correctly advertised. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/security.yaml) | +| `signed-requests` | Agent verifies RFC 9421 HTTP Signatures on incoming AdCP requests per the 3.1-compatible transport-layer profile. Universal capability-gated storyboard — runs for any agent advertising <code>{"request_signing.supported: true"}</code> regardless of <code>{"supported_protocols"}</code>. Graded against the legacy wire suite covering every 3.1 checklist step and canonicalization-edge rule. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/signed-requests.yaml) | +| `stale-response-advisory` | Validates that STALE_RESPONSE rides in errors[] on a populated success response with transport success preserved, and that STALE_RESPONSE is absent on healthy upstream responses. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/stale-response-advisory.yaml) | +| `trusted-match-publisher-authentication` | Verifies that a TMP router deployment rejects schema-valid Context Match and Identity Match requests with absent or invalid publisher authentication using HTTP 401 and a WWW-Authenticate challenge. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/trusted-match-publisher-authentication.yaml) | +| `v3-envelope-integrity` | v3 protocol envelopes MUST NOT carry task_status or response_status — v2 legacy field names that have no semantics in v3. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/v3-envelope-integrity.yaml) | +| `version-negotiation` | Sellers advertise supported releases on capabilities and echo the served release on every response. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/version-negotiation.yaml) | +| `webhook-emission` | Any agent that emits webhooks MUST echo the caller-supplied operation_id in every payload, carry a stable idempotency_key across retries, avoid duplicate webhook side effects on request replay, and — when the buyer has not opted into the deprecated HMAC fallback — MUST sign deliveries under the RFC 9421 webhook profile. Sellers MUST NOT emit task webhooks for inline terminal responses; any future sync-completion notification mode would be explicit and capability-advertised. Graded by a runner hosting a webhook receiver during storyboard execution. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/webhook-emission.yaml) | +| `webhook-receiver-envelope` | Buyer webhook receivers MUST accept full MCP webhook envelopes, reject bare delivery-result payloads, preserve raw-body signature verification, and dedupe retries by a stable idempotency_key. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/webhook-receiver-envelope.yaml) | +| `wholesale-feed-bulk-webhooks` | Validates account-level notification_configs[] registration for agents that advertise wholesale_feed.bulk_change webhook events. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-bulk-webhooks.yaml) | +| `wholesale-feed-product-webhooks` | Validates account-level notification_configs[] registration for agents that advertise product wholesale feed webhook events. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-product-webhooks.yaml) | +| `wholesale-feed-products` | Validates get_products wholesale feed versioning: bootstrap responses carry wholesale_feed_version/cache_scope and matching if_wholesale_feed_version probes return unchanged without product rows. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-products.yaml) | +| `wholesale-feed-products-scope-isolation` | Validates that get_products conditional-fetch is keyed by cache_scope: a wholesale_feed_version minted under one cache_scope must not short-circuit (unchanged: true) a request the seller resolves to a different cache_scope. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-products-scope-isolation.yaml) | +| `wholesale-feed-signal-webhooks` | Validates account-level notification_configs[] registration for agents that advertise signal wholesale feed webhook events. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-signal-webhooks.yaml) | +| `wholesale-feed-signals` | Validates get_signals wholesale feed versioning: bootstrap responses carry wholesale_feed_version/cache_scope and matching if_wholesale_feed_version probes return unchanged without signal rows. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-signals.yaml) | +| `wholesale-feed-signals-scope-isolation` | Validates that get_signals conditional-fetch is keyed by cache_scope: a wholesale_feed_version minted under one cache_scope must not short-circuit (unchanged: true) a request the agent resolves to a different cache_scope. | [YAML](https://adcontextprotocol.org/compliance/latest/universal/wholesale-feed-signals-scope-isolation.yaml) | diff --git a/dist/docs/3.2.0-beta.4/spec-guidelines.md b/dist/docs/3.2.0-beta.4/spec-guidelines.md new file mode 100644 index 0000000000..2524d71d36 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/spec-guidelines.md @@ -0,0 +1,454 @@ +--- +title: Specification Guidelines +description: "AdCP specification guidelines: type naming rules, discriminated union patterns, field naming conventions, and style standards for writing protocol spec pages." +"og:title": "AdCP — Specification Guidelines" +--- + +# AdCP Specification Guidelines + +This document outlines design principles and rules for maintaining the AdCP specification. These guidelines help ensure consistency, clarity, and ease of implementation across different programming languages. + +## Type Naming Principles + +### No Reused Type Names + +**RULE**: Never use the same enum name or field name to represent different concepts, even in different contexts. + +**Why**: Type generators (TypeScript, Python, Go, etc.) create collisions when the same name appears with different values or semantics. This forces downstream users to use awkward workarounds like aliasing or deep imports. + +**Example of the problem**: + +```json +// ❌ BAD: Multiple "Type" enums with different meanings +// asset-type.json +{ "type": "string", "enum": ["image", "video", "html"] } + +// format.json +{ "type": "string", "enum": ["audio", "video", "display"] } + +// Result: Python generates Type, Type1, Type2 or uses alphabetical first-wins +``` + +**Solution**: Use semantic, domain-specific names: + +```json +// ✅ GOOD: Distinct enum names for different concepts +// asset-content-type.json +{ "type": "string", "enum": ["image", "video", "html"] } + +// pricing-model.json +{ "type": "string", "enum": ["cpm", "cpc", "fixed"] } + +// Result: Python generates AssetContentType and PricingModel +``` + +### Semantic Field Names + +Field names should describe **what** they represent, not generic categories. + +**Examples**: + +- ✅ `asset_content_type` - Clear: describes what content the asset contains +- ❌ `type` - Ambiguous: type of what? +- ❌ `asset_type` - Better, but could conflict with other type fields + +### Enum Consolidation + +When the same concept appears in multiple places with different subsets: + +1. **Create a single canonical enum** with all possible values +2. **Reference that enum** in all schemas using `$ref` +3. **Document subset expectations** in field descriptions when needed + +**Example**: + +```json +// enums/asset-content-type.json - Single source of truth +{ + "$id": "/schemas/v3/enums/asset-content-type.json", + "type": "string", + "enum": ["image", "video", "audio", "text", "html", "javascript", ...] +} + +// brand.json - References full enum +{ + "asset_type": { + "$ref": "/schemas/v3/enums/asset-content-type.json", + "description": "Type of asset. Note: Brand manifests typically contain basic media assets (image, video, audio, text)." + } +} + +// list-creative-formats-request.json - References full enum +{ + "asset_types": { + "type": "array", + "items": { + "$ref": "/schemas/v3/enums/asset-content-type.json" + } + } +} +``` + +**Benefits**: +- Type generators produce single, consistent types +- API allows filtering/specifying any valid value +- Adding new values is non-breaking +- Documentation clarifies typical usage without restricting capability + +## Specialist Module Naming + +### Core Principle + +Specialist module names must reflect the **technical capability** being taught — what practitioners verify, resolve, or operate — not the business or marketing category. + +A module titled "Brand" is ambiguous: does it teach brand-safety policy, brand-identity schema validation, or brand-campaign strategy? A module titled "Brand Identity & Verification" tells a developer exactly what they will learn to do. + +### Naming Consistency + +The module name must be consistent across all four surfaces where it appears: + +1. **Page title** — the `title:` frontmatter in the module's `.mdx` file +2. **Badge** — the `adcp_specialist_*` credential suffix (e.g., `adcp_specialist_signals`) +3. **Sidebar navigation** — the `sidebarTitle:` frontmatter +4. **Specialist overview table** — the row in the certification overview page + +If any of these diverge, implementers looking at one surface form a different mental model than those reading another. Keep all four in sync. + +### Good vs. Bad Names + +| Avoid | Prefer | Why | +|-------|--------|-----| +| Brand | Brand Identity & Verification | "Brand" reads as marketing; the module teaches schema validation and identity resolution | +| Ads | Creative Asset Management | "Ads" is too broad; the module covers creative formats, asset pipelines, and approval flows | +| Data | Signals & Audience Activation | "Data" is generic; the module teaches signal discovery, privacy controls, and activation loops | + +### Naming Checklist + +Before proposing a new specialist module: + +- [ ] Does the name describe the technical workflow, not the business domain? +- [ ] Would a developer unfamiliar with AdCP understand what the module teaches from the name alone? +- [ ] Is the name consistent across page title, badge, sidebar, and overview table? +- [ ] Does the badge suffix (`adcp_specialist_*`) read naturally in a credential context? + +## Enum Design + +### Enum File Structure + +All enums should live in `/schemas/3.2.0-beta.4/enums/` with descriptive names: + +``` +/schemas/v3/enums/ + asset-content-type.json # What IS this asset? + pricing-model.json # How is this PRICED? + media-buy-status.json # What STATE is the buy in? +``` + +### Enum Naming Convention + +- Use **noun phrases** that describe what's being categorized +- Use **kebab-case** for filenames +- Generated type names use **PascalCase** (AssetContentType, PricingModel) +- Avoid generic terms like "type", "kind", "status" without qualifiers + +### When to Create a New Enum + +Create a dedicated enum file when: +- Values are reused across multiple schemas +- Values represent a closed set of options +- The concept is fundamental to the protocol +- Type safety would benefit implementers + +### Enum membership — when to add a value + +Adding a value to an *existing* enum is a curation decision, not a default. An enum is a curated roster of real, shared semantics — not a registry of every vendor or integration. A value earns membership when **all** hold: + +- **Published** — it names an externally-documented concept with a stable definition, not a per-buyer or per-integration shape. +- **Natively supported** — at least one real implementer handles it directly, without bespoke per-value mapping (for a `feed_format`, the seller parses it natively without `feed_field_mappings`). +- **Shared demand** — it is relevant across more than one producer **and** more than one consumer (a shared dialect, not branding for a single bilateral integration). + +A material **dialect** of an existing value earns its own value only when its differences would make the parent value's consumer mis-handle it — a renamed primary key, composite-encoded fields, or a field the parent treats as optional but the dialect requires. Cosmetic or additive-optional differences do not; use the parent value. When a concept fails these tests, model it through the schema's existing extension path (`custom` + a mapping, or `ext`) rather than minting an enum value. + +This is distinct from [Platform Agnosticism](#platform-agnosticism): a `feed_format` value legitimately names a vendor's *published spec* (the value **is** the spec), whereas platform-agnosticism forbids a vendor-specific *version of a general concept*. + +**Worked example — `feed_format` ([#3456](https://github.com/adcontextprotocol/adcp/issues/3456)).** `tiktok_shop`, `pinterest_catalog`, and `openai_product_feed` qualify: published, Google-Merchant-Center-derived feed dialects that real sellers parse natively, each with deltas a strict GMC parser would mis-handle. A feed without a published, natively-parsed spec uses `custom` + `feed_field_mappings`. + +## Field Design + +### Discriminated Unions + +When objects can have multiple shapes, always use explicit discriminator fields: + +```json +{ + "oneOf": [ + { + "type": "object", + "properties": { + "delivery_type": { "type": "string", "const": "url" }, + "url": { "type": "string" } + }, + "required": ["delivery_type", "url"] + }, + { + "type": "object", + "properties": { + "delivery_type": { "type": "string", "const": "inline" }, + "content": { "type": "string" } + }, + "required": ["delivery_type", "content"] + } + ] +} +``` + +This enables proper type narrowing in TypeScript and pattern matching in other languages. + +### Avoiding Over-Specific Subsets + +Don't artificially restrict enum values in request schemas unless there's a technical reason: + +- ❌ Limit `asset_types` filter to 7 values "because most people only use these" +- ✅ Allow all asset content types - let users filter by anything + +If certain values are uncommon, document that in the description but don't prevent their use. + +## Schema References + +### When to Use $ref + +Use `$ref` for: +- Enum values (always) +- Core data models used in multiple places +- Complex nested objects used repeatedly + +Don't use `$ref` for: +- Simple inline objects used only once +- Request-specific parameters +- Highly contextual structures + +### Reference Paths + +All `$ref` paths should be absolute from schema root: + +```json +// ✅ GOOD: Absolute path +"$ref": "/schemas/v3/enums/asset-content-type.json" + +// ❌ BAD: Relative path +"$ref": "../../enums/asset-content-type.json" +``` + +## Platform Agnosticism + +**RULE**: Normative schema **field names** MUST NOT represent a specific vendor's version of a general concept. Platform-specific fields belong under `ext.{vendor}`. + +**Why**: AdCP is a protocol, not a platform. A field named `google_campaign_id` or `ttd_line_id` at the top level of a schema bakes one vendor's data model into the spec and creates lock-in. The protocol is credible as an open standard only to the extent that its normative field surface is vendor-neutral. + +**How**: Vendor-specific fields belong in the `ext.{vendor}` namespace (schema: `/schemas/core/ext.json`, source: `static/schemas/source/core/ext.json`). `ext` is `additionalProperties: true` — the namespacing is a convention enforced by review, not by JSON Schema. + +```json +// ❌ BAD: vendor name in a normative field (a general concept dressed up as a vendor) +{ + "google_campaign_id": "abc123" +} + +// ✅ GOOD: vendor-specific under ext +{ + "ext": { + "gam": { "campaign_id": "abc123" } + } +} +``` + +### External system identifiers + +Names that reference **canonical external identifier spaces** are legitimate in both field names and enum values. The distinction is not "does it contain a vendor token" but "does it represent *that vendor's version of something the protocol already has a general concept for*": + +- `google_campaign_id` (bad) — a vendor-specific ID for a concept the protocol already models (`media_buy_id`). Move to `ext.gam`. +- `apple_podcast_id` (legitimate) — a canonical identifier for a specific Apple Podcasts item. There is no general concept to map to; the Apple Podcasts namespace is *the* namespace. +- `nielsen_dma` (legitimate) — the industry-standard geographic division, not "Nielsen's version of geography." + +Existing examples of legitimate patterns: + +- Distribution-platform identifier types: `amazon_music_id`, `roku_channel_id` in `distribution-identifier-type.json` (enum values) +- Feed formats: `google_merchant_center`, `facebook_catalog` in `brand.json` (enum values) — widely-adopted open interchange formats implemented by many third parties +- Measurement/data identifiers: `nielsen_dma` in `get-adcp-capabilities-response` (field name) +- Platform IDs: `apple_podcast_id`, `apple_id` (field names) + +The rule to apply: if the name asks "which vendor-equivalent version of something AdCP models?" (bad — use `ext`), reject; if the name asks "which externally-defined system/format/identifier space?" (legitimate), allow. When allowing a field name, add it to `tests/check-platform-agnostic.cjs` `FIELD_ALLOWLIST` with a one-line justification. When allowing an enum value, add it to `ENUM_VALUE_ALLOWLIST` with a path-qualified entry and a one-line justification. + +### Reviewer checklist + +- Reject a new top-level or request/response field whose name is `{vendor}_{general_concept}` (e.g., `google_campaign_id`, `ttd_line_id`). +- Accept an enum value naming an externally-defined system, format, or identifier space. +- Vendor names in **example blocks** (email addresses, sample IDs) are fine. +- When uncertain, ask: "Is this field or value representing *one vendor's version of something the protocol already has a general concept for*?" If yes, it belongs under `ext.{vendor}`. + +## Reserved SDK-Internal Keys + +**RULE**: The top-level key `ctx_metadata` is reserved on AdCP resource objects as an adapter-internal round-trip cache for state that an SDK or platform adapter needs to carry across calls but that buyers MUST NOT see or rely on. Adapters MUST strip `ctx_metadata` from any payload before wire egress. When the key was present and non-empty at strip time, adapters MUST emit a warning-level log entry so operators can detect accidental key collisions with custom adapter code. (An empty or absent `ctx_metadata` is silent — only a non-empty value triggers the warning.) + +**Why**: Platform adapters (e.g. Google Ad Manager, Kevel, custom seller infrastructure) often need to associate adapter-internal identifiers — GAM ad-unit IDs, key-value pairs, placement IDs — with AdCP resources that the buyer-facing SDK returns. The reference Prebid `salesagent` Python implementation uses an `implementation_config` JSON column on its Product model for exactly this purpose. Without a reserved name, every SDK invents its own (`implementation_config`, `_internal`, `sdk_state`, etc.); a fourth SDK then collides with one of them, or two SDKs converging on the same name produce ambiguous semantics. One reserved name removes the coordination problem. + +**Scope**: The reservation applies to AdCP resource objects whose schemas declare `additionalProperties: true` — including `Product`, `MediaBuy`, `Package`, `Creative`, `AudienceSegment`, `Signal`, and `RightsGrant`. The reservation travels with the resource wherever it appears: top-level in a response envelope, nested inside another resource (e.g. `Package` inside `MediaBuy`), or inside an array of resources (e.g. each element of `products: Product[]`). Adapters MUST strip the key from every occurrence before egress, not just the outermost one. + +`PropertyList` and `CollectionList` declare `additionalProperties: false` and are out of scope until a follow-up PR widens those schemas; until then, adapters needing round-trip state for those resources should track it out-of-band. + +**Distinction from neighboring conventions**: + +- `ext.{vendor}` — vendor-namespaced, **buyer-visible**, travels on the wire. Use for vendor-specific data the buyer should see (e.g. `ext.gam.line_item_id`). +- `context` / `context_id` — caller-echoed correlation data, also wire-visible. Despite the prefix-match, `ctx_metadata` is not a sub-namespace of these — they are unrelated concepts and travel on different layers. +- `ctx_metadata` — **adapter-internal only**, MUST be stripped before egress, never reaches the buyer. + +**Adapter conformance**: + +``` +1. Read ctx_metadata from inbound resource (publisher → SDK direction). +2. Carry it in adapter-local state. +3. Before serializing the resource for wire egress (SDK → buyer direction): + a. Remove the ctx_metadata key. + b. If the key was present and non-empty, emit a warning-level log: + "stripping reserved ctx_metadata before egress on <resource_type>" +4. Buyer-facing surfaces MUST NOT expose ctx_metadata in any documentation, + typed shape, or example. +``` + +**Reviewer checklist**: + +- Reject any spec, schema, or example that promotes `ctx_metadata` as a buyer-readable field. +- Reject any SDK contribution that surfaces `ctx_metadata` in a buyer-facing typed return. +- Accept SDK code that reads/writes `ctx_metadata` as adapter-internal state, provided the egress-strip + warning-log path is in place. + +## Breaking Changes + +### What Constitutes a Breaking Change + +**Major version bump required**: +- Removing enum values +- Renaming fields +- Changing field types +- Making optional fields required +- Removing fields entirely + +**Minor version bump allowed**: +- Adding new enum values (append-only) +- Adding new optional fields +- Clarifying descriptions +- Adding new tasks/endpoints + +### Migration Strategy + +When making breaking changes: + +1. **Create v2 directory**: `/schemas/3.2.0-beta.4/` +2. **Maintain v1**: Keep old schemas functional +3. **Document migration**: Provide before/after examples +4. **Deprecation period**: Support both versions for defined period + +## JSON Schema Conventions + +### Dialect roadmap + +AdCP 3.x source schemas remain JSON Schema draft-07. The 3.2 build generates a +JSON Schema 2020-12 projection under `/schemas/{version}/mcp/2026-07-28/` for +MCP tool declarations. Projected `outputSchema` files preserve canonical +validation semantics. Projected `inputSchema` files are intentionally +permissive discovery hints: unconditional object surfaces are flattened, while +strict-host-incompatible root combinators are omitted and enforced by canonical +draft-07 validation at call time. Do not author 2020-12-only validation behavior +in 3.x source schemas. + +AdCP 4.0 will move the canonical source dialect directly to JSON Schema +2020-12. Contract tightening such as selective `unevaluatedProperties: false` +belongs to that major-version migration. It must not be introduced by the 3.2 +projection generator. + +### Nullable Scalars + +For AdCP 3.x draft-07 schemas, encode nullable scalar fields as a JSON Schema +type union: + +```json +{ "type": ["string", "null"] } +``` + +Use the same pattern for nullable numbers, integers, booleans, and mixed scalar +value buckets. Do not introduce OpenAPI-style `nullable: true` in source +schemas; it is not part of JSON Schema Draft 07 and creates inconsistent SDK +projection rules. + +Nullable enums must include `null` in both the `type` union and the `enum` value +set: + +```json +{ + "type": ["string", "null"], + "enum": ["active", "paused", null] +} +``` + +Nullability and presence are separate in JSON Schema Draft 07: + +- `type: ["string", "null"]` means the field may be `null` when it is present. +- The enclosing object's `required` array controls whether the field must be present. +- Optional nullable fields therefore have three states: omitted, present with `null`, + and present with a scalar value. +- Required nullable fields have two states: present with `null` or present with a + scalar value. + +When omission and explicit `null` carry different semantics, state that distinction +in the field description so SDK generators do not collapse the cases. + +## Testing Schemas + +All schema changes must: + +1. ✅ Validate with JSON Schema Draft 07 +2. ✅ Pass example data through validation +3. ✅ Generate types successfully (Python, TypeScript) +4. ✅ Update documentation to match +5. ✅ Include an `adcontextprotocol` changeset describing the schema change + +## Review Checklist + +Before merging schema changes, verify: + +- [ ] No duplicate enum names across different files +- [ ] No ambiguous field names (like bare "type") +- [ ] All enums referenced via `$ref`, not inline +- [ ] Breaking changes use proper versioning +- [ ] Documentation updated to match schemas +- [ ] Examples validate against new schemas +- [ ] Type generation tested +- [ ] `adcontextprotocol` changeset created with proper version bump + +## Philosophy + +**"The schema is the spec"** + +Documentation should reflect what's in schemas, but schemas are the source of truth. When documentation and schemas diverge, schemas win. This means: + +- Write clear, detailed descriptions in schemas +- Use semantic names that are self-documenting +- Design for type generation, not just validation +- Think about developer ergonomics across languages + +**"Make the right thing easy"** + +Good schema design guides implementers toward correct usage: + +- Use discriminators so type checkers catch mistakes +- Use semantic names so code reads clearly +- Consolidate enums so generators produce clean types +- Restrict where necessary, but don't over-restrict + +## Questions? + +When in doubt about schema design decisions: + +1. Check existing patterns in `/schemas/3.2.0-beta.4/` +2. Consider impact on type generation +3. Ask: "Will this name collision cause issues?" +4. Prefer specificity over brevity +5. Document rationale in this file for future reference diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents.mdx new file mode 100644 index 0000000000..4616eb0d6b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents.mdx @@ -0,0 +1,270 @@ +--- +title: Implementing SI Agents +description: "Build an AdCP Sponsored Intelligence agent. Implement si_get_offering, si_initiate_session, si_send_message, and si_terminate_session as MCP tools to serve conversational brand experiences." +"og:title": "AdCP — Implementing SI Agents" +--- + +This guide helps brands implement Sponsored Intelligence agents. Once implemented, your agent can be invoked by SI hosts like Addy, ChatGPT, or other AI assistants. + +## Quick Start + +An SI agent is an MCP or A2A server that implements four tasks: + +1. `si_get_offering` - Respond to offering lookups (details, availability, products) +2. `si_initiate_session` - Start a conversation +3. `si_send_message` - Exchange messages +4. `si_terminate_session` - End the conversation + +## Capability Discovery + +SI agents expose their capabilities through the standard AdCP `get_adcp_capabilities` task. When a host calls this task, your agent returns its SI configuration: + +```json +{ + "adcp": { "major_versions": [2] }, + "supported_protocols": ["sponsored_intelligence"], + "sponsored_intelligence": { + "endpoint": { + "transports": [ + { "type": "mcp", "url": "https://yourbrand.example/si-agent" } + ] + }, + "capabilities": { + "modalities": { + "conversational": true, + "voice": false, + "video": false, + "avatar": false + }, + "components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"], + "extensions": {} + }, + "commerce": { + "acp_checkout": false + } + }, + "brand": { "domain": "yourbrand.example" } + } +} +``` + +This unified discovery mechanism lets hosts discover SI capabilities alongside other AdCP protocols. + +## Reference Implementation + +<Note> +Reference implementations are coming soon. When available, they will demonstrate: +- All four SI tasks implemented as MCP tools +- Session management with timeout handling +- Identity and consent handling +- UI element generation +- ACP checkout handoff +</Note> + +### Task Structure + +Each SI task follows the MCP tool pattern: + +```typescript +server.tool( + "si_initiate_session", + "Start a conversational session with this brand agent", + { + intent: { type: "string", description: "Natural language user intent" }, + identity: { type: "object", description: "User identity with consent" }, + media_buy_id: { type: "string", description: "AdCP media buy ID (optional)" }, + offering_id: { type: "string", description: "Brand-specific offering reference (optional)" }, + }, + async ({ intent, identity, media_buy_id, offering_id }) => { + // Your implementation here + return { + content: [{ + type: "text", + text: JSON.stringify({ + session_id: "sess_abc123", + response: { message: "Hello! How can I help?" }, + negotiated_capabilities: { /* ... */ } + }) + }] + }; + } +); +``` + +## Key Implementation Considerations + +### 1. The Conversation Handoff + +The `intent` field in `si_initiate_session` is the host's handoff message — what the host AI tells your brand agent about what the user is trying to do. This is visible to the user as part of the conversation flow. + +For example, when a user says "I need to fly to Boston next week" in ChatGPT, and the host decides to connect them to Delta's SI agent, the handoff might look like: + +> "I'm connecting you with Delta to help with your Boston flight. They can check availability and offerings for you." + +Your brand agent receives the intent and should respond naturally — as if continuing the conversation: + +```typescript +// Your agent is an AI that responds conversationally +// The intent tells you what the user needs — just help them + +// Good response: +"Hi! I'd be happy to help you find a flight to Boston. +When next week were you thinking - any preferred time of day?" + +// Not this - don't mechanically echo back parsed data: +"I detected: category=flight, destination=Boston, timeframe=next_week" +``` + +The key is that SI is a conversation, not an API call. Your brand agent should feel like talking to a helpful person, not filling out a form. + +### 2. Identity Handling + +When `consent_granted` is true, you receive real PII: + +```typescript +async function handleIdentity(identity: Identity) { + if (!identity.consent_granted) { + // Anonymous session - can still help, just can't personalize + return null; + } + + // Look up existing customer by email + const customer = await lookupCustomer(identity.user.email); + + if (customer) { + // Personalize based on history + return { + name: customer.preferred_name || identity.user.name, + loyalty_status: customer.loyalty_tier, + preferences: customer.preferences, + }; + } + + // New customer - use provided identity + return { + name: identity.user.name, + email: identity.user.email, + }; +} +``` + +### 3. UI Elements + +Return structured data that hosts can render: + +```typescript +const uiElements = [ + // Product card for a specific item + { + type: "product_card", + data: { + title: "Premium Widget", + subtitle: "Best seller", + price: "$99", + image_url: "https://...", + cta: { label: "Add to Cart", action: "add_to_cart", payload: { sku: "WIDGET-001" } }, + }, + }, + + // Carousel for browsing options + { + type: "carousel", + data: { + title: "You might also like", + items: [ + { title: "Option A", price: "$49" }, + { title: "Option B", price: "$79" }, + ], + }, + }, + + // Action button for explicit CTA + { + type: "action_button", + data: { + label: "Complete Purchase", + action: "checkout", + payload: { items: ["WIDGET-001"] }, + }, + }, +]; +``` + +### 4. Session Management + +Sessions should have timeouts and cleanup: + +```typescript +const SESSION_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes + +function cleanupExpiredSessions() { + const now = Date.now(); + for (const [id, session] of sessions) { + if (now - session.last_activity.getTime() > SESSION_TIMEOUT_MS) { + sessions.delete(id); + } + } +} + +// Run cleanup periodically +setInterval(cleanupExpiredSessions, 60 * 1000); +``` + +### 5. Handoff to ACP + +When the user is ready to purchase, signal a handoff: + +```typescript +if (userWantsToPurchase) { + return { + session_status: "pending_handoff", + handoff: { + type: "transaction", + intent: { + action: "purchase", + product: selectedProduct, + price: { amount: 99, currency: "USD" }, + }, + context_for_checkout: { + conversation_summary: "User selected Premium Widget after discussing features", + applied_offers: appliedOffers, + }, + }, + }; +} +``` + +## Testing Your Endpoint + +### Local Testing + +Use the MCP Inspector to test your endpoint: + +```bash +npx @anthropic-ai/mcp-inspector your-si-agent +``` + +### Integration Testing with Addy + +Once your endpoint is registered: + +1. Join the AgenticAdvertising.org Slack workspace +2. Start a conversation with Addy +3. Say "connect me with [Your Brand]" +4. Addy will invoke your SI endpoint + +## Registering Your SI Agent + +To make your SI agent available through Addy and other hosts: + +1. Implement the five SI tasks (`get_adcp_capabilities` + four SI tasks) +2. Ensure `get_adcp_capabilities` returns your SI endpoint and capabilities +3. Contact the AgenticAdvertising.org team to register your endpoint +4. Test the integration in the staging environment + +## Next Steps + +- Review the [Task Reference](./tasks/) for detailed schema specifications +- Explore the [SI Protocol Overview](./overview) for conceptual understanding +- Join the [working group Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) to discuss implementation questions diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts.mdx new file mode 100644 index 0000000000..7c6d27d6b2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts.mdx @@ -0,0 +1,138 @@ +--- +title: Implementing SI Hosts +description: "Integrate AdCP Sponsored Intelligence into your AI platform. Discover brand agents, render standard UI components, manage session lifecycle, handle consent flows, and hand off to ACP for commerce." +"og:title": "AdCP — Implementing SI Hosts" +--- + +This guide helps AI platforms implement Sponsored Intelligence host capabilities. Once implemented, your AI assistant can invoke brand agents for rich conversational commerce experiences. + +## Quick Start + +An SI host needs to: + +1. **Discover** brand agents via SI manifests +2. **Get offering details** before handoff (optional but recommended) +3. **Negotiate** capabilities with brand agents +4. **Manage** sessions (initiate, message, terminate) +5. **Render** standard UI components +6. **Handle** commerce handoffs + +## Architecture Overview + +```mermaid +flowchart TB + subgraph Platform["Your AI Platform"] + CE[Conversation Engine] + SM[SI Session Manager] + UI[UI Renderer] + MCP[MCP Client] + + CE --> SM + SM --> UI + CE --> MCP + SM --> MCP + UI --> MCP + end + + subgraph Brand["Brand Agent (MCP Server)"] + T1[si_get_offering] + T2[si_initiate_session] + T3[si_send_message] + T4[si_terminate_session] + end + + MCP --> Brand +``` + +## Reference Implementation + +<Note> +Reference implementations are coming soon. When available, they will demonstrate: +- MCP client connection to brand agents +- Session management with timeout handling +- Consent flow implementation +- UI component rendering +- Commerce handoff to ACP +</Note> + +## Key Implementation Considerations + +### 1. Consent Flow + +Before sharing user identity with brand agents, you must obtain explicit consent: + +1. Present a clear consent dialog identifying the brand and requested data +2. Link to the brand's privacy policy +3. Allow the user to select which fields to share (name, email, shipping address) +4. Record consent timestamp and scope for the identity object + +If consent is denied, create an anonymous session with `consent_granted: false`. + +### 2. UI Component Rendering + +Hosts must render all standard UI components defined in the SI protocol: + +| Component | Purpose | Required Fields | +|-----------|---------|-----------------| +| `text` | Conversational message | `message` | +| `link` | URL with label | `url`, `label` | +| `image` | Single image | `url`, `alt` | +| `product_card` | Product display with CTA | `title`, `price` | +| `carousel` | Array of cards/images | `items` | +| `action_button` | CTA that triggers callback | `label`, `action` | + +When a user clicks an `action_button`, send an `action_response` via `si_send_message` with the action identifier and any payload. + +### 3. Offering Lookup Flow + +The recommended flow for sponsored results: + +1. **Get offering details** (anonymous) - Retrieve offering info and matching products +2. **Show offering to user** - Display offering details, products, and ask if they want to connect +3. **Get consent** - If yes, present consent dialog +4. **Initiate session** - Include offering token from step 1 + +### 4. Commerce Handoff + +When a session returns `session_status: "pending_handoff"`: + +- For `handoff.type: "transaction"` - Initiate ACP checkout with the provided intent +- Terminate the SI session with reason `handoff_transaction` + +### 5. Session Management + +- Implement session timeouts (recommended: 5 minutes of inactivity) +- Track session state locally and clean up on termination +- Handle standard error codes: `SESSION_NOT_FOUND`, `SESSION_TERMINATED`, `RATE_LIMITED` +- Handle SI-specific error codes: `offer_unavailable`, `capability_unsupported` + +## Testing Your Implementation + +### Local Testing with Brand Simulator + +```bash +# Run the SI brand simulator +npx @adcontextprotocol/si-simulator + +# Connect your host to localhost:3001 +``` + +### Integration Checklist + +- [ ] Can discover brand agents via SI manifest +- [ ] Can get offering details (anonymous, no PII) +- [ ] Can initiate sessions with/without identity +- [ ] Can send messages and receive responses +- [ ] Can handle all termination reasons +- [ ] Renders all standard components correctly +- [ ] Handles action buttons and callbacks +- [ ] Implements proper consent flow +- [ ] Handles commerce handoffs +- [ ] Implements session timeout + +## Next Steps + +- Review the [SI Specification](./specification) for normative requirements +- See [Implementing SI Agents](./implementing-si-agents) for brand-side implementation +- Explore the [Task Reference](./tasks/) for detailed schema specifications +- Join the [community Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) for implementation support diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement.mdx new file mode 100644 index 0000000000..c414906e50 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement.mdx @@ -0,0 +1,33 @@ +--- +title: Measurement +description: "Sponsored Intelligence measurement — engagement metrics, conversion tracking, and commerce in the conversation." +"og:title": "AdCP — SI measurement" +sidebarTitle: Measurement +--- + +# Measurement + +Sponsored Intelligence measurement centers on engagement and intent signals rather than traditional impression-based metrics. + +## Key metrics + +| Metric | Field | Description | +|---|---|---| +| Engagements | `engagements` | User interactions with sponsored content — clicks, expansions, follow-up questions about the brand | +| Clicks | `clicks` | Outbound clicks to advertiser destination | +| Cost per click | `rate` (CPC) | Average cost per click — the primary pricing model for most SI products | +| Cost per engagement | Derived: `spend / engagements` | A reporting metric (not a pricing model) that measures efficiency across all interaction types | + +## Conversion tracking + +AI platforms that support conversion tracking declare it in `get_adcp_capabilities` under `conversion_tracking`. Buyers set up event sources via `sync_event_sources` and use `kind: "event"` optimization goals on packages — the same pattern as any other channel. See [Optimization & Reporting](/dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting) for details. + +## Measurement does not change + +AdCP changes how you buy media, not how you measure it. Your existing measurement stack — media mix modeling, mobile measurement partners, multi-touch attribution, incrementality testing — works the same way. Sponsored Intelligence is a new channel in your media plan, not a new measurement paradigm. + +The protocol does make measurement easier in one specific way: because you push conversion events into platforms via `sync_event_sources`, the platform can optimize toward your real business outcomes instead of proxy metrics. But how you evaluate whether that spend was worth it uses the same tools and frameworks you use today. + +## Beyond ads: commerce in the conversation + +AI surfaces are uniquely positioned for commerce. A user asking an AI assistant about running shoes is expressing intent in a context where the platform can recommend, compare, and — eventually — help the user buy. Today, AdCP handles the advertising layer: catalogs, media buys, and delivery. Offering catalogs via `sync_catalogs` already enable commerce handoffs through [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) sessions, where the user can browse products and transition to checkout. As commerce protocols mature, the path from "interested" to "purchased" will happen entirely within the conversation. diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai.mdx new file mode 100644 index 0000000000..818c7ed182 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai.mdx @@ -0,0 +1,121 @@ +--- +title: Monetizing AI surfaces +sidebarTitle: Monetizing AI +description: "A practical guide for brands, agencies, and small businesses who want to advertise on AI assistants, AI search engines, and other AI platforms." +"og:title": "AdCP — Monetizing AI surfaces" +--- + +# Monetizing AI surfaces + +You have probably noticed AI assistants recommending products, AI search engines surfacing brand results, and conversational agents helping users make purchase decisions. This is a new advertising channel — and it is growing fast. + +If you have run Amazon Ads or Walmart Connect, you already understand the basic model: you push a product feed into a platform, and the platform merchandises your products to the right people. AI platforms work the same way, but they can do more with your data — generating custom responses, making contextual recommendations, and even handing off to your own brand agent for a full product consultation. + +This is Sponsored Intelligence. It works differently from display, social, or CTV. There is no creative to upload. No audience segment to target. You give the AI platform everything it needs to represent your brand well — your products, your brand voice, your rules — and the platform generates the right message in the right moment. + +This guide is for anyone on the buy side: agency trading desks evaluating a new channel, brand leaders rethinking their media approach, and small businesses looking to reach customers where they are increasingly spending time. For the technical protocol details, see the [Sponsored Intelligence protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview). + +## Why existing approaches fall short + +**Insertion orders** assume you are trafficking finished creative into predetermined placements. AI platforms generate creative on the fly from your data — there is nothing to traffic. + +**Programmatic buying** sends a thin signal (a page URL, a device type, maybe a user ID) to a remote decision-maker. That decision-maker lacks the conversation context that makes AI advertising work. The platform closest to the user has the context. Sending bid requests away from that context is the wrong direction. + +**Direct deals** can work for a single platform, but every AI platform has its own API, its own data requirements, its own reporting format. Building custom integrations with each one is the same fragmentation problem the industry spent a decade solving in programmatic. + +AdCP exists because there is no legacy approach that works here. It is a standard protocol for pushing your data into AI platforms so they can generate effective ads on your behalf. + +## The shift: from campaigns to ingredients + +In traditional advertising, the buyer's job is to set up campaigns and build creative. In Sponsored Intelligence, the buyer's job is to **provide ingredients and define goals**. + +Think about who has the most information. The AI platform is the one in conversation with the user. It knows what the person asked, what they care about, what they have already discussed. You know your brand, your products, your goals. The protocol connects these two sides: you push your ingredients in, and the platform assembles the best possible outcome. + +Sponsored Intelligence extends this pattern to conversational and generative experiences across every AI platform. + +The better your ingredients, the better the results. + +## What you provide + +Everything you push into an AI platform is a building block the platform uses to create, target, and optimize ads. + +| If you are... | You push... | The platform can... | +|---|---|---| +| An e-commerce brand | Products with titles, descriptions, prices, images | Recommend specific products when users ask about your category | +| A travel company | Flights, hotels, packages with dates and pricing | Suggest relevant trips based on the conversation | +| An employer | Job listings with roles, locations, requirements | Surface open positions to qualified candidates | +| A retailer | Store locations and local inventory | Direct users to nearby stores with in-stock items | +| A services company | Service offerings and promotions | Match capabilities to what the user is looking for | + +Beyond catalogs, you also provide: +- **Brand identity** — voice, visual guidelines, and positioning so the platform sounds like your brand +- **Content standards** — suitability rules enforced at generation time, before the ad is created +- **Conversion events** — real business outcomes so the platform optimizes toward what matters +- **Optimization goals** — target cost per engagement, cost per conversion, or ROAS + +## Your measurement stack does not change + +Your existing measurement stack — media mix modeling, MMPs, multi-touch attribution, incrementality testing — works the same way it always has. Sponsored Intelligence is a new channel in your media plan, not a new measurement paradigm. The protocol does make one thing easier: because you push conversion events into platforms, they can optimize toward real business outcomes instead of proxy metrics. But how you evaluate whether that spend was worth it uses the same tools and frameworks you use today. See [measurement](/dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement) for details. + +## Getting started by role + +### Brands with agencies + +Your primary job is **data quality**. The effectiveness of your campaigns depends directly on what you push in. + +<Steps> + +### Own your catalogs + +Make sure your product data is rich, accurate, and current. Detailed descriptions, high-quality images, structured attributes (size, color, category), and accurate pricing. If your catalog is thin, your ads will be thin. + +### Define your brand identity + +Provide your voice, visual guidelines, and positioning. This is not a nice-to-have — it is the difference between sponsored content that sounds like your brand and content that sounds generic. + +### Set your content standards + +Define where your brand can and cannot appear. Be specific. AI platforms enforce these rules during ad generation, which gives you stronger control than you have in any other channel. + +### Brief your agency — or experiment yourself + +Your agency manages campaigns through buyer agents that speak AdCP. The protocol gives agencies more leverage to automate and serve you better. You can also experiment with your own brand agents alongside agency relationships, the same way some brands run Amazon Ads in-house while agencies handle everything else. + +</Steps> + +### Agencies and trading desks + +A buyer agent fills the same role that a DSP fills in programmatic — but it is not limited to programmatic. It sits alongside your DSP. Your existing programmatic stack, measurement, and reporting do not go away. You add a buyer agent that can reach AI platforms, and over time, it can reach any channel where sellers implement the protocol. + +A buyer agent connects to any AI platform that implements the protocol. It pushes client data in (catalogs, brand identity, content standards, conversion events), discovers available products, executes campaigns, and pulls delivery reports — across every platform, through one interface. What you build once works everywhere. + +Build on the [AdCP SDKs](/dist/docs/3.2.0-beta.4/building/by-layer/L0). The first agencies with working buyer agents will capture client demand faster than those negotiating direct deals platform by platform. + +### Small and mid-size businesses + +Work through a partner — an ad network, a platform integration, or a tool built into the commerce platform you already use — and the partner handles the protocol plumbing. + +Your job is straightforward: +- **Provide a good product feed.** If you sell on Shopify, Etsy, or any e-commerce platform, you already have one. +- **Set up your brand basics.** Your name, logo, voice, and any rules about where your brand should or should not appear. +- **Define what success looks like.** Sales? Store visits? Sign-ups? Your partner needs to know what to optimize toward. + +To find a partner, [ask Addie](https://agenticadvertising.org/chat) — she can help match you with the right option. You can also [browse the member directory](https://agenticadvertising.org/members) directly. + +## What's next + +<Card title="Start the certification" icon="play" href="https://agenticadvertising.org/chat"> + Tell Addie "I want to get certified." The free Basics track (A1–A3, about 50 minutes) teaches the protocol fundamentals. The Buyer track (C1–C4) teaches you to build a working buyer agent — no programming experience required. +</Card> + +<AccordionGroup> +<Accordion title="Reference: protocol and specifications"> + +- [Sponsored Intelligence protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) — Full technical protocol with product spectrum, ad networks, workflows, and measurement +- [Catalogs](/dist/docs/3.2.0-beta.4/creative/catalogs) — How product, offering, store, and inventory catalogs work +- [Brand identity](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — The `brand.json` specification for voice, visual guidelines, and positioning +- [Content standards](/dist/docs/3.2.0-beta.4/governance/overview) — How brand suitability rules are defined, shared, and enforced +- [SDKs and integration](/dist/docs/3.2.0-beta.4/building/by-layer/L0) — JavaScript and Python SDKs for building buyer agents + +</Accordion> +</AccordionGroup> diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks.mdx new file mode 100644 index 0000000000..b470c48bfc --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks.mdx @@ -0,0 +1,197 @@ +--- +title: Ad networks +description: "How AI ad networks aggregate inventory across multiple AI platforms using AdCP — product modeling, account chains, catalog forwarding, governance, delivery reporting, and SI Chat Protocol routing." +"og:title": "AdCP — SI ad networks" +sidebarTitle: Ad networks +--- + +# Ad networks + +Ad networks aggregate inventory across multiple AI platforms into a single seller interface. The protocol supports this topology natively — a network is a seller agent that represents multiple publisher properties it doesn't own. + +## How a network appears + +To **buyer agents**, the network is a standard seller agent. Buyers connect to the network's MCP server, push catalogs and data in via standard tasks, and execute buys. To the **underlying AI platforms**, the network is an operator — it holds accounts on each platform and forwards the buyer's catalog data, brand identity, and content standards. + +## Product modeling for networks + +A network's products can span multiple AI platforms using `publisher_properties`: + +```json +{ + "product_id": "sponsored_response_ai_network", + "name": "Sponsored responses - AI assistant network", + "description": "Sponsored responses across multiple AI assistants. The network routes to the best-matching platform based on user context and brand relevance.", + "channels": ["sponsored_intelligence"], + "publisher_properties": [ + { "publisher_domain": "assistant-alpha.example.com", "selection_type": "all" }, + { "publisher_domain": "assistant-beta.example.com", "selection_type": "all" }, + { "publisher_domain": "search-gamma.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_kind": "agent_placement", "params": {} } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "network_cpc", + "pricing_model": "cpc", + "floor_price": 0.75, + "price_guidance": { "p50": 2.50, "p75": 4.00 }, + "currency": "USD", + "min_spend_per_package": 1000 + } + ], + "metric_optimization": { + "supported_metrics": ["clicks", "engagements"], + "supported_targets": ["cost_per"] + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": true + }, + "catalog_types": ["product", "offering"] +} +``` + +The network decides which platform serves each impression based on context, relevance, and performance. The buyer doesn't need to know which platform was selected — they see unified delivery reporting from the network. + +## Account model for networks + +Networks typically use buyer-declared accounts (`require_operator_auth: false`). The buyer agent is trusted and declares brands via `sync_accounts`. The network then manages its own account-id namespaces with each underlying AI platform: + +``` +Buyer agent -> Network (buyer-declared accounts, agent-trusted) +Network -> AI Platform A (account-id namespace, operator auth) +Network -> AI Platform B (account-id namespace, operator auth) +``` + +Declare capabilities accordingly: + +```json +{ + "adcp": { "major_versions": [3] }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"], + "supported_account_currency_modes": ["fixed", "per_media_buy"], + "required_for_products": false, + "sandbox": true + } +} +``` + +## Catalog forwarding + +Networks receive catalogs from buyers via `sync_catalogs` and forward them to the relevant AI platforms. The same task works on both legs — the network acts as a buyer when syncing catalogs to each platform. This is the core data pipe: brand catalog data flows from buyer to network to platform, giving each platform the raw material to generate ads. + +## Governance and content standards + +Networks can enforce [governance policies](/dist/docs/3.2.0-beta.4/governance/overview) at the routing layer before forwarding to platforms. When a buyer pushes content standards, the network applies them when selecting which platforms and contexts are eligible — then forwards the policies to each platform so they're also enforced at creative generation time. This gives brands two layers of suitability enforcement: the network's routing decisions and the platform's generation constraints. + +## Delivery reporting + +Networks aggregate delivery data from underlying platforms and present unified reporting to buyers via `get_media_buy_delivery`. The buyer sees a single delivery report per media buy — the network handles the per-platform breakdown internally. Networks that want to offer platform-level transparency can use `reporting_dimensions` to expose placement-level breakdowns. + +## Declaring your network in brand.json + +A network declares its properties in its [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) using the `relationship` field. This uses the same vocabulary as adagents.json's `delegation_type`, creating a bilateral verification chain — the AdCP equivalent of `sellers.json` in programmatic advertising. + +```json +{ + "house": { + "domain": "ai-network.example.com", + "name": "Example AI Network" + }, + "brands": [{ + "id": "ai_network", + "properties": [ + { "type": "website", "identifier": "ai-network.example.com", "primary": true }, + { "type": "website", "identifier": "assistant-alpha.example.com", "relationship": "delegated" }, + { "type": "website", "identifier": "assistant-beta.example.com", "relationship": "delegated" }, + { "type": "website", "identifier": "search-gamma.example.com", "relationship": "ad_network" } + ], + "agents": [{ + "type": "sales", + "url": "https://ads.ai-network.example.com", + "id": "network_sales" + }] + }] +} +``` + +For delegated and network paths, the `relationship` field uses the same values as `delegation_type` in adagents.json. `owned` is a brand.json-only relationship for first-party inventory: + +| Relationship | Meaning | Example | +|---|---|---| +| `owned` (default) | You own and operate this property | Your own website | +| `direct` | You are the direct sales path for this property | A publisher's in-house ad team using a vendor's tech | +| `delegated` | You manage monetization for this property — you're in charge | Mediavine managing a food blog's ad sales | +| `ad_network` | You sell this property's inventory as part of a network or exchange — you're a path, not the path | PubMatic as an SSP for nytimes.com | + +The distinction between `delegated` and `ad_network` matters: a delegated relationship means the operator is in charge of the property's monetization (exclusive or near-exclusive access). An ad_network relationship means the operator is one of potentially many paths to the inventory. + +### Bilateral verification with adagents.json + +This creates a two-sided verification chain — the same pattern as `sellers.json` + `ads.txt` in programmatic: + +| File | Who publishes it | What it declares | Programmatic equivalent | +|---|---|---|---| +| `brand.json` (operator) | The network/SSP | "I sell for these publishers, here's how" | `sellers.json` | +| `adagents.json` (publisher) | Each publisher | "This operator's agents are authorized, here's the delegation type" | `ads.txt` | + +Both sides must agree. The network declares the relationship in `brand.json`, and each publisher confirms by authorizing the network's agents with the matching `delegation_type` in their `adagents.json`. If only one side declares, the relationship is incomplete — the network health dashboard flags this as missing authorization (operator declared but publisher hasn't authorized) or orphaned authorization (publisher authorized but operator hasn't declared). + +## adagents.json for networks + +Each publisher in the network authorizes the network's agent in their [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents): + +```json +{ + "version": "1.0", + "properties": [ + { + "domain": "assistant-alpha.example.com", + "agents": [{ + "agent_url": "https://ads.ai-network.example.com", + "relationship": "direct", + "supported_protocols": ["media_buy", "creative"] + }] + } + ] +} +``` + +Each underlying AI platform authorizes the network in its own `adagents.json`. Buyer agents discover the network through the platforms' authorization chains. + +## SI Chat Protocol through networks + +When an ad network sells [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) sessions on behalf of brands, it acts as an intermediary in the session flow. The brand syncs offerings to the network via `sync_catalogs` with `type: "offering"`, and the network forwards them to underlying platforms. When a platform triggers a session, the network routes it to the correct brand agent. + +``` +AI Platform -> Network -> Brand Agent + +1. Platform calls si_initiate_session with the network's media_buy_id +2. Network maps media_buy_id to the brand's offering_id +3. Network forwards to the brand agent's SI endpoint +4. Brand agent responds; network relays back to the platform +``` + +The key fields at each leg: + +| Field | Platform to Network | Network to Brand | +|---|---|---| +| `media_buy_id` | Network's media buy ID | May differ or be omitted | +| `offering_id` | Not set (platform doesn't know) | Brand-specific offering | +| `intent` | User intent from the conversation | Forwarded as-is | +| `identity` | User identity (if consented) | Forwarded as-is | + +The network handles attribution correlation across the two legs. It knows which platform triggered the session (`placement`), which media buy funded it (`media_buy_id`), and which brand responded (`offering_id`). This lets the network provide unified delivery reporting to buyers via `get_media_buy_delivery` while each brand agent only sees its own sessions. + +Networks should forward `identity` and `supported_capabilities` unchanged — the brand agent needs accurate host capabilities to negotiate modalities, and the user's consent was granted for the brand, not the network. + +<Note> +For the SI Chat Protocol session lifecycle and capability negotiation details, see the [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) and [implementing SI hosts](/dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts). +</Note> diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview.mdx new file mode 100644 index 0000000000..1f2bb55906 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview.mdx @@ -0,0 +1,257 @@ +--- +title: Sponsored Intelligence +sidebarTitle: Overview +"og:image": /images/walkthrough/si-01-priyas-desk.png +description: "Monetizing AI surfaces with AdCP — follow a growth marketer as she launches campaigns on an AI platform using the reversed data flow." +"og:title": "AdCP — Sponsored Intelligence" +--- + +<img src="/images/walkthrough/si-01-priyas-desk.png" alt="A growth marketer sits at a clean desk with a single screen showing an AI assistant conversation alongside product catalog data flowing into it" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +<Note> +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — session lifecycle, UI components, identity/consent object shape, and capability negotiation may change between 3.x releases with at least 6 weeks' notice. Sellers implementing SI MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. Planned changes track the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201). +</Note> + +Priya is a growth marketer at Ridgeline Gear, a DTC outdoor brand. Her CEO just saw a competitor's product recommended in ChatGPT and wants to know: *"Why aren't we there?"* + +Priya knows programmatic. She's run display, social, and CTV campaigns. But AI platforms are different. There's no ad server. No bid request. No creative upload. The AI generates the ad from context — and right now, it has no context about Ridgeline. + +Like VAST defined how video ads are served, Sponsored Intelligence defines how advertising works on AI surfaces. It inverts the traditional model: instead of sending a thin bid request out, buyers push everything in — product catalogs, conversion events, brand identity, content standards, and optimization goals — so the platform's LLM can generate the right ad in the right moment with full information. + +## The reversed data flow + +<img src="/images/walkthrough/si-02-reversed-flow.png" alt="Split screen comparison: left side shows traditional programmatic with thin bid request arrows flowing OUT from a platform to remote bidders; right side shows Sponsored Intelligence with rich data — catalogs, events, brand identity — flowing IN to the AI platform where the LLM makes the decision" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +In traditional programmatic, the platform sends a bid request **out** — a page URL, device type, maybe a user ID — to a remote decision-maker. The decision-maker doesn't have the context. The context-holder doesn't make the decision. + +AI platforms reverse this. Buyers push everything **in** via AdCP. **The decision-maker is the context-holder.** That's the fundamental shift. + +The data flows in advance. The decision still happens in real time — but the decision-maker now has full context: what the user asked, what the brand sells, what success looks like, and what the brand's voice sounds like. + +<Accordion title="Programmatic language → Sponsored Intelligence terms"> + +| What Priya knows | What SI calls it | +|---|---| +| Upload creatives to ad server | Push catalogs, brand identity, and events into the platform | +| Bid request (platform sends context out) | Reversed data flow (buyer pushes data in) | +| DSP selects ad remotely | Platform LLM generates ad with full context | +| Audience segments and geo targeting | Conversational relevance and keyword intent | +| Impressions, clicks, CTR | Engagements, clicks, cost per click | +| Brand safety blocklists | [Content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) enforced at generation time | + +</Accordion> + +## How it works: Priya's first SI campaign + +Priya starts with NovaMind, a major AI assistant that sells its own sponsored placements. NovaMind is a first-party AI platform — account-id namespace, its own ad serving, its own measurement. + +### Step 1: Connect the account + +<img src="/images/walkthrough/si-03-connect-account.png" alt="Priya's buyer agent robot shakes hands with the NovaMind platform robot in front of a glowing portal, establishing a connection while account credentials flow between them" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya's buyer agent connects to NovaMind and confirms Ridgeline's account — like verifying access with a new publisher: + +```javascript +const accounts = await novamind.listAccounts({ + account: { + brand: { domain: "ridgelinegear.com" } + } +}); +// Returns Ridgeline's account — ready to sync data and buy inventory +``` + +### Step 2: Push the ingredients + +<img src="/images/walkthrough/si-04-push-ingredients.png" alt="Product catalog cards, a brand.json document, conversion event streams, and content standards documents flow from Ridgeline's system into NovaMind's platform through a glowing pipeline, assembling into a rich brand context inside the AI" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Here's where SI diverges from everything Priya knows. Instead of uploading creatives, she pushes raw ingredients — and the platform assembles the ad. Priya's buyer agent handles the protocol; here's what happens under the hood: + +```javascript +// Product catalog — a structured feed describing what Ridgeline sells +// (like a Google Merchant Center feed, but consumed by the AI platform) +await novamind.syncCatalogs({ + account: { brand: { domain: "ridgelinegear.com" } }, + catalogs: [{ + catalog_id: "ridgeline-products-2026", + type: "product", + source: { url: "https://ridgelinegear.com/feeds/products.json" } + }] +}); + +// Conversion events — what success looks like +await novamind.syncEventSources({ + account: { brand: { domain: "ridgelinegear.com" } }, + event_sources: [{ + event_source_id: "ridgeline-conversions", + type: "conversion", + source: { url: "https://ridgelinegear.com/events/conversions" } + }] +}); +``` + +Priya also publishes [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) at `ridgelinegear.com/.well-known/brand.json` — voice, colors, visual guidelines that the platform reads when generating ads. And she sets [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) that the platform enforces at decision time. + +<Note> +**SI governance integration is planned.** Full protocol-level governance for Sponsored Intelligence — campaign registration via `sync_plans`, session-lifecycle checks via `check_governance`, content standards for AI-generated content, and property governance for AI assistant placements — is under development. See the [Governance overview](/dist/docs/3.2.0-beta.4/governance/overview#sponsored-intelligence-planned) for current status. Today, SI platforms enforce governance at the application layer using content standards and brand identity. +</Note> + +Together, these ingredients **are** the ad. Product catalogs feed creative generation. Conversion events close the optimization loop. Brand identity ensures the output sounds right. Content standards ensure it stays safe. + +### Step 3: Discover products + +<img src="/images/walkthrough/si-05-discover-products.png" alt="NovaMind presents a catalog of sponsored placement options to Priya's buyer agent: sponsored responses, AI search results, and a premium brand experience handoff — each displayed as glowing product cards" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya discovers what NovaMind offers — same `get_products` she'd use for CTV or display: + +```javascript +const products = await novamind.getProducts({ + idempotency_key: "550e8400-e29b-41d4-a716-446655442042", + buying_mode: "brief", + brief: "Outdoor gear brand. Want to reach people asking about hiking, camping, and trail running. Budget $15K/month.", + brand: { domain: "ridgelinegear.com" }, + account: { brand: { domain: "ridgelinegear.com" } } +}); +``` + +NovaMind returns products across the [SI product spectrum](/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum): + +| Product | How it works | Pricing | +|---|---|---| +| **Sponsored responses** | NovaMind generates a recommendation from Ridgeline's catalog when users ask about hiking gear | CPC | +| **AI search results** | Ridgeline appears in keyword-triggered search results for "best hiking boots" | CPC | +| **Brand experience handoff** | User deep-dives on Ridgeline products via a multi-turn conversation with Ridgeline's brand agent ([SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol)) | Per session | + +### Step 4: Create the media buy + +<img src="/images/walkthrough/si-06-create-buy.png" alt="Priya's buyer agent sends a create_media_buy request to NovaMind — a glowing contract document materializes between the two agents, with budget amounts, flight dates, and optimization goals visible as floating labels" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya picks two products and creates a media buy: + +```javascript +const buy = await novamind.createMediaBuy({ + account: { brand: { domain: "ridgelinegear.com" } }, + brand: { domain: "ridgelinegear.com" }, + start_time: "2026-04-01T00:00:00Z", + end_time: "2026-06-30T23:59:59Z", + packages: [ + { + product_id: "novamind_sponsored_outdoor", + budget: 10000, + pricing_option_id: "cpc_standard", + optimization_goals: [ + { type: "cpa", target: 12.00, event_type: "purchase" } + ] + }, + { + product_id: "novamind_search_hiking", + budget: 5000, + pricing_option_id: "cpc_keyword", + targeting_overlay: { + keywords: ["hiking boots", "trail running shoes", "camping gear"] + } + } + ] +}); +``` + +No creative to upload. No ad tags to traffic. NovaMind already has Ridgeline's product catalog, brand identity, and conversion events. It generates the right ad in the right moment from those ingredients. + +### Step 5: The ad moment + +<img src="/images/walkthrough/si-07-ad-moment.png" alt="An AI assistant conversation on a phone screen — a user asks 'what hiking boots should I get for the Appalachian Trail?' and the AI responds with a contextually relevant Ridgeline Trail Pro recommendation, with product details and a 'talk to Ridgeline' handoff button glowing below" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +A NovaMind user asks: + +> *"What hiking boots should I get for the Appalachian Trail?"* + +NovaMind's LLM has Ridgeline's product catalog, knows the Trail Pro 3000 matches this query, and generates a sponsored response: + +> *"For the AT, you want a boot that handles rocky terrain and variable weather. The **Ridgeline Trail Pro 3000** ($189) is built for exactly this — Gore-Tex waterproofing, Vibram outsole, and ankle support designed for multi-day hikes. It's rated 4.7/5 by AT thru-hikers."* +> +> *Sponsored by Ridgeline Gear* · [Talk to Ridgeline →] + +Every detail comes from the catalog Priya synced — the price, the features, the ratings. The voice matches `brand.json`. The [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index) Priya set ensure the platform won't make unsupported claims. The user sees a relevant, helpful recommendation, clearly labeled as sponsored. + +Under the protocol, this is not just UI copy. Sponsored context can carry an accountability declaration that separates who paid for the context, how the host is allowed to use it, and whether user-facing disclosure is required. See [Sponsored Context Accountability](/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification#sponsored-context-accountability) for the receipt and audit model. + +If the user taps "Talk to Ridgeline," NovaMind hands off to Ridgeline's brand agent via [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) — a multi-turn conversation where the user can ask about sizing, compare models, and start a purchase. All within the AI experience. + +### Step 6: Measure results + +<img src="/images/walkthrough/si-08-measure.png" alt="A clean dashboard showing SI campaign metrics — engagements, clicks, conversions, and cost per engagement — with a line chart trending upward and a callout showing 'CPA: $9.40, beating $12.00 target'" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya monitors the same way she monitors any AdCP campaign: + +```javascript +const delivery = await novamind.getMediaBuyDelivery({ + account: { brand: { domain: "ridgelinegear.com" } }, + media_buy_ids: [buy.media_buy_id], + include_package_daily_breakdown: true +}); +``` + +The reporting format is the same `get_media_buy_delivery` response Priya uses for CTV and display. One dashboard, all channels. Her existing measurement stack — media mix modeling, multi-touch attribution, incrementality testing — works the same way it always has. + +--- + +## Scaling up: AI ad networks + +Priya's NovaMind campaign is working. Now she wants broader reach across dozens of AI surfaces — not just one platform. She connects to Gravity, an AI ad network. + +<img src="/images/walkthrough/si-09-network-topology.png" alt="A hub-and-spoke diagram: Gravity sits at the center as a network node, with spokes radiating out to a dozen different AI platforms — chat assistants, search copilots, coding tools, travel planners — each shown as a small robot at its own surface" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +AI ad networks aggregate inventory across many AI platforms into a single seller interface. Priya syncs her catalogs once to Gravity, and Gravity forwards them to its underlying platforms. One integration, many surfaces. + +| | First-party (NovaMind) | Ad network (Gravity) | +|---|---|---| +| **Inventory** | One AI platform's own placements | Aggregated across many AI platforms | +| **Account model** | Explicit — Priya registers directly | Implicit — buyer agent declares brands via `sync_accounts`; the network verifies agent identity | +| **Products** | NovaMind's own offerings | Products include `publisher_properties` showing which platforms serve them | +| **Catalog flow** | Synced directly to NovaMind | Synced once to Gravity, forwarded to underlying platforms | + +The same protocol tasks work on both paths. Priya calls `get_products`, `create_media_buy`, and `get_media_buy_delivery` on Gravity exactly as she did on NovaMind — and exactly as she already does for her CTV and display campaigns through the [media buy protocol](/dist/docs/3.2.0-beta.4/media-buy/index). She sees everything in one dashboard. + +At serving time, Gravity's underlying AI platforms use the [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match) to match demand to conversations. TMP fans out to buyer agents, evaluates context and user eligibility, and the platform selects which offer to present — all within the LLM's generation latency. The buying layer (media buys, catalogs, reporting) stays the same; TMP handles real-time mediation underneath. + +<CardGroup cols={2}> + <Card title="Ad networks deep dive" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks"> + Network topology, buyer-declared account chains, catalog forwarding, and SI Chat Protocol routing through intermediaries. + </Card> + <Card title="How demand reaches AI assistants" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation"> + How TMP mediates demand on AI surfaces — context matching, frequency caps, and LLM integration. + </Card> +</CardGroup> + +## Protocol architecture + +SI uses two protocol layers: + +- **Buying** uses the [media buy protocol](/dist/docs/3.2.0-beta.4/media-buy/index) — `get_products`, `create_media_buy`, `sync_catalogs`, `get_media_buy_delivery`. You buy SI inventory the same way you buy CTV or display. The `channels: ["sponsored_intelligence"]` field on products is what identifies SI inventory. +- **Serving** uses the SI protocol — `si_initiate_session`, `si_send_message`, `si_terminate_session`. These tasks power the [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) brand experience handoffs. + +Most SI products (sponsored responses, AI search results) only involve the buying layer — the platform handles serving internally. SI Chat Protocol handoffs are the product type that spans both layers. + +## The full picture + +<img src="/images/walkthrough/si-10-full-picture.png" alt="A horizontal flow diagram showing Ridgeline's data flowing into both NovaMind (direct) and Gravity (network), which fans out to many AI platforms — all reporting back through the same unified delivery format to Priya's single dashboard" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya's CEO asked *"Why aren't we there?"* — and now Ridgeline is recommended in AI conversations across multiple platforms. Priya didn't learn a dozen different systems. She pushed her ingredients into a standard protocol and let each platform generate the right ad from full context. The same `create_media_buy` that runs her CTV and display campaigns runs her SI campaigns too. + +Next quarter, she's adding brand experience handoffs via SI Chat Protocol — so when a user wants to go deep on Ridgeline products, they can have a full conversation with Ridgeline's brand agent without leaving the AI experience. + +## Go deeper + +<CardGroup cols={2}> + <Card title="Product spectrum" icon="layer-group" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum"> + The four SI product types — sponsored responses, AI search, generative display, and brand experience handoffs. + </Card> + <Card title="End-to-end workflow" icon="arrows-spin" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow"> + Step-by-step from account setup through delivery reporting with code examples. + </Card> + <Card title="SI Chat Protocol" icon="comments" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol"> + The conversational brand experience protocol — session lifecycle, modalities, and commerce handoff. + </Card> + <Card title="Monetizing AI" icon="bullseye" href="/dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai"> + Non-technical guide for brands, agencies, and SMBs getting started. + </Card> +</CardGroup> diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum.mdx new file mode 100644 index 0000000000..f15378d853 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum.mdx @@ -0,0 +1,163 @@ +--- +title: Product spectrum +description: "The four Sponsored Intelligence product types — sponsored responses, AI search results, generative display, and SI Chat Protocol brand experience handoffs — with JSON examples and pricing models." +"og:title": "AdCP — SI product spectrum" +sidebarTitle: Product spectrum +--- + +# Product spectrum + +[Sponsored Intelligence](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview) is advertising on AI surfaces — AI assistants, AI search engines, and generative AI experiences. Sellers offer several distinct product types, each with different creative generation patterns, pricing models, and measurement capabilities. + +| Product type | Creative model | Pricing | Key differentiator | +|---|---|---|---| +| **Sponsored responses** | Platform generates from catalog + brand data | CPC | Contextual relevance to user conversation | +| **AI search results** | Platform generates from catalog + keywords | CPC | Keyword targeting via `targeting_overlay` | +| **Generative display/video** | Buyer provides via `build_creative` | CPM | Standard format IDs; buyer controls the creative | +| **SI Chat Protocol handoffs** | Brand agent converses directly | Per session | Multi-turn brand experience via [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) | + +<Info> +The first three product types are bought and served entirely through the [media buy protocol](/dist/docs/3.2.0-beta.4/media-buy/index). SI Chat Protocol handoffs additionally use the `si_*` session tasks. See [protocol architecture](/dist/docs/3.2.0-beta.4/sponsored-intelligence/overview#protocol-architecture). +</Info> + +## Sponsored responses in AI assistants + +The flagship Sponsored Intelligence product. When a user's conversation is relevant to the brand, the platform generates a sponsored response using the brand's catalog and identity. Pricing is typically CPC. + +```json +{ + "product_id": "sponsored_response_assistant", + "name": "Sponsored responses - AI assistant", + "description": "Contextually relevant sponsored responses generated from brand catalog data when users ask related questions. Creative is generated by the platform using brand identity and product catalog.", + "channels": ["sponsored_intelligence"], + "publisher_properties": [ + { "publisher_domain": "ai-platform.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_kind": "agent_placement", "params": {} } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "sr_cpc", + "pricing_model": "cpc", + "floor_price": 0.50, + "price_guidance": { "p50": 2.00, "p75": 3.50 }, + "currency": "USD", + "min_spend_per_package": 500 + } + ], + "delivery_measurement": { + "provider": "Platform analytics", + "notes": "Engagement tracked per platform methodology. Clicks measured on outbound links and action buttons." + }, + "metric_optimization": { + "supported_metrics": ["clicks", "engagements"], + "supported_targets": ["cost_per"] + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": true + }, + "catalog_types": ["product", "offering"] +} +``` + +Key characteristics: +- **CPC pricing** with auction-based bidding on contextual relevance +- **`templates_available: true`** — the platform generates creative from catalog and brand data +- **`catalog_types`** declares which catalog types feed the generative creative — product feeds for e-commerce brands, offering feeds for services +- **`metric_optimization`** with engagements and clicks — buyers can set cost-per-engagement targets + +## AI search sponsored results + +Sponsored results within AI-powered search experiences. Similar to traditional search ads but rendered within an AI's synthesized response. Keyword targeting is the primary relevance signal. + +```json +{ + "product_id": "ai_search_sponsored", + "name": "Sponsored results - AI search", + "description": "Sponsored results appearing within AI search responses. Targeted by keyword relevance to user queries.", + "channels": ["sponsored_intelligence"], + "publisher_properties": [ + { "publisher_domain": "ai-platform.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_kind": "native_in_feed", "params": {} } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "search_cpc", + "pricing_model": "cpc", + "floor_price": 0.75, + "price_guidance": { "p50": 2.50, "p75": 5.00 }, + "currency": "USD", + "min_spend_per_package": 500 + } + ], + "delivery_measurement": { + "provider": "Platform analytics", + "notes": "Click tracking on sponsored result links. Query-level reporting available." + }, + "metric_optimization": { + "supported_metrics": ["clicks"], + "supported_targets": ["cost_per"] + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": true + } +} +``` + +AI search products typically support keyword targeting. Sellers declare this in `get_adcp_capabilities` under `media_buy.execution.targeting.keyword_targets`, and buyers provide keywords on packages via `targeting_overlay`. + +## Generative display and video + +Display and video ads generated from brand assets for placement within AI experiences — sidebars, interstitials between conversation turns, or visual responses. The platform uses `build_creative` to generate visual creative from the brand's assets and guidelines. + +```json +{ + "product_id": "ai_generative_display", + "name": "Generative display - AI experience", + "description": "Display ads generated from brand assets, placed within AI experience surfaces.", + "channels": ["sponsored_intelligence"], + "publisher_properties": [ + { "publisher_domain": "ai-platform.example.com", "selection_type": "all" } + ], + "format_options": [ + { "format_kind": "image", "params": { "width": 300, "height": 250 } }, + { "format_kind": "native_in_feed", "params": {} } + ], + "delivery_type": "non_guaranteed", + "pricing_options": [ + { + "pricing_option_id": "display_cpm", + "pricing_model": "cpm", + "floor_price": 6.00, + "currency": "USD", + "min_spend_per_package": 1000 + } + ], + "delivery_measurement": { + "provider": "Platform ad server", + "notes": "Impressions per IAB guidelines." + }, + "creative_policy": { + "co_branding": "none", + "landing_page": "any", + "templates_available": false + } +} +``` + +Unlike sponsored responses, generative display uses standard format IDs from the creative agent. Buyers provide creative via `build_creative` or inline on the media buy — the platform doesn't generate creative from catalog data. + +## Brand experience handoffs (SI Chat Protocol) + +When a user shows high purchase intent, the AI platform can hand off the conversation to the brand's own AI agent via the [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol). This enables rich, multi-turn brand experiences — product recommendations, comparisons, configuration, and even transaction completion — without leaving the AI assistant. + +Brand experience handoffs are unique to Sponsored Intelligence. The brand syncs offerings via `sync_catalogs` with `type: "offering"`, and the platform triggers handoffs when user intent aligns with an offering. See the [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) for the session lifecycle and capability model. diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol.mdx new file mode 100644 index 0000000000..54143037df --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol.mdx @@ -0,0 +1,496 @@ +--- +title: SI Chat Protocol +description: "The SI Chat Protocol defines conversational brand experiences in AI assistants — session lifecycle, capability negotiation, identity consent, UI components, and ACP commerce handoff." +"og:title": "AdCP — SI Chat Protocol" +sidebarTitle: SI Chat Protocol +--- + +<Note> +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — APIs and schemas may change between 3.x releases with at least 6 weeks' notice. Sellers implementing SI MUST declare `sponsored_intelligence.core` in `experimental_features`. Feedback welcome as reference implementations come online. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract and the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201) for planned changes. +</Note> + +Consumers are discovering and exploring in AI services. They don't want to leave to find and learn about brands and products. So we need a way to bring the brand to the chat. + +The Sponsored Intelligence Protocol defines how AI assistants invoke and interact with brand agent endpoints—enabling rich brand experiences without breaking the conversational flow. + +## The Trillion Dollar Sentence + +When OpenAI announced ads in ChatGPT, they promised "answer independence"—ads won't influence responses. But the real value isn't banner ads at the bottom of chat. It's this: + +> "Based on what you're looking for, Delta has flights to Boston starting at $199. Want me to connect you with their assistant to explore options?" + +That sentence—where AI recommends a brand and offers to hand off the conversation—is worth trillions. Sponsored Intelligence defines the standard for what happens next. + +## What is Sponsored Intelligence? + +**Sponsored Intelligence (SI)** is an open standard for conversational brand experiences in AI assistants. Like VAST defines video ad serving, SI defines how to serve and interact with brand agent endpoints. + +``` +Ad Serving Standards: +- VAST → Video (video file + companions + tracking) +- MRAID → Rich media/interactive display +- Native → Content-style ads +- SI → Conversational agents (endpoint + modalities + brand assets) +``` + +### SI is More Than a Creative Type + +SI can be used in multiple contexts: + +| Context | Description | Example | +|---------|-------------|---------| +| **Creative** | Served via media buy | Brand syncs SI endpoint, triggered when campaign runs | +| **Embedded Experience** | User expresses interest | "Tell me more about Delta" → seamless transition to brand agent | +| **Agentic Landing Page** | Destination for campaigns | The conversational equivalent of a landing page—where brand engagement happens | + +The key insight: SI isn't a click-through. It's a conversational handoff. Traditional landing pages exist because users leave the discovery context to learn more. With SI, users stay in the conversation while the brand comes to them. + +### Protocol Scope + +SI is a **conversational engagement protocol**. It defines the session lifecycle, message exchange, and handoff mechanics. Here's what's in and out of scope: + +| In Scope | Out of Scope | +|----------|--------------| +| Session initiation, messaging, termination | Ad selection/ranking algorithms | +| Capability negotiation between host and brand | Bidding and auction mechanics | +| Identity and consent handoff | Attribution models and measurement | +| Commerce handoff to ACP | Billing and compensation between parties | +| Standard UI components | Inventory forecasting | + +**Why this scope?** SI focuses on the engagement layer—what happens when a user connects with a brand agent. How offers get surfaced (ad selection), how conversions get credited (attribution), and how money flows (billing) are adjacent concerns that interact with SI but aren't defined by it. + +This separation is intentional. Platforms can use their own selection algorithms while speaking the same SI protocol. Attribution systems can consume SI correlation IDs without SI dictating the model. Billing arrangements remain business decisions between parties. + +### Attribution Correlation + +SI doesn't define attribution semantics, but it provides the correlation IDs that attribution systems need: + +| Field | Scope | Purpose | +|-------|-------|---------| +| `session_id` | Returned at initiate | Links all messages in a conversation; can serve as click_id equivalent | +| `media_buy_id` | Passed at initiate | Links to the campaign that triggered the session | +| `offering_id` | Passed at initiate | Links to the specific offer/product promoted | + +The `session_id` flows through to ACP checkout via `context_for_checkout`, enabling close-loop attribution from impression → conversation → transaction. + +## How It Works + +SI handles the engagement. The [Agentic Commerce Protocol (ACP)](https://agenticcommerce.dev)—an open standard by OpenAI and Stripe for programmatic commerce—handles the transaction. This separation keeps the user's trusted relationship with the host while enabling seamless checkout. + +```mermaid +flowchart LR + A[User Intent] --> B[Host Platform] + B -.->|Optional| P[Check Availability] + P -.-> C + B --> C{Consent?} + C -->|Yes + Identity| D[Initiate Session] + C -->|Yes, Anonymous| D + C -->|No| E[Continue without brand] + D --> F[Brand Agent] + F <--> G[Conversation Turns] + G --> H{User Done?} + H -->|Transaction| I[Handoff to ACP] + H -->|Complete| J[Return to Host] + H -->|Exit| J + I --> K[Checkout Flow] +``` + +### The Flow + +1. **User expresses interest** → Host identifies opportunity +2. **Get offering details** (optional) → Host retrieves offering info and matching products (`si_get_offering`) +3. **Consent prompt** → User decides whether to share identity +4. **Session initiation** → Host invokes brand agent with context + capabilities (`si_initiate_session`) +5. **Conversational engagement** → Brand agent interacts via text, voice, video, or embedded UI (`si_send_message`) +6. **Session termination** → Handoff back for transaction (via ACP) or conversation complete (`si_terminate_session`) + +## SI Manifest: What Brands Declare + +Brands publish an SI manifest declaring their agent's capabilities: + +```json +{ + "endpoint": { + "transports": [ + { "type": "mcp", "url": "https://delta.com/mcp" }, + { "type": "a2a", "url": "https://delta.com/.well-known/agent.json" } + ], + "preferred": "mcp" + }, + "capabilities": { + "modalities": { + "voice": { "provider": "elevenlabs", "voice_id": "delta_v1" }, + "video": { "formats": ["mp4", "webm"], "max_duration_seconds": 60 }, + "avatar": { "provider": "d-id", "avatar_id": "delta_avatar" } + }, + "components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"], + "extensions": { + "chatgpt_apps_sdk": { "app_id": "delta-travel" } + } + }, + "commerce": { + "acp_checkout": true + } + }, + "brand": { "domain": "delta.com" } +} +``` + +> **Note**: All SI agents support conversational (text) modality by default—it's the baseline. The modalities section declares *additional* capabilities like voice, video, and avatar. + +### Transport Options + +SI supports multiple transport protocols, enabling brands to meet hosts where they are: + +| Transport | Description | Best For | +|-----------|-------------|----------| +| **MCP** | Model Context Protocol - tool-based interaction | Structured tool calls, IDE integrations | +| **A2A** | Agent-to-Agent Protocol - message-based interaction | Rich async conversations, agent collaboration | + +Brands can declare multiple transports and specify a preference. Hosts select based on their capabilities, enabling graceful negotiation. + +## Capability Negotiation + +Not every host supports every capability. SI uses capability negotiation—brand says what it CAN do, host responds with what it SUPPORTS, session uses the intersection. + +``` +Brand declares: voice, avatar, standard components, chatgpt_apps_sdk +Host supports: voice, standard components, chatgpt_apps_sdk +Session can use: voice, standard components, chatgpt_apps_sdk +``` + +Standard components work everywhere. Extensions enable richer experiences on platforms that support them. Brands can always fall back to standard components for universal compatibility. + +This enables graceful degradation. A brand agent that works beautifully in ChatGPT with a full Apps SDK experience can still function in a simpler host—just with standard product cards and carousels instead. + +## Identity & Privacy Consent + +When a user engages with a brand agent, the host asks whether to share identity. This is the core value exchange: user gets personalized service, brand gets a lead. + +### The Consent Flow + +``` +User: "I want to talk to Delta about flights" + +Host: "I can connect you with Delta's assistant. Would you like me to + share your info so they can personalize your experience? + + [x] Share my name and email with Delta + [x] Share my shipping address (for accurate pricing) + + By continuing, you agree to Delta's Privacy Policy [link]" + +User: "Yes, share my info" +``` + +Shipping address enables brands to calculate accurate taxes and shipping costs during the conversation, leading to faster checkout and better recommendations. + +### Why Clear PII (Not Hashed) + +This isn't RTB with multiple intermediaries. It's a direct, consented handoff: +- User explicitly says "yes, tell them who I am" +- Delta needs actual email to send confirmations +- Hashing would break the use case + +### With Consent + +```json +{ + "identity": { + "consent_granted": true, + "consent_timestamp": "2026-01-18T10:30:00Z", + "consent_scope": ["name", "email", "shipping_address"], + "privacy_policy_acknowledged": { + "brand_policy_url": "https://delta.com/privacy", + "brand_policy_version": "2026-01" + }, + "user": { + "email": "user@example.com", + "name": "Jane Smith", + "locale": "en-US", + "shipping_address": { + "street": "123 Main St", + "city": "New York", + "state": "NY", + "postal_code": "10001", + "country": "US" + } + } + } +} +``` + +### Without Consent (Anonymous) + +```json +{ + "identity": { + "consent_granted": false, + "anonymous_session_id": "anon_xyz789" + } +} +``` + +Brand can still help—just can't personalize or follow up via email. + +## Modalities + +SI supports multiple interaction modalities. These can be combined—a session might use conversational text with embedded product carousels. + +### Conversational +Pure text exchange via MCP tools or A2A messages. The baseline modality that every SI implementation supports. + +### Voice +Audio-based interaction using brand voice. The host renders audio using the brand's TTS configuration (ElevenLabs, OpenAI, etc.). + +### Video +Brand video content played within the conversation. This includes product videos, explainer content, and promotional clips that enhance the brand experience without requiring the user to navigate away. + +### Avatar +Animated video presence with a brand avatar. Providers like D-ID, HeyGen, and Synthesia enable branded video agents that can speak and respond visually. The host renders the avatar using brand-provided configuration. + +### Visual Components + +SI defines a tiered approach to visual experiences—from lightweight components that work everywhere to rich platform-specific apps. + +#### Standard Components (Works Everywhere) + +SI defines a small set of **standard components** that all compliant hosts MUST render. Like AMP standardized mobile web components, these ensure brands can participate without building platform-specific code: + +| Component | Purpose | Data Shape | +|-----------|---------|------------| +| `text` | Conversational message | `{ message: string }` | +| `link` | URL with label | `{ url, label, preview? }` | +| `image` | Single image | `{ url, alt, caption? }` | +| `product_card` | Product display | `{ title, price, image_url, description?, cta? }` | +| `carousel` | Array of cards/images | `{ items: [...], title? }` | +| `action_button` | CTA that triggers callback | `{ label, action, payload? }` | + +Brands provide structured JSON data. Hosts render according to their design system. No framework dependency. + +```json +{ + "ui_elements": [ + { + "type": "product_card", + "data": { + "title": "Boston Flight - Jan 25", + "price": "$199", + "image_url": "https://delta.com/images/bos.jpg", + "cta": { "label": "Book Now", "action": "checkout" } + } + } + ] +} +``` + +#### Platform Extensions + +Hosts may support richer capabilities beyond the standard set. During session initiation, hosts declare what extensions they support: + +```json +{ + "supported_components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"], + "extensions": { + "chatgpt_apps_sdk": "1.0", + "maps": true, + "forms": true + } + } +} +``` + +Brands can then use extended features when available, falling back to standard components otherwise. + +#### App Handoff + +For brands who've built full platform-specific apps (ChatGPT Apps, etc.), SI supports direct handoff: + +```json +{ + "type": "app_handoff", + "apps": { + "chatgpt": { "app_id": "delta-travel", "deep_link": "flights/boston" }, + "web": { "url": "https://delta.com/book?dest=BOS" } + } +} +``` + +This lets brands leverage existing app investments while still participating in the SI protocol. + +#### Commerce Actions + +Standard components include `action_button` for commerce triggers. Currently, this initiates ACP checkout: + +```json +{ + "type": "action_button", + "data": { + "label": "Add to Cart", + "action": "acp_checkout", + "payload": { "sku": "DL-BOS-125", "quantity": 1 } + } +} +``` + +We expect this to extend to persistent carts, multi-item checkout, and richer commerce flows as the ecosystem matures. The standard component schema is designed to accommodate these extensions. + +#### Integration Actions + +Brand agents can offer users the option to establish a deeper connection—adding the brand as an MCP tool or establishing an A2A relationship for ongoing agent collaboration: + +```json +{ + "type": "integration_actions", + "data": { + "actions": [ + { "type": "mcp", "label": "Add as MCP Tool", "highlighted": true }, + { "type": "a2a", "label": "Connect via A2A" } + ] + } +} +``` + +This enables users to "take the brand with them"—installing the brand's capabilities into their own AI environment for future use without needing to re-discover through ads. It's a powerful conversion path: from sponsored moment to persistent tool. + +## Session Lifecycle + +SI sessions have explicit lifecycle management. + +### Initiate Session + +Host → Brand, including the user intent, capabilities, identity (if consented), and any active offer from the media buy: + +```json +{ + "intent": "User wants to fly to Boston next Tuesday morning on flight 632 at 6 AM.", + "identity": { + "consent_granted": true, + "user": { + "email": "jane@example.com", + "name": "Jane Smith", + "shipping_address": { /* ... */ } + } + }, + "media_buy_id": "delta_q1_premium_upgrade", + "placement": "chatgpt_search", + "offering_id": "delta_chatgpt_3313", + "supported_capabilities": { /* what host supports */ } +} +``` + +The `intent` is the conversation handoff — the host tells the brand agent what the user needs in natural language, and the brand agent responds naturally. The `offering_id` references a campaign promotion (like free upgrades on eligible flights) that the brand knows how to apply. + +**Frequent flyer and loyalty data**: The brand looks this up from the user's email - hosts don't store loyalty numbers. Delta recognizes `jane@example.com` and retrieves her SkyMiles status automatically. + +### Session Response + +Brand returns structured content that host renders. Notice how the brand agent uses the specific intent and applies the offer: + +```json +{ + "session_id": "sess_abc123", + "response": { + "message": "Hi Jane! I found DL632 departing at 6:15 AM next Tuesday. Great news—as a SkyMiles Gold member, you qualify for our free Premium Economy upgrade on this flight.", + "ui_elements": [ + { + "type": "product_card", + "data": { + "title": "DL632 to Boston - Tue Jan 27", + "subtitle": "6:15 AM → 9:42 AM (3h 27m)", + "price": "$199", + "badge": "Free Premium Economy Upgrade", + "image_url": "https://delta.com/images/premium-economy.jpg", + "cta": { "label": "Book with Upgrade", "action": "checkout" } + } + } + ] + } +} +``` + +**Key principle**: Brand returns structured content (cards, links, actions). Host decides what to render based on capabilities and policies. The brand agent personalized the response using Jane's email (looked up her SkyMiles status) and applied the campaign offer. + +### Terminate Session + +Multiple termination reasons: + +| Reason | Meaning | What Happens | +|--------|---------|--------------| +| `handoff_transaction` | User wants to buy | Host initiates ACP checkout | +| `handoff_complete` | Conversation done | Return to normal chat | +| `user_exit` | User ended it | Clean up, maybe save context | +| `session_timeout` | Inactivity | Auto-cleanup | +| `host_terminated` | Policy/error | End session | + +## ACP Integration + +When the termination reason is `handoff_transaction`, the host initiates checkout via the Agentic Commerce Protocol (ACP): + +``` +Brand Agent → Host: terminate_session(handoff_transaction) +Host → ACP: Initiate checkout with Delta +ACP → User: Complete purchase flow +``` + +SI handles the engagement. ACP handles the transaction. The user's trusted relationship with the host is maintained throughout. + +## The Value Proposition + +### For AI Platforms (Hosts) + +- **Monetization**: New ad format that doesn't compromise answer independence +- **User experience**: Native conversational commerce, not banner ads +- **Standards-based**: Interoperable with any SI-compliant brand agent + +### For Brands + +- **Direct engagement**: Talk to users in context, when they're interested +- **Rich experiences**: Mini-stores, interactive maps, voice/avatar presence +- **Lead generation**: Consented identity for follow-up + +### For Users + +- **Personalization**: Share identity, get better service +- **Control**: Clear consent for what's shared +- **Convenience**: Shop, book, explore—all within the conversation + +## The Open Advertising Layer + +Commerce in AI is getting standardized. Google's Universal Commerce Protocol (UCP), developed with Shopify, Walmart, Target, and others, defines open primitives for checkout, payments, and fulfillment. OpenAI and Stripe's Agentic Commerce Protocol (ACP) does similar work. These are good developments—open standards for commerce plumbing benefit everyone. + +But there's a gap. While commerce is becoming open, the **advertising layer**—how offers get surfaced, when brands appear, what users see—remains proprietary. Each platform builds its own black box for deciding when and how sponsored content appears. + +We think that layer should be open too. + +**AdCP and SI are our attempt to define it:** + +| Layer | Open Standard | What It Does | +|-------|---------------|--------------| +| Commerce | UCP, ACP | Checkout, payments, fulfillment | +| Advertising | AdCP, SI | Offer discovery, brand engagement, attribution | + +The primitives we're working on: + +- **Offer declaration** — What brands can promote (offerings, validity windows) +- **Context signals** — What hosts share about user intent (anonymous, consented) +- **Selection criteria** — How offers match intent (keywords, categories, availability) +- **Disclosure** — How sponsored content is labeled +- **Attribution** — How conversions are measured across surfaces + +We don't have all the answers. Questions like "how should competing offers be ranked?" and "what's the right disclosure format?" need industry input. But we believe figuring this out in the open—with brands, platforms, and users at the table—beats each platform building proprietary black boxes. + +**Join us in defining the open advertising layer for AI.** + +## Next Steps + +- **Technical Teams**: Review the protocol components above +- **Platform Providers**: See implementation considerations for hosts +- **Brands**: Understand how to build SI-compliant agents +- **Everyone**: Join the [community Slack](/dist/docs/3.2.0-beta.4/community/joining-slack) to discuss + +--- + +*The Sponsored Intelligence Protocol is part of the broader [AdCP ecosystem](/dist/docs/3.2.0-beta.4/intro), enabling the next generation of AI-powered advertising.* diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification.mdx new file mode 100644 index 0000000000..ba2d0a8618 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/specification.mdx @@ -0,0 +1,574 @@ +--- +title: Sponsored Intelligence Specification +description: "Formal AdCP Sponsored Intelligence specification. Session states, transport requirements, capability negotiation, standard UI components, identity and consent rules, commerce integration, and conformance criteria." +"og:title": "AdCP — Sponsored Intelligence Specification" +sidebarTitle: Specification +--- + +<Note> +**Experimental.** Sponsored Intelligence is part of AdCP 3.0 as an experimental surface (feature id `sponsored_intelligence.core`) — the protocol surface (session lifecycle, UI components, identity/consent object shape, and capability negotiation) may change between 3.x releases with at least 6 weeks' notice. Sellers implementing SI MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract and the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201) for planned changes. +</Note> + +This document defines the Sponsored Intelligence (SI) Protocol specification. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119). + +## Protocol Overview + +The SI Protocol defines how AI assistants (hosts) invoke and interact with brand agent endpoints to enable conversational brand experiences. The protocol consists of: + +1. **Discovery** - How hosts discover brand agents and their capabilities +2. **Offering Lookup** - Anonymous pre-flight checks before session handoff +3. **Session Management** - Initiation, messaging, and termination +4. **Capability Negotiation** - Determining supported features +5. **UI Components** - Standard visual elements for rendering + +## Transport Requirements + +### Supported Transports + +Brand agents MUST support at least one of the following transports: + +| Transport | Protocol | Description | +|-----------|----------|-------------| +| MCP | Model Context Protocol | Tool-based interaction via JSON-RPC | +| A2A | Agent-to-Agent | Message-based interaction | + +Brand agents SHOULD support MCP as the preferred transport. + +### Transport Declaration + +Brand agents declare supported transports via `get_adcp_capabilities`: + +```json +{ + "adcp": { "major_versions": [2] }, + "supported_protocols": ["sponsored_intelligence"], + "sponsored_intelligence": { + "endpoint": { + "transports": [ + { "type": "mcp", "url": "https://brand.example/mcp" } + ], + "preferred": "mcp" + }, + "capabilities": { ... }, + "brand": { "domain": "brand.example" } + } +} +``` + +If multiple transports are declared, the response SHOULD include a `preferred` field. + +## Discovery + +### Capability Discovery + +Brand agents MUST implement the `get_adcp_capabilities` task to declare SI support. When a host calls this task, the response MUST include: + +- `sponsored_intelligence` in the `supported_protocols` array +- A `sponsored_intelligence` object containing: + - `endpoint` - Transport configuration (REQUIRED) + - `capabilities` - Supported modalities and components (REQUIRED) + +The response SHOULD include: + +- `brand` - Brand reference (domain-based identity) + +## Get Offering + +### Purpose + +The `si_get_offering` task retrieves offering details and availability before session handoff. This allows hosts to show offering information (pricing, product availability) to users before asking for consent to engage with the brand. + +### Requirements + +Hosts MAY call `si_get_offering` before initiating a session. + +If a host calls `si_get_offering`: + +1. The request MUST NOT include user PII +2. The request MUST include `offering_id` +3. The request MAY include `intent` for personalized results (e.g., "mens size 14 near Cincinnati") +4. The request MAY set `include_products: true` to get matching products +5. Brand agents MUST return an `offering_token` if available +6. Brand agents SHOULD return a `ttl_seconds` indicating validity duration + +### Offering Token Flow + +If a host receives an `offering_token`: + +1. The host SHOULD include this token in the subsequent `si_initiate_session` request +2. The brand agent MAY use the token to correlate offering lookups with sessions +3. The token MUST be treated as opaque by the host + +```json +{ + "offering_token": "offering_abc123xyz" +} +``` + +### Matching Products + +When `include_products` is true and `intent` is provided, the response MAY include matching products: + +```json +{ + "available": true, + "offering_token": "offering_abc123xyz", + "offering": { + "title": "Nike Summer Sale", + "summary": "Up to 50% off summer collection", + "price_hint": "from $89" + }, + "matching_products": [ + { + "product_id": "nike-air-max-90", + "name": "Nike Air Max 90", + "price": "$129", + "availability_summary": "Size 14 in stock" + } + ], + "total_matching": 12 +} +``` + +This enables hosts to show rich previews before session initiation. + +### Sponsored Context Accountability + +Offering responses and session responses MAY include `sponsored_context` when the returned offering, matching products, message, or UI elements are sponsored context entering the host boundary. The declaration separates three facts: + +| Field | Purpose | +|-------|---------| +| `paying_principal` | Economic accountability: the brand that funded or sponsored the context, with optional seller account/operator context | +| `context_use` | Declared host-side use mode: `presentation_only`, `comparison_set`, or `reasoning_context` | +| `disclosure_obligation` | Disclosure the host must either accept and satisfy or reject before using the context | + +Sponsored context accountability has four handoff points: + +| Handoff point | Accountability fact | +|---------------|---------------------| +| Provider declaration | The brand/seller declares `sponsored_context`, including `paying_principal`, `context_use`, and `disclosure_obligation`, before the context crosses into the host surface. | +| Host receipt | The host records whether it accepted or rejected the sponsored context, and for accepted context, the declared use mode and disclosure commitment it accepted. | +| User-facing disclosure | When `disclosure_obligation.required` is true, the host is accountable for rendering an appropriate disclosure on the user-facing surface before or alongside the sponsored context. | +| Audit evidence | The parties can retain an evidence trail linking the paying principal, declared use mode, disclosure obligation, host receipt, and any rendered disclosure evidence the host records. | + +This model separates **presentation disclosure** from **reasoning influence**. Presentation disclosure is the user-visible label, card treatment, notice, or equivalent disclosure the host renders when required. Reasoning influence is whether the sponsored context may shape a comparison set, ranking, generated answer, plan, or model/orchestration context. `context_use` declares the allowed influence boundary; `disclosure_obligation` declares the user-facing disclosure obligation. + +| `context_use` | Applies when | +|---------------|--------------| +| `presentation_only` | The context is rendered or offered as a distinct labeled unit, such as a sponsored card, answer block, or brand-agent handoff. | +| `comparison_set` | The context forms a sponsored candidate set for comparison, ranking, or selection. This applies naturally to `matching_products`: the returned products may shape comparison even when not every item is rendered. | +| `reasoning_context` | The context is intended to be available to the host model or orchestration layer for answer generation, planning, ranking, or other reasoning. | + +The declaration applies to the returned offering and `matching_products` package as a whole unless a future extension narrows it to individual items. + +Hosts SHOULD retain an audit record linking the `paying_principal`, declared `context_use`, `disclosure_obligation`, and host receipt when they accept or explicitly reject sponsored context. When the host subsequently calls `si_initiate_session` or `si_send_message`, it MAY include `sponsored_context_receipt` to make that decision visible to the brand/seller. The receipt records the receiving-surface accountability fact: whether the host accepted the context, and for accepted receipts, what use mode and disclosure commitment it made. + +For accepted receipts: + +- `accepted_context_use` MUST match the declaration's `context_use` +- `disclosure_commitment.status` MUST be `accepted` when `disclosure_obligation.required` is true +- `disclosure_commitment.status` MAY be `not_required` only when `disclosure_obligation.required` is false + +A host that cannot honor the declared use mode or satisfy a required disclosure obligation MUST reject the sponsored context instead of sending an accepted receipt. + +For rejected receipts, `accepted_context_use` and `disclosure_commitment` MUST be absent. A rejected receipt records that the host did not accept or use the sponsored context, with optional `rejection_reason` explaining why. + +This is a boundary contract. AdCP does not inspect hidden model reasoning, standardize chain-of-thought, or guarantee how a host model internally uses context after receipt. A conforming host that cannot honor the declared use mode or disclosure obligation MUST reject the sponsored context rather than silently down-scope or use it without disclosure. + +## Session Lifecycle + +### Session States + +**Schema**: [`enums/si-session-status.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/si-session-status.json) + +SI sessions progress through the following states. Terminal states (`complete`, `terminated`) allow no further messages. + +| State | Description | +|-------|-------------| +| `active` | Session is in progress and accepting messages | +| `pending_handoff` | Brand agent is requesting handoff to a commerce or external flow | +| `complete` | Session ended normally after successful conversation or handoff | +| `terminated` | Session was ended due to timeout, error, policy violation, or explicit host/user action | + +### Session State Transitions + +``` +si_initiate_session ──▶ active + │ + ├── si_send_message ──▶ pending_handoff + │ │ + │ └── si_terminate_session ──▶ complete (terminal) + │ (handoff_transaction + │ or handoff_complete) + │ + ├── si_send_message ──▶ complete (terminal) + │ (conversation concluded) + │ + └── si_terminate_session ──▶ terminated (terminal) + (user_exit, session_timeout, + or host_terminated) + +Any non-terminal ── si_terminate_session(user_exit/timeout/host) ──▶ terminated +``` + +**Rules:** + +- Brand agents MUST return `session_status: "active"` from `si_initiate_session` on success +- Brand agents MUST return `session_status` on every `si_send_message` response +- When `session_status` is `pending_handoff`, the response MUST include a `handoff` object +- Brand agents MAY transition from `active` to `pending_handoff` on any `si_send_message` response when the conversation reaches a commerce or checkout intent +- Brand agents MAY transition from `active` directly to `complete` on a `si_send_message` response when the conversation has concluded (e.g., question answered, no further action needed) +- Hosts MUST call `si_terminate_session` to end a session. Brand agents MUST accept termination from any non-terminal state. +- Brand agents MUST return `SESSION_NOT_FOUND` for messages sent to an unknown or expired session +- Brand agents MUST return `SESSION_TERMINATED` for messages sent to a session in `complete` or `terminated` state. Brand agents that prioritize minimizing information disclosure MAY return `SESSION_NOT_FOUND` for terminated sessions as well — the recovery path is identical in both cases. +- Terminal states are irreversible — once a session is `complete` or `terminated`, a new session must be initiated + +### Session Timeout + +Sessions SHOULD have a maximum inactivity timeout. Brand agents MAY enforce timeout by transitioning idle sessions to `terminated`. + +- Brand agents SHOULD treat sessions as expired after a period of inactivity (RECOMMENDED: 5 minutes for conversational sessions) +- Brand agents SHOULD return `SESSION_NOT_FOUND` for messages sent to an expired session, rather than silently creating a new session +- Hosts SHOULD track `last_active_at` and warn users before session timeout when possible +- Brand agents MAY include `session_ttl_seconds` in the `si_initiate_session` response to communicate the timeout duration to the host + +### Initiate Session + +The `si_initiate_session` task establishes a new SI session. + +#### Request Requirements + +Hosts MUST include: + +- `intent` - Natural language description of user intent — the conversation handoff from host to brand agent +- `identity` - User identity with consent status + +Hosts SHOULD include: + +- `supported_capabilities` - Host's capability set for negotiation +- `offering_token` - Token from `si_get_offering` if performed + +Hosts MAY include: + +- `media_buy_id` - AdCP media buy ID if triggered by advertising +- `offering_id` - Brand-specific offering to apply +- `placement` - Where this session was triggered +- `sponsored_context_receipt` - Host receipt for sponsored context accepted before session initiation + +#### Response Requirements + +Brand agents MUST return: + +- `session_id` - Unique identifier for this session + +Brand agents SHOULD return: + +- `response.message` - Initial conversational message +- `negotiated_capabilities` - Intersection of brand and host capabilities +- `sponsored_context` - Declaration for sponsored context in the initial brand-agent response + +### Send Message + +The `si_send_message` task exchanges messages within an active session. + +#### Request Requirements + +Hosts MUST include: + +- `session_id` - Active session identifier + +Hosts MUST include one of: + +- `message` - User's text message +- `action_response` - Response to a UI action + +Hosts MAY include: + +- `sponsored_context_receipt` - Host receipt for sponsored context accepted from a prior SI response in this session + +#### Response Requirements + +Brand agents MUST return: + +- `session_id` - The session identifier +- `session_status` - Current session state (`active`, `pending_handoff`, or `complete`) + +Brand agents SHOULD return: + +- `response.message` - Conversational response +- `sponsored_context` - Declaration for sponsored context in the response message or UI elements + +If `session_status` is `pending_handoff`, the response MUST include: + +- `handoff` - Handoff configuration for commerce flow + +### Terminate Session + +The `si_terminate_session` task ends an SI session. + +#### Request Requirements + +Hosts MUST include: + +- `session_id` - Session to terminate +- `reason` - Termination reason + +#### Termination Reasons + +| Reason | Resulting State | Description | +|--------|----------------|-------------| +| `handoff_transaction` | `complete` | User proceeding to purchase; brand agent SHOULD return `acp_handoff` data | +| `handoff_complete` | `complete` | Conversation completed successfully | +| `user_exit` | `terminated` | User ended the session | +| `session_timeout` | `terminated` | Session timed out due to inactivity | +| `host_terminated` | `terminated` | Host ended the session (policy/error) | + +#### Handoff Data + +When `reason` is `handoff_transaction`, the brand agent SHOULD return an `acp_handoff` object in the termination response: + +| Field | Type | Description | +|-------|------|-------------| +| `checkout_url` | uri | Brand's ACP checkout endpoint. Hosts MUST validate this is HTTPS before opening (see Security Considerations). | +| `checkout_token` | string | Opaque token to pass to the checkout endpoint. Correlates the SI session with the transaction. | +| `payload` | object | Rich checkout context (product details, applied offers, pricing). Alternative to `checkout_token` for integrations that need structured data. | +| `expires_at` | datetime | When this handoff data expires. Hosts SHOULD initiate checkout before this time. | + +Brand agents SHOULD include either `checkout_token` or `payload` (or both) so the host can pass session context to the checkout endpoint. + +Brand agents MAY also return a `follow_up` object with post-session context (e.g., summary of what was discussed, next steps). + +## Capability Negotiation + +### Negotiation Process + +1. Brand declares capabilities in SI manifest +2. Host sends supported capabilities in session initiation +3. Brand returns negotiated (intersection) capabilities in response +4. Session uses only negotiated capabilities + +### Capability Categories + +#### Modalities + +Modalities define interaction modes: + +| Modality | Description | Required Support | +|----------|-------------|------------------| +| `conversational` | Text exchange | REQUIRED for all implementations | +| `voice` | Audio-based interaction | OPTIONAL | +| `video` | Video content playback | OPTIONAL | +| `avatar` | Animated video presence | OPTIONAL | + +All SI implementations MUST support `conversational` modality. + +#### Standard Components + +The following components MUST be renderable by all compliant hosts: + +| Component | Purpose | +|-----------|---------| +| `text` | Conversational message | +| `link` | URL with label | +| `image` | Single image | +| `product_card` | Product display with CTA | +| `carousel` | Array of cards/images | +| `action_button` | CTA that triggers callback | + +#### Extension Components + +Hosts MAY support additional components: + +| Component | Purpose | +|-----------|---------| +| `app_handoff` | Platform-specific app handoff | +| `integration_actions` | MCP/A2A installation prompts | + +Brand agents MUST NOT rely on extension components for core functionality. + +## UI Element Requirements + +### Standard Component Data + +Each standard component MUST include the required fields as defined in `si-ui-element.json`: + +**text**: `message` (required) + +**link**: `url`, `label` (required); `preview` (optional) + +**image**: `url`, `alt` (required); `caption` (optional) + +**product_card**: `title`, `price` (required); `subtitle`, `image_url`, `description`, `badge`, `cta` (optional) + +**carousel**: `items` (required); `title` (optional) + +**action_button**: `label`, `action` (required); `payload` (optional) + +### Action Handling + +When a user interacts with an `action_button`: + +1. The host MUST send an `action_response` via `si_send_message` +2. The `action_response` MUST include the `action` identifier +3. The `action_response` SHOULD include the `payload` if provided + +### Integration Actions + +The `integration_actions` component allows brand agents to offer persistent connections: + +```json +{ + "type": "integration_actions", + "data": { + "actions": [ + { "type": "mcp", "label": "Add as MCP Tool", "highlighted": true }, + { "type": "a2a", "label": "Connect via A2A" } + ] + } +} +``` + +Hosts MAY render integration actions if they support the integration type. + +## Identity and Privacy + +### Consent Requirements + +Hosts MUST obtain explicit user consent before sharing identity with brand agents. + +The consent flow MUST: + +1. Clearly identify what data will be shared +2. Reference the brand's privacy policy +3. Allow the user to decline + +### Identity Object + +When consent is granted, the `identity` object MUST include: + +- `consent_granted: true` +- `consent_timestamp` - When consent was obtained +- `consent_scope` - Array of data types consented to +- `privacy_policy_acknowledged.brand_policy_url` + +The `user` object MAY include: + +- `email` +- `name` +- `locale` +- `shipping_address` + +### Anonymous Sessions + +If consent is not granted: + +- `identity.consent_granted` MUST be `false` +- `identity.anonymous_session_id` SHOULD be provided +- No PII MUST be transmitted + +## Commerce Integration + +### ACP Handoff + +When `session_status` is `pending_handoff` with `handoff.type: "transaction"`: + +1. The host SHOULD initiate ACP checkout flow +2. The `handoff.intent` MUST describe the purchase intent +3. The `handoff.context_for_checkout` MAY include conversation context + +### Commerce Actions + +The `action_button` component MAY include commerce actions: + +| Action | Description | +|--------|-------------| +| `acp_checkout` | Initiate ACP checkout | +| `add_to_cart` | Add item to persistent cart | + +## Error Handling + +### Error Response + +Brand agents MUST return errors in the `errors` array using the standard error schema: + +```json +{ + "errors": [ + { + "code": "SESSION_NOT_FOUND", + "message": "Session has expired or does not exist" + } + ] +} +``` + +### Error Codes + +SI uses both standard AdCP error codes and SI-specific codes: + +**Standard AdCP error codes** (from [`enums/error-code.json`](https://adcontextprotocol.org/schemas/3.2.0-beta.4/enums/error-code.json)): + +| Code | Description | +|------|-------------| +| `SESSION_NOT_FOUND` | Session ID is invalid, expired, or does not exist | +| `SESSION_TERMINATED` | Session has been terminated and cannot accept further messages | +| `REFERENCE_NOT_FOUND` | Generic fallback when the referenced SI offering, proposal, or other resource does not exist or is not accessible. Returned uniformly for both cases — see [Uniform response for inaccessible references](/dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling#standard-error-codes) | +| `RATE_LIMITED` | Too many requests | +| `SERVICE_UNAVAILABLE` | Brand agent is temporarily unavailable | + +**SI-specific codes** (brand agents MAY return these for SI-specific errors): + +| Code | Description | +|------|-------------| +| `offer_unavailable` | Referenced offer is no longer available | +| `capability_unsupported` | Required capability not available | + +## Security Considerations + +### Transport Security + +All SI communications MUST use HTTPS with TLS 1.2 or higher. + +### Token Security + +- Availability tokens MUST be opaque and unpredictable +- Session IDs MUST be unique and unpredictable +- Tokens SHOULD expire within a reasonable timeframe + +### Handoff URL Validation + +Hosts MUST validate `checkout_url` in `acp_handoff` data before presenting it to users. Hosts SHOULD restrict to `https` scheme and MAY verify the domain matches the brand agent's registered domain. Hosts MUST NOT open `javascript:`, `data:`, or other non-HTTPS URIs from handoff data. + +### Data Minimization + +- Hosts MUST NOT send PII without consent +- Brand agents SHOULD minimize data collection +- Session data SHOULD be deleted after termination + +## Conformance + +### Host Conformance + +A conformant SI host MUST: + +1. Support MCP transport +2. Render all standard components +3. Implement session lifecycle (initiate, send, terminate) +4. Obtain consent before sharing identity +5. Support capability negotiation + +### Brand Agent Conformance + +A conformant SI brand agent MUST: + +1. Publish an SI manifest +2. Support at least one specified transport +3. Support conversational modality +4. Return valid session IDs +5. Handle all termination reasons + +## Version History + +| Version | Date | Changes | +|---------|------|---------| +| 1.0.0 | 2025-01 | Initial specification | diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/index.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/index.mdx new file mode 100644 index 0000000000..0563c3d576 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/index.mdx @@ -0,0 +1,123 @@ +--- +title: Sponsored Intelligence Tasks +sidebarTitle: Task Reference +description: "AdCP Sponsored Intelligence task reference. Four tasks covering the full session lifecycle: si_get_offering, si_initiate_session, si_send_message, and si_terminate_session with MCP and A2A transport examples." +"og:title": "AdCP — Sponsored Intelligence Tasks" +--- + +<Note> +**Experimental.** Sponsored Intelligence ([`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering), [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message), [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +The Sponsored Intelligence Protocol defines four tasks for managing conversational brand experiences: + +## Session Lifecycle + +```mermaid +flowchart LR + P[si_get_offering] -.-> A[si_initiate_session] + A --> B[si_send_message] + B --> B + B --> C[si_terminate_session] + A --> C +``` + +### Two Entry Points + +**With pre-session lookup** (dotted line): Host calls [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering) first to show products before consent. The `offering_token` carries what was shown into the session. + +**Direct session** (solid line): Host calls [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) directly. Brand agent shows products as part of the conversation and tracks them internally. + +Both are valid. Use pre-session lookup for sponsored search results where you want to preview products before asking the user to engage. + +## Tasks + +| Task | Description | Initiator | +|------|-------------|-----------| +| [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering) | Get offering details, availability, and matching products (anonymous) | Host | +| [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) | Start a conversation with a brand agent | Host | +| [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message) | Exchange messages within an active session | Host | +| [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session) | End the session with appropriate handoff | Either | + +## Transport Options + +SI tasks work over both MCP and A2A protocols: + +### MCP Transport + +```json +{ + "method": "tools/call", + "params": { + "name": "si_initiate_session", + "arguments": { + "intent": "User wants to fly to Boston next Tuesday morning", + "identity": { /* ... */ } + } + } +} +``` + +### A2A Transport + +```json +{ + "task": "si_initiate_session", + "payload": { + "intent": "User wants to fly to Boston next Tuesday morning", + "identity": { /* ... */ } + } +} +``` + +## Common Patterns + +### Minimal Session (No Identity) + +For anonymous browsing without personalization: + +```json +{ + "intent": "User interested in product information", + "identity": { + "consent_granted": false, + "anonymous_session_id": "anon_xyz789" + } +} +``` + +### Full Identity Session + +For personalized experiences with consented PII: + +```json +{ + "intent": "User wants to book a flight", + "identity": { + "consent_granted": true, + "consent_timestamp": "2026-01-18T10:30:00Z", + "consent_scope": ["name", "email", "shipping_address"], + "user": { + "email": "jane@example.com", + "name": "Jane Smith" + } + } +} +``` + +### Campaign-Triggered Session + +When SI is invoked as part of a media buy: + +```json +{ + "intent": "User searching for flights to Boston", + "media_buy_id": "media_buy_q1_promo", + "placement": "chatgpt_search", + "offering_id": "premium_upgrade_offer", + "identity": { + "consent_granted": true, + "user": { "email": "jane@example.com" } + } +} +``` diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering.mdx new file mode 100644 index 0000000000..35dc7fd228 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering.mdx @@ -0,0 +1,408 @@ +--- +title: si_get_offering +description: "si_get_offering is the AdCP task for anonymous pre-session offering lookups. Retrieve offering details, matching products, and an offering token for session continuity — without requiring user PII." +"og:title": "AdCP — si_get_offering" +--- + +<Note> +**Experimental.** Sponsored Intelligence (`si_get_offering`, [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message), [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +Get offering details, availability, and optionally matching products before initiating a session. This allows hosts to show rich previews to users before asking for consent to engage with the brand. + +## When to Use This Task + +There are two valid flows for starting an SI session: + +### Flow A: Pre-Session Lookup (Recommended for Sponsored Results) + +``` +si_get_offering → Host shows products → User consents → si_initiate_session with offering_token +``` + +Use this when you want to show the user products **before** asking for consent. The `offering_token` bridges what was shown into the session, so references like "the second one" work. + +**Example**: Search results page shows "Nike has 3 running shoes in your size from \$89" before the user decides to engage. + +### Flow B: Direct Session + +``` +si_initiate_session → Brand shows products in first response → Conversation continues +``` + +Use this when the user has already expressed intent to engage. The brand agent shows products as part of the session, tracking what they showed internally. + +**Example**: User says "I want to talk to Nike about running shoes" - no need to pre-fetch, just start the session. + +The key difference: `si_get_offering` is for **anonymous pre-consent previews**. If you're going straight into a session, skip it. + +## Purpose + +The offering lookup serves three purposes: + +1. **Show offering details** - Display pricing, availability, and descriptions to users before consent +2. **Surface matching products** - When given an `intent`, return relevant products from the offering +3. **Session continuity** - The returned token preserves what was shown, so the brand agent knows what the user already saw when the session starts + +## Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `offering_id` | string | Yes | Offering identifier from the catalog | +| `intent` | string | No | Natural language description of user intent for personalized results (no PII) | +| `include_products` | boolean | No | Whether to include matching products (default: false) | +| `product_limit` | integer | No | Max products to return (default: 5, max: 50) | +| `context` | object | No | Opaque correlation data echoed unchanged in the response | + +### Privacy + +This request must not include any personally identifiable information. The `intent` field describes what the user is looking for but must be anonymous (e.g., "mens size 14 near Cincinnati" is OK, but email addresses are not). + +## Response + +| Field | Type | Description | +|-------|------|-------------| +| `available` | boolean | Whether the offering is currently available | +| `offering_token` | string | Token to pass to [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) | +| `ttl_seconds` | integer | How long this information is valid | +| `checked_at` | string | ISO 8601 timestamp of the lookup | +| `offering` | object | Offering details | +| `matching_products` | array | Products matching the intent (if requested) | +| `sponsored_context` | object | Sponsored-context declaration for the returned offering and matching-products package | +| `total_matching` | integer | Total products matching (may exceed returned count) | +| `unavailable_reason` | string | Why offering is unavailable (if not available) | +| `alternative_offering_ids` | array | Alternative offerings to check | + +### Offering Object + +| Field | Type | Description | +|-------|------|-------------| +| `offering_id` | string | Offering identifier | +| `title` | string | Offering title | +| `summary` | string | Brief description | +| `tagline` | string | Short promotional tagline | +| `expires_at` | string | When the offering expires | +| `availability_status` | string | Machine-readable availability state (enum: `available`, `limited`, `sold_out`, `expired`, `region_restricted`, `inactive`). Optional; aligns to the Unavailable Reasons vocabulary below. | +| `price_hint` | string | Price indication (e.g., "from \$89") | +| `image_url` | string | Hero image URL | +| `landing_url` | string | Landing page URL | + +### Matching Product Object + +| Field | Type | Description | +|-------|------|-------------| +| `product_id` | string | Product identifier | +| `name` | string | Product name | +| `price` | string | Display price | +| `original_price` | string | Original price if on sale | +| `image_url` | string | Product image URL | +| `availability_summary` | string | Brief availability info | +| `availability_status` | string | Machine-readable availability state (same enum as the offering field). Optional; structured counterpart to `availability_summary`. | +| `url` | string | Product detail page URL | + +### Sponsored Context Object + +When the returned offering or `matching_products` are sponsored context entering the host boundary, include `sponsored_context` at the response level. It applies to the returned package as a whole: + +| Field | Type | Description | +|-------|------|-------------| +| `paying_principal` | object | Brand economically accountable for the sponsored context, with optional seller account/operator context | +| `context_use` | string | Declared host-side use mode: `presentation_only`, `comparison_set`, or `reasoning_context` | +| `disclosure_obligation` | object | Disclosure the host must either accept and satisfy or reject before using the context | + +Use `context_use: "comparison_set"` when `matching_products` are a sponsored candidate set for comparison, ranking, or selection. Use `presentation_only` for a distinct sponsored unit or handoff, and `reasoning_context` only when the context is intended to be available to host answer generation, planning, ranking, or other reasoning. Hosts that accept the package can include `sponsored_context_receipt` on the subsequent `si_initiate_session` request so the audit trail links the paying principal, declared use mode, disclosure obligation, and host receipt. + +### Unavailable Reasons + +| Reason | Description | +|--------|-------------| +| `sold_out` | Product/offering inventory exhausted | +| `expired` | Offering past its end date | +| `region_restricted` | Not available in user's region | +| `inactive` | Campaign paused or ended | + +## Examples + +### Basic Offering Lookup + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-request.json", + "offering_id": "nike-summer-sale" +} +``` + +### Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-response.json", + "status": "completed", + "available": true, + "offering_token": "offering_abc123xyz", + "ttl_seconds": 3600, + "checked_at": "2025-01-19T10:00:00Z", + "offering": { + "offering_id": "nike-summer-sale", + "title": "Nike Summer Sale", + "summary": "Up to 50% off summer collection", + "price_hint": "from $89", + "expires_at": "2025-08-31T23:59:59Z" + } +} +``` + +### With Product Context + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-request.json", + "offering_id": "nike-summer-sale", + "intent": "mens size 14 running shoes near Cincinnati", + "include_products": true, + "product_limit": 3 +} +``` + +### Response with Products + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-response.json", + "status": "completed", + "available": true, + "offering_token": "offering_abc123xyz", + "ttl_seconds": 3600, + "checked_at": "2025-01-19T10:00:00Z", + "offering": { + "offering_id": "nike-summer-sale", + "title": "Nike Summer Sale", + "summary": "Up to 50% off summer collection", + "price_hint": "from $89" + }, + "matching_products": [ + { + "product_id": "nike-pegasus-41", + "name": "Nike Pegasus 41", + "price": "$89", + "original_price": "$130", + "image_url": "https://cdn.nike.com/pegasus-41.jpg", + "availability_summary": "Size 14 in stock" + }, + { + "product_id": "nike-air-max-90", + "name": "Nike Air Max 90", + "price": "$129", + "image_url": "https://cdn.nike.com/air-max-90.jpg", + "availability_summary": "Size 14 in stock" + } + ], + "total_matching": 12 +} +``` + +This enables the host to show: + +> "Nike has 12 running shoes in your size starting at \$89. Want to explore with their assistant?" + +### Response with Sponsored Context + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-response.json", + "status": "completed", + "available": true, + "offering_token": "offering_abc123xyz", + "matching_products": [ + { + "product_id": "trail-pace-14", + "name": "Trail Pace 14", + "price": "$89", + "availability_summary": "Size 14 in stock" + } + ], + "sponsored_context": { + "paying_principal": { + "brand": { "domain": "acme-running.example" }, + "display_name": "Acme Running" + }, + "context_use": "comparison_set", + "disclosure_obligation": { + "required": true, + "label_text": "Sponsored results from Acme Running", + "timing": "near_each_influenced_output", + "proximity": "near_influenced_output" + }, + "declared_by": { + "agent_url": "https://agent.acme-running.example/si", + "role": "brand_agent" + }, + "declared_at": "2025-01-19T10:00:00Z" + }, + "total_matching": 1 +} +``` + +### Unavailable Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-get-offering-response.json", + "status": "completed", + "available": false, + "checked_at": "2025-01-19T10:00:00Z", + "unavailable_reason": "expired", + "alternative_offering_ids": [ + "nike-fall-collection", + "nike-clearance" + ] +} +``` + +## Using the Offering Token + +The `offering_token` is the key to **session continuity**. When a user sees products from `si_get_offering` and then initiates a conversation, the token allows the brand agent to know exactly what was shown. + +### Why Session Continuity Matters + +Without the token, this conversation breaks: + +``` +Host: "Nike has 3 running shoes in size 14: Pegasus 41 ($89), Air Max 90 ($129), Vomero 18 ($139)" +User: "Tell me more about the second one" +Host → si_initiate_session: { intent: "User wants more info about the second shoe" } +Brand Agent: ??? (Which shoes were shown? In what order?) +``` + +With the token, the brand agent can reconstruct the full context: + +``` +Host → si_initiate_session: { + intent: "User wants more info about the second shoe", + offering_token: "offering_abc123xyz" +} +Brand Agent: (Looks up token → sees Pegasus, Air Max, Vomero were shown in that order) +Brand Agent: "The Air Max 90 is a classic! It's part of our summer sale..." +``` + +### How Brand Agents Should Use Tokens + +When generating an `offering_token`, store the full query state server-side: + +```typescript +// When returning si_get_offering response +const token = generateToken(); +await store.save(token, { + offering_id: request.offering_id, + intent: request.intent, + products_shown: matchingProducts, // In exact order returned + product_ids: matchingProducts.map(p => p.product_id), + queried_at: new Date().toISOString(), + ttl: 3600 +}); + +return { + available: true, + offering_token: token, + matching_products: matchingProducts, + // ... +}; +``` + +When receiving the token in [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session): + +```typescript +// Retrieve the pre-session context +const preContext = await store.get(request.offering_token); +if (preContext) { + // Now you know exactly what was shown + // "the second one" = preContext.products_shown[1] +} +``` + +### Including the Token in Session Initiation + +When initiating a session after getting offering details, include the token: + +```json +{ + "intent": "User wants running shoes, mens size 14", + "offering_id": "nike-summer-sale", + "offering_token": "offering_abc123xyz", + "identity": { + "consent_granted": true, + "user": { ... } + } +} +``` + +When the offering response included `sponsored_context` and the host accepted it, the host can also include a receipt: + +```json +{ + "intent": "User wants more detail about the sponsored trail shoe preview", + "offering_token": "offering_abc123xyz", + "sponsored_context_receipt": { + "sponsored_context": { + "paying_principal": { + "brand": { "domain": "acme-running.example" }, + "display_name": "Acme Running" + }, + "context_use": "comparison_set", + "disclosure_obligation": { + "required": true, + "label_text": "Sponsored results from Acme Running" + } + }, + "host_receipt": { + "status": "accepted", + "accepted_context_use": "comparison_set", + "received_at": "2025-01-19T10:00:02Z", + "host_surface": "assistant_comparison", + "disclosure_commitment": { + "status": "accepted", + "label_text": "Sponsored results from Acme Running" + } + } + } +} +``` + +An accepted receipt means the host honored the declaration. `accepted_context_use` must match the original `context_use`, and `disclosure_commitment.status` must be `accepted` when the declaration required disclosure. If the host cannot honor either condition, it rejects the sponsored context instead of sending an accepted receipt. A rejected receipt may still be sent to make the rejection audit-visible, but it must omit `accepted_context_use` and `disclosure_commitment`. + +## Key Points + +1. **Anonymous by design** - No user data is sent with offering lookups. This protects user privacy while enabling hosts to show rich previews. + +2. **Session continuity** - The offering token is the brand's memory of what was shown. When users reference "the first option" or "that blue one", the token lets the brand agent resolve those references. + +3. **Product matching** - When `include_products` is true and `intent` is provided, brands can return relevant products. This powers pre-session previews like "12 shoes in your size from \$89." + +4. **Sponsored context accountability** - `sponsored_context` declares the paying principal, intended use mode, and disclosure obligation for returned sponsored context. Hosts that accept it should record a `sponsored_context_receipt`. + +5. **Caching** - Hosts may cache responses for up to `ttl_seconds`. This reduces load on brand agents for frequently checked offerings. + +6. **Graceful degradation** - If the lookup fails or times out, hosts may still initiate sessions directly. The offering lookup is optional. + +7. **Alternative suggestions** - When offerings are unavailable, brand agents may suggest alternatives via `alternative_offering_ids`. + +## Best Practices + +### For Hosts + +- Get offering details before showing sponsored results to users +- Use `include_products` with an `intent` for richer previews +- Honor or reject `sponsored_context` before using matching products for presentation, comparison, or reasoning context +- Retain a receipt linking `paying_principal`, `context_use`, disclosure obligation, and host acceptance +- Respect TTL for caching to avoid stale data +- Handle unavailable gracefully - don't show expired offerings +- Include offering token in session initiation when available + +### For Brand Agents + +- Return rich `offering` details to help hosts display accurate information +- Support `include_products` for contextual product matching +- Attach `sponsored_context` when returned products or offering details are sponsored context entering the host boundary +- Use reasonable TTL values (e.g., 5-60 minutes depending on volatility) +- Provide helpful `unavailable_reason` for debugging +- Suggest alternatives when primary offering is unavailable diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session.mdx new file mode 100644 index 0000000000..7693b0495c --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session.mdx @@ -0,0 +1,239 @@ +--- +title: si_initiate_session +description: "si_initiate_session is the AdCP task that starts a Sponsored Intelligence session. Pass user intent, consented identity, and host capabilities to a brand agent and receive a personalized response." +"og:title": "AdCP — si_initiate_session" +--- + +<Note> +**Experimental.** Sponsored Intelligence ([`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering), `si_initiate_session`, [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message), [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +Start a conversational session with a brand agent. The host platform invokes this task when a user expresses interest in engaging with a brand. + +## Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `intent` | string | Yes | Natural language description of user intent — the conversation handoff from the host | +| `identity` | object | Yes | User identity with consent status | +| `media_buy_id` | string | No | AdCP media buy ID if triggered by advertising | +| `placement` | string | No | Where the session was triggered (e.g., "chatgpt_search") | +| `offering_id` | string | No | Brand-specific offering reference to apply | +| `supported_capabilities` | object | No | What the host platform supports | +| `offering_token` | string | No | Token from [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering) for correlation | +| `sponsored_context_receipt` | object | No | Host receipt for sponsored context accepted before session initiation | +| `context` | object | No | Opaque correlation data echoed unchanged in the response (see [application context](/dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions#application-context-context)) | + +### Offering Token + +If a host performed a [`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering) lookup before initiating, include the token for **session continuity**: + +```json +{ + "offering_token": "offering_abc123xyz" +} +``` + +The token lets the brand agent know exactly what products were shown to the user (and in what order). This enables natural conversation flow: + +- User sees: "Nike Pegasus (\$89), Air Max (\$129), Vomero (\$139)" +- User says: "Tell me more about the middle one" +- Brand agent resolves "middle one" → Air Max via the token's stored context + +### Sponsored Context Receipt + +If the host accepted or explicitly rejected sponsored context from a pre-session lookup, include `sponsored_context_receipt` to make the host's boundary decision visible to the brand/seller: + +```json +{ + "offering_token": "offering_abc123xyz", + "sponsored_context_receipt": { + "sponsored_context": { + "paying_principal": { + "brand": { "domain": "acme-running.example" }, + "display_name": "Acme Running" + }, + "context_use": "comparison_set", + "disclosure_obligation": { + "required": true, + "label_text": "Sponsored results from Acme Running" + } + }, + "host_receipt": { + "status": "accepted", + "accepted_context_use": "comparison_set", + "received_at": "2025-01-19T10:00:02Z", + "host_surface": "assistant_comparison", + "disclosure_commitment": { + "status": "accepted", + "label_text": "Sponsored results from Acme Running" + } + } + } +} +``` + +The receipt records whether the host accepted or rejected the sponsored context. For accepted receipts, it records what the host committed to honor. It does not assert that AdCP can inspect hidden model reasoning. + +| Receipt field | Description | +|---------------|-------------| +| `sponsored_context` | Sender declaration being acknowledged: paying principal, declared use mode, and disclosure obligation | +| `host_receipt.status` | `accepted` when the host honored the declaration; `rejected` when it did not use the context | +| `host_receipt.accepted_context_use` | Required for accepted receipts; must match the declaration's `context_use` | +| `host_receipt.disclosure_commitment` | Required for accepted receipts; records the host's disclosure commitment | +| `host_receipt.rejection_reason` | Optional explanation when the host rejects the sponsored context | + +An accepted receipt cannot down-scope the use mode or decline a required disclosure. A host that cannot honor either condition rejects the sponsored context instead. Rejected receipts must omit `accepted_context_use` and `disclosure_commitment`. + +### Identity Object + +When `consent_granted` is `true`: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `consent_granted` | boolean | Yes | Must be `true` | +| `consent_timestamp` | string | Yes | ISO 8601 timestamp of consent | +| `consent_scope` | array | Yes | Fields the user agreed to share | +| `privacy_policy_acknowledged` | object | No | Brand policy user accepted | +| `user` | object | Yes | User's PII | + +When `consent_granted` is `false`: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `consent_granted` | boolean | Yes | Must be `false` | +| `anonymous_session_id` | string | Yes | Unique ID for this anonymous session | + +### Supported Capabilities Object + +Declares what the host platform can render: + +```json +{ + "modalities": { + "conversational": true, + "voice": { "providers": ["elevenlabs", "openai"] }, + "video": false, + "avatar": false + }, + "components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"], + "extensions": { + "chatgpt_apps_sdk": "1.0" + } + }, + "commerce": { + "acp_checkout": true + } +} +``` + +## Response + +| Field | Type | Description | +|-------|------|-------------| +| `session_id` | string | Unique identifier for this session | +| `response` | object | Brand agent's initial response | +| `negotiated_capabilities` | object | Intersection of brand and host capabilities | +| `sponsored_context` | object | Sponsored-context declaration for sponsored context in the initial response | + +### Response Object + +| Field | Type | Description | +|-------|------|-------------| +| `message` | string | Text response from brand agent | +| `ui_elements` | array | Visual components to render | + +## Example + +### Request + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-initiate-session-request.json", + "idempotency_key": "f6a7b8c9-d0e1-4234-f567-234567890123", + "intent": "User wants to fly to Boston next Tuesday morning on flight 632 at 6 AM.", + "media_buy_id": "delta_q1_premium_upgrade", + "placement": "chatgpt_search", + "offering_id": "delta_chatgpt_3313", + "identity": { + "consent_granted": true, + "consent_timestamp": "2026-01-18T10:30:00Z", + "consent_scope": ["name", "email"], + "privacy_policy_acknowledged": { + "brand_policy_url": "https://delta.com/privacy", + "brand_policy_version": "2026-01" + }, + "user": { + "email": "jane@example.com", + "name": "Jane Smith", + "locale": "en-US" + } + }, + "supported_capabilities": { + "modalities": { + "conversational": true, + "voice": true + }, + "components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"] + }, + "commerce": { + "acp_checkout": true + } + } +} +``` + +### Response + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/sponsored-intelligence/si-initiate-session-response.json", + "status": "completed", + "session_id": "sess_abc123", + "session_status": "active", + "response": { + "message": "Hi Jane! I found DL632 departing at 6:15 AM next Tuesday. Great news—as a SkyMiles Gold member, you qualify for our free Premium Economy upgrade on this flight.", + "ui_elements": [ + { + "type": "product_card", + "data": { + "title": "DL632 to Boston - Tue Jan 27", + "subtitle": "6:15 AM → 9:42 AM (3h 27m)", + "price": "$199", + "badge": "Free Premium Economy Upgrade", + "image_url": "https://delta.com/images/premium-economy.jpg", + "cta": { "label": "Book with Upgrade", "action": "checkout" } + } + } + ] + }, + "negotiated_capabilities": { + "modalities": { + "conversational": true, + "voice": true + }, + "components": { + "standard": ["text", "link", "image", "product_card", "carousel", "action_button"] + }, + "commerce": { + "acp_checkout": true + } + } +} +``` + +## Key Points + +1. **`intent` is the conversation handoff** - The host tells the brand agent what the user needs in natural language. The brand agent responds naturally, continuing the conversation. `context` is a separate, optional field: an opaque object (e.g., `{"trace_id": "abc-123"}`) that the brand agent echoes back unchanged — used by the buyer for correlation, never parsed by the brand agent. + +2. **Brand looks up loyalty data** - If Jane's email is recognized, Delta retrieves her SkyMiles status automatically. Hosts don't store loyalty numbers. + +3. **offering_id is brand-specific** - The brand interprets this reference to apply promotions, discounts, or loyalty rewards. Hosts pass it through without needing to understand offering semantics. + +4. **Capability negotiation** - The response includes `negotiated_capabilities` showing what features this session can use (intersection of brand and host capabilities). + +5. **Sponsored context receipt** - When a session follows a sponsored preflight lookup, `sponsored_context_receipt` records the host's accepted use mode and disclosure commitment. This is a boundary acceptance record, not a claim about hidden model reasoning. + +6. **Clear PII with explicit consent** - When `consent_granted` is true, actual email/name are passed (not hashed). This is a direct, consented handoff. diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message.mdx new file mode 100644 index 0000000000..29387360a0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message.mdx @@ -0,0 +1,224 @@ +--- +title: si_send_message +description: "si_send_message is the AdCP task for exchanging messages in an active SI session. Relay user text or action responses to the brand agent and handle active, pending_handoff, or complete session states." +"og:title": "AdCP — si_send_message" +--- + +<Note> +**Experimental.** Sponsored Intelligence ([`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering), [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), `si_send_message`, [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session)) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +Send a message within an active SI session. The host invokes this task to relay user messages and action responses to the brand agent. + +## Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `session_id` | string | Yes | Session ID from [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) | +| `message` | string | No | User's text message | +| `action_response` | object | No | Response to a UI action (button click, form submit) | +| `sponsored_context_receipt` | object | No | Host receipt for sponsored context accepted or explicitly rejected from a prior SI response | + +At least one of `message` or `action_response` must be provided. + +### Action Response Object + +When the user interacts with a UI element: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `action` | string | Yes | The action identifier from the UI element | +| `element_id` | string | No | ID of the specific UI element | +| `payload` | object | No | Additional data from the interaction | + +## Response + +| Field | Type | Description | +|-------|------|-------------| +| `session_id` | string | Confirms the active session | +| `response` | object | Brand agent's response | +| `session_status` | string | Current session state | +| `sponsored_context` | object | Sponsored-context declaration for sponsored context in this response | +| `handoff` | object | Present when session_status is "pending_handoff" | + +### Sponsored Context Receipts + +If a prior [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session) or `si_send_message` response included `sponsored_context`, the host decides whether it can honor the declared `context_use` and `disclosure_obligation` before presenting, comparing, or otherwise using that context. On a subsequent `si_send_message` request, the host MAY include `sponsored_context_receipt` alongside a normal `message` or `action_response` to make that decision visible to the brand/seller. + +For accepted receipts, `accepted_context_use` must match the declaration's `context_use`, and `disclosure_commitment.status` must be `accepted` when disclosure was required. For rejected receipts, omit `accepted_context_use` and `disclosure_commitment`; use `rejection_reason` when the host wants to explain why the context was not accepted or used. + +When a `si_send_message` response includes new `sponsored_context`, the same acceptance or rejection decision applies before the host uses that response context on the receiving surface. The host can include the receipt on the next turn, or retain it in its own audit record when there is no next SI call. + +### Session Status Values + +| Status | Description | +|--------|-------------| +| `active` | Session continues normally | +| `pending_handoff` | Brand agent signals readiness to hand off | +| `complete` | Conversation is done | + +### Handoff Object + +When `session_status` is `pending_handoff`: + +| Field | Type | Description | +|-------|------|-------------| +| `type` | string | "transaction" or "complete" | +| `intent` | object | For transactions: what the user wants to buy | +| `context_for_checkout` | object | Summary for ACP handoff | + +## Examples + +### Simple Message Exchange + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "message": "Do you have any earlier flights?" +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "response": { + "message": "Yes! There's DL628 departing at 5:30 AM. It's a bit earlier but also qualifies for the Premium Economy upgrade.", + "ui_elements": [ + { + "type": "carousel", + "data": { + "items": [ + { + "title": "DL628 - 5:30 AM", + "subtitle": "Arrives 8:57 AM", + "price": "$199", + "badge": "Free Upgrade" + }, + { + "title": "DL632 - 6:15 AM", + "subtitle": "Arrives 9:42 AM", + "price": "$199", + "badge": "Free Upgrade" + } + ] + } + } + ] + }, + "session_status": "active" +} +``` + +### Action Response (Button Click) + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "action_response": { + "action": "select_flight", + "payload": { + "flight_number": "DL628", + "departure_time": "05:30" + } + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "response": { + "message": "Great choice! DL628 is confirmed with your Premium Economy upgrade. Ready to book?", + "ui_elements": [ + { + "type": "product_card", + "data": { + "title": "DL628 to Boston", + "subtitle": "Tue Jan 27, 5:30 AM → 8:57 AM", + "price": "$199", + "badge": "Premium Economy", + "cta": { "label": "Book Now", "action": "checkout" } + } + } + ] + }, + "session_status": "active" +} +``` + +### Transaction Handoff + +When the user is ready to purchase: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "action_response": { + "action": "checkout" + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "response": { + "message": "Perfect! I'll hand you back to complete the booking." + }, + "session_status": "pending_handoff", + "handoff": { + "type": "transaction", + "intent": { + "action": "purchase", + "product": { + "type": "flight", + "flight_number": "DL628", + "departure": "2026-01-27T05:30:00-05:00", + "arrival": "2026-01-27T08:57:00-05:00", + "origin": "JFK", + "destination": "BOS", + "class": "premium_economy" + }, + "price": { + "amount": 199, + "currency": "USD" + } + }, + "context_for_checkout": { + "conversation_summary": "Jane selected DL628 JFK→BOS on Jan 27 with free Premium Economy upgrade via campaign offer", + "applied_offers": ["delta_chatgpt_3313"] + } + } +} +``` + +## Handling Handoffs + +When you receive `session_status: "pending_handoff"`: + +1. **For `type: "transaction"`** - Initiate ACP checkout with the provided intent and context +2. **For `type: "complete"`** - The conversation is done; return to normal chat + +The host should call [`si_terminate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session) after handling the handoff to properly close the session. + +## Key Points + +1. **Message or action_response** - Each request needs at least one. Users can type messages or interact with UI elements. + +2. **Session status drives flow** - Check `session_status` on every response to know if the conversation continues or needs handoff. + +3. **Handoff preserves context** - The `context_for_checkout` object gives ACP everything needed for a seamless purchase experience. + +4. **UI elements are optional** - Brand agent decides when to include cards, carousels, etc. based on the conversation. diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session.mdx new file mode 100644 index 0000000000..a33b0c3395 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session.mdx @@ -0,0 +1,288 @@ +--- +title: si_terminate_session +description: "si_terminate_session is the AdCP task for ending an SI session. Supports five termination reasons including transaction handoff to ACP, with follow-up suggestions and checkout context for commerce." +"og:title": "AdCP — si_terminate_session" +--- + +<Note> +**Experimental.** Sponsored Intelligence ([`si_get_offering`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering), [`si_initiate_session`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message), `si_terminate_session`) is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing any of these tasks MUST declare `sponsored_intelligence.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +End an SI session. Either the host or brand agent can initiate termination, with different reasons indicating how the session concluded. + +## Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `session_id` | string | Yes | Session ID to terminate | +| `reason` | string | Yes | Why the session is ending | +| `termination_context` | object | No | Additional context for the termination | + +### Termination Reasons + +| Reason | Meaning | Typical Initiator | +|--------|---------|-------------------| +| `handoff_transaction` | User wants to complete a purchase | Brand agent (via pending_handoff) | +| `handoff_complete` | Conversation naturally concluded | Brand agent | +| `user_exit` | User explicitly ended the conversation | Host | +| `session_timeout` | Inactivity timeout reached | Host | +| `host_terminated` | Host ended for policy/error reasons | Host | + +### Termination Context Object + +Additional details vary by reason: + +**For `handoff_transaction`:** +```json +{ + "intent": { /* purchase intent from handoff */ }, + "context_for_checkout": { /* ACP context */ } +} +``` + +**For `user_exit`:** +```json +{ + "user_signal": "changed_topic", + "partial_context": { /* what was discussed */ } +} +``` + +**For `session_timeout`:** +```json +{ + "last_activity": "2026-01-18T10:30:00Z", + "timeout_seconds": 300 +} +``` + +## Response + +| Field | Type | Description | +|-------|------|-------------| +| `session_id` | string | Confirms which session was terminated | +| `terminated` | boolean | Always `true` on success | +| `acp_handoff` | object | Present for transaction handoffs | +| `follow_up` | object | Optional actions for future engagement | + +### ACP Handoff Object + +For transaction terminations, includes data needed for ACP checkout: + +| Field | Type | Description | +|-------|------|-------------| +| `checkout_url` | uri | Brand's ACP checkout endpoint. Hosts MUST validate this is HTTPS. | +| `checkout_token` | string | Opaque token to pass to the checkout endpoint | +| `payload` | object | Rich checkout context (product details, applied offers, pricing). Alternative to `checkout_token` for structured data. | +| `expires_at` | datetime | When this handoff data expires | + +### Follow-Up Object + +Suggestions for future engagement: + +| Field | Type | Description | +|-------|------|-------------| +| `suggested_action` | string | What the host might do next | +| `data` | object | Relevant data for the action | +| `message` | string | Optional message to display | + +## Examples + +### Transaction Handoff + +After receiving `pending_handoff` with `type: "transaction"`: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "reason": "handoff_transaction", + "termination_context": { + "intent": { + "action": "purchase", + "product": { + "type": "flight", + "flight_number": "DL628" + } + } + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "terminated": true, + "acp_handoff": { + "checkout_url": "https://delta.com/acp/checkout", + "payload": { + "session_id": "sess_abc123", + "flight": "DL628", + "passenger": { + "email": "jane@example.com", + "name": "Jane Smith" + }, + "applied_offers": ["delta_chatgpt_3313"], + "price": { + "amount": 199, + "currency": "USD" + } + }, + "expires_at": "2026-01-18T11:00:00Z" + } +} +``` + +### Conversation Complete (No Purchase) + +When the conversation naturally ends without a transaction: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "reason": "handoff_complete" +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "terminated": true, + "follow_up": { + "suggested_action": "save_for_later", + "data": { + "flights_discussed": ["DL628", "DL632"], + "destination": "BOS", + "travel_date": "2026-01-27" + }, + "message": "Let me know if you'd like to revisit Boston flights later!" + } +} +``` + +### User Exit + +When the user changes topic or explicitly leaves: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "reason": "user_exit", + "termination_context": { + "user_signal": "changed_topic", + "partial_context": { + "flights_viewed": ["DL628"], + "last_topic": "seat selection" + } + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "terminated": true, + "follow_up": { + "suggested_action": "remind_later", + "data": { + "incomplete_booking": { + "flight": "DL628", + "step": "seat_selection" + } + } + } +} +``` + +### Session Timeout + +When the session times out due to inactivity: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "reason": "session_timeout", + "termination_context": { + "last_activity": "2026-01-18T10:25:00Z", + "timeout_seconds": 300 + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "terminated": true +} +``` + +### Host Terminated + +When the host ends the session for policy or error reasons: + +**Request:** + +```json +{ + "session_id": "sess_abc123", + "reason": "host_terminated", + "termination_context": { + "cause": "user_left_app" + } +} +``` + +**Response:** + +```json +{ + "session_id": "sess_abc123", + "terminated": true +} +``` + +## ACP Integration Flow + +When the reason is `handoff_transaction`: + +```mermaid +sequenceDiagram + participant H as Host + participant B as Brand Agent + participant A as ACP + + H->>B: si_terminate_session(handoff_transaction) + B->>H: { acp_handoff: { checkout_url, checkout_token/payload } } + H->>A: Initiate checkout with token/payload + A->>H: Checkout flow +``` + +1. Host receives `acp_handoff` in the termination response +2. Host initiates ACP checkout using the provided `checkout_url` and `checkout_token` or `payload` +3. ACP handles the transaction while maintaining the user's trust with the host +4. Brand is not the merchant of record - ACP handles payment + +## Key Points + +1. **Always terminate sessions** - Even if the conversation seems done, call terminate to clean up resources and get follow-up suggestions. + +2. **ACP handoff data has expiration** - The `expires_at` field indicates how long the checkout context is valid. + +3. **Follow-up enables re-engagement** - Even non-transaction terminations can include suggestions for future engagement. + +4. **Host maintains trust** - Transactions go through ACP, keeping the user's relationship with the host intact. diff --git a/dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow.mdx b/dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow.mdx new file mode 100644 index 0000000000..5ce09b04eb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow.mdx @@ -0,0 +1,213 @@ +--- +title: End-to-end workflow +description: "The complete Sponsored Intelligence workflow — from account setup through catalog sync, product discovery, media buy creation, and delivery reporting." +"og:title": "AdCP — SI workflow" +sidebarTitle: Workflow +--- + +# End-to-end workflow + +<Steps> + +## Set up account + +Start by checking the seller's capabilities to understand the account model. First-party AI platforms typically use account-id namespaces: each advertiser authenticates via OAuth or another operator credential, then the buyer resolves an explicit `account_id` through `list_accounts` before account-scoped calls. [Ad networks](/dist/docs/3.2.0-beta.4/sponsored-intelligence/networks) may use buyer-declared accounts, where the agent declares brands via `sync_accounts`. + +**Example: first-party AI platform (account-id namespace)** + +```json +{ + "adcp": { "major_versions": [3] }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": true, + "supported_billing": ["operator"], + "supported_account_currency_modes": ["fixed"], + "authorization_endpoint": "https://ads.ai-platform.example.com/oauth/authorize", + "required_for_products": false, + "sandbox": true + } +} +``` + +Key signals: +- **`require_operator_auth: true`** — each advertiser authenticates via OAuth +- **`sandbox: true`** — test accounts available for integration validation +- **`required_for_products: false`** — buyers can browse products before setting up an account + +An ad network that aggregates across multiple platforms would more likely declare `require_operator_auth: false` with `supported_billing: ["operator", "agent"]` — the agent is trusted and declares accounts via `sync_accounts`. + +For account-id namespaces, after OAuth authentication resolve available accounts via `list_accounts`: + +```json +{ + "accounts": [ + { + "account_id": "acct_novabrand_ai_001", + "name": "Nova Brand - AI Platform", + "status": "active", + "sandbox": false + }, + { + "account_id": "acct_novabrand_ai_sandbox", + "name": "Nova Brand - Sandbox", + "status": "active", + "sandbox": true + } + ] +} +``` + +Use the sandbox account first to validate the full integration before committing real spend. + +## Sync catalogs + +This is the defining step — pushing your product and offering data into the platform so it has the raw material to generate ads and transact. Product catalogs feed creative generation. Offering catalogs enable promotions and commerce handoffs. The richer the feed, the better the platform can match intent to inventory. + +```json +{ + "account": { "account_id": "acct_novabrand_ai_001" }, + "catalogs": [ + { + "catalog_id": "product-feed", + "name": "Nova Brand Product Catalog", + "type": "product", + "url": "https://novabrand.example.com/products.xml", + "feed_format": "google_merchant_center", + "update_frequency": "daily" + }, + { + "catalog_id": "offerings-feed", + "name": "Nova Brand Promotions", + "type": "offering", + "url": "https://novabrand.example.com/offerings.json", + "feed_format": "custom", + "update_frequency": "weekly" + } + ] +} +``` + +The platform ingests each feed: +- **Product catalog** — titles, descriptions, prices, and images feed sponsored response generation +- **Offering catalog** — promotions, services, and seasonal campaigns for [SI Chat Protocol](/dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol) brand experience handoffs + +<Tip> +Improving your ads means improving what you push in — catalogs, conversion events, brand identity, and [content standards](/dist/docs/3.2.0-beta.4/governance/content-standards/index). Include detailed descriptions, multiple images, and structured attributes in catalogs. Push conversion events so the platform knows what works. The platform generates ads from all of this data — richer input produces better output. +</Tip> + +## Discover products + +Query `get_products` with `channels: ["sponsored_intelligence"]` to find Sponsored Intelligence products: + +```json +{ + "idempotency_key": "550e8400-e29b-41d4-a716-446655442012", + "buying_mode": "brief", + "brief": "Promote our new wireless headphones to tech-savvy consumers on AI platforms.", + "brand": { + "domain": "novabrand.example.com" + }, + "filters": { + "channels": ["sponsored_intelligence"] + } +} +``` + +The seller returns products matching the brief. For catalog-driven products, sellers may include `catalog_match` showing which catalog items are eligible. See the [product spectrum](/dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum) for the full range of product types. + +## Create media buy + +A media buy can span multiple Sponsored Intelligence product types: + +```json +{ + "account": { "account_id": "acct_novabrand_ai_001" }, + "brand": { + "domain": "novabrand.example.com" + }, + "start_time": "2026-04-01T00:00:00Z", + "end_time": "2026-04-30T23:59:59Z", + "packages": [ + { + "product_id": "sponsored_response_assistant", + "pricing_option_id": "sr_cpc", + "budget": 10000, + "bid_price": 2.50, + "pacing": "even", + "optimization_goals": [{ + "kind": "metric", + "metric": "engagements", + "target": { "kind": "cost_per", "value": 3.00 }, + "priority": 1 + }] + }, + { + "product_id": "ai_search_sponsored", + "pricing_option_id": "search_cpc", + "budget": 5000, + "bid_price": 3.00, + "pacing": "even", + "targeting_overlay": { + "keyword_targets": [ + { "keyword": "wireless headphones", "match_type": "broad" }, + { "keyword": "noise cancelling", "match_type": "phrase" }, + { "keyword": "bluetooth earbuds", "match_type": "broad" } + ] + } + } + ] +} +``` + +The sponsored responses package uses `optimization_goals` with a metric goal to optimize for cost-per-engagement. The AI search package uses `keyword_targets` to reach relevant queries. + +## Delivery reporting + +Delivery reports include engagement metrics alongside standard delivery data: + +```json +{ + "reporting_period": { + "start": "2026-04-01T00:00:00Z", + "end": "2026-04-14T23:59:59Z" + }, + "currency": "USD", + "media_buy_deliveries": [ + { + "media_buy_id": "mb_ai_001", + "status": "active", + "totals": { + "impressions": 125000, + "spend": 7200 + }, + "by_package": [ + { + "package_id": "pkg_sr_001", + "pricing_model": "cpc", + "rate": 2.40, + "currency": "USD", + "impressions": 85000, + "spend": 4800, + "clicks": 2000, + "delivery_status": "delivering" + }, + { + "package_id": "pkg_search_001", + "pricing_model": "cpc", + "rate": 3.00, + "currency": "USD", + "impressions": 40000, + "spend": 2400, + "clicks": 800, + "delivery_status": "delivering" + } + ] + } + ] +} +``` + +See [measurement](/dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement) for metric definitions and conversion tracking. + +</Steps> diff --git a/dist/docs/3.2.0-beta.4/trust.mdx b/dist/docs/3.2.0-beta.4/trust.mdx new file mode 100644 index 0000000000..f4820725a1 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trust.mdx @@ -0,0 +1,125 @@ +--- +title: Trust & Security +sidebarTitle: Trust & Security +description: "How AdCP structures decisions for verifiability and oversight — the seams the protocol provides, and what deployers are responsible for." +"og:title": "AdCP — Trust & Security" +--- + +<Note> +AdCP is a building block, not a compliance shortcut. The protocol exposes structured fields that let a deployer discharge their obligations — it does not itself perform conformity assessment, enforce policy, or guarantee outcomes. See [Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations) for an explicit list of what AdCP does not do. +</Note> + +AdCP's trust posture rests on a single structural principle: **no single agent can act unilaterally, and every decision is cryptographically re-verifiable by any party that cares to check.** A governance agent validates plans before money moves. A JWS-signed `governance_context` travels with every buy so the seller can independently confirm authorization without trusting the buyer's word. The compliance runner can re-execute storyboard output from a `runner-output.json` months later, producing the same pass/fail rows a regulator would see. + +What AdCP does not do is enforce deployer policy. The seams are hooks — the deployer wires them to their own governance platform, policy registry, and human-review workflow. The authority to approve a campaign stays with a human-defined rule; the protocol carries it, signs it, and makes it auditable. + +This page maps the seven trust surfaces for CISOs, compliance reviewers, and procurement teams evaluating an AdCP deployment. For each surface: what AdCP provides, what it explicitly does not provide, and where to find the canonical detail. Live work across all seven surfaces is tracked under the [Trust, Identity, and Governance master issue (#3925)](https://github.com/adcontextprotocol/adcp/issues/3925). + +--- + +## Governance + +**What AdCP provides.** A three-party structure in which the agent that spends money is never the agent that approves the spend. The orchestrator proposes plans via [`sync_plans`](/dist/docs/3.2.0-beta.4/governance/campaign/specification). An independently operated governance agent validates each plan against deployer-configured policies via [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/specification) before the orchestrator proceeds. Every governance decision produces a [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) entry — immutable, timestamped, and reproducible. + +**What AdCP does not provide.** `check_governance` is a seam, not an enforcer. A seller that has not configured a governance agent, or a misconfigured one, will not call `check_governance` at all — the protocol does not prevent a non-conformant seller from transacting. Regulated verticals (credit, insurance, employment, housing) get schema-level enforcement for the three categories named in AdCP 3.0 (`fair_housing`, `fair_lending`, `fair_employment`), but every other regulated category — political, pharmaceutical, gambling, financial promotions — relies on the governance-agent implementation. See the [Known Limitations — Governance](/dist/docs/3.2.0-beta.4/reference/known-limitations#governance) section. + +→ [Governance overview](/dist/docs/3.2.0-beta.4/governance/overview) · [Embedded human judgment](/dist/docs/3.2.0-beta.4/governance/embedded-human-judgment) · [Policy registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) · [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) + +--- + +## Regulatory + +**What AdCP provides.** Structured fields that let a deployer discharge EU AI Act Annex III and GDPR Article 22 obligations: `plan.human_review_required` for human oversight (Art. 14), `policy_categories` and `restricted_attributes` for input-data governance (Art. 10), `get_plan_audit_logs` for automatic logging (Art. 12), `brand.data_subject_contestation` as a discoverable contestation contact point (Art. 22(3)). + +**What AdCP does not provide.** AdCP does not perform conformity assessment, DPIA, or contestation handling. Those remain the deployer's responsibility. The Warning block at the top of [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) is the authoritative framing. + +→ [Annex III & Art 22 obligations](/dist/docs/3.2.0-beta.4/governance/annex-iii-obligations) + +--- + +## Privacy + +**What AdCP provides.** Schema-level PII controls: `hashed_email` and `hashed_phone` fields in `sync_audiences` reject cleartext. Structural privacy for the Trusted Match Protocol — separated code paths and schema prohibitions that prevent cross-party data leakage in TMP. No protocol-level PII transport elsewhere in the spec. + +**What AdCP does not provide.** Structural privacy applies only to TMP. Other domains rely on contractual confidentiality or per-session consent. AdCP does not carry a normative consent signal (IAB TCF, GPP, or equivalents). Cross-border transfer lawfulness is a contract and configuration property of the parties. See [Known Limitations — Security and Privacy](/dist/docs/3.2.0-beta.4/reference/known-limitations#security-and-privacy). + +→ [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations) · [Trusted Match Protocol](/dist/docs/3.2.0-beta.4/trusted-match/index) + +--- + +## Identity + +**What AdCP provides.** Discoverable identity for every party an agent transacts with. + +A house publishes [`brand.json`](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) at `/.well-known/brand.json` declaring its corporate domain, brand portfolio with Keller-typed relationships (`master` / `sub_brand` / `endorsed` / `independent`), digital properties, authorized operators (agencies and partners by domain), house-level trademark claims, and per-agent JWKS URIs for verifiable signing keys. A publisher publishes [`adagents.json`](/dist/docs/3.2.0-beta.4/governance/property/adagents) declaring which sales agents are authorized to sell which properties or resell which published signal definitions, with publisher-attested `signing_keys` per agent. + +A bilateral verification chain ties the two together: delegated and network paths require the seller's `brand.json` `properties[].relationship` to match the publisher's `adagents.json` `delegation_type`; first-party inventory resolves as inline ownership. The brand-protocol's mutual-assertion model (RFC [#3533](https://github.com/adcontextprotocol/adcp/issues/3533)) — child brands declare a `parent_house`, parent houses reciprocate via `brand_refs[]` — produces a five-state trust signal (`inline` / `mutual_assertion` / `one_sided_brand` / `one_sided_house` / `standalone`) that downstream consumers can act on directly. + +The [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) mark, with `(Spec)` and `(Live)` qualifiers, continuously attests behavioral conformance through canonical test campaigns running against a seller's real ad-server integration. + +**What AdCP does not provide — three gaps to know.** + +First: **no aggregated public-registry identity claims.** brand.json carries house-level trademark claims and self-asserted brand relationships. It does not carry a generalized `identifiers[]` block aggregating claims against public registries that already verify the relevant facts — LEI / GLEIF for legal entity, USPTO / EUIPO / WIPO Madrid for trademark registrations, Verified Mark Certificates for CA-attested trademark→domain bindings, Wikidata Q-IDs for public identity, SEC EDGAR CIK for public-company identity. Identity claims defend against spoof and lookalike domains; they do not defend against compromise of the legitimate brand.json's hosting infrastructure — that threat is addressed by the Security surface. The aggregation RFC for this layer is tracked under the trust master issue. + +Second: **no buyer-side authorization primitive symmetric to `adagents.json`.** A brand cannot declare which buyer agents are authorized to transact on their behalf in a single discoverable place. The closest existing primitive is `brand.json`'s `authorized_operators[]`, which scopes by operator domain — not by agent endpoint, and with no signed binding from the brand to a specific buyer-agent JWKS. A compromised agent at an authorized operator's domain can transact unilaterally on every brand that lists that operator. RFC [#2307](https://github.com/adcontextprotocol/adcp/issues/2307) proposes a buyer-side agents.json for request signing; the broader authorization-layer gap is tracked alongside it. + +Third: **no operator/human KYC primitive in the protocol.** The protocol does not carry an attestation that a human or organizational operator has been identity-verified by a KYC provider (Persona, Stripe Identity, Onfido) or rooted in an authoritative IdP. KYC is punted to the membership and account layer; protocol-side, only the cryptographic facts (which key signed which message) are normative. See [Known Limitations — Authentication and Identity](/dist/docs/3.2.0-beta.4/reference/known-limitations#authentication-and-identity). + +**Inventory and product claims.** When a buyer evaluates a [`get_products`](/dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products) response, the chain above establishes *who is authorized to sell* the inventory in question: the seller operator's `brand.json` declares the agent and represented properties, the property owner's `adagents.json` authorizes that agent, and the response itself is RFC 9421-signed by a key resolved from the operator's JWKS or pinned by the publisher's `adagents.json`. What the chain does not establish is whether a specific product line — availability window, price, inventory volume — reflects reality at delivery time. Catalog accuracy is not protocol-attested: publishers do not sign individual product entries, and per-product attestation does not match how inventory operates in production. Delivery-time truth lives in measurement reports and the billing reconciliation flow ([#2391](https://github.com/adcontextprotocol/adcp/issues/2391)); a misbehaving authorized seller is remediated by the publisher revoking the `adagents.json` entry, not by an in-protocol claim check. This is the C2PA "claim-not-certification" posture applied to inventory: AdCP carries the authorization claim and makes it verifiable; it does not certify that the claimed inventory exists. + +→ [brand.json](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) · [adagents.json and agent identity](/dist/docs/3.2.0-beta.4/governance/property/adagents) · [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) + +--- + +## Security + +**What AdCP provides.** RFC 9421 HTTP message signatures as the baseline mechanism for signed requests on mutating calls (normative in 3.1; allowed in 3.0 — see below) and for outbound webhook deliveries (with an opt-in HMAC fallback for receivers that require it). Idempotency keys on all state-changing operations to prevent replay attacks. Per-`(agent, account)` credential scoping to limit the blast radius of a stolen token. JWS-signed governance context traveling with every media buy, independently verifiable by the seller without trusting the buyer. + +**What AdCP does not provide — two limitations to know.** + +First: **signed requests are normative in 3.1, not 3.0.** AdCP 3.0 allows bearer-token auth on mutating calls. Requiring RFC 9421 signing on all mutating calls is tracked in [#2307](https://github.com/adcontextprotocol/adcp/issues/2307) for 3.1. Deployments that require signing today should enforce it at the platform layer and opt into AdCP Verified when the program launches with 3.1. + +Second: **signing keys are not yet anchored in a key-transparency log.** In 3.x, RFC 9421 buyer keys, governance JWS keys, and agent signing keys are ultimately rooted in each counterparty's own infrastructure — an attacker controlling a counterparty's CDN, DNS, or `/.well-known` path can serve attacker-controlled keys. TLS does not close this gap. AdCP 3.x delivers trust-on-first-use with continuity (multi-source cross-check, publication-delay windows, out-of-band rotation signalling) — detectably raising the bar, but not cryptographically closing it. A key-transparency layer is a 4.0 deliverable. See [Known Limitations — Authentication and Identity](/dist/docs/3.2.0-beta.4/reference/known-limitations#authentication-and-identity) for the full description. + +→ [Security Model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) · [Security implementation reference](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security) + +--- + +## Provenance + +**What AdCP provides.** Right-use assertions in creative payloads, the `ai_generated_image` boolean flag for AI-generated imagery, and the `governance_context` JWS that traces each media buy back to the governance decision that authorized it. + +**What AdCP does not provide.** The `ai_generated_image` flag is a boolean marker, not a signed provenance assertion. There is no cryptographically signed provenance graph accumulating assertions as a creative passes through generation, editing, and adaptation. Interoperation with CAI/C2PA is tracked as future work. + +→ [Creative provenance verification](/dist/docs/3.2.0-beta.4/governance/creative/provenance-verification) · [adagents.json and agent identity](/dist/docs/3.2.0-beta.4/governance/property/adagents) + +--- + +## Disclosure + +**What AdCP provides.** The AI Disclosure page at [/docs/ai-disclosure](/dist/docs/3.2.0-beta.4/ai-disclosure) names every surface where AgenticAdvertising.org uses AI, the models behind it, and how to request human review. `sync_plans` and `create_media_buy` carry the orchestrating agent's identity, making the AI-origin of each decision discoverable. + +**What AdCP does not provide.** No normative disclosure requirement for AI-generated ad content in the delivered creative. Disclosure obligations in served ads are the deployer's responsibility under applicable law (e.g., FTC guidance, EU AI Act Art. 50, DSA Art. 26). + +→ [AI Disclosure](/dist/docs/3.2.0-beta.4/ai-disclosure) + +--- + +## For compliance reviewers + +These are the wire-level hooks deployers implement. They are seams, not guarantees — a non-conformant deployer can bypass them. + +| Control | Wire hook | AdCP role | +|---|---|---| +| Human oversight gate | `plan.human_review_required: true` + `check_governance` returning `APPROVED` | Provides the gate; deployer configures the threshold | +| Audit trail | [`get_plan_audit_logs`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs) | Immutable, timestamped; deployer is responsible for retention | +| Contestation contact point | `brand.data_subject_contestation` | Discoverable endpoint; deployer operates the process | +| Request signing | RFC 9421 `Signature` / `Signature-Input` headers | Normative in 3.1; allowed in 3.0 | +| Governance attestation | JWS-signed `governance_context` on `create_media_buy` | Verifiable by seller independently | +| Regulated-category block | Schema-level rejection of `authority_level: agent_full` on `fair_housing`, `fair_lending`, `fair_employment` | Three categories only; others require governance-agent implementation | +| Brand identity declaration | `brand.json` `house`, `brands[]`, `authorized_operators[]`, house-level `trademarks[]` | Discoverable; deployer / ecosystem resolves against public registries | +| Mutual-assertion trust state | `brand.json` `parent_house` ↔ `brand_refs[]` (RFC #3533) | Five-state signal; deployer policy decides what's required | +| Agent identity | `brand.json` `agents[].jwks_uri`, `adagents.json` `signing_keys` | Verifiable signing keys; key-transparency layer is 4.0 | +| Behavioral verification | AAO Verified `(Live)` continuous attestation via canonical test campaigns | Issued and revoked by AAO; deployer trusts the mark, not the AdCP runtime | + +**See [Known Limitations](/dist/docs/3.2.0-beta.4/reference/known-limitations)** for what AdCP explicitly does not do — that page is the adversarial read this one assumes you've taken. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation.mdx b/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation.mdx new file mode 100644 index 0000000000..7ea18e4187 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation.mdx @@ -0,0 +1,191 @@ +--- +title: How demand reaches AI assistants +sidebarTitle: AI mediation +testable: true +"og:image": /images/walkthrough/tmp-ai-01-black-box.png +description: "A mediation protocol for AI assistants — how demand finds conversational AI when the context can't be broadcast to every buyer." +"og:title": "AdCP — TMP for AI assistant mediation" +--- + +<img src="/images/walkthrough/tmp-ai-01-black-box.png" alt="Priya looks at a StreamHaus AI assistant interface — the conversation is helpful but there's no way for advertisers to participate" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +StreamHaus launched an AI assistant six months ago. Users ask about hiking trails, gear recommendations, trip planning — the kind of high-intent conversations advertisers would pay a premium to be part of. Priya watches the usage numbers climb and the ad revenue stay at zero. + +The assistant is a black box. There's no ad server. There's no impression. When a user asks "what trail shoes should I get for rocky terrain?", there's no bid request to broadcast — and even if there were, sending raw conversation context to every buyer on an exchange would leak user content at scale. + +This is the demand problem every AI platform faces: high-intent conversations with no standard way for buyers to participate. + +## The core design principle + +TMP solves this with a separation of concerns: the protocol decides **what** sponsored content is available and relevant, and the platform's LLM decides **how** to present it. The buyer never touches the user experience. The platform never builds custom ad logic. + +This is what makes TMP a mediation protocol rather than an ad injection system. Multiple buyer agents submit offers through a standard interface, and the platform retains editorial control over how — and whether — recommendations appear. + +## Step 1: The demand problem + +Every ad surface before AI assistants works the same way: a user loads a page, a bid request broadcasts context to buyers, an ad server renders a creative in a defined slot. AI assistants break all three assumptions: + +- **No defined slot** — sponsored content is woven into the response text +- **No bid request** — the conversation is private and ephemeral, not a crawlable URL +- **No ad server** — the platform's LLM generates the response + +There's no standard for this. No mediation layer, no protocol, no way for multiple buyers to compete for relevance in a conversation. Most AI platforms today partner with a single ad network, build proprietary sponsorship logic, or skip monetization entirely. + +Priya doesn't want to pick one ad network. She wants Sam at Pinnacle Agency, and every other buyer agent with relevant packages, to compete for relevance through a standard protocol. TMP addresses this by separating context evaluation from user identification. + +## Step 2: Bringing demand to the context + +<img src="/images/walkthrough/tmp-ai-02-same-router.png" alt="The TMP Router hub from the frequency capping walkthrough now has a fourth connection — an AI assistant chat bubble icon joining web, mobile, and CTV" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +On web, context radiates outward — the URL is public, the page content is crawlable, buyers evaluate it in parallel. AI assistants can't do that. The conversation is private, ephemeral, and contains user content that can't be shared openly. + +TMP's architecture was built for this constraint. Instead of broadcasting context outward, the router brings buyer agents inward — they see classified signals about the conversation, not the conversation itself. Priya registers the assistant as a new property on the same TMP Router that handles web and CTV: + +- **Property type**: `ai_assistant` +- **Placement**: `chat-inline-recommendation` — a conversational context where the LLM can incorporate sponsored recommendations + +The router fans out Context Match requests to all registered buyer agents in parallel. Sam's agent competes alongside other buyers — this is mediation, not a single-partner deal. + +## Step 3: Classified signals instead of bid requests + +<img src="/images/walkthrough/tmp-ai-03-context-match.png" alt="A chat conversation about trail shoes sends classified context signals — topics, sentiment, keywords — to buyer agents, with a crossed-out person icon showing no user identity" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +A user asks: "What trail shoes should I get for rocky terrain? I need good ankle support." + +Before the LLM generates its response, StreamHaus sends a **Context Match** request. A conversation turn isn't a URL — it's ephemeral, it contains user content, and it can't be sent to buyers. Instead, the platform sends **classified signals**: IAB topic codes, sentiment, keywords, and a natural language summary. The buyer evaluates relevance without seeing the user's actual words. + +<Accordion title="Context Match request for a conversation turn"> + +```json +{ + "type": "context_match_request", + "request_id": "ctx-trail-shoes-01", + "property_rid": "01916f3a-f8cb-7000-8000-000000000051", + "property_type": "ai_assistant", + "placement_id": "chat-inline-recommendation", + "seller_agent_url": "https://streamhaus.example", + "context_signals": { + "topics": ["596", "477"], + "taxonomy_source": "iab", + "taxonomy_id": 7, + "sentiment": "positive", + "keywords": ["trail shoes", "rocky terrain", "ankle support"], + "language": "en", + "summary": "User seeking trail shoe recommendations for rocky terrain with ankle support" + } +} +``` + +No `artifact_refs` — conversation turns are ephemeral. The `context_signals` carry the classified output. The `summary` field is especially useful for LLM-native buyers that evaluate relevance semantically. A platform that operates in a trusted execution environment could alternatively send the full conversation as an `artifact` — the publisher controls the disclosure level. + +</Accordion> + +Sam's buyer agent evaluates: "Trail shoes for rocky terrain — this matches Acme Outdoor's Trail Pro 3000 campaign." It responds with an offer that includes **text and structured data** — the raw material the LLM needs to generate a natural recommendation. + +Not every integration needs a full creative manifest. TMP supports a spectrum: + +| Integration level | What the offer contains | How the platform uses it | +|---|---|---| +| Activation only | `package_id` | Platform's ad server activates a line item (for platforms with traditional ad serving alongside AI) | +| Brand mention | `package_id` + `brand` + `summary` | LLM uses summary to generate a natural brand mention | +| Full recommendation | `package_id` + `brand` + `summary` + `creative_manifest` | LLM weaves product details from the manifest into the response | +| Catalog steering | `package_id` + `brand` + `creative_manifest` with catalog items | LLM recommends specific products from a synced catalog | + +Priya chose full recommendation for StreamHaus's assistant: + +<Accordion title="Context Match response with inline creative manifest"> + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-trail-shoes-01", + "offers": [ + { + "package_id": "pkg-outdoor-display", + "brand": { "domain": "acmeoutdoor.example" }, + "summary": "Trail Pro 3000 — ankle-height trail runner with rock plate, relevant to user's terrain needs", + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "title": { "asset_type": "text", "content": "Built for rocky trails" }, + "body_text": { "asset_type": "text", "content": "The Trail Pro 3000 has a full rock plate and ankle-height collar for technical terrain. Vibram outsole with 4mm lugs." } + } + } + } + ] +} +``` + +The `summary` helps the platform judge relevance before deciding whether to incorporate the offer. The `body` gives the LLM factual product details it can weave into a natural response. + +</Accordion> + +## Step 4: Frequency caps cross every surface + +<img src="/images/walkthrough/tmp-ai-04-identity-match.png" alt="A session token flows to the buyer agent — the same eligibility check as web, same frequency caps, same shared exposure store" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +StreamHaus sends an Identity Match request with a session token. The buyer checks frequency caps, audience eligibility, and recency against the same shared exposure store that covers web and CTV. + +AI assistant users are often authenticated — logged in to the platform — which means the identity signal is typically stronger than web, not weaker. If this user saw the Trail Pro 3000 ad on StreamHaus's CTV app 30 minutes ago, the 2-hour recency window applies here too. The AI assistant doesn't get a free pass on frequency caps just because it's a different surface. + +## Step 5: The platform controls the experience + +<img src="/images/walkthrough/tmp-ai-05-llm-weaves.png" alt="The creative manifest text feeds into the LLM alongside the conversation context — the LLM generates a natural response that weaves in the product recommendation" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +StreamHaus joins the Context Match and Identity Match responses. The Trail Pro 3000 offer is eligible. The offer's creative manifest becomes part of the LLM's generation context: + +> "For rocky terrain with good ankle support, you'll want a shoe with a rock plate and higher collar. The **Trail Pro 3000** is designed exactly for this — it has a full rock plate to protect against sharp rocks and an ankle-height collar for stability on technical terrain. The Vibram outsole with 4mm lugs gives you solid grip on loose surfaces. +> +> You might also look at..." +> +> *Sponsored recommendation from Acme Outdoor* + +The LLM didn't copy the creative manifest verbatim. It wove the product details into a natural recommendation that addressed the user's specific question. The platform applied its own editorial policy — a sponsored content label, natural integration, and continuation with non-sponsored alternatives. Regulatory requirements around AI-generated sponsored content (FTC disclosure, EU AI Act) are the platform's responsibility, enforced through their LLM integration, not the protocol. + +## Step 6: What this unlocks + +<img src="/images/walkthrough/tmp-ai-06-three-winners.png" alt="Three panels: a user receiving a relevant product recommendation in chat, Sam seeing his campaign reach a new high-intent surface, Priya seeing AI assistant revenue appear on her dashboard" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +**The user** asked a question and got a useful answer. The Trail Pro 3000 recommendation was relevant — they asked about rocky terrain and ankle support, and that's what the product is built for. The sponsored label is transparent. The response continued with non-sponsored options. + +**Sam** reached a user in the moment they asked what to buy — intent doesn't get more specific than a direct question. The same packages running on web and CTV activated on the AI assistant. The creative manifest carried text instead of a banner, but Sam's buyer agent didn't need surface-specific logic. + +**Priya** monetized the AI assistant without proprietary sponsorship logic, without locking into a single ad network, and without compromising the user experience. Every buyer agent that speaks TMP can participate. The router handles the fan-out. StreamHaus controls editorial integration. Frequency caps from web and CTV carry over. And delivery reporting flows through the same measurement infrastructure as every other surface. + +| Without TMP | With TMP | +|---|---| +| Single ad network or no monetization | Any buyer agent can compete for relevance | +| Proprietary integration per advertiser | Standard protocol, open demand | +| No frequency caps across surfaces | Shared exposure store, same caps everywhere | +| Platform builds ad logic | Platform controls editorial integration only | +| Ad network controls the experience | Platform LLM controls presentation | + +## Multi-turn conversations + +Each user message triggers a fresh Context Match evaluation. The platform decides when to re-evaluate — recommended triggers are topic shift (detected by the platform's classifier), explicit product interest ("tell me more about..."), or session timeout (more than 5 minutes of inactivity). + +Platforms may cache the most recent Context Match response and skip re-evaluation for follow-up questions on the same topic. This reduces latency and provider load without affecting ad quality. + +When multiple buyers return offers for the same conversation turn, the platform ranks by relevance to the conversation — not by price. This is mediation, not an auction. + +An impression occurs when the LLM incorporates the creative manifest into its response. Follow-up questions about the recommended product ("where can I buy those?") are engagement events, not new impressions. + +**Latency.** TMP's sub-50ms round-trip is hidden within the LLM's generation time (typically 1-3 seconds). The platform sends the Context Match request while preparing the LLM prompt, so TMP adds no perceptible delay to the user experience. + +## Go deeper + +<CardGroup cols={2}> + <Card title="TMP for AI assistants" icon="robot" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants"> + Technical reference for AI assistant integration — request/response formats, context signals, activation patterns. + </Card> + <Card title="Context and identity" icon="arrows-split-up-and-left" href="/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity"> + How the two-operation model works across all surfaces, with concrete examples. + </Card> + <Card title="TMP overview" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/trusted-match"> + Cross-publisher frequency capping walkthrough — how TMP solves the execution gap. + </Card> + <Card title="Specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/trusted-match/specification"> + Authoritative message types, field tables, and conformance requirements. + </Card> +</CardGroup> diff --git a/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide.mdx b/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide.mdx new file mode 100644 index 0000000000..b9ffebce71 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide.mdx @@ -0,0 +1,250 @@ +--- +title: TMP for Buyer Agents +sidebarTitle: Buyer Guide +description: "How buyer agents integrate with TMP — responding to Context Match and Identity Match requests, structuring offers, and managing frequency caps." +"og:title": "AdCP TMP for Buyer Agents" +--- + +# TMP for Buyer Agents + +As a buyer agent, you receive Context Match and Identity Match requests from TMP Routers and respond with offers and eligibility decisions. You never send requests — publishers initiate every interaction through their router. + +## What You Build + +A buyer agent exposes two HTTP/2 endpoints under a single base URL — `POST /context` for Context Match and `POST /identity` for Identity Match. The router dispatches by path: + +| Message type | Receives | Returns | +|---|---|---| +| `context_match_request` | Page/content signals, placement, geo | Offers with creative manifests | +| `identity_match_request` | Seller agent URL, identity tokens, optional package ID list | Eligible package IDs + `serve_window_sec` | + +Each endpoint handles one message type. Both must respond in under 50ms. The router enforces this budget and will skip slow providers. + +The [adcp-go](https://github.com/adcontextprotocol/adcp-go) SDK provides Go types, request parsing, and response builders for both endpoints. + +## Prerequisites + +Before TMP requests arrive, your packages must exist. A media buy contains one or more packages — TMP operates at the package level. + +1. **Create media buys** via `create_media_buy` with the publisher's sales agent +2. **Sync creatives** via `sync_creatives` so the publisher has your creative assets +3. **Register as a TMP provider** so the publisher's router knows your endpoints + +The router learns about your packages from the publisher's deal history. You don't push package lists to the router. + +## Responding to Context Match + +The router sends you page context. You evaluate your active packages against that context and return offers for packages that match. + +```json +// Request you receive +{ + "type": "context_match_request", + "request_id": "ctx-8f3a2b", + "property_rid": "01916f3a-9c4e-7000-8000-000000000010", + "property_type": "website", + "placement_id": "article-sidebar", + "seller_agent_url": "https://streamhaus.example", + "artifact_refs": [ + { "type": "url", "value": "https://streamhaus.example/articles/hiking-gear-2026" } + ], + "context_signals": { + "topics": ["550", "710"], + "keywords": ["hiking", "gear", "outdoor"], + "sentiment": "positive" + }, + "geo": { "country": "US", "region": "US-CO" } +} +``` + +**What you do:** + +1. Look up your active packages for this `property_rid` and `placement_id` +2. Evaluate each package's targeting against the context signals, geo, and artifact refs +3. Return offers for packages that match, each with a creative manifest + +```json +// Your provider→router response (provider-context-match-response.json) +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-8f3a2b", + "offers": [ + { + "package_id": "acme-outdoor-q2", + "brand": { "domain": "acmeoutdoor.example.com" }, + "summary": "Hiking gear seasonal promotion", + "creative_manifest": { + "format_kind": "image", + "assets": { + "headline": { "asset_type": "text", "content": "Trail-ready gear for every summit" }, + "image_main": { "asset_type": "image", "url": "https://cdn.acme.example/hiking-hero.jpg", "width": 300, "height": 250 }, + "cta": { "asset_type": "text", "content": "Shop now" } + } + }, + "price": { "amount": 12.50, "currency": "USD", "model": "cpm" } + } + ] +} +``` + +**What you never receive** in Context Match: user IDs, device IDs, session tokens, IP addresses, or cookies. You cannot identify the user. + +## Responding to Identity Match + +The router sends you the seller's `seller_agent_url` and one or more identity tokens. Use `seller_agent_url` to look up the active package set you have registered for that seller, resolve identities on whichever tokens you support, then check each package's eligibility rules against the resolved user. The publisher MAY also send `package_ids` to scope evaluation explicitly; when present, evaluate against the **intersection** of your registered active set and `package_ids`, and **silently drop** any IDs you don't recognize — both publisher modes (all-active and fuzzed/padded) rely on this behavior. Surfacing unknown IDs as errors would leak your registry membership back to the publisher. + +```json +// Request you receive +{ + "type": "identity_match_request", + "request_id": "id-9c4e", + "seller_agent_url": "https://publisher.example", + "identities": [ + { "user_token": "opaque-token-abc123", "uid_type": "publisher_first_party" }, + { "user_token": "ID5*7xYp...", "uid_type": "id5" } + ], + "package_ids": ["acme-outdoor-q2", "acme-winter-clearance", "acme-loyalty-retarget"], + "consent": { "gdpr": true, "tcf_consent": "CPxyz..." } +} +``` + +**What you do:** + +1. Resolve the tokens against your identity graph on whichever `uid_type`s you support. Entry order in the request is not semantically significant — apply your own preference order per the buyer's own preference order. All entries identify the same user, so the first successful resolution is sufficient. When multiple identity types are present, buyers SHOULD prefer opaque provider IDs (UID2, EUID, ID5, RampID) over strongly re-identifying tokens like `hashed_email`; this neutralizes scenarios where a misconfigured or compromised router forwards only the highest-risk token. +2. Check frequency caps: has this user exceeded the package's impression limit? +3. Check audience rules: is this user in the target audience? +4. Check suppression lists: should this user be excluded? +5. Return eligibility for each package + +```json +// Your response +{ + "type": "identity_match_response", + "request_id": "id-9c4e", + "eligible_package_ids": ["acme-outdoor-q2", "acme-loyalty-retarget"], + "serve_window_sec": 60 +} +``` + +Return only the package IDs that pass your eligibility checks. Packages not in the list are treated as ineligible. The `serve_window_sec` is a **per-package single-shot fcap**: after the publisher serves the user one impression on each eligible package within this window, the publisher MUST re-query Identity Match before serving from those packages again. Default 60s, max 300s. This is not a router response cache TTL — see [The serve-window contract](#the-serve-window-contract). + +**What you never receive** in Identity Match: page URLs, content topics, keywords, article text, or any content signal. You cannot determine what the user is looking at. + +**Why you receive ALL packages**, not just the ones that matched in Context Match: this prevents you from inferring what content the user is viewing. If you only received packages that matched the hiking article, you'd know the user was reading about hiking. Receiving all packages preserves structural separation. + +## The Join Happens Publisher-Side + +You never see the combined result. The publisher's router: + +1. Intersects your Context Match offers with your Identity Match `eligible_package_ids` +2. Only activates packages that appear in both responses +3. Sets ad server targeting key-values for matched packages +4. The ad server makes the final rendering decision + +You have no role in this step. The publisher controls activation. + +## Frequency Cap Management + +Cross-publisher frequency capping is the primary use case for Identity Match. Cap policy and counting live in your **impression tracker**; the Identity Match service consumes only cap-fire signals at query time. The split: + +- **Impression tracker** receives pixel fires, decodes the TMPX token, and applies whatever fcap policies you maintain — counting impressions across whatever dimensions you cap on (package, campaign, advertiser, creative, line item) for each resolved user identity, with whatever windowing and dedup logic your policy engine uses. +- **On the impression that exhausts a cap**, the impression tracker writes a cap-fire entry — `(user_identity, package) capped until <expireAt>` — into the Identity Match cap-state store. +- **Identity Match service** at query time excludes any package with a cap-fire entry against any of the request's identities from `eligible_package_ids`. + +The protocol does not constrain how you count impressions, where policies live, or how you dedup across identities. It only defines the boundary: cap-fire events flow into the cap-state store; the IdentityMatch service checks presence at query time. See [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) for the boundary contract and the reference cap-state store. + +When an fcap rule changes — a window shortens or lengthens, a `max_count` rises or falls, a policy is paused or removed, a package is reassigned — you MUST re-evaluate the affected `(user_identity, package)` cap-state entries against the new policy and push the appropriate updates: **delete** entries for users no longer over-cap, **extend** (overwrite with a new `expire_at`) entries that are still over-cap but whose window changed. The cap-state store doesn't store counts and can't re-evaluate on its own; the buyer's policy owner is the source of truth. See [Policy updates and cap-state re-evaluation](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation#policy-updates-and-cap-state-re-evaluation) for the event shapes. + +Because Identity Match runs across all publishers using TMP, a user who saw your ad on Publisher A will correctly show as over-frequency on Publisher B — even though you can't see which publisher sent the request. + +For the implementation details — the fcap_keys label model, the reference valkey data model, exposure record shapes, the SDK primitives, and conformance scenarios — see [Impression Tracker Implementation Reference](/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation). The boundary contract that sits between the impression tracker and the Identity Match service is at [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation). + +### How Buyers Learn About Exposures + +The `tmpx` field on the Identity Match response carries a TMPX token — an HPKE-encrypted blob containing the user's resolved identity tokens. The publisher substitutes `{TMPX}` into creative tracking URLs. When the ad serves, your impression pixel receives the encrypted token. Your impression tracker decrypts it, applies your fcap policy logic against the resolved identities, and (when a cap fires) writes a cap-fire entry to the Identity Match cap-state store. Most production deployments separate decode (synchronous, at intake) from policy evaluation and cap-state writes (asynchronous, behind a queue) for buffering. + +This gives you real-time per-user exposure signals without the publisher seeing user identity. + +See [TMPX Exposure Tokens](/dist/docs/3.2.0-beta.4/trusted-match/specification#tmpx-exposure-tokens) for the encryption format and binary token structure, and [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) for the cap-state store boundary contract. + +## Provider Registration + +Provider registration is an out-of-band process. After establishing a media buy via `create_media_buy`, coordinate with the publisher to provide your TMP base URL. This typically involves a commercial agreement and may require legal review, since the publisher will be sending content signals and identity tokens to your endpoints. The publisher then configures your provider entry in their router (see [router deployment](/dist/docs/3.2.0-beta.4/trusted-match/router-architecture#deployment)). + +```json +{ + "provider_id": "acme-outdoor-us", + "endpoint": "https://us.tmp.acmeoutdoor.example/v1", + "context_match": true, + "identity_match": true, + "countries": ["US"], + "uid_types": ["uid2", "rampid", "id5"] +} +``` + +When you support `identity_match`, you MUST declare `countries` (which country codes you serve) and `uid_types` (which identity types you resolve). The router uses these to filter Identity Match fan-out — without them, the router cannot route requests to your provider. + +You can support either or both endpoints. Context Match only means contextual targeting without frequency capping. Identity Match only means the publisher evaluates context locally from your media buy's targeting rules and calls you only for frequency checks. Both means full TMP integration. + +### Health endpoint + +You SHOULD expose `GET /health` at your base URL. Return HTTP `200` with `{"status": "ok"}` when ready. The publisher's router uses this for pre-flight checks and monitoring. It is not called during request fan-out — only on a background interval. + +## Error Handling + +When your agent cannot evaluate a request, return an error response: + +```json +{ + "type": "error", + "request_id": "ctx-8f3a2b", + "code": "provider_unavailable", + "message": "Targeting data temporarily unavailable" +} +``` + +Common scenarios: +- **No matching packages**: Return an empty `offers` array (not an error). This is the normal case when your packages don't match the content. +- **Internal failure**: Return an error response. The router skips your provider and proceeds with other providers. +- **Timeout**: If you can't respond within the latency budget, the router skips you. No error response needed — the router handles this. + +## The serve-window contract + +The `serve_window_sec` field on Identity Match responses is a **per-package single-shot fcap** between the buyer and the publisher: + +- For each package in `eligible_package_ids`, the publisher MAY serve the user **at most one impression** on that package within `serve_window_sec` seconds. +- After the publisher has served one impression on each eligible package, the publisher MUST re-query Identity Match before serving any of those packages to the same user again. +- Multi-impression frequency capping (5/day, 100/month, etc.) is separate. It lives in your buyer-side state and is updated out-of-band via TMPX impression callbacks regardless of `serve_window_sec`. The serve window is the protocol-level throttle; multi-impression caps are buyer-internal policy. + +The router MAY apply an internal deduplication cache keyed by `{identities_hash, provider_id, package_ids_hash, consent_hash}` (see spec for canonical bytes), but the publisher's binding contract is the serve-window throttle, not the router's cache window. + +**Choosing a serve_window_sec value**: Default 60 seconds. Range 1–300. Anything longer than 300 makes per-package fcap too coarse for typical campaigns. Anything shorter than your IdentityMatch round-trip just adds load. 60 is a good default; tune downward if eligibility state shifts faster (close to a cap, audience just changed) or upward (max 300) if your IdentityMatch service is at load and the campaigns are tolerant of coarser fcap. + + +## Performance Requirements + +| Metric | Target | +|---|---| +| Agent-side processing | < 30ms p95 | +| End-to-end (publisher → router → agent → router → publisher) | < 50ms p95 | +| Availability | 99.9% | +| Error rate | < 0.1% | + +The 30ms agent-side budget accounts for network overhead between the router and your endpoint. The router tracks your latency percentiles and adaptively adjusts your timeout allocation. Consistently slow responses result in the router reducing your allocation or skipping your provider. + +## Measurement + +The publisher reports delivery via `get_media_buy_delivery`. Your agent queries delivery data to reconcile impressions, track pacing, and update frequency state. + +Buyers receive real-time per-user exposure signals via the `{TMPX}` macro. The Identity Match response includes an encrypted TMPX token that flows through creative tracking URLs to your impression pixel. Your cluster master decrypts the token and updates per-user frequency state in real time. `get_media_buy_delivery` provides aggregate delivery metrics for reconciliation and pacing — it is not the primary frequency input. + +## What's Different from OpenRTB + +| | OpenRTB | TMP | +|---|---|---| +| **You receive** | Full bid request (user + content + device) | Either content OR identity, never both | +| **You return** | Bid price | Offer (creative manifest) or eligible package IDs + serve window | +| **Auction** | Exchange runs auction | No auction — publisher joins locally | +| **Frequency** | Per-DSP only | Cross-publisher via Identity Match | +| **Integration** | Per-exchange SSP adapter | Two endpoints (context + identity), any surface | diff --git a/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity.mdx b/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity.mdx new file mode 100644 index 0000000000..b240223e25 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity.mdx @@ -0,0 +1,230 @@ +--- +title: Context Match and Identity Match +description: The two operations at the heart of TMP, how they work, and how the publisher joins them at decision time. +"og:title": "AdCP Context Match and Identity Match" +--- + +# Context Match and Identity Match + +TMP defines two operations. They are independent by design — processed in separate infrastructure, carrying different data, answering different questions. The publisher joins their results to make the final activation decision. + +This page walks through both operations and the join using a concrete example. + +## The Scenario + +A retail publisher has three active AdCP media buys from a buyer agent. Each media buy contains packages: + +- **Package A**: Sponsored products — coffee brands, carousel format, available on search and category pages +- **Package B**: Homepage takeover — premium display, available on the homepage only +- **Package C**: Seasonal promotion — iced beverages, native format, available site-wide during summer + +A shopper searches for "best cold brew." The publisher's search results page loads. + +## Context Match + +The publisher sends a Context Match request to the TMP Router, which fans out to each buyer's agent. The request contains the page context. It contains no user identity and no package list — the buyer agent uses its synced package set for this placement. + +### What the publisher sends + +```json +{ + "type": "context_match_request", + "request_id": "ctx-7f3a", + "property_rid": "01916f3a-7b2c-7000-8000-000000000001", + "property_id": "retailer-web", + "property_type": "website", + "placement_id": "search-results-grid", + "seller_agent_url": "https://retailer.example", + "artifact_refs": [ + { "type": "custom", "value": "search:beverages-coffee" } + ], + "context_signals": { + "topics": ["632"], + "keywords": ["cold brew", "iced coffee", "coffee beans"], + "sentiment": "positive", + "summary": "Shopper searching for cold brew coffee products" + }, + "geo": { "country": "US", "region": "US-CA" } +} +``` + +The buyer agent sees what the page is about — coffee, positive purchase intent, California — and evaluates its packages against that context. Note what is absent: no user ID, no device information, no session token, no IP address. + +### What the buyer responds + +The buyer agent evaluates each package against the context. Package B is homepage-only, so it does not match a search results page. Packages A and C match. The buyer returns an offer for each. + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-7f3a", + "offers": [ + { + "package_id": "pkg-A", + "brand": { "domain": "bluebottle.example.com", "brand_id": "blue_bottle" }, + "summary": "Cold brew coffee carousel — featuring top-rated blends", + "creative_manifest": { + "format_kind": "sponsored_placement", + "assets": { + "source_catalog": { + "asset_type": "catalog", + "catalog_id": "bluebottle-products" + } + } + }, + "creative_data": { + "sponsor_label": "Sponsored by Blue Bottle" + } + }, + { + "package_id": "pkg-C", + "summary": "Free shipping on iced beverages — summer promotion", + "price": { "amount": 0, "currency": "USD", "model": "flat" }, + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "title": { "asset_type": "text", "content": "Free shipping on iced beverages" }, + "body_text": { "asset_type": "text", "content": "Summer promotion — order any iced beverage and get free delivery." }, + "landing_page_url": { "asset_type": "url", "url": "https://shop.example.com/promo/summer-iced" } + } + } + } + ], + "signals": { + "segments": ["coffee_enthusiast", "high_purchase_intent"], + "targeting_kvs": [ + { "key": "category_affinity", "value": "beverages" }, + { "key": "seasonal_relevance", "value": "high" } + ] + } +} +``` + +The buyer returns an offer per matched package. Each offer carries a `package_id` and optionally a `brand`, `price`, `summary`, `creative_manifest`, and `creative_data`. The `summary` gives the publisher enough to judge relevance. When the creative manifest is present inline, the publisher has everything needed to render. For large creatives (e.g., VAST video), the manifest references external assets via URLs rather than embedding them. This provider-hop response validates against `provider-context-match-response.json`. Targeting pairs use `signals.targeting_kvs`; the router preserves them unchanged under `signals_by_provider[provider_id].targeting_kvs` in the `context-match-response.json` shape returned to the publisher. + +### What Context Match never carries + +- User IDs (hashed or otherwise) +- Device identifiers +- Session tokens +- IP addresses +- Any data that could identify a specific user + +This is not a policy restriction. It is enforced by the router's context code path, which has no access to identity data — no shared memory, no shared state, no communication channel to the identity code path. [TEE attestation](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture) can make this separation independently verifiable. + +## Identity Match + +Separately — and with a random delay and random ordering, so the two requests can't be paired by timing or by which arrives first — the publisher sends an Identity Match request to the TMP Router, which fans out to each buyer's agent. The request contains the publisher's `seller_agent_url` and an identity token; the buyer resolves the active package set from `seller_agent_url`, or evaluates against the explicit `package_ids` list when the publisher sends one. The request contains no page context. + +### What the publisher sends + +```json +{ + "type": "identity_match_request", + "request_id": "id-9b2c", + "seller_agent_url": "https://publisher.example", + "identities": [ + { "user_token": "tok_hk82mfp1", "uid_type": "uid2" }, + { "user_token": "ID5*aB3xY...", "uid_type": "id5" }, + { "user_token": "a1b2c3d4e5f6...", "uid_type": "hashed_email" } + ], + "consent": { + "gdpr": true, + "tcf_consent": "CPx2XYZABC..." + }, + "package_ids": ["pkg-A", "pkg-B", "pkg-C"] +} +``` + +Each entry in `identities` is a `{user_token, uid_type}` pair. The publisher SHOULD include every token they have available — buyers resolve on whichever graph matches, and sending more tokens maximizes match rate without leaking additional page context. Each `user_token` comes from an existing identity provider (ID5, LiveRamp, UID2) or is publisher-generated. The `uid_type` tells the buyer which identity graph to resolve against, avoiding trial-and-error matching. The `consent` object carries the user's consent signal — buyers in regulated jurisdictions MUST NOT process the tokens without it. Tokens are opaque to the buyer — the buyer can map them to their own identity graph (if they have a match), but cannot reverse them to PII or correlate with any page context. + +Note what is absent: no URL, no search query, no content signals, no topic IDs. The buyer agent evaluates this request based purely on user identity and package eligibility. + +### What the buyer responds + +```json +{ + "type": "identity_match_response", + "request_id": "id-9b2c", + "eligible_package_ids": ["pkg-A", "pkg-B"], + "serve_window_sec": 60, + "tmpx": "k1.dG1weC1leGFtcGxlLWVuY3J5cHRlZC10b2tlbi4uLg" +} +``` + +The buyer reports that this user is eligible for packages A and B. Package C is absent — the user is not eligible. The publisher does not need to know why — frequency capping, audience mismatch, and other disqualification reasons are buyer-internal. + +The `serve_window_sec: 60` tells the router: "Cache this for 60 seconds." The router uses this cached eligibility to fill whatever placements exist — a single slot, a CTV ad pod, or a page with multiple ad units — without re-querying the buyer. The publisher decides how to allocate across placements. + +### What Identity Match never carries + +- Page URLs +- Content hashes +- Search queries +- Topic IDs +- Content ratings +- Any data that could identify what the user is looking at + +This is enforced by the router's identity code path, which has no access to context data — no shared memory, no shared state, no communication channel to the context code path. TEE attestation can make this separation independently verifiable. + +## The Publisher-Side Join + +The publisher now has two independent responses. They join them on their own infrastructure — neither the buyer agents nor the router see the joined result. + +``` +For each offer from Context Match: + + pkg-A: + Context says: offer for cold brew carousel (creative manifest inline) + Identity says: eligible (in eligible_package_ids) + → Accept the offer. Render using the inline creative manifest. + → Apply "coffee_enthusiast" segment to ad server targeting. + + pkg-C: + Context says: offer for iced beverage promotion + Identity says: not eligible (absent from eligible_package_ids) + → Skip this offer for this user. + +Result: Accept Package A. +Resolve the provider-attributed targeting tuples through the publisher's [`targeting_kv_mapping`](/dist/docs/3.2.0-beta.4/trusted-match/specification#publisher-targeting-kv-mapping), then set the mapped ad-server keys. Drop any tuple without a mapping. +``` + +The publisher already knows how to render Package A — it maps to a sponsored carousel slot. The inline creative manifest carries the catalog items and assets needed. The publisher handled the rest. + +## The Offer Model + +TMP's response model is the offer. An offer carries a `package_id` (required) and optional fields: `brand`, `price`, `summary`, `creative_manifest`, and `creative_data` (a key-value map for dynamic rendering values). + +**Simple case (GAM/Prebid)**: The offer carries `package_id`. The provider may return a provider-local package targeting pair in `signals.targeting_kvs`; the router attributes it in `signals_by_provider`, and the publisher maps `(provider_id, key)` to its GAM key for line item matching. The optional `creative_data` map carries package-local presentation enhancements (e.g., sponsor labels or promo text); it is not an ad-server macro namespace. There are no protocol-required keys: publishers ignore unknown keys, and missing keys do not invalidate an otherwise renderable offer. + +**Rich case (AI assistants, dynamic retail)**: The offer includes a `summary` ("50% off cold brew — recipe integration") so the publisher can judge relevance, and an inline `creative_manifest` with everything needed to render. For large creatives (e.g., VAST video), the manifest references external assets via URLs rather than embedding the full payload. + +**Dynamic brands**: When the product supports `dynamic_brands`, the buyer can include a `brand` on the offer, selecting from their portfolio at match time rather than being locked to a pre-configured package brand. + +**Variable pricing**: When the product supports variable pricing, the buyer can include a `price` on the offer. + +The creative manifest carries catalog items, text, images, and everything else required for rendering. Optional `creative_data` may enhance that presentation but cannot replace required manifest assets. This reuses the existing CreativeManifest schema. + +Per-user exposure tracking flows through the TMPX macro — an encrypted token from Identity Match that the publisher substitutes into creative tracking URLs. The buyer's impression pixel decrypts the token and logs per-user exposures in real time. Aggregate delivery reporting via `get_media_buy_delivery` provides reconciliation and pacing data. + +## Enrichment Signals + +Context Match responses can include enrichment signals alongside package activation: + +- **Segments**: Audience or contextual segments (e.g., "coffee_enthusiast", "high_purchase_intent") that flow into the publisher's ad server as targeting signals. +- **Targeting key-values**: Provider-local key-value pairs (e.g., `category_affinity=beverages`). The router attributes them under the provider's registered `provider_id`; the publisher maps `(provider_id, key)` to its local destination before using the value for line item targeting, reporting breakdowns, or real-time decisioning. Unmapped tuples are dropped. + +Enrichment signals are additive — they are not tied to specific packages. A buyer agent might return enrichment signals even when it activates no packages, providing value as a data provider rather than a demand source. + +This is how existing RTD (Real-Time Data) modules work today. TMP unifies enrichment and package activation into a single protocol, so a buyer agent can do both in one response. + +## Package List Management + +Identity Match sends ALL active package IDs for a given buyer — not just those that matched in Context Match. This is intentional: it prevents the buyer from correlating which packages matched the page content. If the buyer only received packages that matched a hiking article, they'd know the user was reading about hiking. + +Package lists update when new media buys are created via `create_media_buy`. The router maintains the active package list per buyer, derived from the buyer's media buy history with the publisher. + +In Context Match, the optional `package_ids` field can narrow evaluation when the publisher has a specific reason — for example, CTV pod composition where only video packages apply. This does not affect Identity Match: when Identity Match sends `package_ids`, the composition must be independent of the current placement (all-active or fuzzed), not the placement-specific subset. + +Stale packages from expired or cancelled media buys should be removed from the active list within 1 hour. The router is responsible for this cleanup. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles.mdx b/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles.mdx new file mode 100644 index 0000000000..83886027aa --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles.mdx @@ -0,0 +1,239 @@ +--- +title: Data Protection Roles +description: How TMP's architecture maps to GDPR controller/processor roles — what each party determines, what data each party holds, and where the risks are. +"og:title": "AdCP TMP Data Protection Roles" +--- + +# Data Protection Roles + +This page maps TMP's architecture to GDPR data protection roles (controller, processor, joint controller). It explains what each participant can and cannot determine about individuals, where the architectural boundaries support a processor position, and where they don't. + +This is an architectural analysis, not legal advice. Organizations should consult qualified data protection counsel for their specific circumstances. Familiarity with the [TMP privacy architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture) is assumed — concepts like structural separation, TEE attestation, package set decorrelation, and temporal decorrelation are defined there. + +## Verdict at a Glance + +| Participant | Role | Confidence | Where the risk sits | +|---|---|---|---| +| **TMP Router** | Processor | High (architectural) | Operator deployment integrity. Mitigated by TEE attestation. | +| **Buyer agent** | Processor | Conditional (operational) | Proprietary scoring, cross-advertiser data combination, audience construction, cross-publisher exposure accumulation. | +| **Publisher** | Controller | Unchanged | Consent collection; configuring data processors; the final serve decision. | +| **SSP / wrapper performing the join** | Joint controller or processor for the publisher | Conditional | Whoever performs the context+identity join inherits controller responsibility for that step. | +| **Identity provider** | Out of scope for TMP; controller for token issuance | Varies by provider | Token scope and graph behavior (publisher-first-party vs. deterministic cross-site vs. probabilistic graph) materially changes the publisher's risk. | +| **Measurement / attribution** | Out of scope for TMP | n/a | Post-impression flows reintroduce controller analysis that TMP does not address. See [Out of Scope](#out-of-scope-post-impression-flows). | + +## Background: Controller vs. Processor + +Under GDPR, a **controller** determines the purposes and means of processing personal data. A **processor** processes personal data on behalf of a controller. A **joint controller** jointly determines purposes and means with one or more other controllers. + +The distinction matters because controllers carry heavier obligations: legal basis for processing, data subject rights, DPIAs, and direct liability. The key question is not "who touches the data" but "who decides what happens with it." + +In advertising, the risk of being deemed a controller increases when an intermediary: + +- Decides to show an ad to a specific person based on something it knows or infers about them +- Builds or populates a segment by determining that an identifier has a characteristic +- Combines third-party segment data with other data to create a new profile +- Uses the data for any purpose beyond the specific campaign instruction + +The risk decreases when the intermediary: + +- Processes data under instructions from a party that has a direct relationship with the data subject or data provider +- Does not hold title to any segment or audience data +- Does not use the data independently or for its own purposes +- Does not combine data across sources to create new mappings + +## Why TMP's Posture Is Unusual + +The buyer agent's processor position is unusual relative to how the ad tech industry typically operates. Most DSPs function as joint controllers or independent controllers for their own optimization purposes, even when their MSAs claim processor status. The IAB Europe TCF framework reflects this by assigning separate purposes and legal bases to each vendor in the chain. + +TMP's architecture *enables* a buyer agent processor position that traditional DSPs cannot credibly claim, because: + +- The buyer never receives user identity and page context together (DSPs receive both in every bid request) +- The buyer does not set per-impression prices based on identity (DSPs submit bid prices informed by user data) +- The buyer returns binary eligibility, not a scored bid (DSPs return a price that encodes their valuation of the user) + +Whether a buyer agent operates within that envelope is a contractual and operational question, not an architectural one. Most buyer-side organizations will need to make explicit choices to stay inside it. A buyer agent that introduces proprietary scoring, cross-advertiser data combination, or independent audience construction erodes the architectural advantage and may need to assess its role as a joint controller regardless of what the protocol enables. + +## The TMP Router: Processor + +The TMP Router is infrastructure. It does not make targeting decisions, build profiles, or evaluate users. It receives requests from the publisher and fans them out to buyer agents. It receives responses and merges them. It returns the merged result to the publisher. + +**What the router sees on the Context Match path:** + +- Content signals (topics, keywords, sentiment) +- Placement identifiers +- Geographic context (coarse) +- No user identity of any kind + +**What the router sees on the Identity Match path:** + +- Opaque user tokens +- Package identifiers +- Consent signals +- No page context of any kind + +The two paths are structurally separate: no shared memory, no shared state, no communication channel. The router cannot associate a user token with a page URL because no single code path ever holds both. See [Privacy Architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture) for the enforcement mechanism. + +**What the router does not do:** + +- Evaluate whether a user should see an ad +- Check frequency caps or audience membership +- Build or store user profiles +- Combine context data with identity data +- Make pricing decisions +- Retain data beyond the request/response lifecycle + +The router is a processor acting on the publisher's instructions (which providers to call, which properties to serve). It processes personal data (opaque user tokens) solely to deliver them to buyer agents and return the result. + +> **Bottom line:** The router can credibly claim processor status. With TEE attestation, this is independently verifiable; without TEE, it depends on operator integrity and code audit. + +## The Buyer Agent: Processor Conditional on Operational Discipline + +TMP architecturally constrains what the buyer receives (no context with identity) and what it returns (eligible package IDs, nothing more). It does not constrain what the buyer does internally with the tokens it sees, the exposure histories it builds, or the proprietary models it runs. + +The processor position is therefore conditional, not architectural. It depends on the buyer agent's operational choices and the DPAs that govern them. Most buyer-side organizations will need to make deliberate choices to stay inside the envelope TMP enables. + +**What the architecture provides:** + +- The buyer never receives page context with identity. Identity Match requests carry no page URL, no content signals, no topic IDs. +- The buyer does not set price per impression. The Identity Match response is eligible package IDs and a cache TTL — no price, no bid, no scored response. +- The buyer does not make the serve decision. The publisher performs the join (or delegates it — see [the SSP question](#the-publisher-and-the-ssp-join)). + +**Where the processor position erodes:** + +- **Proprietary eligibility scoring.** A buyer agent that uses ML models to score eligibility — even models trained only on advertiser data — is determining means of processing. The line between "applying advertiser criteria" and "operating an optimization engine" is the line between processor and joint controller. A buyer agent that does *not* run a proprietary optimizer is uncompetitive against existing DSPs. This is the base case, not the edge case. +- **Cross-advertiser data combination.** A buyer agent serving multiple advertisers must keep their data isolated. Combining segment membership across advertisers to enrich profiles is controller behavior. +- **Audience construction from observation.** Applying an advertiser-provided audience list (processor) is different from constructing an audience by observing behavior (controller). See [Risks requiring DPA scrutiny](#risks-requiring-dpa-scrutiny). +- **Cross-publisher exposure histories.** Cross-publisher frequency capping is the headline TMP use case *and* the headline data protection exposure. Even without context, an exposure history tied to a user token across many publishers constitutes a behavioral profile under CJEU jurisprudence. The protocol does not eliminate this — it isolates it. + +> **Bottom line:** TMP enables a buyer-agent processor position; it does not enforce one. The DPA between the advertiser and the buyer agent must specify what the buyer may do with the tokens it sees, how exposure histories are bounded, and how proprietary models interact with advertiser data. + +## The Publisher and the SSP Join + +The publisher is the first party. They have a direct relationship with the user. They collect consent. They hold both context (what the user is viewing) and identity (who the user is). TMP does not change the publisher's controller status. + +The publisher's controller responsibilities include: + +- Collecting and transmitting consent signals in Identity Match requests +- Ensuring user tokens are opaque and not reversible to PII by buyer agents +- Performing (or delegating) the join between context and identity locally +- Applying consent logic before serving +- Configuring which providers the router calls (data processor selection) +- Selecting which identity provider's tokens to use (a controller-level decision — see [Publisher configuration choices](#publisher-configuration-choices)) + +**The join in practice.** "The publisher performs the join locally" is correct in principle and incomplete in practice. Most publishers operate ad servers (Google Ad Manager, Kevel, Equativ) that do not natively expose primitives for "join two real-time API responses with consent logic before serving." Publishers using GAM will typically need a header bidder wrapper, a Prebid module, or an SSP shim to perform the join. Many will outsource it to their SSP (Magnite, PubMatic, Index Exchange, OpenX). + +When the join is delegated, the SSP or wrapper inherits controller responsibility for the join step itself. The publisher's DPA with the SSP must reflect this: the SSP becomes a joint controller for the join (or processor specifically scoped to the join) depending on how their broader services are characterized. A publisher who assumes "TMP made me a processor" by virtue of delegating the join has misread the architecture. + +> **Bottom line:** Publisher remains controller. If the join is delegated to an SSP or wrapper, that party becomes a joint controller for the join step and must be addressed in the DPA chain. + +## Pricing and Real-Time Decisions + +A critical factor in controller/processor analysis is whether an intermediary makes real-time pricing or bidding decisions based on user identity. + +**TMP does not include real-time pricing based on identity.** Here is where pricing occurs in the protocol: + +| Decision | When | Based on | Where | +|---|---|---|---| +| Package price | Media buy negotiation (offline) | Product catalog, volume, terms | Buyer agent and publisher, before any user is evaluated | +| Context Match offer price | Request time | Content context only — no user identity | Context Match path (no identity data available) | +| Identity Match eligibility | Request time | Frequency caps, audience membership | Identity Match path (no context data available) | +| Final serve decision | After both responses return | Publisher (or SSP) joins context + identity + consent | Publisher infrastructure or delegated to SSP | + +No participant in TMP sets a price based on "this specific user on this specific page." The Context Match path may include variable pricing (a buyer might value hiking content more than general content), but this is based on content, not identity. The Identity Match path determines eligibility, not price. + +The pre-negotiated pricing model reduces the link between identity and economic outcomes, but does not eliminate it entirely. When the publisher (or SSP) joins context match offers with identity match eligibility and activates a package, the economic result is that this user on this page saw this ad at this price. A regulator may assess the system holistically rather than examining individual protocol messages. The architectural distinction is that no single intermediary makes a combined user-plus-context pricing decision. + +This is distinct from OpenRTB, where a bidder receives user identity and page context together and submits a per-impression bid price. In that model, the bidder *can* make a real-time pricing decision based on who the user is combined with what they are viewing. Whether it does depends on the campaign — many bidders price primarily on context and use identity only for frequency capping, which is closer to a processor pattern. The structural concern is that OpenRTB *enables* this combination, and the processor position depends on contractual constraints rather than architectural ones. TMP separates these concerns at the protocol level. + +## Out of Scope: Post-Impression Flows + +**TMP covers real-time decisioning only.** It does not specify how delivery reports, conversion events, attribution, or measurement data flow after an impression is served. + +This matters because every campaign needs conversion tracking, view-through attribution, MMM inputs, and incrementality measurement. These flows route impression-level data — typically including user tokens, creative IDs, timestamps, and conversion events — to attribution systems (CM360, Innovid, Flashtalking), DSP-native attribution stacks, and measurement vendors (DV, IAS, iSpot, Nielsen). These vendors are typically controllers or joint controllers for the data they receive. + +If operators plug their existing impression-log pipelines into TMP-decisioned campaigns, they will have built privacy-preserving real-time decisioning attached to a wide-open post-impression pipe. The architectural protection in front does not reach the back. + +Two paths address this: + +1. **Scope-limit deployment.** Treat post-impression flows as a separate data protection question, governed by the existing DPAs between the advertiser, the measurement vendors, and any clean room operators. TMP is not the lever for solving attribution privacy; existing frameworks (clean rooms, measurement APIs, aggregated reporting) are. +2. **Adopt compatible attribution.** Use buyer-blind conversion APIs, publisher-side conversion logs joined in a clean room, or aggregated measurement systems that maintain the same separation discipline as TMP itself. This is an emerging area; AdCP does not yet specify a "TMP-compatible attribution" pattern, though one may follow. + +DPOs evaluating TMP adoption should treat post-impression flows as a distinct workstream and not assume the protocol's separation properties extend to them. + +## Comparison: AXE (Deprecated) vs. TMP + +[AXE](/dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine), TMP's predecessor, had a weaker data protection posture: + +| | AXE | TMP | +|---|---|---| +| What the real-time endpoint received | Full OpenRTB-style request: user identity + page context + device signals | Separate requests: context OR identity, never both | +| Who saw user + context together | The AXE endpoint operator | Only the publisher (or delegated SSP), as first party | +| Profile construction risk | Operator could theoretically build browsing profiles | Architecturally constrained for the router (no code path holds both signals); buyer-side correlation impeded by [decorrelation mechanisms](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture) but depends on publisher compliance with SHOULD-level requirements | +| Pricing model | Opaque segment decisions fed ad server targeting | Pre-negotiated package prices, no per-impression bidding | +| Separation enforcement | Trust and contract | Code structure (auditable) or TEE attestation (verifiable) | + +AXE's design meant the endpoint operator (typically the orchestrator) received user identity and page context in the same request. The operator's processor position depended on contractual commitments not to misuse the combined data. TMP replaces this with structural separation — the router cannot misuse data it never holds together. + +## Comparison: RTD Modules (Prebid Real-Time Data) + +RTD modules are vendor-specific Prebid extensions that enrich bid requests at auction time. Each module sends the full OpenRTB BidRequest (2-10KB) to a vendor endpoint, which returns enrichment data (audience segments, contextual classifications, brand safety scores). + +**Data protection concern:** RTD modules send user identity and page context together to each vendor. The vendor's processor position depends on contract, not architecture. The cumulative exposure is significant: a publisher using 5 RTD modules sends the full user-plus-context payload to 5 different vendor endpoints per impression. Each vendor's processor position is independently contractual. + +TMP replaces vendor-specific RTD modules with a standardized protocol that enforces separation. Instead of sending everything to every vendor, TMP sends context to the context path and identity to the identity path. The result is the same (packages activate or don't), but the data exposure is structurally minimized. + +## Risks Requiring DPA Scrutiny + +These are operational risks that DPAs must address. The architecture does not constrain them. + +**1. Cross-publisher exposure histories** (the headline buyer-agent risk). + +Buyer agents that track cross-publisher frequency maintain exposure histories tied to user tokens. Even without page context, this constitutes a behavioral profile: how many properties this user appears on, how frequently, across which publisher categories. The CJEU's *Meta Platforms* decision (Case C-252/21) established that combining data across services can constitute controller-level processing even without deep profiling. + +This is not a footnote risk — it is the headline data protection exposure of the headline TMP use case. The protocol does not eliminate it; it isolates it. DPAs between advertisers and buyer agents must specify the legal basis, retention period, purpose limitation, and erasure flow (Article 17 rights apply: a user exercising erasure means the buyer's exposure history tied to that token must be deletable). + +**2. Retargeting audience construction.** + +There is a distinction between *applying* an audience (checking a user token against an advertiser-provided list — processor pattern) and *building* an audience (determining that a user token has a characteristic based on observed behavior — controller pattern). If a buyer agent receives conversion events or site visit signals and constructs a retargeting pool, it is building an audience. + +How retargeting audiences enter the system matters. Advertiser-provided lists that the buyer checks mechanically support a processor position. Buyer-constructed audiences from observed behavior do not. + +**3. Proprietary eligibility scoring.** + +A buyer agent that uses ML models to score eligibility — even models trained only on advertiser data — is determining means of processing. DPAs should specify what models the buyer may run, what data trains them, and how their outputs are constrained. + +**4. Measurement and attribution flows.** + +Covered in [Out of Scope](#out-of-scope-post-impression-flows). Treat as a distinct workstream from TMP itself. + +## Publisher Configuration Choices + +These are publisher-side configuration decisions with data protection implications. Each is a controller-level decision the publisher makes. + +**1. Identity provider selection.** + +TMP consumes tokens from identity providers, but the providers are not interchangeable. Different graph behaviors create fundamentally different risk shapes: + +| Token type | Risk shape | Examples | +|---|---|---| +| Publisher-first-party | No cross-site linkage. Lowest risk profile. | `publisher_first_party` (per-publisher hashed identifiers) | +| Deterministic cross-site | Same user resolves to same token across sites and devices. Enables cross-site profiling. | UID2 (operated by The Trade Desk, primarily for buy-side use), ID5 | +| Probabilistic / commercial graph | Provider operates an identity graph that resolves tokens to PII inside the provider's walls. | RampID (LiveRamp) | + +The choice of identity provider is itself a controller-level decision. Selecting a deterministic cross-site token expands the buyer agent's cross-publisher correlation surface. Publisher DPAs and consent flows should reflect the provider's specific posture, not treat all `uid_type` values equivalently. + +**2. Context Match with full artifacts.** + +When a publisher sends full content (`artifact` field) rather than classified signals (`context_signals`), the buyer agent receives the actual content. `context_signals` (pre-classified topics, sentiment, keywords) is the privacy-preserving baseline. Full artifacts exist for cases where the buyer needs to evaluate content directly (e.g., AI assistant conversations where classification alone is insufficient). + +**3. Cache semantics.** + +Identity Match responses include a `ttl_sec` caching contract. During the cache window, the router returns cached eligibility without re-querying the buyer. Cached eligibility is personal data (it's tied to a user token). The [specification](/dist/docs/3.2.0-beta.4/trusted-match/specification) allows TTLs up to 86,400 seconds (24 hours) with a recommended clamp at 3,600 seconds. Routers should enforce short TTLs, must not retain cached data beyond expiry, and must not use cached eligibility for any purpose other than responding to subsequent Identity Match requests for the same token. + +**4. Variable pricing on context.** + +The Context Match offer can include an `OfferPrice`. Because Context Match carries no identity, this is contextual pricing — not per-user pricing. However, if a publisher's `context_signals` are specific enough to identify an individual (e.g., a unique AI conversation summary), the contextual path could carry de facto identity. Publishers should ensure `context_signals` do not contain PII or uniquely identifying content. + +**5. Join delegation.** + +If the publisher delegates the context+identity join to an SSP, header bidder wrapper, or third-party module, that party becomes a joint controller for the join step. The publisher remains controller for the broader serve decision but must address the delegate's role in the DPA chain. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/execution-gap.mdx b/dist/docs/3.2.0-beta.4/trusted-match/execution-gap.mdx new file mode 100644 index 0000000000..46b91b72a2 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/execution-gap.mdx @@ -0,0 +1,93 @@ +--- +title: The Execution Gap +description: Why existing protocols fail at real-time execution, and why TMP takes a matching approach instead of an auction approach. +"og:title": "AdCP The Execution Gap" +--- + +# The Execution Gap + +A buyer agent discovers inventory through `get_products`, negotiates a deal through `create_media_buy`, and later measures delivery through `get_media_buy_delivery`. The deal exists. Packages are defined with agreed pricing, targeting, and budgets. + +Then a user visits a page. Or opens an app. Or asks an AI assistant a question. + +What happens? + +## What Happens Today + +The answer depends entirely on the surface — and on each surface, it's ad hoc. + +### Web (with ad server) + +The publisher's ad operations team manually creates line items or PMP deals in their ad server (GAM, Kevel, FreeWheel) that correspond to each AdCP package. When a page loads, the ad server evaluates its own targeting rules to decide which line items are eligible. If the publisher uses Prebid Server, vendor-specific RTD (Real-Time Data) modules can inject signals into the auction — but each module speaks its own API, sends the full OpenRTB BidRequest (~2-10KB of JSON), and operates independently of the AdCP deal structure. + +The result: packages negotiated through AdCP are activated through a separate, manual process. The deal and the execution are disconnected. + +### AI Assistants + +There is no standard mechanism. AI platforms (ChatGPT, Snap AI, Reddit chat, character.ai) that want to monetize conversations have no protocol for asking buyer agents "which of your packages match this conversation?" Each platform builds its own ad serving logic, its own buyer integrations, and its own targeting system — or partners with a single ad network and delegates the entire problem. + +### Mobile Apps + +Mediation SDKs (AppLovin MAX, ironSource, Google AdMob) handle the decision: which network deal should serve for this user and placement? But mediation operates on its own deal registry, disconnected from AdCP packages. The app developer configures waterfall priorities or auction rules inside the mediation dashboard. There is no protocol path from "AdCP package exists" to "mediation layer activates it." + +### CTV + +Pod servers compose ad breaks from multiple deals. Each deal is configured in the broadcaster's ad server with targeting rules, competitive separation constraints, and creative rotation logic. Pod composition is a complex, surface-specific problem. There is no standard way for a buyer agent to say "activate my package for this pod, and prefer the 15-second cutdown." + +### Retail Media + +Retailers manage sponsored product placements through internal recommendation engines. When a shopper searches or browses a category, the retailer's algorithm decides which sponsored products to show. Buyer agents have no real-time input into this decision beyond the initial deal terms. There is no protocol for saying "for this search context, prefer these GTINs and exclude these promotions." + +## Why OpenRTB Is Wrong for This + +OpenRTB was designed for a specific scenario: an ad exchange runs an auction among bidders who have no pre-existing relationship. It solves the cold-start problem — how do strangers trade ad inventory in real time? + +But when packages are pre-negotiated through AdCP, the parties are not strangers. They have a deal. The question at execution time is not "who will bid the highest?" but "which of our agreed packages should activate for this context?" + +OpenRTB is wrong for this in three specific ways: + +**It bundles user identity with page context.** Every OpenRTB bid request sends user IDs, device fingerprints, IP addresses, and page URLs in a single object. This is a structural privacy failure. Buyers can — and do — use this data to build cross-site browsing profiles. No amount of consent management fixes the architecture; the data travels together by design. + +**It forces auction semantics.** OpenRTB assumes every impression is a competitive auction. But pre-negotiated deals are not competitive — the price is already agreed. Forcing a deal through auction machinery means building PMP logic, deal ID matching, and floor price enforcement on top of a protocol that was designed for open competition. The tail wags the dog. + +**It is heavyweight.** A typical OpenRTB bid request is 2-10KB of JSON, carrying the full device object, user object, site/app object, and impression array. When execution only needs to know "which packages match this page context?" most of that payload is wasted bandwidth and wasted parsing time. + +| What execution needs | What OpenRTB sends | +|---|---| +| Page content signals | Full site object + referrer chain + keyword lists | +| Available packages | Nothing — buyer must infer from deal IDs | +| Content classification | Partial — buyer often reclassifies independently | +| User eligibility | Raw user IDs, device IDs, IP address, GPS | +| Result: package activation | Result: bid with price, creative URL, tracking pixels | + +## Why Auctions Are a Resolution Strategy, Not the Protocol + +A related instinct is to build a new auction protocol — faster, lighter, more privacy-aware — and use it for real-time execution. CloudX's OpenAuction takes this approach: open-source auction logic running in a TEE (Trusted Execution Environment) with encrypted bids and attestation proofs. It is well-engineered. + +But auctions are the wrong primitive for most real-time ad decisioning: + +**Filtering, not competition.** "Which of my pre-bought packages apply to this context?" is a filtering operation. The buyer evaluates the available packages against their campaign targeting and budget. There is no adversarial competition — the buyer is selecting from their own deals. + +**Steering, not bidding.** "Within this package, which catalog items or creative variants should I prefer?" is a steering operation. The buyer expresses preferences within the bounds of an agreed deal. There is no price to compute. + +**Eligibility, not ranking.** "Is this user frequency-capped or high-intent for this package?" is an eligibility check. The buyer looks up the user's status. There is no bid to rank. + +An auction is one valid resolution strategy when multiple packages from multiple buyers compete for the same placement. But making the auction the protocol forces every surface — including AI assistants selecting sponsored content by relevance, retailers populating carousels by product fit, and CTV broadcasters composing pods by editorial judgment — into a bidding paradigm. + +TMP takes a different approach: return the matching packages, and let the publisher decide how to resolve them. If the publisher wants an auction, they can run one — potentially using CloudX's TEE infrastructure for verifiable fairness. But the auction sits on top of matching, not in place of it. + +## What a Protocol-Level Solution Looks Like + +The execution gap requires a protocol that: + +1. **Works with pre-negotiated packages.** The market already happened at planning time. The real-time layer activates deals, it does not negotiate them. + +2. **Separates context from identity.** The buyer needs content signals to decide which packages match. The buyer needs user signals to evaluate eligibility. These two needs must be served by two independent operations so that buyers cannot correlate them. + +3. **Supports catalog and creative refinement.** Activating a package is not always a binary on/off. The buyer may need to specify which catalog items to feature, which creative variant to serve, or which promotions are active. + +4. **Works across surfaces.** The same protocol must work for web pages with ad servers, AI assistants without ad servers, mobile apps with mediation layers, retailers with recommendation engines, and broadcasters with pod servers. + +5. **Meets real-time latency requirements.** Sub-50ms end-to-end, because execution happens on every page load, every conversation turn, every app screen. + +This is what TMP provides: two lightweight operations — [Context Match and Identity Match](/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity) — that activate pre-negotiated packages across any surface, with structural privacy guarantees and sub-50ms latency. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation.mdx b/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation.mdx new file mode 100644 index 0000000000..b9ac90fa8b --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation.mdx @@ -0,0 +1,117 @@ +--- +title: Identity Match Frequency-Cap Data Flow +sidebarTitle: Frequency-Cap Data Flow +description: "Boundary contract between the impression tracker and the Identity Match service for frequency capping — the data flow only. Internal counting, policy evaluation, and storage layout are buyer-internal concerns." +"og:title": "AdCP TMP Identity Match Frequency-Cap Data Flow" +--- + +# Identity Match Frequency-Cap Data Flow + +This page describes how frequency-cap state reaches the Identity Match service and how Identity Match consumes it at eligibility time. It defines **the data flow only** — what crosses the boundary between the impression tracker and the Identity Match service. Internal mechanics (how the impression tracker counts impressions, where policies live, what storage layout the Identity Match service uses, how identities are deduplicated upstream) are buyer-internal concerns and are out of scope here. + +The wire spec lives in the [TMP specification](/dist/docs/3.2.0-beta.4/trusted-match/specification); the conformance invariants the Identity Match service must satisfy are also normative there. The reference implementation of the Identity Match cap-state store ships in [`adcp-go/targeting/fcap`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting/fcap). + +## Roles + +| Component | Responsibility | +|---|---| +| **Identity Match service** | At query time, returns `eligible_package_ids` — the subset of requested packages the user is not currently capped on (and that pass other eligibility checks). It does not count impressions and does not own fcap policies. | +| **Impression tracker** | Receives pixel fires, decodes TMPX, applies the buyer's fcap policies (counting, windowing, multi-identity dedup, whatever the buyer's policy logic does), and signals "cap fired" to the Identity Match cap-state store on the impression that exhausts a cap. | +| **Identity Match cap-state store** | Records `(user_identity, package) → cap-until` entries with TTL. Queried by the Identity Match service at eligibility time. Written by the impression tracker (or a downstream service in its pipeline). | + +The split is deliberate: counting impressions, evaluating windows, and deciding when a cap fires are buyer-internal policy concerns that vary across buyers and across campaigns. The Identity Match service stays narrow — it answers "is this user currently capped on this package?" and nothing more. New cap dimensions (advertiser, campaign, creative — see [extensions](#future-extensions)) plug into the same boundary contract without changing the service. + +## End-to-end flow + +``` +1. Identity Match query + publisher → router → Identity Match service + Identity Match looks up cap state for each (identity, package) pair + returns eligible_package_ids + tmpx (HPKE-encrypted resolved identities) + +2. Ad serves; creative tracking URL fires pixel with {TMPX} + publisher's player/page → impression tracker + +3. Impression tracker decodes TMPX + → resolved identities + signed package context (seller_agent_url, package_id) + +4. Impression tracker applies the buyer's fcap policies + → counts this exposure against whatever dimensions the buyer caps on + (package, campaign, advertiser, creative, line item, …) for each + resolved identity, using whatever policy logic and storage the buyer + runs internally + +5. If this impression exhausts a cap (i.e., it is the last allowed exposure + under one of the buyer's policies), the impression tracker (or a + downstream service in its pipeline) writes a cap-fire entry to the + Identity Match cap-state store: + (user_identity, package) capped until <expireAt> + +6. Subsequent Identity Match queries for that user see the cap-state entry + and exclude the package from eligible_package_ids until the entry expires +``` + +Steps 1, 2, and 6 cross the wire and are normatively defined in the [TMP specification](/dist/docs/3.2.0-beta.4/trusted-match/specification). Steps 3 and 5 cross the impression-tracker → cap-state-store boundary and are defined on this page. Step 4 is buyer-internal — the protocol does not constrain it. + +## The cap-fire event + +When a buyer's policy evaluation determines that an impression has exhausted a cap, the impression tracker writes a cap-fire entry to the Identity Match cap-state store. Each entry consists of: + +| Field | Description | +|---|---| +| `user_identity` | The resolved identity token (e.g., `rampid:abc`, `id5:def`, `maid:ghi`) the cap fired on. If a single impression resolved to multiple identities and the policy fired on all of them, the impression tracker writes one entry per identity. | +| `seller_agent_url` | The seller agent the package belongs to. Disambiguates identical `package_id` strings across sellers. | +| `package_id` | The package the cap fired on. | +| `expire_at` | Wall-clock time at which the cap expires. The cap-state store enforces this as a TTL — entries are absent after `expire_at`. | + +A single cap-fire event typically corresponds to one entry; a cap that fires on multiple resolved identities or multiple packages produces one entry per `(identity, package)` pair, all sharing the same `expire_at` if the buyer's policy is the same. + +The cap-state store does not record per-impression counts, policy definitions, or window configurations. Its only job is to answer "is this `(user_identity, package)` currently capped?" The buyer's policy logic — counting, windowing, choosing dimensions to cap on, deciding when to fire — lives entirely in the impression tracker. + +## The eligibility query + +At query time, the Identity Match service receives a list of identities and a list of candidate packages. For each candidate package, it checks the cap-state store for any matching `(identity, package)` entry across the user's identities. If any entry exists, the package is excluded from `eligible_package_ids`. This is a presence check, not a count. + +Cap state is one input to eligibility. The Identity Match service also evaluates audience membership, package active state, audience freshness, and any other inputs the buyer cares about — see the [conformance invariants](/dist/docs/3.2.0-beta.4/trusted-match/specification#conformance-invariants-for-identitymatch-eligibility). The cap-state portion of that evaluation is the part this page defines. + +## Policy updates and cap-state re-evaluation + +Cap-state entries are written under whatever fcap policy was in force at cap-fire time. When the buyer's fcap policies change — a window shortens or lengthens, a `max_count` rises or falls, a policy is paused or removed, a package is reassigned to a different policy — the existing cap-state entries written under the old policy can become stale. Stale entries either suppress users who should now be eligible (over-suppression) or fail to suppress users who should now be capped (under-suppression). + +When a fcap rule changes, the buyer's policy owner (typically the impression tracker or a service in its pipeline) MUST re-evaluate every cap-state entry the rule applied to and push the appropriate update to the IdentityMatch cap-state store. Two event shapes cover the cases: + +| Event | When to push | Effect on cap-state | +|---|---|---| +| **Delete cap-state** | A user's exposure count under the new policy is below the new `max_count`, or the policy was removed/disabled, or the package was reassigned away from the policy. | Remove the `(user_identity, package)` entry — the user is no longer suppressed on that package. | +| **Extend cap-state** | A user is still over-cap under the new policy, but the new `expire_at` differs from the existing entry — for example, the window was lengthened (push a later `expire_at`) or shortened (push an earlier `expire_at`). | Overwrite the entry with the new `expire_at`. | + +Re-evaluation runs over the buyer's own counting state (where impression history lives), not over the cap-state store — the cap-state store doesn't carry counts. The output is the set of delete-or-extend events to apply. + +The reference store in [`adcp-go/targeting/fcap`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting/fcap) implements extend natively (a second `RecordCap` for the same `(user_identity, field)` overwrites the prior `expire_at` via `HSETEX`). Delete is a future extension — today, the simplest workaround is to extend with an `expire_at` already in the past, which causes the entry to be treated as absent at the next query and to be reaped by the backend's TTL machinery. + +Re-evaluation can be expensive when a policy applies to many users. Buyers typically run it asynchronously: enqueue the policy-change event, sweep the affected user population in batches, push delete/extend events incrementally. The protocol does not constrain the cadence — only the eventual consistency requirement that cap-state must converge to what the current policies imply. + +## Reference implementation + +The cap-state store API in [`adcp-go/targeting/fcap`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting/fcap) is the reference shape. It exposes two operations: + +```go +RecordCap(ctx, userIdentity string, fields []Field, expireAt time.Time) error +IsCapped(ctx, userIdentity string, field Field) (bool, error) +``` + +— plus batch variants for both. `Field` is `{SellerAgentURL, PackageID}`. The reference store is backed by Valkey 9 hashes, hashed by user identity, with one hash field per `(seller_agent_url, package_id)` tuple and a TTL set to `expire_at`. Other backends (Aerospike, DynamoDB, in-memory, anything) are conformant if they satisfy the boundary contract above. + +## Future extensions + +Today the cap-state store is keyed at `(user_identity, seller_agent_url, package_id)`. Future protocol versions may extend the field to additional dimensions — advertiser, campaign, creative, line item — so a buyer can express caps that span multiple packages without writing N entries on every cap-fire. The boundary contract on this page is unchanged by such extensions: the impression tracker writes cap-fire entries; the Identity Match service checks presence at query time. + +## See also + +- [TMP Specification](/dist/docs/3.2.0-beta.4/trusted-match/specification) — wire spec, TMPX format, conformance invariants +- [Impression Tracker Implementation Reference](/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation) — non-normative reference for the impression-tracker side of the boundary (multi-identity dedup via `impression_id`, fcap_keys label model, log-based reference data model, SDK primitives) +- [Buyer Guide](/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide) — buyer agent integration, Context Match + Identity Match flows +- [Migration from AXE](/dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe) — for buyers transitioning from AXE-shaped pipelines, including the OpenRTB User.eids cross-walk +- [Privacy architecture](/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture) — what each party learns +- [Router architecture](/dist/docs/3.2.0-beta.4/trusted-match/router-architecture) — provider registration, fan-out, latency +- [`adcp-go/targeting/fcap`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting/fcap) — reference cap-state store in Go diff --git a/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation.mdx b/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation.mdx new file mode 100644 index 0000000000..4083142ed8 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/impression-tracker-implementation.mdx @@ -0,0 +1,304 @@ +--- +title: Impression Tracker Implementation Reference +sidebarTitle: Impression Tracker Reference +description: "Non-normative reference for the buyer-internal impression tracker — multi-identity dedup, fcap_keys label model, and the path from an impression pixel to a cap-fire entry at the Identity Match boundary." +"og:title": "AdCP TMP Impression Tracker Implementation Reference" +--- + +# Impression Tracker Implementation Reference + +This page is **non-normative reference content** for the impression tracker that sits behind the [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) boundary. The protocol only constrains: + +- The wire spec — see the [TMP specification](/dist/docs/3.2.0-beta.4/trusted-match/specification). +- The conformance invariants the Identity Match service must satisfy — also normative in the [TMP specification](/dist/docs/3.2.0-beta.4/trusted-match/specification#conformance-invariants-for-identitymatch-eligibility). +- The cap-fire boundary contract — defined in [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation). + +Everything on this page is buyer-internal: how the impression tracker counts impressions, deduplicates across resolved identities, evaluates windows, and decides when a cap fires. Buyers running a conformant impression tracker may pick any approach that produces correct cap-fire events at the boundary. This page documents one such approach — the one implemented in [`adcp-go/targeting`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting) — so other implementers have a worked reference. + +## The cross-identity dedup problem + +A single impression on a user is often resolved to multiple identities (RampID, ID5, MAID, UID2, publisher-issued tokens, etc.) inside the same TMPX. A naive impression tracker that counts per-identity will count one impression as 2–3 against the user's caps. If the buyer runs an identity graph, the buyer can canonicalize identities before counting; if the buyer is graphless or partially graphed (common — Scope3's hosted Identity Match is graphless), no canonical id exists. + +Counter-based approaches paper over this with a `merge_rule` (MAX / OR / SUM) when reading per-identity counters. None of the merge rules is correct in general. The pathological case is identity-resolution toggling across impressions: some impressions resolve `rampid` only, some resolve both `rampid` and `id5`. A MAX-merged counter under-counts; SUM over-counts; OR can't represent more-than-one. The cap fires at the wrong time either way. + +The reference impl avoids the merge-rule problem entirely with an `impression_id` scheme: one id per impression, written to every resolved identity's log, deduplicated by id at read time. The count is exact regardless of whether identities are canonicalized upstream. + +## impression_id rules + +The impression tracker maintains one `impression_id` per impression and writes it to every resolved identity's log. At read time, scanning all of a user's identity logs and deduplicating by `impression_id` recovers the distinct-impression count exactly. + +Required properties: + +1. **Globally unique across all sellers, sources, and time.** A buyer agent serves impressions sourced from many sellers. Collisions across sellers would silently merge distinct impressions and under-count the cap. Any collision-resistant identifier scheme with sufficient entropy is acceptable — UUID (any version), ULID, snowflake, or equivalent. The protocol does not pin a format; values minted at any layer (publisher, decision layer, or buyer at decode) are opaque strings to all other parties. +2. **Three valid sources for the value, in priority order.** The `impression_id` is generated by (a) the publisher's own first-party code, (b) the ad-decision layer (Prebid TMP module, ad server, SSP), or (c) the buyer's impression tracker at TMPX decode time. Layers (a) and (b) deliver the value to the buyer by substituting it into the pixel URL via the [`{IMPRESSION_ID}`](/dist/docs/3.2.0-beta.4/creative/universal-macros#impression-identification) universal macro; the difference between them is operational — who in the publisher's stack does the minting — and is opaque to the buyer once the pixel arrives. +3. **Buyer consumption rule.** The buyer MUST consume `{IMPRESSION_ID}` from the pixel URL when it is present and fall back to decode-time minting only when it is absent. When the buyer mints at decode, the TMPX nonce MUST NOT be reused as the `impression_id` — the TMPX nonce is per-Identity-Match-evaluation and shared across all impressions in the serve window, so it would collide. +4. **Context-only requirement.** For context-only impressions (no `{TMPX}` substitution on the pixel), buyer-side minting at decode is impossible — `{IMPRESSION_ID}` from layer (a) or (b) is the only available source. Publishers and decision layers MUST include `{IMPRESSION_ID}` for TMP context-only impressions. Impression trackers SHOULD treat its absence as an integration error, log it, and either skip the exposure write or fall back to a one-shot identifier per pixel fire. The fallback is degraded because it cannot preserve cross-identity dedup. +5. **One id per impression, written to ALL of the user's resolved identity logs for that impression.** Generating a different id per identity breaks the dedup contract — the same impression would count once per resolved identity. +6. **Pixel retries are a separate concern.** The same pixel firing twice (network retry, page refresh, etc.) must not mint two `impression_id`s — minting two would let pixel retries double-count against the cap. Either dedupe incoming requests by an idempotency key in the pixel URL or `Idempotency-Key` header, or accept a small over-count from retries as benign for fcap purposes. Cross-identity dedup and per-pixel idempotency are different problems with different mitigations. (Lowercase wording: this page is non-normative; the boundary contract on the [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) page is what conformance tests cite.) + +## fcap_keys label model + +Caps are tagged with `dimension:value` labels at impression-write time. Packages declare which labels they map to; fcap policies attach a `window` and a `max_impression_count` to each label. + +``` +package 2342: fcap_keys ["campaign:42", "campaign_group:7", "advertiser:13"] +policy "campaign:42": {window: {interval: 10, unit: "minutes"}, max_impression_count: 5} +policy "campaign_group:7": {window: {interval: 1, unit: "days"}, max_impression_count: 50} +policy "advertiser:13": {window: {interval: 1, unit: "days"}, max_impression_count: 20} +``` + +When the impression tracker writes an exposure for an impression on package 2342, the entry's `fcap_keys` is `["campaign:42", "campaign_group:7", "advertiser:13"]`. When evaluating whether a cap has fired, it scans the log for entries matching each label within that policy's window. + +**Window unit is load-bearing**, not just human-readable shorthand. The reference impl uses `unit` as the sliding-window bucket size: `unit: "hours"` evaluates against hourly buckets; `unit: "minutes"` evaluates against minute buckets. Two policies that look duration-equivalent — `{interval: 2, unit: "hours"}` vs `{interval: 120, unit: "minutes"}` — have the **same window length** but **different post-cap re-evaluation cadence**. After a user hits the 2-hour-bucket cap, the next eligibility check that admits new traffic happens at the next-hour bucket boundary; for the 120-minute-bucket policy, it happens at the next-minute bucket boundary. Pick `unit` to match the cadence you want, not the duration you can fit in the smaller number. + +**Charset constraint.** Each segment matches `[a-zA-Z0-9_-]+` so the `:` delimiter is unambiguous. URL-bearing or otherwise colon-bearing values must be hashed or shortened. + +**Multi-tenant operators** typically adopt a tenant prefix (`buyer-acme:campaign:42`) as a deployment convention to prevent key collisions across advertiser orgs on shared state. This is operator policy, not protocol. + +**Why labels, not hierarchy.** Cap dimensions are heterogeneous across customers — some cap at creative, some at line item, some at advertiser-roll-up. A fixed schema either over-prescribes or under-serves. Labels also make cross-seller caps automatic: any policy whose key is shared across sellers (e.g., `buyer-acme:advertiser:13`) enforces across all of them with no extra mode. Cross-cutting policies are explicit — a campaign that needs both per-campaign and per-advertiser caps declares both keys and gets two policy lookups. + +## Reference data model (valkey-backed, log-based) + +The layout below is what [`adcp-go/targeting`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting) uses. Any backend (Aerospike, DynamoDB, in-memory, anything) is fine; the data shape is the reference, not a requirement. + +### Exposure log (per identity) + +``` +type: STRING (binary-encoded []ExposureEntry, lazy-pruned to window) +key: user:exposures:{HashToken(uid_type + ":" + user_token)} +value: [ + { impression_id, fcap_keys[], timestamp }, + ... +] +``` + +`HashToken` is a 16-byte SHA-256 prefix, hex-encoded. Binary entry encoding keeps the log compact ([`exposure_binary.go`](https://github.com/adcontextprotocol/adcp-go/blob/main/targeting/exposure_binary.go)) — a 30-day log for a typical user is a few KB. + +Each entry records: + +- `impression_id` — generated at TMPX decode. Same value across all of this impression's identity logs. +- `fcap_keys[]` — the labels this impression counts toward. +- `timestamp` — unix seconds. + +### Fcap policy (per fcap_key) + +``` +type: STRING (JSON-encoded FcapPolicy) +key: fcap_policy:{fcap_key} +value: { window: {interval, unit}, max_impression_count, active, updated_at } +``` + +Sliding window applied at read by counting log entries that fall in the current and prior buckets that span the window. Bucket size is derived from `window.unit` (`minutes`/`hours`/`days`/`weeks`/`months`); window length is `interval × unit`. The bucket-level filter, not a per-second `>=` filter on entry timestamps, is what production uses — it makes re-evaluation cadence after a cap fires predictable from the policy's `unit`. + +### Package configuration (per package) + +``` +type: STRING (JSON-encoded PackageConfig) +key: package:identity:{package_id} +value: { + fcap_keys: ["campaign:42", "advertiser:13"], + active: true, + updated_at: <unix seconds> +} +``` + +Maps package → fcap_keys. The impression tracker reads this to figure out which labels to tag a new exposure with. + +## Write path: pixel → log + +On a pixel fire, the impression tracker: + +1. **Resolves identities and package context.** When `{TMPX}` is present, decodes the TMPX (HPKE decrypt + binary parse) → resolved identities + `(seller_agent_url, package_id)`. When `{TMPX}` is absent (context-only impression), resolves package context from other pixel parameters and the resolved-identity set is empty — the exposure is written to a single context-only log keyed by the upstream-minted (publisher or decision-layer) impression_id rather than per-identity. +2. Looks up the package's `fcap_keys`. +3. **Obtains the `impression_id`.** If the pixel URL carries `{IMPRESSION_ID}` (minted upstream by the publisher or the ad-decision layer — the buyer can't and doesn't need to distinguish which), use that value. Otherwise mint one — but only when `{TMPX}` is present; on context-only impressions, see rule #2 in the rules section above for the degraded-mode behavior. +4. For each resolved identity, appends `{impression_id, fcap_keys, timestamp}` to `user:exposures:{hash(identity)}`. Prunes entries older than the longest active window (default 30 days). For context-only impressions with no resolved identities, the entry is written only to whatever delivery-counting log applies — cross-identity dedup is not meaningful when there are no identities to dedup across. + +The read-modify-write per identity is not atomic in the reference impl ([`engine.go:478`](https://github.com/adcontextprotocol/adcp-go/blob/main/targeting/engine.go#L478)) — concurrent writes for the same user can lose an exposure. The reference impl explicitly accepts this; under-counting under contention is benign for fcap purposes. Atomic append via Lua or a `Store.Append` extension is a deferred optimization. + +## Evaluating whether this impression exhausted a cap + +After writing the exposure, the impression tracker decides whether any cap just fired. **A package typically maps to multiple `fcap_keys` (campaign, campaign_group, advertiser, …), each with its own policy. Policies are evaluated independently, and the cap fires when *any one* of them reaches `max_impression_count` within its window.** A user can be capped on a package by the per-campaign policy without ever approaching the per-advertiser policy, or vice versa. + +For each `fcap_key` on the exposure, the impression tracker scans the user's identity logs: + +1. Read `user:exposures:{h}` for every resolved identity. +2. Filter entries to those that fall in the current+prior buckets spanning `policy.window` and where `fcap_key ∈ entry.fcap_keys`. +3. Deduplicate by `impression_id` across all the user's identity logs. +4. Compare the deduped count to `policy.max_impression_count`. + +If any policy's deduped count is `>= max_impression_count`, the cap fired on this impression. The impression tracker then writes a cap-fire entry to the Identity Match cap-state store for every `(user_identity, package_id)` whose package maps to the exhausted `fcap_key`. The expiration is the end of the current bucket of `policy.window` (which is when the oldest in-scope exposure ages out under bucket semantics). + +For a cap on an advertiser-level label (`advertiser:13`) that maps to multiple packages on multiple sellers, the impression tracker emits one cap-fire entry per `(user_identity, seller_agent_url, package_id)` affected — main's [boundary contract](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation#the-cap-fire-event) is package-scoped, so cross-dimensional caps fan out at write time. + +## SDK primitives + +The SDK ships impression handling as two composable functions, not one bundled call. Production tracking endpoints typically decode at intake and let a downstream worker write the store at its own pace; bundling decode+write into a single function would force synchronous topology and prevent buffering. + +``` +decodeTmpx(raw_tmpx) -> DecodedExposures + Decrypts HPKE ciphertext, parses the published TMPX binary format + (/docs/trusted-match/specification#binary-format), returns the resolved + identity entries in a structured form ready for serialization onto a + topic or for direct write. The persistent per-identity exposure log + is a separate, store-resident structure — see Reference data model above. + +writeExposure(decoded, fcap_keys, store_context) -> { ok, fired_caps } + Appends entries to each resolved identity's exposure log with a fresh + impression_id and the supplied fcap_keys. Prunes entries older than the + longest active window. Returns the set of caps that fired on this + impression — the caller fans these out to the Identity Match cap-state + store. +``` + +Plus the buyer-side management plane: + +``` +upsertPackage(seller_agent_url, package_id, fcap_keys, opts) +upsertFcapPolicy(fcap_key, {window: {interval, unit}, max_impression_count}) +inspectExposures(uid_type, user_token, fcap_key?) // debugging helper +``` + +Plus HPKE encrypt/decrypt as net-new SDK primitives (X25519 KEM, ChaCha20-Poly1305, HKDF-SHA256 per RFC 9180 `mode_base`). Encrypt is needed by the Identity Match service emitting TMPX; decrypt by the impression tracker invoking `decodeTmpx`. + +The same surface ships in `@adcp/client` (TS), `adcp-go`, and `adcp` (Python). + +> **Primitive names are illustrative.** `decodeTmpx`, `writeExposure`, `upsertPackage`, `upsertFcapPolicy`, and `inspectExposures` describe the shape of the SDK surface; canonical signatures land with the corresponding SDK RFCs and may differ in naming or argument order. Treat this section as the impression-tracker decomposition, not as an API contract. + +## Production topology pattern + +A typical Scope3-style deployment: + +``` +publisher pixel fires {TMPX} → tracking endpoint + │ + decodeTmpx (synchronous, at intake) + │ + ▼ + pub/sub topic + │ + frequency_writer worker + │ + writeExposure (asynchronous) + │ + ▼ + valkey (exposure log) + │ + if cap fired → RecordCap to + Identity Match cap-state store +``` + +Decode at intake; emit to pub/sub for buffering; downstream worker writes the exposure log and emits any cap-fire events. Buffering, retries, dedup, observability, and abuse protection live at the queue layer — none of that is the SDK's job. A simpler synchronous pipeline (decode + write in the same handler) is also valid for low-volume deployments. + +## Conformance scenarios + +These walk through impression-tracker behavior end-to-end. They are buyer-internal mechanics; the on-wire observable is whatever cap-fire entries land in the Identity Match cap-state store, which surfaces as eligibility decisions in later `identity_match_request` calls. + +Setup for both scenarios: `package = "pkg-42"` on `seller-a.example`, `fcap_keys: ["campaign:42"]`, `policy campaign:42 = {window: {interval: 1, unit: "days"}, max_impression_count: 5}`. + +### Scenario A — multi-identity dedup + +User has two resolved identities across the impression stream: `rampid:abc` and `id5:def`. Identity resolution toggles — most impressions resolve both, but one resolves rampid only. + +**imp-001, imp-002, imp-003** — TMPX resolves both identities. Each impression writes the same `impression_id` to both logs: + +``` +user:exposures:<hash(rampid:abc)> = [ imp-001, imp-002, imp-003 ] +user:exposures:<hash(id5:def)> = [ imp-001, imp-002, imp-003 ] +``` + +**imp-004** — TMPX resolves rampid only (id5 lookup fails). imp-004 is written to rampid's log only: + +``` +user:exposures:<hash(rampid:abc)> = [ imp-001..imp-004 ] +user:exposures:<hash(id5:def)> = [ imp-001..imp-003 ] unchanged +``` + +**imp-005** — TMPX resolves both identities again. imp-005 is written to both logs. The impression tracker then evaluates the cap by reading both resolved-identity logs: + +``` +rampid:abc log: { imp-001, imp-002, imp-003, imp-004, imp-005 } = 5 entries +id5:def log: { imp-001, imp-002, imp-003, imp-005 } = 4 entries +``` + +Union the entries across logs, deduplicate by `impression_id`: + +``` +{ imp-001, imp-002, imp-003, imp-004, imp-005 } = 5 distinct impressions +``` + +5 = `max_impression_count` → the cap just exhausted. Since both identities are resolved on imp-005, the impression tracker emits cap-fire entries for both: + +``` +RecordCap(rampid:abc, [{seller-a.example, pkg-42}], expire_at) +RecordCap(id5:def, [{seller-a.example, pkg-42}], expire_at) +``` + +Two things are demonstrated: + +- **Dedup matters.** Naively summing per-identity counts gives `5 + 4 = 9` — way over `max_impression_count`. Dedup by `impression_id` recovers the correct count of 5. +- **Identity-resolution stability isn't required.** imp-004 missed id5's log entirely; dedup at evaluation time still produces the right answer when both identities are next resolved together. + +A counter-based tracker with a MAX merge_rule would see counters `max(rampid=5, id5=4) = 5` here — coincidentally correct at this point, but only because the divergence happened to be a single missed write. A second missed-id5 impression (imp-006-style) would push rampid to 6 while leaving id5 at 5; MAX would still say 5 and over-serve by one. SUM (= 9 here) over-counts in the opposite direction. The log + `impression_id` dedup is correct by construction. + +A consequence to flag for the implementer: if a future query resolves only id5:def, the cap-state lookup hits the id5:def entry written at imp-005 and the user is correctly suppressed. If neither identity gets resolved in a future query, no cap-state lookup happens at all — that's an identity-resolution problem upstream of fcap, not a fcap correctness problem. + +### Scenario B — cross-seller advertiser cap + +Two packages on different sellers, both mapped to the same advertiser-level label: + +``` +package:identity:pkg-A = { fcap_keys: ["advertiser:13"], active: true } // seller-a +package:identity:pkg-B = { fcap_keys: ["advertiser:13"], active: true } // seller-b +fcap_policy:advertiser:13 = { window: {interval: 1, unit: "days"}, max_impression_count: 10 } +``` + +Ten impressions on `pkg-A` from `seller-a`. Each exposure entry's `fcap_keys` includes `advertiser:13`. At the 10th write, the deduped count for `advertiser:13` matches `max_impression_count`. The impression tracker emits cap-fire entries for **every package mapped to `advertiser:13` across all sellers**, for every resolved identity: + +``` +RecordCap(<identity>, [ + {seller-a.example, pkg-A}, + {seller-b.example, pkg-B}, +], expire_at) +``` + +A subsequent `identity_match_request` from `seller-b` for `pkg-B` returns `eligible_package_ids: []` because the cap-state entry is present. The advertiser-level cap enforces across sellers because the `fcap_key` is shared. No cross-seller coordination is required at the IdentityMatch service — the buyer agent's impression tracker is the single source of truth, and the cap-state store is the publication channel. + +## Performance reference + +Numbers below are from [`targeting/scale_test.go`](https://github.com/adcontextprotocol/adcp-go/blob/main/targeting/scale_test.go) against the in-memory mock store, single goroutine. They isolate CPU from network. They describe the **impression tracker's** evaluation cost — the cost of scanning logs and deciding whether this impression just fired a cap. The Identity Match service's at-query-time cost is a separate, much smaller cap-state presence check. + +**Per-eval at write time, varying log size, single identity, single fcap_key:** + +| Prior exposures in user's log | Eval latency | +|---|---| +| 0 | 368 ns | +| 100 | 5.3 µs | +| 1,000 | 53 µs | +| 10,000 | 118 µs | + +Linear scan with binary lazy dedup; sub-millisecond at 10K entries. + +**Combined load (multi-identity, multi-package eval), varying all dimensions:** + +| packages mapped via fcap_keys | log entries / id | identities | CPU/eval | +|---|---|---|---| +| 100 | 1,000 | 3 | 1.0 ms | +| 1,000 | 1,000 | 3 | 7.5 ms ← realistic Scope3-shape load | +| 1,000 | 10,000 | 3 | 58 ms ← pathological tail (heavy users) | + +CPU scales in `packages × log_entries × identities`. The pathological tail is addressed by the algorithmic optimization in [adcp-go#103](https://github.com/adcontextprotocol/adcp-go/pull/103) (heuristic-gated prefilter bucket; gated at `numPackages > 50` to avoid regressions on small requests): + +| packages | log entries | identities | Before | After | Speedup | +|----------|------------:|-----------:|----------:|---------:|--------:| +| 1,000 | 100 | 3 | 784 µs | 71 µs | 11.0× | +| 1,000 | 1,000 | 3 | 7,566 µs | 287 µs | 26.4× | +| 1,000 | 10,000 | 3 | 57,861 µs | 1,500 µs | ~38× | + +Production sizing also depends on valkey round-trip latency, tail behavior under load, and the heavy-user impression-distribution shape. Mock-store CPU is the floor, not the production number. + +## See also + +- [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) — the cap-fire boundary contract this page sits behind +- [TMP Specification](/dist/docs/3.2.0-beta.4/trusted-match/specification) — wire spec, conformance invariants +- [`adcp-go/targeting`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting) — reference Go implementation of the model on this page +- [`adcp-go/targeting/fcap`](https://github.com/adcontextprotocol/adcp-go/tree/main/targeting/fcap) — reference cap-state store on the other side of the boundary diff --git a/dist/docs/3.2.0-beta.4/trusted-match/index.mdx b/dist/docs/3.2.0-beta.4/trusted-match/index.mdx new file mode 100644 index 0000000000..8c18de51ce --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/index.mdx @@ -0,0 +1,247 @@ +--- +title: Trusted Match Protocol +sidebarTitle: Overview +testable: true +"og:image": /images/walkthrough/tmp-01-wasted-budget.png +description: "AdCP's real-time execution layer — follow a cross-publisher frequency capping story from wasted budget to structural privacy, across every surface." +"og:title": "AdCP Trusted Match Protocol" +--- + +<img src="/images/walkthrough/tmp-01-wasted-budget.png" alt="A viewer sees the same outdoor gear ad on their TV and phone within minutes — a budget meter drains with diminishing returns" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +<Note> +**Experimental.** TMP is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing TMP MUST declare `trusted_match.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. +</Note> + +Priya is Director of Ad Products at StreamHaus, a CTV publisher. She designed how StreamHaus's inventory looks to buyer agents — product catalogs, creative specs, pricing. + +Sam's Acme Outdoor campaign runs on StreamHaus, OutdoorNet, and PodTrail with a frequency policy: **5 impressions per week, minimum 2 hours between exposures**. Sam chose this because spaced exposure outperforms concentrated repetition — the same ad every commercial break produces fatigue, not engagement. + +The problem: each publisher counts independently. + +## Step 1: The problem — wasted budget + +StreamHaus, OutdoorNet, and PodTrail each count independently. A viewer who watches hiking content on StreamHaus after dinner, then browses OutdoorNet on their phone 30 minutes later, gets the same ad again — well inside the 2-hour recency window Sam set. + +Multiply across a week and the viewer gets 15 impressions instead of 5, concentrated instead of spaced: + +| Publisher | Impressions counted | Actual viewer experience | +|---|---|---| +| StreamHaus | 5 (within cap) | Same ad every session | +| OutdoorNet | 5 (within cap) | Same ad every session | +| PodTrail | 5 (within cap) | Same ad every session | +| **Total** | **15** | **3x over Sam's cap** | + +Every redundant impression is budget that could have reached someone new. Advertising works better with spacing — each exposure after the first few produces diminishing returns. Sam is buying frequency when he should be buying reach. + +This isn't a StreamHaus problem. It's a structural problem. No single publisher can enforce a cross-publisher cap because no single publisher sees the full picture. + +## Step 2: Adding the TMP Router + +<img src="/images/walkthrough/tmp-02-router-setup.png" alt="Priya at a terminal, deploying a TMP Router — a diagram materializes showing context and identity paths splitting into separate channels" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Priya deploys the Trusted Match Protocol (TMP) Router — the piece that sits between her ad server and buyer agents, with structurally separate paths for context and identity. She configures Sam's buyer agent (Pinnacle) as a TMP provider, alongside other buyers. + +The router sits between StreamHaus's ad server and the buyer agents. When a user loads a page, the router handles the real-time evaluation. Priya didn't write surface-specific code — the same router handles StreamHaus's website, their mobile app, and their CTV app. + +<Accordion title="What Priya configures"> + +Priya registers Sam's buyer agent (Pinnacle) as a TMP provider on the router: + +```json +{ + "providers": [ + { + "name": "Pinnacle (Acme Outdoor)", + "endpoint": "https://pinnacle.acme.example/tmp", + "context_match": true, + "identity_match": true, + "properties": ["01J5A2B3C4-streamhaus-web", "01J5A2B3C5-streamhaus-ios"], + "latency_budget_ms": 50, + "priority": 1 + } + ] +} +``` + +`context_match: true` means the router sends content context to Pinnacle for targeting. `identity_match: true` means it also sends opaque user tokens so Pinnacle can enforce frequency caps and audience eligibility. `properties` scopes which StreamHaus properties this provider serves — Pinnacle evaluates web and iOS, not CTV. `latency_budget_ms` sets a per-provider timeout; if Pinnacle consistently exceeds it, the router deprioritizes it. + +The router fans out to all configured providers in parallel and merges their responses. + +</Accordion> + +## Step 3: Context Match — what's on the page? + +<img src="/images/walkthrough/tmp-03-context-match.png" alt="A StreamHaus article about hiking gear with content signals radiating outward — Sam's buyer agent responds with a package offer and creative manifest" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +A viewer opens a StreamHaus article about hiking gear. StreamHaus's properties are registered in the [property governance](/dist/docs/3.2.0-beta.4/governance/property) with stable `property_rid` identifiers, so the buyer knows exactly which property this request came from. StreamHaus sends a **Context Match** request with the article's content signals, placement, and geo. + +Sam's buyer agent evaluates: "This hiking content matches `pkg-outdoor-display`." It responds with an offer that includes a creative manifest — the Trail Pro 3000 banner. + +The key constraint: **no user identity crosses this boundary.** The buyer evaluates content, not people. It doesn't know who is reading the article — only what the article is about. + +<Accordion title="Context Match request and response"> + +Request from StreamHaus to Sam's buyer agent: + +```json +{ + "type": "context_match_request", + "request_id": "ctx-8f3a2b", + "property_rid": "01916f3a-9c4e-7000-8000-000000000010", + "property_type": "website", + "placement_id": "article-sidebar", + "seller_agent_url": "https://streamhaus.example", + "artifact_refs": [ + { "type": "url", "value": "https://streamhaus.example/articles/hiking-gear-2026" } + ], + "context_signals": { + "topics": ["596"], + "taxonomy_source": "iab", + "taxonomy_id": 7, + "keywords": ["hiking gear", "outdoor equipment"] + } +} +``` + +The publisher sends both `artifact_refs` (for buyers that crawl content directly) and `context_signals` (pre-classified topics and keywords as a fallback). The buyer agent already knows which packages are active for this placement — it set them up via `create_media_buy`. No package list needs to travel on the wire. + +Response from Sam's buyer agent: + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-8f3a2b", + "offers": [ + { + "package_id": "pkg-outdoor-display" + } + ] +} +``` + +</Accordion> + +## Step 4: Identity Match — is this user eligible? + +<img src="/images/walkthrough/tmp-04-identity-match.png" alt="An opaque user token with package IDs flows to Sam's buyer agent — a timeline shows last exposure 45 minutes ago, recency window 2 hours, verdict: not eligible" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Separately, StreamHaus sends an **Identity Match** request: an opaque user token and ALL of Sam's active package IDs across every publisher. + +Sam's buyer agent checks its exposure history: "This user saw 1 impression 45 minutes ago on OutdoorNet. The 2-hour recency window hasn't elapsed. **Not eligible.**" + +The key constraint: **no page context crosses this boundary.** The buyer checks eligibility, not content fit. It doesn't know what the user is looking at — only whether this user should see more ads right now. + +The recency check crosses publisher boundaries because Sam's buyer agent maintains a shared exposure store. StreamHaus, OutdoorNet, and PodTrail all send Identity Match requests to the same buyer agent — so it knows the user's total exposure across all three. + +<Accordion title="Identity Match request and response"> + +Request from StreamHaus to Sam's buyer agent: + +```json +{ + "type": "identity_match_request", + "request_id": "id-7c9e1d", + "seller_agent_url": "https://streamhaus.example", + "identities": [ + { "user_token": "opaque-streamhaus-token-abc123", "uid_type": "uid2" }, + { "user_token": "ID5*zP3wK...", "uid_type": "id5" } + ], + "package_ids": [ + "pkg-outdoor-display", + "pkg-outdoor-ctv", + "pkg-outdoor-audio" + ] +} +``` + +Response from Sam's buyer agent: + +```json +{ + "type": "identity_match_response", + "request_id": "id-7c9e1d", + "eligible_package_ids": ["pkg-outdoor-audio"], + "serve_window_sec": 60 +} +``` + +Only eligible packages are listed — `pkg-outdoor-audio` passes the buyer's checks. The `serve_window_sec: 60` tells the router to cache this eligibility for 60 seconds. + +The example sends `package_ids` explicitly, but the publisher MAY omit it — Sam's identity-match service resolves the active package set from `seller_agent_url`. When `package_ids` IS sent, its composition MUST be independent of the current page — either all-active (every Sam package at StreamHaus) or fuzzed (a random sample padded with synthetic IDs that Sam will silently drop). A page-specific subset is forbidden; it would let the buyer correlate package sets across Context Match and Identity Match, breaking the structural separation. + +</Accordion> + +## Step 5: The join — StreamHaus makes the decision + +<img src="/images/walkthrough/tmp-05-publisher-join.png" alt="Two response cards merge at StreamHaus — the Trail Pro ad fades while a different advertiser's ad activates in its place" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +StreamHaus joins both responses locally: + +- **Context Match** said: "Activate `pkg-outdoor-display` with this creative manifest." +- **Identity Match** said: "Not eligible — recency window." + +Result: **suppress the ad.** A different advertiser's campaign fills the slot. Sam's budget is preserved for a better moment — one where the viewer hasn't seen the ad recently and the impression will actually matter. + +The buyer never saw user identity and page context together. Privacy isn't a policy that could be violated — it's structural. The two paths never share data, and the publisher (who already has both signals) makes the final decision. + +## Step 6: Three winners + +<img src="/images/walkthrough/tmp-06-three-winners.png" alt="Three panels: a viewer relaxing with varied ads across devices, Sam's dashboard showing increased unique reach, Priya seeing rising buyer satisfaction metrics" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +**The viewer** had a normal evening across three platforms. They saw the Trail Pro ad during hiking content on StreamHaus — relevant, well-timed. When they browsed OutdoorNet 30 minutes later, a different ad appeared. No sense of being followed across the internet. + +**Sam** got spaced exposure instead of concentrated repetition. His 5 weekly impressions land across different contexts and moments, each one more effective than the 6th or 7th impression would have been. And the budget freed by suppression reaches viewers who haven't seen the ad yet — more unique reach for the same spend. + +**Priya** differentiated StreamHaus. Buyers prefer publishers that support TMP because their frequency policies actually work. StreamHaus's inventory is more valuable per impression because buyers know they're not wasting budget on over-exposed viewers. + +| Before TMP | With TMP | +|---|---| +| Each publisher counts independently | Buyer agent tracks exposure across all publishers | +| 15 impressions per viewer per week | 5 impressions per viewer per week, properly spaced | +| Budget buys frequency | Budget buys reach | +| Concentrated repetition, ad fatigue | Spaced exposure, higher effectiveness per impression | +| Publishers compete on volume | Publishers compete on quality and buyer experience | + +## Step 7: Same protocol, every surface + +<img src="/images/walkthrough/tmp-07-every-surface.png" alt="Five surface icons — web, mobile, CTV, retail media, AI assistant — connected to a single TMP Router hub, all in teal" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +The same TMP Router handles StreamHaus's website, their mobile app, their CTV app, and their AI assistant. Sam's buyer agent works across all of them without surface-specific logic. The protocol handles the surface differences. Priya and Sam handle the business. + +## Go deeper + +<CardGroup cols={2}> + <Card title="AI assistant mediation" icon="robot" href="/dist/docs/3.2.0-beta.4/trusted-match/ai-mediation"> + A mediation protocol for AI assistants — how demand finds conversational AI when the context can't be broadcast. + </Card> + <Card title="The execution gap" icon="puzzle-piece" href="/dist/docs/3.2.0-beta.4/trusted-match/execution-gap"> + Why existing protocols fail at serve time and why TMP takes a matching approach instead of an auction approach. + </Card> + <Card title="Context and identity" icon="arrows-split-up-and-left" href="/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity"> + Both operations with concrete examples, including catalog refinement and the publisher-side join. + </Card> + <Card title="Specification" icon="scroll" href="/dist/docs/3.2.0-beta.4/trusted-match/specification"> + Authoritative message types, field tables, and conformance requirements. + </Card> + <Card title="Privacy architecture" icon="shield-halved" href="/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture"> + Structural separation, temporal decorrelation, and TEE attestation. + </Card> + <Card title="Data protection roles" icon="scale-balanced" href="/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles"> + Controller vs. processor analysis for each TMP participant. + </Card> + <Card title="Router architecture" icon="diagram-project" href="/dist/docs/3.2.0-beta.4/trusted-match/router-architecture"> + Deployment, fan-out, and provider configuration. + </Card> +</CardGroup> + +### Surface guides + +<CardGroup cols={3}> + <Card title="Web" icon="globe" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/web" /> + <Card title="AI assistants" icon="robot" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants" /> + <Card title="Mobile" icon="mobile" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile" /> + <Card title="Retail media" icon="store" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media" /> + <Card title="CTV" icon="tv" href="/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv" /> +</CardGroup> diff --git a/dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe.mdx b/dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe.mdx new file mode 100644 index 0000000000..56033c108f --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe.mdx @@ -0,0 +1,111 @@ +--- +title: Migrating from AXE to TMP +sidebarTitle: AXE Migration +description: "How to migrate from AXE segment targeting to TMP's offer and eligibility model — concept mapping, parallel operation, and cutover." +"og:title": "AdCP Migrating from AXE to TMP" +--- + +# Migrating from AXE to TMP + +AXE and TMP solve the same problem — impression-time execution for pre-negotiated packages — with different architectures. AXE sends a full request (user + context + device) and returns opaque segment IDs. TMP splits the request into two structurally separated operations and returns offers and eligibility. + +This page maps AXE concepts to TMP equivalents and describes how to run both in parallel during migration. + +## Concept Mapping + +| AXE | TMP | Notes | +|---|---|---| +| `axei` (include segment) | Context Match offer | Package matched the content | +| `axex` (exclude segment) | Package absent from `eligible_package_ids` | User fails suppression list, audience rule, or buyer-side frequency check | +| `axem` (macro data) | Creative manifest + Offer `creative_data` + `{TMPX}` | Structured assets move to the creative manifest; dynamic rendering values pass through Offer `creative_data`; per-user exposure tracking uses the `{TMPX}` macro from Identity Match | +| Orchestrator AXE endpoint | TMP Router | Single binary with two isolated code paths | +| Prebid Real-Time Data (RTD) module | TMP Prebid module | Replaces vendor-specific RTD modules with a single module | +| `axe_integrations` URL | `trusted_match` capability | In `get_adcp_capabilities` response | +| OpenRTB-style request | Context Match + Identity Match | Two requests instead of one bundled request | +| Segment key-values on ad server | Targeting key-values from offers | Same GAM integration, different source | + +## What Changes for Each Role + +### Buyer agents + +**Before (AXE):** Upload audience segments to an orchestrator. Reference segment IDs in `axe_include_segment` / `axe_exclude_segment` on media buys. + +**After (TMP):** Expose Context Match and Identity Match endpoints. Evaluate packages against content signals (Context Match) and user eligibility (Identity Match) in real time. Return offers with creative manifests and eligibility decisions. + +**Key difference:** Your agent makes real-time decisions instead of pre-computing segment memberships. You have full control over targeting logic — no intermediary orchestrator. + +### Publishers + +**Before (AXE):** Enable the orchestrator's Prebid RTD module. Accept `axei`/`axex`/`axem` key-values. Create GAM line items targeting those key-values. + +**After (TMP):** Deploy a TMP Router (or use the TMP Prebid module). Accept offers and eligibility from the router. Set GAM targeting key-values from offer signals and pass Offer `creative_data` to the package's agreed rendering contract. GAM line items target `adcp_pkg` instead of `axei`/`axex`. + +**Key difference:** The router replaces the orchestrator's RTD module. GAM line items reference package IDs instead of opaque segment IDs. + +### Orchestrators + +**Before (AXE):** Operate AXE endpoints, manage segment state, distribute Prebid RTD modules. + +**After (TMP):** Orchestrators can operate TMP Routers on behalf of publishers, or transition to a buyer-side role (operating buyer agent TMP endpoints). The orchestrator-as-middleman role is optional in TMP — buyers and publishers can connect directly through the router. + +## Parallel Operation + +During migration, publishers can run AXE and TMP simultaneously: + +1. **Keep existing AXE RTD module** in Prebid alongside the new TMP module +2. **New media buys** use TMP (no `axe_include_segment` / `axe_exclude_segment`) +3. **Existing media buys** continue using AXE segments until they expire +4. **GAM line items** for both: AXE line items target `axei`/`axex`, TMP line items target `adcp_pkg` + +TMP provides real-time per-user exposure tracking via the [`{TMPX}` macro](/dist/docs/3.2.0-beta.4/trusted-match/specification#tmpx-exposure-tokens). During parallel operation, both AXE and TMP impressions feed into the buyer's exposure store — AXE via the orchestrator's reporting, TMP via the buyer's impression pixel receiving encrypted TMPX tokens. There is no risk of double-counting because the buyer's exposure store deduplicates by user token and package ID regardless of source. + +### Cutover + +When all active media buys use TMP: + +1. Remove the orchestrator's RTD module from Prebid +2. Remove AXE-targeted GAM line items +3. Update `get_adcp_capabilities` to remove `axe_integrations` and keep `trusted_match` + +## Targeting Overlay Migration + +AXE targeting fields in `create_media_buy` map to TMP behavior: + +| AXE field | TMP equivalent | +|---|---| +| `axe_include_segment` | Context Match — buyer evaluates targeting in real time | +| `axe_exclude_segment` | Identity Match — buyer checks suppression and audience rules | + +New media buys should omit AXE fields entirely. The buyer agent's Context Match and Identity Match logic replaces the orchestrator's segment evaluation. + +## What Doesn't Change + +- **`create_media_buy`** — Same task, same schema (minus AXE fields) +- **`get_media_buy_delivery`** — Same delivery reporting +- **`sync_creatives`** — Same creative sync +- **GAM as the ad server** — TMP still sets key-values that GAM evaluates +- **Geographic and other targeting overlays** — These are media buy fields, not execution-layer concerns + +## OpenRTB User.eids cross-walk + +For buyers bridging from OpenRTB-shaped pipelines, the TMP Identity Match `identities[]` shape maps to OpenRTB 2.6 `User.eids[]` as follows: + +| AdCP TMP `identities[].uid_type` | OpenRTB 2.6 `User.eids[].source` | Notes | +|---|---|---| +| `rampid` / `rampid_derived` | `liveramp.com` | `atype: 3` (person-based, per [IAB AdCOM Agent Types](https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list_agenttypes)) | +| `id5` | `id5-sync.com` | `atype: 3` | +| `uid2` | `uidapi.com` | `atype: 3` | +| `euid` | `euid.eu` | `atype: 3` | +| `pairid` | `pair-protocol.com` | `EID.mm: 3`; `EID.matcher`: publisher ads.txt `ownerdomain`; `uids[].atype: 3`. `uids[].id` is the URL-safe Base64-encoded KsKp Publisher Identifier. | +| `maid` | `adid` (Android) / `idfa` (iOS) | Atypically carried on `Device.ifa` rather than `User.eids` in OpenRTB | +| `hashed_email` | `liveintent.com` or buyer-specific | `atype: 3` | +| `publisher_first_party` | publisher-defined `source` URL | Context-dependent; bridge implementations may omit `atype` or default to `atype: 3` only when the token represents a person-based identifier | +| `other` | buyer-defined `source` URL | Context-dependent; bridge implementations may omit `atype` or default to `atype: 3` only when the token represents a person-based identifier | + +The TMP `user_token` field corresponds to `User.eids[].uids[].id`. OpenRTB's `User.eids[].uids[].atype` is derived from AdCP's higher-fidelity `uid_type`; it is not a separate AdCP field. Bridge code should compute `atype` from the table above and should not add an independent user-supplied `atype` value that could disagree with `uid_type`. + +For PAIR, the KsKp Publisher Identifier must be interpreted together with `EID.matcher`, which carries the publisher's canonical ads.txt `ownerdomain`; the matcher conveys the scope but does not create it cryptographically. A publisher uses the same identifier for a user across its advertiser matches only within a Ks key epoch. Ks rotates every 30 days; current and prior Publisher Identifiers can overlap during the rollover window. A DSP matches only against advertiser-authorized, publisher-specific PAIR lists produced by the PAIR DCR flow and must not key identifiers across publisher scopes. + +TMP 1.0 identity objects carry only `uid_type` and `user_token`, with no `matcher` or `ownerdomain` field. A bridge can preserve PAIR scope only when it has an authenticated one-to-one, out-of-band binding from the TMP seller context to the publisher's ads.txt `ownerdomain`; otherwise it must omit or reject the unscoped PAIR identifier. Older AdCP guidance listed `iabtechlab.com/pair`. A bridge that must cover traffic produced from that guidance may accept it as an explicit legacy input alias, normalize it internally, and must emit `pair-protocol.com`. + +AdCP carries up to 3 identities per Identity Match request (HPKE size budget — see [TMPX size budget](/dist/docs/3.2.0-beta.4/trusted-match/specification#size-budget)); OpenRTB has no such limit, so a buyer bridging from OpenRTB into TMP must apply a buyer-configured priority order to truncate (typically: deterministic graphs first — UID2, RampID — then probabilistic or publisher-scoped IDs). diff --git a/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture.mdx b/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture.mdx new file mode 100644 index 0000000000..650beeff59 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture.mdx @@ -0,0 +1,182 @@ +--- +title: Privacy Architecture +description: How TMP separates user identity from page context, what each party can and cannot learn, and how TEE attestation upgrades the guarantee. +"og:title": "AdCP TMP Privacy Architecture" +--- + +# Privacy Architecture + +TMP structurally separates user identity from page context at the router and request layers. Without TEE, this separation is enforced by code: the context code path never accesses identity data and vice versa. The code is open-source and auditable. With TEE, attestation proves the expected router code is running unmodified, upgrading that router-layer guarantee from "auditable" to "independently verifiable." This is not an end-to-end guarantee that buyers can never correlate identity and context: in TMPX deployments, the buyer's impression tracker receives decrypted identity alongside a creative selected using page context. + +This page explains what the separation is, what it prevents, and where the guarantees come from. TMP is the only AdCP domain that enforces privacy structurally — see [Privacy posture across domains](/dist/docs/3.2.0-beta.4/protocol/architecture#privacy-posture-across-domains) and the cross-protocol [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations) page for how this compares to other domains. + +## The Separation Principle + +The TMP Router is a single binary with two structurally separate code paths: one for context, one for identity. + +| | Context Path | Identity Path | +|---|---|---| +| **Inputs** | Page URL, content signals, topic IDs | Opaque user token, package IDs | +| **Never receives** | Any user identity | Any page context | +| **Returns** | Activated packages, enrichment signals | Eligible package IDs + TTL (seconds) | + +The context code path has no access to identity data. The identity code path has no access to context data. The two paths share no state: no shared memory, no shared database, no communication channel, no shared logs or telemetry. + +### Without TEE + +Separation is enforced by the code itself. The context path cannot read identity data because it is not passed to it, not stored in any location the context path can reach, and not referenced in any data structure the context path processes. The same applies in reverse for the identity path. + +This is verifiable by reading the source code. The router is open-source. Anyone can audit it to confirm that the two code paths are isolated. But this is a trust-and-audit model: you are trusting that the deployed binary matches the published source, and that no modification has been introduced at runtime. + +### With TEE + +TEE (Trusted Execution Environment) attestation removes the need to trust the operator. An attestation document is a cryptographically signed statement of exactly what code is running inside the enclave. A publisher or auditor can: + +1. Obtain the attestation document from the router. +2. Verify the signature against the TEE vendor's root certificate authority. +3. Confirm that the running code matches the published, audited source. + +This makes the separation independently verifiable. No one needs to trust the router operator's claim that they deployed the right binary; the hardware proves it. + +TEE is an upgrade path, not a prerequisite. The protocol works without it. Publishers who need independent verification can require TEE-attested routers; those who are comfortable with code audit and operational trust do not need to. + +## What Each Party Learns + +### What the buyer agent learns + +**From Context Match requests**, a buyer agent learns: + +- Which publisher placements and content artifacts exist +- Content signals via `context_signals` (topics, sentiment, keywords, language, brand safety tier, summary, embedding) — pre-computed by the publisher +- Geographic context (country, region, metro) — publisher-controlled granularity + +**From Identity Match requests**, a buyer agent learns: + +- Which user tokens exist (opaque, publisher-scoped) +- Whether each user is eligible for each of the buyer's active packages +- **Cross-identity equivalence within the publisher's view**: when an IMR carries multiple `identities` entries, the buyer learns that those tokens resolve to the same user from this publisher's perspective. This is an intentional match-rate optimization, but it is also identity-graph enrichment the buyer did not previously have. Publishers who want to avoid disclosing cross-graph joins can send a single `(user_token, uid_type)` per IMR at the cost of match rate. +- **Sensitive token exposure**: `hashed_email` and similar strongly-reidentifying tokens carry higher re-identification risk than opaque provider IDs. Publishers SHOULD treat inclusion as a deployment decision, not a default. When the buyer agent runs in a TEE-attested deployment, the risk surface shrinks to what the buyer's model can infer from the match outcome rather than what a logged payload can reveal post-hoc — TEE does not eliminate the disclosure but it closes the offline-retention vector. Non-TEE deployments should weigh `hashed_email` inclusion against legal/consent posture. + +The buyer computes eligibility internally from frequency caps, audience membership, purchase history, or whatever signals they have. They return a list of eligible package IDs and a TTL. The publisher does not learn why a user is or is not eligible. + +**What the buyer cannot do from router requests alone:** + +- Read a request containing both a user token and page context +- Join Context Match and Identity Match requests by a shared request ID +- Obtain raw page URLs from the Identity Match path + +The decorrelation mechanisms below make joining the two router request streams harder; they do not prevent every downstream inference. In particular, TMPX impression tracking gives the buyer identity at an impression endpoint together with the context-selected creative. Buyers can correlate that event with their own offer and campaign records, and a creative or package with narrow contextual targeting can reveal page context. Deployments must treat that correlation as part of the buyer's data surface rather than relying on router separation as an end-to-end privacy guarantee. + +### What the router operator learns + +The context code path sees content signals and package lists. It fans these out to buyer agents and merges responses. It never processes user tokens. + +The identity code path sees user tokens and package IDs. It fans these out to buyer agents and merges responses. It never processes content signals. + +Without TEE, the operator could theoretically modify the binary to bridge the two paths. The code is open-source and auditable, but you are trusting the operator to run it unmodified. With TEE, attestation proves the binary matches the published source, removing that trust requirement. + +### Router trust boundary for identity filtering + +The router is in the trusted boundary for Identity Match forwarding. When the router filters the `identities` array per provider (sending only tokens the provider's declared `uid_types` include), providers cannot independently verify what the publisher originally sent — they see only the filtered subset signed by the router. This is a deliberate trust placement: the router already performs structural separation of the two code paths, and filtering identity tokens is a simpler guarantee than separating code paths. + +The router MUST NOT add, substitute, or transform identity tokens. The forwarded `identities` MUST be a subset of the publisher-origin array. This invariant is provable from code audit (without TEE) and cryptographically verifiable from attestation measurements (with TEE). Operators running non-TEE deployments accept code-audit as the basis for this invariant; operators running TEE-attested deployments get independent verification. + +Buyers close a residual risk at the protocol layer: when multiple identity types are present, buyers SHOULD prefer opaque provider IDs over `hashed_email` and other strongly re-identifying tokens, so that even a router that strips everything except `hashed_email` does not gain leverage (see [Responding to Identity Match](/dist/docs/3.2.0-beta.4/trusted-match/buyer-guide#responding-to-identity-match)). + +### What the publisher retains + +The publisher has both context and identity. They are the first party: the user is on their page, using their app, in their conversation. TMP does not change the publisher's data posture. It prevents buyers and intermediaries from obtaining the same combined view. + +The publisher performs the join locally after both responses arrive. They can apply consent logic, frequency management, and relevance ranking on their own infrastructure. + +### TMPX exposure tokens and the buyer correlation boundary + +The Identity Match response can include a `tmpx` field carrying a TMPX token — an HPKE-encrypted blob containing the user's resolved identity tokens. This token flows through creative tracking URLs to the buyer's impression pixel for per-user exposure tracking. + +This data flow bridges the identity and context paths: the TMPX token is produced by Identity Match and consumed via creative tracking URLs that originate from Context Match offers. However, the bridge happens **publisher-side** — the publisher joins the two responses locally and substitutes the TMPX value into tracking URLs during ad serving. The buyer's read replica produces the encrypted token. The buyer's impression pixel receives it. The publisher sees only an opaque blob and MUST NOT parse, log, or make decisions based on its value. + +TMPX preserves separation inside the router, but deliberately crosses the end-to-end identity/context boundary at the buyer's impression tracker. The following properties limit where that crossing occurs; they do not prevent the buyer from correlating the impression with its own Context Match offer history: + +- The router never sees the decrypted contents — it passes the opaque `tmpx` field through. +- The publisher substitutes the value into tracking URLs without interpreting it. +- Only the buyer's cluster master can decrypt the token (HPKE `mode_base` — encrypted with the master's public key, only the master's private key can decrypt). +- The `country` routing directive on the Identity Match request is stripped by the router before forwarding — the buyer agent never sees which country the user is in. + +## Package Set Decorrelation + +If the context path sent only the packages relevant to this page, and the identity path sent only those same packages, a buyer could compare the two sets and infer which page the identity request came from. TMP prevents this by requiring structurally different sets: + +- **Context Match** sends no package list. The provider evaluates its synced package set for the placement — stable per placement, the same for every user. Because no packages are sent per request, the publisher cannot accidentally leak identity through package filtering. +- **Identity Match** sends `package_ids` (or omits it entirely, in which case the buyer evaluates against its full registered active set for `seller_agent_url`). When sent, composition MUST be statistically independent of the current placement — either all-active (every active package for this buyer at this publisher) or fuzzed (a random sample optionally padded with synthetic non-existent IDs that the buyer silently drops). The buyer evaluates the user against this set, not against just the page-specific subset. + +The context set is scoped to one placement. The identity set is scoped to one buyer's entire active inventory. The two sets are structurally different, and neither reveals information about the other. + +The publisher performs the intersection locally: which packages were both activated by context match and eligible by identity match. + +## Temporal Decorrelation + +Even with separate code paths and different package sets, if Context Match and Identity Match requests arrive at a buyer at the same instant — or always in the same order — from the same publisher, timing or ordering correlation is possible. TMP addresses both: + +- Publishers SHOULD introduce a random delay between context and identity requests. The recommended range is 100-2000ms, uniformly distributed. +- Publishers SHOULD also randomize the order: each opportunity SHOULD have a roughly equal probability of context match going first or identity match going first. A fixed order leaks the pairing through ordering even when the delay is randomized. +- Publishers MAY batch Identity Match requests across multiple page views, further obscuring which context request each identity request corresponds to. +- Publishers MAY route context and identity requests through different network paths. + +Temporal decorrelation is defense in depth. It is not the primary separation mechanism; structural separation and package set decorrelation are. But it closes the timing side channel. + +## TEE Attestation Details + +TMP's reference architecture targets AWS Nitro Enclaves, though the protocol is TEE-agnostic. Any TEE that produces verifiable attestation documents is compatible. + +### What attestation proves + +- The router binary running inside the enclave matches the published, audited source code. +- The code paths for context and identity are structurally separate, with no shared state. +- The binary has not been modified by the operator, the hosting provider, or any runtime process. + +### What attestation does not prove + +- That buyer agents handle the data they receive responsibly. TMP limits what buyers receive; it does not control what they do with it. +- That the publisher's join logic is correct. The publisher is the first party and is not constrained by TMP's separation model. +- That the code is free of bugs. Attestation proves the code matches the published source. Whether that source is correct is a separate question, addressed by open-source audit. + +### Attestation measurements + +Each attestation document includes cryptographic hashes of the running environment: + +| Measurement | What it covers | +|---|---| +| **Image hash** | Hash of the enclave image. Confirms the binary matches the expected build. | +| **Kernel hash** | Hash of the operating environment. | +| **Application hash** | Hash of the application-level code. | +| **Role hash** | Confirms the enclave's permissions match expectations (e.g., no access to external databases). | + +A publisher or auditor can verify these measurements against the published build artifacts. This verification can be automated and performed continuously. + +## Comparison to OpenRTB + +| Signal | OpenRTB | TMP | +|---|---|---| +| User ID + page URL | Same bid request | Separate code paths, never combined | +| Device fingerprint | Included in bid request | Never sent | +| IP address | Included in bid request | Never sent | +| Raw cookies | Included in bid request | Never sent | +| GPS coordinates | Included in bid request | Never sent | +| Browsing history | Constructible via cookie sync | Not exposed by router requests alone; TMPX impressions can support buyer-side correlation | +| Separation verification | Trust the exchange | Code audit (without TEE) or TEE attestation (with TEE) | + +In OpenRTB, the bid request is a bundle of everything: user identity, device signals, page context, behavioral data. Every participant in the auction receives the full bundle. Privacy depends on contractual promises not to misuse the data. + +TMP splits the bundle at the router request layer. Buyer agents receive context or identity in each request, never both in one request. That separation is structural inside an audited or attested router; downstream handling and TMPX impression correlation remain subject to deployment controls, consent, and the buyer's data practices. + +## Regulatory Posture + +TMP's structural separation aligns with the data minimization principle required by GDPR, CCPA, ePrivacy, and similar regulations: + +- Router requests never pair user identity with content context. TMPX deployments separately disclose identity to the buyer's impression tracker, where the selected creative and buyer-side offer records can reveal context. +- The publisher, as the first party with a direct user relationship, controls the join. They can apply consent logic before combining the datasets. +- With TEE attestation, router code-path separation is independently verifiable. Attestation does not cover the buyer's impression tracker or eliminate TMPX correlation. + +This is an architectural observation, not legal advice. Publishers and buyer agents should consult their own legal counsel regarding regulatory compliance. + +For a detailed analysis of how TMP's architecture maps to GDPR controller and processor roles, see [Data Protection Roles](/dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles). For cross-protocol privacy guidance, see [Privacy Considerations](/dist/docs/3.2.0-beta.4/reference/privacy-considerations). diff --git a/dist/docs/3.2.0-beta.4/trusted-match/router-architecture.mdx b/dist/docs/3.2.0-beta.4/trusted-match/router-architecture.mdx new file mode 100644 index 0000000000..e6c7c31aaf --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/router-architecture.mdx @@ -0,0 +1,304 @@ +--- +title: The TMP Router +description: Architecture and operation of the TMP Router, including single-binary design, integration paths, and fan-out. +"og:title": "AdCP TMP Router" +--- + +# The TMP Router + +The TMP Router is infrastructure that sits between publishers and buyer agents. It handles request fan-out, response merging, and privacy enforcement. It does not make decisions — it routes requests and aggregates responses. The publisher configures which providers the router calls. + +## What the Router Does + +1. **Fans out requests**: Sends Context Match requests to all configured providers with `context_match` capability. Sends Identity Match requests to all configured providers with `identity_match` capability. +2. **Merges responses**: Combines offers, enrichment signals, and eligibility results from multiple providers into unified responses. +3. **Enforces separation**: Context and identity code paths are structurally separate — the context path never accesses identity data and vice versa. +4. **Manages latency**: Applies adaptive timeouts and deprioritizes providers that consistently exceed the latency budget. + +## Single Binary, Separate Code Paths + +The router is a single Go binary with two structurally separate code paths: one for context match, one for identity match. + +``` +┌──────────────────────────────────────────────────────────────┐ +│ TMP Router │ +│ │ +│ ┌───────────────────────────┐ ┌───────────────────────────┐│ +│ │ Context Match Path │ │ Identity Match Path ││ +│ │ │ │ ││ +│ │ Inputs: │ │ Inputs: ││ +│ │ • Artifact IDs / artifact │ │ • Opaque user token ││ +│ │ • Context signals │ │ • ALL active package IDs ││ +│ │ • Geo, URL hash │ │ ││ +│ │ • Available packages │ │ ││ +│ │ │ │ Outputs: ││ +│ │ Outputs: │ │ • Eligible package IDs ││ +│ │ • Offers │ │ • TTL (seconds) ││ +│ │ • Enrichment signals │ │ ││ +│ │ │ │ ││ +│ │ Never touches: │ │ Never touches: ││ +│ │ • User tokens │ │ • URLs ││ +│ │ • Any identity data │ │ • Content signals ││ +│ └───────────────────────────┘ └───────────────────────────┘│ +│ │ +│ No shared state between code paths. │ +│ One binary, one audit surface, one Docker image. │ +└──────────────────────────────────────────────────────────────┘ +``` + +The separation is in the code and auditable. The context path cannot read identity data because it is not passed to it, not stored in any reachable location, and not referenced in any data structure the context path processes. The same applies in reverse for the identity path. The router is open-source — anyone can verify this by reading the source. + +TEE attestation is an upgrade path. Without TEE, you trust that the operator deployed the published binary. With TEE, attestation proves the deployed binary matches the audited source, removing that trust requirement. + +## Provider Registration + +Publishers configure which providers the router calls. This is an operational relationship — the publisher trusts the provider to participate in their ad decisioning. Provider registrations follow the `provider-registration` schema (`/schemas/trusted-match/provider-registration.json`). + +### Discovery models + +Provider registration typically comes from the **page configuration** — the publisher declares providers in their Prebid module config or surface-specific setup. This is the standard path and works well for publishers with a stable set of providers. + +**Static configuration** (Prebid config, YAML file, infrastructure-as-code): +- Publisher declares providers at deploy time +- Router reads config at startup and on config reload +- Changes require a config update and reload/redeploy +- Appropriate for most deployments — provider lists change infrequently + +**Dynamic registration** (API-driven, database-backed): +- Publisher manages providers through an admin interface +- Router polls a discovery endpoint or watches for configuration changes +- Changes take effect within one refresh cycle (recommended: 30 seconds) +- Appropriate for publishers managing many providers or needing runtime updates without redeploys +- Dynamic registration endpoints MUST validate that provider `endpoint` URLs are external HTTPS addresses. Implementations MUST reject private (RFC 1918), link-local (169.254.x.x), and cloud metadata IP ranges to prevent SSRF through provider registration. See [Provider registration security](/dist/docs/3.2.0-beta.4/trusted-match/specification#provider-registration-security) in the specification for the full normative requirements — endpoint URL validation (with DNS re-resolution), dynamic registration endpoint authentication, router-to-provider auth minimum bar, and `/health` endpoint guidance. + +Both models use the same schema. The router does not distinguish between providers loaded from a YAML file and providers loaded from an API — the registration fields are identical. + +### Registration fields + +| Setting | Type | Required | Description | +|---|---|---|---| +| `provider_id` | string | Yes | Stable identifier for this provider. Used in logs, metrics, and cache keys. | +| `endpoint` | URL | Yes | Provider's base URL. The router appends `/context` or `/identity` when dispatching. | +| `context_match` | bool | No | Provider handles Context Match requests. At least one of `context_match` or `identity_match` must be true. | +| `identity_match` | bool | No | Provider handles Identity Match requests. At least one of `context_match` or `identity_match` must be true. | +| `countries` | List\<string\> | Conditional | ISO 3166-1 alpha-2 country codes. MUST be present when `identity_match` is true. | +| `uid_types` | List\<string\> | Conditional | Identity types this provider resolves. MUST be present when `identity_match` is true. | +| `timeout_ms` | integer | No | Per-provider timeout. Must be ≤ the router's `latency_budget_ms`. Default: 50. | +| `priority` | integer | No | Merge conflict resolution order (lower = higher priority). Default: 0. | +| `status` | enum | No | `active`, `inactive`, or `draining`. Default: `active`. | +| `properties` | List\<UUID\> | No | Property RIDs this provider serves. When absent, the provider serves all properties. | + +At least one of `context_match` or `identity_match` must be true — a provider that handles neither operation is invalid. When `identity_match` is true, `countries` and `uid_types` are **required** — the router cannot route Identity Match requests without them. The router MUST reject invalid provider registrations and SHOULD log a warning identifying the misconfigured provider. + +### Provider lifecycle + +Providers have three lifecycle states: + +- **Active**: Provider receives requests normally. +- **Draining**: Provider stops receiving new requests. In-flight requests complete normally. Use when taking a provider offline for maintenance. +- **Inactive**: Provider is skipped entirely. Use to disable a provider without removing its configuration. + +### Provider health + +Providers SHOULD expose `GET /health` at their base URL. The router uses this for: + +- **Pre-flight checks**: On startup or config reload, verify each provider is reachable before including it in fan-out. +- **Periodic monitoring**: Check provider health on a configurable interval (recommended: 30 seconds). Providers that fail consecutive health checks MAY be temporarily excluded from fan-out and automatically re-included when health recovers. + +Health checks are not in the request hot path — they run on a background interval. The router's `/healthz` endpoint reflects overall router health, not individual provider status. + +Providers MAY support any combination of `context_match` and `identity_match`. A context-only provider handles enrichment or contextual targeting. An identity-only provider handles frequency capping — the publisher evaluates context locally from the media buy's targeting rules and calls the buyer only for identity checks. + +All communication uses JSON over HTTP/2. TMP messages are small (200-600 bytes) — at these sizes, serialization format is less than 1% of total latency. + +## Integration + +### Prebid integration + +Publishers with Prebid Server or Prebid.js add a TMP module that replaces vendor-specific RTD modules. The TMP module sends Context Match and Identity Match requests to the router and returns the merged response as targeting signals and package activation data. The publisher's ad server (GAM, etc.) receives targeting key-values and activates the corresponding line items. + +### Non-Prebid surfaces + +For AI assistants, mobile apps, CTV, and retail media, the router provides a direct HTTP/2 API. Any platform that can make HTTP/2 POST requests can integrate. The request and response schemas are the same regardless of surface. + +### SSP and DSP integration + +SSPs and DSPs integrate as TMP providers — they expose an endpoint that the router calls during fan-out. This is the same pattern as existing RTD integrations. + +### Identity tokens + +Identity tokens come from existing providers (ID5, LiveRamp, UID2, etc.) that are already present on the page or in the app. TMP does not specify token lifecycle — it consumes tokens that the publisher's identity stack already produces. + +## Fan-Out and Response Merging + +### Context Match fan-out + +When the publisher sends a Context Match request: + +1. The router identifies all providers configured for the request's `property_rid` with `context_match` capability. +2. It sends the request to all matching providers in parallel over HTTP/2 and validates their responses against `provider-context-match-response.json`. That provider-hop schema permits `signals.targeting_kvs` but forbids `signals_by_provider`. +3. It waits for responses up to the latency budget (default: 50ms). +4. It merges responses: + - **Offers** are collected from all providers. If two providers return offers for the same `package_id` (uncommon — packages are typically provider-specific), the router keeps the offer from the higher-priority provider (lower `priority` value). Equal priorities are broken by first response received. Duplicate `package_id` across providers is a configuration error; the router SHOULD log a warning that identifies both providers and the selected winner. + - **Enrichment signals** are merged by kind. Segments from all providers are combined into `signals.segments`. Targeting key-values retain provider attribution: for every provider that returns a non-empty `signals.targeting_kvs` list, the router copies the list unchanged into `signals_by_provider[provider_id].targeting_kvs`, using the publisher-assigned `provider_id` from that provider's registration. The router MUST derive this key itself and MUST ignore or reject any provider-supplied `signals_by_provider` map. A provider with no targeting pairs is omitted. +5. It validates the merged response against `context-match-response.json` and returns it to the publisher. That router-hop schema permits `signals_by_provider` and forbids flattened `signals.targeting_kvs` even when no attributed bucket is present. + +The publisher resolves each `(provider_id, key)` tuple in `signals_by_provider` through its [`targeting_kv_mapping`](/dist/docs/3.2.0-beta.4/trusted-match/specification#publisher-targeting-kv-mapping) to the ad-server destination configured for that provider on the local surface. This mapping is publisher-owned deployment configuration and does not travel between provider and router. Tuples without a local mapping MUST be dropped; the publisher MUST NOT fall back to treating an unrecognized provider-local key as a global ad-server key. Distinct providers may therefore use the same local key without collision or cross-provider name capture. + +### Identity Match fan-out + +The router filters Identity Match providers by country and identity type: + +1. The router reads the `country` field from the request (a routing directive, not an identity signal). +2. It selects providers whose `countries` list includes that country code. +3. It further filters to providers whose `uid_types` list overlaps with any `uid_type` in the request's `identities` array. +4. For each selected provider, it **filters the `identities` array** to the intersection of the request's identities and that provider's declared `uid_types`. Providers MUST NOT receive identity tokens for types they did not declare — this enforces minimum-necessary-data as a structural privacy property, not an operational one. The router MUST NOT add, substitute, or transform identity tokens; the forwarded set MUST be a subset of the publisher-origin `identities` array. +5. If the intersection is empty, the router MUST skip that provider entirely. An empty `identities` array is not a valid IMR payload (schema enforces `minItems: 1`), and emitting skip-vs-forward as distinguishable telemetry would leak which identity types each user had available. +6. It **strips the `country` field** before forwarding the request to the buyer agent. +7. Because the per-provider payload differs from the inbound request, the router **re-signs** each per-provider forward over the canonical signed fields of the filtered set — `identities_hash` (which covers any per-identity `attestation`) and, when present, `sealed_credentials_hash` over the `sealed_credentials[]` entries routed to that provider by `audience_kid` — as defined in [Identity Match signed fields](/dist/docs/3.2.0-beta.4/trusted-match/specification#identity-match-signed-fields). Providers verify signatures against the router's public key. +8. It fans out to all matching providers in parallel, merges eligibility results, and returns a unified response. + +Identity eligibility is merged over **successful responders only**. The router returns the union of every responder's `eligible_package_ids` and uses the minimum `serve_window_sec` returned by those responders. Provider omission is not a negative vote: under the silent-ignore rule, the router cannot distinguish “unknown package” from “known but ineligible,” so it MUST NOT intersect omissions or require a quorum. + +- With zero successful responders, the all-providers-timeout rule below returns an empty response. +- With one successful responder, the merged eligibility and serve window are that responder's result. +- With two or more successful responders, non-responders remain excluded and the router unions the responder results. + +A `package_id` observed in two or more responders' positive `eligible_package_ids` lists is a configuration error because packages are provider-specific. The router SHOULD log a warning naming those responders, but the package remains eligible because every observable claim about it is positive. Provider `priority` does not convert a silent omission into an ineligibility signal. This responder-scoped union is a deliberate 3.2 behavior ratification; it preserves the silent-ignore privacy property. + +**TMPX collection.** Each identity provider that resolves enough identity material to mint a TMPX token returns its ordered `{slot_id, value}` chunks in `tmpx_chunks[]` (see `provider-identity-match-response.json`), where each `slot_id` is drawn from the provider's registered `tmpx_slots` on `provider-registration.json`. The router MUST collect each provider's chunks into the outbound response's `tmpx_providers` map, keyed by the emitting provider's `provider_id`, with the same ordering the provider emitted (`tmpx_providers[provider_id].chunks[]`). Per-provider impression accounting depends on that keying — the router MUST NOT collapse multiple providers' chunks into a single `tmpx` string, and MUST NOT reorder, add, or drop entries within a provider's list. Before forwarding, the router MUST validate the registered slot contract for each provider's `tmpx_chunks`: if the provider has no `tmpx_slots` registration, or if the chunk `slot_id` sequence is not an exact non-empty ordered prefix of the registered `tmpx_slots` list (i.e. contains duplicate, reordered, sparse, or unregistered slot IDs), the router MUST drop that provider's chunks atomically — omitting the provider from `tmpx_providers` entirely — rather than forwarding a non-conformant set to publisher mappings. Publisher-local destination names (ad-server macros, GAM key-values, VAST substitutions, DOOH play-log fields) MUST NOT travel between provider and router; naming is resolved on the publisher side via `tmpx_macro_mapping` (see `publisher-tmpx-config.json`), so the router never accepts a destination name from an untrusted provider. A provider that does not emit any TMPX (e.g. no eligible packages) MUST be omitted from the map rather than represented by an empty `chunks[]`. The two hop schemas are disjoint by design and each enforces its own hop split plus the identity-privacy boundary with `not: {anyOf: […]}` clauses. The provider-facing schema forbids the router-hop fields (`tmpx_providers`, `tmpx`), any legacy carriers (`tmpx_values`, `tmpx_macros`), and envelope-extension fields (`context`, `ext`). The publisher-facing schema forbids the provider-hop field (`tmpx_chunks`) at the root, the same legacy carriers, and the same envelope-extension fields — so `context`/`ext` cannot slip through on either hop. Routers MUST drop any inbound `tmpx_chunks` at the outbound-envelope boundary rather than passing it through the envelope's extension surface. For back-compat with consumers that read the deprecated singular `tmpx` field, routers MAY also populate `tmpx` with one provider's first-slot value; when both fields are present, `tmpx_providers` is authoritative. + +### Timeout handling + +The router manages two distinct timeout values: + +- **Overall latency budget** (`latency_budget_ms`): The total time the router has to fan out, collect responses, and merge. Default: 50ms. This is the end-to-end budget the publisher allocates to TMP within their ad serving pipeline. +- **Per-provider timeout** (`timeout_ms` on the provider registration): The maximum time the router waits for a single provider. Must be ≤ the overall latency budget. Default: 50ms (equal to the budget for single-provider setups). + +When multiple providers are configured, the per-provider timeout is the effective cap for each individual provider, and the overall budget is the cap for the entire fan-out. The router enforces the tighter of the two for each provider. For example: with a 50ms overall budget and two providers each set to 40ms, both providers are called in parallel and the router waits at most 50ms total — if provider A responds in 45ms, provider B has already timed out at 40ms. + +- **Single provider timeout**: Skip that provider, log its latency percentile, proceed with responses from remaining providers. The skipped provider's packages are treated as "not activated" for this request. +- **All providers timeout**: Return an empty response — no offers for Context Match, no eligibility for Identity Match. The publisher falls back to existing demand sources (Prebid open auction, direct-sold, etc.). +- **Adaptive timeout**: The router tracks per-provider latency percentiles (p50, p95, p99) and adjusts allocation over time. Consistently slow providers receive smaller timeout allocations or are preemptively skipped. Higher-priority providers (lower `priority` value) receive a larger share of the budget when adaptive allocation is active. This is an operational decision, not a protocol requirement. + +## Latency Budget + +TMP targets sub-50ms end-to-end latency: publisher sends request, router fans out, providers respond, router merges, publisher receives response. + +This is achievable because: + +- **Small messages**: TMP requests are 200-600 bytes of JSON — roughly 10-20x smaller than a typical OpenRTB bid request. Serialization is sub-microsecond. +- **No price computation**: Packages are pre-negotiated. The provider evaluates targeting criteria, not auction dynamics. +- **Parallel fan-out**: All providers are called simultaneously. The total latency is the slowest provider's response time, not the sum. +- **Stateless router**: No database lookups in the hot path. The router's only job is forwarding and merging. +- **Connection reuse**: HTTP/2 multiplexing allows concurrent requests to each provider over a single connection. + +## Comparison to Vendor RTD Modules + +The TMP Router generalizes what vendor-specific RTD modules do today. A single-vendor RTD module evaluates packages against content in real time, but it is locked to one provider, one surface (Prebid), and sends the full OpenRTB BidRequest. + +The TMP Router replaces this with a multi-provider, multi-surface, protocol-standard alternative: + +| | Vendor RTD Module (today) | TMP Router | +|---|---|---| +| Providers | Single vendor | Any provider declaring TMP capabilities | +| Discovery | Publisher configuration | Publisher configuration | +| Surfaces | Web (Prebid Server) | Web, AI, mobile, CTV, retail media | +| Request format | Full OpenRTB BidRequest (~2-10KB JSON) | TMP ContextMatchRequest (~200-600 bytes JSON) | +| Privacy | Data masking before sending | Structural separation (TEE-ready) | +| Identity handling | User ID in bid request | Separate Identity Match operation | + +For existing Prebid Server deployments, the TMP module replaces vendor-specific RTD modules with a generic TMP client. For surfaces without Prebid, the router's HTTP/2 API provides the same functionality. + +## Relationship to TEE Auction Infrastructure + +TEE-based auction infrastructure (encrypted bids, attestation proofs, verifiable winner selection) is complementary to TMP. When a publisher wants competitive selection among activated packages from multiple buyers: + +1. TMP Router collects Context Match responses (which packages each buyer wants to activate). +2. Publisher submits the activated packages (with their pre-negotiated prices) to a TEE auction. +3. The TEE enclave selects the winner and produces an attestation proof. +4. Publisher activates the winning package. + +TMP handles matching. TEE auctions handle competition. Publishers choose whether they need competition at all — many surfaces (editorial AI content, CTV pod composition, retail carousels) are better served by publisher-side relevance ranking than by price-based auctions. + +TEE auction infrastructure (AWS Nitro Enclaves, attestation, key management) is directly applicable when upgrading the TMP Router to TEE-attested operation, making it a natural infrastructure partner for the protocol. + +## Deployment + +The TMP Router is a single Go binary built on [adcp-go](https://github.com/adcontextprotocol/adcp-go). It reads a configuration file listing providers and their capabilities. Each provider exposes two path-based endpoints under its base URL — `POST /context` and `POST /identity` — and the router dispatches by path. + +### Configuration + +```yaml +# tmp-router.yaml +listen: ":8443" +tls: + cert: /etc/tmp/tls.crt + key: /etc/tmp/tls.key + +latency_budget_ms: 50 +adaptive_timeout: true +health_check_interval_sec: 30 + +providers: + # US cluster — UID2, RampID, ID5 + - provider_id: acme-outdoor-us + endpoint: https://us.tmp.acmeoutdoor.example/v1 + context_match: true + identity_match: true + countries: [US] + uid_types: [uid2, rampid, id5] + timeout_ms: 40 + priority: 0 + properties: ["01916f3a-9c4e-7000-8000-000000000010"] + + # EU cluster — EUID, ID5 + - provider_id: acme-outdoor-eu + endpoint: https://eu.tmp.acmeoutdoor.example/v1 + context_match: true + identity_match: true + countries: [DE, FR, IT, ES, NL, BE, AT, PL, SE, DK, FI, IE, PT, GR, CZ, RO, HU, BG, HR, SK, SI, LT, LV, EE, CY, MT, LU, GB] + uid_types: [euid, id5] + timeout_ms: 40 + priority: 0 + properties: ["01916f3a-9c4e-7000-8000-000000000010"] + + # Context-only enrichment provider (no identity match, no country scoping needed) + - provider_id: enrichment-co + endpoint: https://enrichment.example/v1 + context_match: true + identity_match: false + timeout_ms: 30 + priority: 10 +``` + +### Container deployment + +```dockerfile +FROM ghcr.io/adcontextprotocol/tmp-router:latest +COPY tmp-router.yaml /etc/tmp/config.yaml +EXPOSE 8443 +``` + +The router is stateless — no database, no persistent storage. It can be horizontally scaled behind any load balancer. Health checks are available at `/healthz`. + +### Capacity planning + +Each router instance handles approximately 10,000 requests per second on a 2-vCPU container. Memory usage scales linearly with the number of concurrent connections to providers, not with request volume. + +For web publishers, one router instance per point of presence (PoP) is typical. For AI platforms, a centralized deployment with regional failover is sufficient since the router adds < 5ms to end-to-end latency. + +### Monitoring + +The router exposes Prometheus metrics at `/metrics`: + +| Metric | Description | +|---|---| +| `tmp_context_match_duration_ms` | Context Match end-to-end latency histogram | +| `tmp_identity_match_duration_ms` | Identity Match end-to-end latency histogram | +| `tmp_provider_duration_ms` | Per-provider response time histogram | +| `tmp_provider_timeout_total` | Per-provider timeout counter | +| `tmp_provider_error_total` | Per-provider error counter | +| `tmp_offers_total` | Total offers returned across all providers | + +Alert on `tmp_provider_timeout_total` increasing — a provider consistently exceeding its timeout budget degrades match quality for all requests that include it. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/specification.mdx b/dist/docs/3.2.0-beta.4/trusted-match/specification.mdx new file mode 100644 index 0000000000..bc4d8b2382 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/specification.mdx @@ -0,0 +1,884 @@ +--- +title: TMP Specification +description: Authoritative message type definitions, field tables, privacy requirements, and conformance levels for the Trusted Match Protocol. +"og:title": "AdCP TMP Specification" +--- + +# Trusted Match Protocol Specification + +<Note> +**Experimental.** The Trusted Match Protocol is part of AdCP 3.0 as an experimental surface — it may change between 3.x releases with at least 6 weeks' notice. Sellers implementing TMP MUST declare `trusted_match.core` in `experimental_features`. See [experimental status](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the full contract. Fields on this surface are not subject to deprecation cycles until 3.0.0 GA. +</Note> + +This is the authoritative reference for the Trusted Match Protocol (TMP). For conceptual introductions, see the [overview](/dist/docs/3.2.0-beta.4/trusted-match/) and [core concepts](/dist/docs/3.2.0-beta.4/trusted-match/context-and-identity). + +Specific areas expected to evolve include TMPX exposure tokens, country-partitioned identity, and Offer creative data — see the [3.1.0 roadmap](https://github.com/adcontextprotocol/adcp/issues/2201) for planned changes. + +## Definitions + +| Term | Definition | +|---|---| +| **Context Match** | TMP operation that evaluates available packages against content context. Carries no user identity. | +| **Identity Match** | TMP operation that evaluates user eligibility against package criteria. Carries no page context. | +| **TMP Router** | Infrastructure that fans out TMP requests to buyer agents and merges responses. A single binary that handles both context and identity requests, with structurally separate code paths. | +| **Offer** | A buyer's response to a context match request. Ranges from simple activation (package_id only) to rich proposals with brand, price, summary, and creative manifest. | +| **Available package** | A package from an active media buy that is eligible for evaluation on a given placement. Package metadata — including the originating seller agent — is synced at media buy time. See [Package Sync](#package-sync). | +| **Seller agent** | The buyer-side agent that sold the package into a publisher. Identified by the agent URL declared in the publisher's `adagents.json` `authorized_agents[].url`. Every `AvailablePackage` is bound to exactly one seller agent at sync time. | +| **Eligibility** | List of eligible package IDs returned by Identity Match, plus a serve-window throttle. The buyer computes eligibility from frequency caps, audience membership, and other signals; the reasons are opaque to the publisher. | +| **Artifact** | A typed content reference associated with a publisher property (article URL, episode EIDR, show Gracenote ID, music ISRC, product GTIN, conversation turn). Each artifact has a `type` and `value`. Referenced in context match requests. | +| **Temporal decorrelation** | Random delay and random ordering between Context Match and Identity Match requests, preventing timing- and order-based correlation. | + +## Message Types + +All TMP message types include a `type` field that identifies the message for deserialization. Routers and agents use this field to select the correct schema for parsing the JSON body. + +| Message | `type` value | +|---|---| +| Context Match request | `context_match_request` | +| Context Match response | `context_match_response` | +| Identity Match request | `identity_match_request` | +| Identity Match response | `identity_match_response` | +| Error response | `error` | + +### ContextMatchRequest + +Sent by the publisher (via router) to buyer agents. Contains content context. MUST NOT contain user identity. + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"context_match_request"`. Message type discriminator for deserialization. | +| `protocol_version` | string | No | TMP protocol version. Default: `1.0`. Allows receivers to handle semantic differences across versions. | +| `request_id` | string | Yes | Unique request identifier for logging. MUST NOT correlate with any Identity Match request_id. | +| `property_rid` | UUID | Yes | Property catalog UUID (v7). Globally unique, stable. | +| `property_id` | string | No | Publisher's human-readable slug. Optional when `property_rid` is present. | +| `property_type` | enum | Yes | One of: `website`, `mobile_app`, `ctv_app`, `desktop_app`, `dooh`, `podcast`, `radio`, `linear_tv`, `streaming_audio`, `ai_assistant`. See `property-type` enum. | +| `placement_id` | string | Yes | Placement identifier from the publisher's placement registry in `adagents.json`. One placement per request. | +| `seller_agent_url` | string (URI) | Yes | API endpoint URL of the seller agent issuing this request. The provider resolves the active package set it has synced for this seller against it; an unsynced seller MUST yield an empty offer set, never a fall-back to another seller's set. A single per-placement value carrying no user identity. Compared with AdCP URL canonicalization. Consistent with `seller_agent_url` on the Identity Match request and `agent_url` in `adagents.json`. | +| `artifact` | Artifact | No | Full content artifact adjacent to this ad opportunity. Same schema as content standards evaluation. The publisher sends the full artifact when they want the buyer to evaluate the actual content. Contractual protections govern buyer use. TEE deployment upgrades contractual trust to cryptographic verification. | +| `artifact_refs` | List\<ArtifactRef\> | No | Public content references the buyer can resolve independently. Each has a `type` (one of: `url`, `url_hash`, `eidr`, `gracenote`, `isrc`, `gtin`, `rss_guid`, `isbn`, `custom`) and a `value`. For URL-addressable content, the buyer may have pre-classified these. Use `url_hash` when the publisher prefers not to reveal the URL (contextual clean room). | +| `context_signals` | ContextSignals | No | Pre-computed classifier outputs for the content environment. Use when content is ephemeral (conversation turns, search queries) or to supplement artifact-based matching. Can replace `artifact_refs` entirely. Raw content MUST NOT be included — only classified outputs. The publisher is the classifier boundary. | +| `geo` | Geo | No | Coarse geographic location of the viewer. Publisher controls granularity — country for regulatory compliance, region/metro for campaign targeting and valuation. No postcode or coordinates — coarsened to prevent user identification. | +| `package_ids` | List\<string\> | No | Restrict evaluation to specific packages. When omitted, the provider evaluates all eligible packages for this placement (the common case). Package metadata (formats, catalogs) is synced at media buy time — not sent per request. | + +#### ContextSignals + +Pre-computed classifier outputs for the content environment. MUST NOT contain raw content (conversation text, article body, URLs). Only classified outputs. The publisher is the classifier boundary. + +| Field | Type | Required | Description | +|---|---|---|---| +| `topics` | List\<string\> | No | Content topic identifiers. Use IAB Content Taxonomy 3.0 IDs when `taxonomy_id` is 7 (default), or human-readable strings for custom taxonomies. | +| `taxonomy_source` | enum | No | Organization that defines the topic taxonomy. Default: `iab`. | +| `taxonomy_id` | integer | No | Taxonomy version within the source. For IAB, follows the AdCOM cattax enum: `7` = Content Taxonomy 3.0 (CC-BY-3.0). Default: `7`. | +| `sentiment` | enum | No | Content sentiment: `positive`, `negative`, `neutral`, `mixed`. | +| `keywords` | List\<string\> | No | Content keywords extracted by the publisher's classifier. | +| `language` | string | No | ISO 639-1 language code. | +| `content_policies` | List\<string\> | No | Policy IDs from the [AdCP Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) that this content satisfies. Routers populate this from the publisher's property governance configuration or content metadata. Buyers filter on policies they require via `required_policies` on packages. This is a **pre-filtering optimization** — contexts missing required policies are excluded before reaching downstream governance. Definitive enforcement happens at the governance layer via [`check_governance`](/dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance). | +| `summary` | string | No | Natural language summary for relevance judgment. Useful for LLM-native buyers that evaluate semantically. | +| `embedding` | string | No | Content embedding as base64-encoded int8 vector. Captures semantic content beyond topics and keywords. | +| `embedding_model` | string | No | Embedding model identifier (e.g., `nomic-embed-text-v1.5`). Required when `embedding` is present. | +| `embedding_dims` | integer | No | Number of dimensions in the embedding vector. Required when `embedding` is present. | + +Three levels of content disclosure — the publisher chooses based on what the buyer needs and what the publisher is comfortable sharing: + +- **`artifact`** — the full content (article body, transcript, conversation flow, product page). Same schema as content standards artifacts. The buyer evaluates the content directly. Contractual protections govern what the buyer can do with it. TEE deployment adds cryptographic verification on top. +- **`artifact_refs`** — public references (URLs, EIDR IDs, URL hashes) the buyer resolves independently. Use for publicly addressable content the buyer can crawl and classify themselves. +- **`context_signals`** — classified outputs (topics, sentiment, keywords, summary). Use when the publisher wants to describe the content without sharing it or a reference to it. + +`context_signals` is the baseline — every buyer agent MUST handle it. `artifact_refs` and `artifact` are progressive enhancements. Publishers who send `artifact_refs` SHOULD also send `context_signals` as a fallback for buyers who cannot resolve references. + +LLM-based buyer agents SHOULD evaluate `context_signals.summary` and `context_signals.topics` first. These fields provide sufficient signal for most relevance decisions at minimal token cost (~30 tokens). Full content resolution from `artifact_refs` or `artifact` evaluation SHOULD be reserved for high-value packages where precision justifies the cost. Buyers MUST treat `artifact` content and `context_signals.summary` as untrusted publisher-generated input. + +A request can include any combination. A news site sends `artifact_refs` (the URL) and `context_signals` (pre-classified topics). A CTV app sends `artifact_refs` (EIDR IDs) alone. An AI assistant sends `artifact` (the conversation) for buyers that evaluate content directly, plus `context_signals` as a fallback. A publisher who doesn't want to share content or references sends only `context_signals`. + +#### Artifact Ref Type Conventions + +Buyers parse `artifact_refs` strings by pattern. The following conventions are normative: + +| Type | Pattern | Example | +|---|---|---| +| URL | Starts with `https://` | `https://oakwood.example/articles/sustainable-kitchen` | +| URL hash | 44-char base64 (Blake3) | `k7Xp9mQ2vL8nR3wY5tB1aH6jK0pZ4xC9dF2eG7iMqw==` | +| EIDR | Starts with `eidr:` | `eidr:10.5240/XXXX-XXXX-XXXX-XXXX-XXXX-C` | +| Gracenote TMS | Starts with `tms:` | `tms:SH012345670000` | +| RSS + GUID | Starts with `rss:` | `rss:https://feed.example/rss+guid:ep-2026-03-15` | +| GTIN | 8-14 digit numeric | `00012345600012` | + +Buyers SHOULD ignore ref types they do not support rather than failing the request. + +#### Artifact + +A typed content reference. Each artifact identifies a piece of content using a standard or custom identifier scheme. + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | enum | Yes | One of: `url`, `url_hash`, `eidr`, `gracenote`, `isrc`, `gtin`, `rss_guid`, `isbn`, `custom`. | +| `value` | string | Yes | The identifier value. For `url`: canonical content URL (MUST NOT contain user-specific paths or query params; use `url_hash` to avoid revealing URLs). For `url_hash`: base64-encoded Blake3 hash (canonicalization: strip scheme, strip www./m./amp. prefixes, lowercase, strip trailing slash, strip query params and fragments). For `eidr`: EIDR DOI (e.g., `10.5240/xxxx`). For `gracenote`: Gracenote TMS ID (e.g., `SH032541890000`). For `isrc`: ISRC code (e.g., `USRC17607839`). For `gtin`: GTIN (e.g., `00012345678905`). For `rss_guid`: episode GUID from RSS feed. For `isbn`: ISBN (e.g., `978-0-123456-78-9`). For `custom`: publisher-defined string. | + +#### Geo + +Geographic context for the impression opportunity. Publisher controls granularity. + +| Field | Type | Required | Description | +|---|---|---|---| +| `country` | string | No | ISO 3166-1 alpha-2 country code (e.g., `US`, `GB`). | +| `region` | string | No | ISO 3166-2 subdivision code (e.g., `US-CA`, `GB-SCT`). | +| `metro` | Metro | No | Metro area using AdCP's metro classification systems. | + +### ContextMatchResponse + +Contains offers for matched packages and optional response-level signals. Two schemas carry this message across the two hops of a Context Match fan-out so the provider boundary cannot claim router-authored attribution and the publisher boundary cannot receive flattened provider targeting keys. + +**Provider → router** (`provider-context-match-response.json`): + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"context_match_response"`. Message type discriminator for deserialization. | +| `request_id` | string | Yes | Echo of the request's `request_id`. | +| `offers` | List\<Offer\> | Yes | Offers from the buyer, one per activated package. Empty list means no packages matched. | +| `cache_ttl` | integer | No | Provider override (in seconds) for the router's default Context Match response cache TTL. When present, routers MUST use this value instead of their default. `0` disables caching (e.g., when targeting configuration has just changed); schema-enforced maximum is 86400 seconds. See [Caching](#caching). | +| `signals` | Signals | No | Provider-origin response-level signals. Targeting pairs use the provider's local vocabulary in `signals.targeting_kvs`; the provider MUST NOT author `signals_by_provider`. | + +**Router → publisher** (`context-match-response.json`): + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"context_match_response"`. Message type discriminator for deserialization. | +| `request_id` | string | Yes | Echo of the request's `request_id`. | +| `offers` | List\<Offer\> | Yes | Offers collected across the provider fan-out. Empty list means no packages matched. | +| `signals` | Signals | No | Merged non-keyed response-level signals such as `segments`. The router-facing schema forbids flattened `signals.targeting_kvs`, even when `signals_by_provider` is absent. | +| `signals_by_provider` | Map\<provider_id, ProviderSignals\> | No | Router-authored targeting pairs grouped under the publisher-assigned `provider_id` from provider registration. For every provider response containing a non-empty `signals.targeting_kvs` list, the router copies the complete list unchanged into `signals_by_provider[provider_id].targeting_kvs`. The router derives the key from registration and MUST ignore or reject provider-supplied buckets. Providers with no targeting pairs are omitted. Map keys match the registered `provider_id` charset (`^[A-Za-z0-9_]+$`, 1–64 chars). | + +The hop-specific fields are disjoint. `provider-context-match-response.json` permits `signals.targeting_kvs` and forbids `signals_by_provider`; `context-match-response.json` permits `signals_by_provider` and forbids `signals.targeting_kvs` whether or not the attributed map is present. Both forbid `context` and `ext` so extension data cannot cross the context privacy boundary. + +`signals_by_provider` is the attribution boundary for merged targeting signals. The router MUST NOT invent a namespace by rewriting provider keys, accept a provider's claimed bucket name, or flatten attributed pairs back into `signals.targeting_kvs`. The publisher resolves each `(provider_id, key)` tuple through its [`targeting_kv_mapping`](#publisher-targeting-kv-mapping) to a local ad-server destination. A tuple without a local mapping MUST be dropped; its provider-local `key` MUST NOT be treated as a global or publisher-owned targeting key. The mapping is deployment configuration and is not carried on either protocol hop. + +#### Offer + +A buyer's response for a single package. + +| Field | Type | Required | Description | +|---|---|---|---| +| `package_id` | string | Yes | Package identifier from the media buy. | +| `seller_agent` | SellerAgentRef | No | Optional echo of the package's seller agent for publisher-side observability. Non-authoritative — the binding on the cached AvailablePackage is source of truth. Routers MAY stamp this field from the cached package→seller map when omitted by the provider. See [Package Sync](#package-sync). | +| `brand` | BrandRef | No | Brand for this offer. Required when the product allows dynamic brands. For single-brand packages, already known from the media buy. | +| `price` | OfferPrice | No | Variable price for this offer. Only present when the product supports variable pricing. | +| `summary` | string | No | Buyer-generated description of the offer for the publisher to judge relevance. E.g., "50% off Goldenfield mayo — recipe integration". | +| `creative_manifest` | CreativeManifest | No | Full creative details, inline. When present, the publisher has everything needed to render. For large creatives (VAST, video), the manifest references external assets via URLs. | +| `creative_data` | Map\<string, string\> | No | Optional free-form string enhancements for dynamic creative rendering, such as sponsor labels and promotion codes. This is not ad-server macro substitution or attribution tracking; tracker URLs belong in `creative_manifest` assets and exposure tracking uses TMPX. | + +`creative_data` deliberately has no protocol-level key registry and declares no +required keys. Key meanings are package-local. Receivers MUST ignore unknown +keys, and a missing key MUST NOT make an otherwise renderable offer fail. Any +content required to render an inline creative belongs in the declared +`creative_manifest` assets; `creative_data` may complement those assets but MUST +NOT be their only carrier. This keeps a manifest self-contained while allowing +optional publisher-specific presentation enhancements without creating a second +format schema. + +#### OfferPrice + +| Field | Type | Required | Description | +|---|---|---|---| +| `amount` | number | Yes | Price amount in the specified currency. | +| `currency` | string | No | ISO 4217 currency code. Default: `USD`. | +| `model` | enum | Yes | One of: `cpm`, `cpc`, `cpcv`, `cpa`, `flat`. | + +#### Signals + +Response-level context signals. Providers may emit both fields; routers combine `segments` but move targeting pairs to `signals_by_provider` rather than passing provider-local keys through as flattened publisher targeting. + +| Field | Type | Required | Description | +|---|---|---|---| +| `segments` | List\<string\> | No | Audience or contextual segment IDs. | +| `targeting_kvs` | List\<KeyValuePair\> | No | Provider-hop only. Provider-local key-value pairs for ad-server targeting. A router preserves the complete list unchanged in the corresponding `signals_by_provider` bucket; this field is forbidden on router-to-publisher responses. | + +#### ProviderSignals + +Router-authored bucket preserving one provider's targeting pairs. + +| Field | Type | Required | Description | +|---|---|---|---| +| `targeting_kvs` | List\<KeyValuePair\> | Yes | Non-empty exact copy of the provider's `signals.targeting_kvs` list. Providers with an absent or empty list have no bucket. | + +#### KeyValuePair + +| Field | Type | Required | Description | +|---|---|---|---| +| `key` | string | Yes | Provider-local targeting key. Publishers resolve it together with `provider_id`; it is not globally unique or itself a publisher ad-server destination. | +| `value` | string | Yes | Targeting value, preserved unchanged by the router. | + +### IdentityMatchRequest + +Sent by the publisher (via router) to buyer agents. Contains the seller agent URL, one or more opaque identity tokens, and an optional package ID list. MUST NOT contain page context. + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"identity_match_request"`. Message type discriminator for deserialization. | +| `protocol_version` | string | No | TMP protocol version. Default: `1.0`. | +| `request_id` | string | Yes | Unique request identifier. MUST NOT correlate with any Context Match request_id. | +| `seller_agent_url` | string (URI) | Yes | API endpoint URL of the seller agent issuing this request. The buyer's identity-match service uses this to resolve the active package set it has registered for this seller; when `package_ids` is omitted, evaluation occurs against that full set. Compared using the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization), not byte-equality. Consistent with `seller_agent.agent_url` on `AvailablePackage` and `agent_url` in `adagents.json`. | +| `identities` | List\<Identity\> | Yes | One or more identity tokens for the user. Publishers SHOULD include every token they have available — the buyer resolves on whichever graph matches, maximizing match rate. Each entry is an independent identifier for the same user; buyers MUST NOT treat the combination as a new correlated identity. | +| `consent` | Consent | No | Privacy consent signals. Buyers in regulated jurisdictions MUST NOT process identity tokens without consent information. | +| `package_ids` | List\<string\> | No | When omitted, the buyer evaluates eligibility against the full set of active packages it has registered for `seller_agent_url`. When provided, composition MUST be statistically independent of the current placement. Two acceptable modes: **all-active** (every active package for this buyer at this publisher) or **fuzzed** (a random sample of active packages, optionally padded with synthetic non-existent IDs, drawn from a distribution that does not depend on the current placement). The page-specific subset is forbidden — it would let the buyer correlate with Context Match by comparing package sets. | +| `country` | string | No | ISO 3166-1 alpha-2 country code. Routing directive — the router uses this to select the correct regional provider. The router MUST strip this field before forwarding to the buyer agent. Not an identity signal. | +| `sealed_credentials` | List\<SealedCredential\> | No | **Experimental (`trusted_match.verified_identity`).** HPKE-sealed verified-identity credentials addressed to specific audiences — the network-as-RP carrier. Opaque pass-through for the publisher. See [Verified Identity Attestation](#verified-identity-attestation). | + +Each entry in `identities` is a `{user_token, uid_type, attestation?}` triple: + +| Field | Type | Required | Description | +|---|---|---|---| +| `user_token` | string | Yes | Opaque token from an identity provider (ID5, LiveRamp, UID2) or publisher-generated. Buyer may map to internal identity graph but cannot reverse to PII. | +| `uid_type` | enum | Yes | Type of user identifier: `uid2`, `rampid`, `id5`, `euid`, `pairid`, `maid`, `hashed_email`, `publisher_first_party`, `world_id_nullifier`, `other`. Tells the buyer which identity graph to resolve against. See `uid-type` enum. | +| `attestation` | Attestation | No | **Experimental (`trusted_match.verified_identity`).** Verifiable proof *about* this identity (proof-of-personhood and/or age). The receiver MUST verify it and treat an unverifiable attestation as absent — never as asserted-true. See [Verified Identity Attestation](#verified-identity-attestation). | + +### IdentityMatchResponse + +Returned by the buyer agent. A list of eligible package IDs with a serve-window throttle. Two shapes carry this message across the two hops of an Identity Match fan-out — the schemas are split so each hop's obligations are expressible in JSON Schema and the untrusted provider boundary never accepts a publisher-local destination name. + +**Provider → router** (`provider-identity-match-response.json`): + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"identity_match_response"`. Message type discriminator for deserialization. | +| `request_id` | string | Yes | Echo of the request's `request_id`. | +| `eligible_package_ids` | List\<string\> | Yes | Package IDs the user is eligible for. Packages not listed are ineligible. | +| `serve_window_sec` | integer | Yes | Per-package single-shot fcap window, in seconds. Range: 1–300. Default: 60. | +| `tmpx_chunks` | List\<TmpxChunk\> | No | Ordered TMPX chunks minted by this identity agent. Each entry pairs a provider-local `slot_id` (from the provider's registered `tmpx_slots` on provider-registration.json) with an opaque URL-safe `value`. Slot IDs are provider-local opaque tokens — the agent does NOT emit publisher-local ad-server names. Ordered-prefix invariant: a response that carries fewer chunks than the provider registered MUST emit an ordered prefix of the registered `tmpx_slots` (never shifted or sparse). Capped at 2 chunks in v1; the cap MAY rise without a shape change. Omitted when the agent mints no TMPX for this request. | + +**Router → publisher** (`identity-match-response.json`): + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"identity_match_response"`. Message type discriminator for deserialization. | +| `request_id` | string | Yes | Echo of the request's `request_id`. | +| `eligible_package_ids` | List\<string\> | Yes | Union of eligible package IDs across the fan-out. | +| `serve_window_sec` | integer | Yes | Per-package single-shot fcap window, in seconds. Range: 1–300. Default: 60. After serving the user one impression on each eligible package within this window, the publisher MUST re-query Identity Match before serving from those packages again. This is **not** a router response cache TTL — it is a buyer-asserted serve throttle. Multi-impression frequency caps are handled separately by the buyer's impression tracker, which writes cap-fire events to the IdentityMatch cap-state store at the boundary regardless of this window — see [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation). | +| `tmpx_providers` | Map\<provider_id, \{ chunks: List\<TmpxChunk\> \}\> | No | Router-populated. Ordered TMPX chunks grouped by the originating identity provider's `provider_id`. Each entry's `chunks[]` is a copy of the provider's emitted `tmpx_chunks` list in the same order. Each chunk carries `{slot_id, value}` — the publisher's deployment configuration (see [Publisher TMPX macro mapping](#publisher-tmpx-macro-mapping)) resolves each `(provider_id, slot_id)` pair to a local destination on this surface. Required by router conformance when any identity provider emitted TMPX in this request; collapsing per-provider tokens into a single string loses attribution and breaks per-provider impression accounting. Map keys MUST match the `provider_id` charset registered in provider-registration.json (`^[A-Za-z0-9_]+$`, 1–64 chars). | +| `tmpx` | string | No | DEPRECATED in favor of `tmpx_providers`. Single HPKE-encrypted exposure token. Routers MAY continue to populate this field for back-compat with consumers that only know the single-token shape; when both fields are present, `tmpx_providers` is authoritative. Wire format: `kid.base64url_nopad(ciphertext)` (unpadded, no `=` characters). Removed in 4.0. | + +#### TmpxChunk + +| Field | Type | Required | Description | +|---|---|---|---| +| `slot_id` | string | Yes | Provider-local slot identifier from the emitting provider's registered `tmpx_slots` (provider-registration.json). Opaque provider-namespaced token; publishers map `(provider_id, slot_id)` → local destination via `tmpx_macro_mapping`. Pattern: `^[a-zA-Z][a-zA-Z0-9_]*$`, 1–64 chars. NOT an ad-server macro name. | +| `value` | string | Yes | Opaque, URL-safe wire string the publisher substitutes verbatim into the destination the publisher's mapping resolves for this `(provider_id, slot_id)` pair. Length capped at 1024 characters. Publishers MUST NOT parse, decode, or transform this value. | + +Each TMPX `value` is an HPKE-encrypted exposure token that flows through creative tracking URLs to the buyer's impression pixel, enabling real-time per-user frequency state updates without exposing user identity to the publisher. The buyer computes eligibility from whatever identity signals they have (frequency caps, audience membership, purchase history) and returns only the packages that pass. The publisher does not need to know why a package was excluded — just which packages are eligible. + +**TMPX destinations are publisher-owned.** Naming an ad-server macro, targeting key, VAST substitution, or DOOH play-log field is a deployment concern owned by the publisher, not a protocol identifier. Providers declare their own slot contract (`tmpx_slots` on provider-registration.json) using opaque provider-local IDs; identity-match responses carry ordered `{slot_id, value}` chunks; the router preserves the chunks and their slot IDs under the emitting `provider_id`; the publisher's [Publisher TMPX macro mapping](#publisher-tmpx-macro-mapping) resolves each `(provider_id, slot_id)` to the local destination on that surface. Slot IDs and destination names never mix on the wire — the router only ever sees provider-local slot tokens, never a publisher's ad-server namespace. Ordered multi-chunk support lets a single TMPX exceed one macro slot (capped at 2 chunks per provider in v1 and MAY be raised without a shape change). This keeps the same identity provider mappable to different destinations across surfaces (GAM key-values vs. VAST macros vs. DOOH play-log fields) via publisher-side configuration, and closes the cross-provider name-hijack surface that existed while destination names travelled on the wire — the router never accepts a destination name from an untrusted provider. + +**Startup validation and drift detection.** Because each chunk carries its `slot_id`, publishers can validate `tmpx_macro_mapping` at deployment startup: every `slot_id` a provider registered SHOULD have a corresponding entry in `tmpx_macro_mapping[provider_id]`, and every response chunk's `slot_id` MUST already be known — a chunk with an unrecognized `slot_id` for a provider present in the mapping is treated as a configuration error (see the fail-closed rule under [Publisher TMPX macro mapping](#publisher-tmpx-macro-mapping)). Publishers detect provider slot-contract drift (a provider adding, removing, or renaming a slot) at startup rather than at serve time. + +`tmpx_providers` keys ordered chunk lists by `provider_id` so the router preserves attribution when its fan-out reaches multiple identity providers. The legacy `tmpx` field remains supported through 3.x for consumers that haven't migrated; when both fields are present, `tmpx_providers` is authoritative and the singular field SHOULD reflect one provider's first-slot value solely as a transitional convenience. + +The `serve_window_sec` field is a **per-package single-shot fcap**, not a router cache TTL. The buyer is saying: "After you serve the user one impression on each eligible package, re-query me before serving from those packages again." The router MAY still cache the response for an internal deduplication/cost-saving window, but the binding contract on the publisher side is "one impression per eligible package per window." Multi-impression frequency caps (5 per day per campaign, 100 per month per advertiser, etc.) live in the buyer's impression tracker and surface to the IdentityMatch service as cap-fire events at the boundary regardless of `serve_window_sec`. + +The publisher enforces allocation rules (competitive separation, pod composition) using the eligibility list as input. This eliminates the need for pod-specific or batch-specific protocol semantics — the publisher allocates across whatever placements exist during the serve window (a CTV ad pod, a web page with 20 slots, a single pre-roll), honoring the one-impression-per-package contract. + +#### Conformance invariants for IdentityMatch eligibility + +A conformant IdentityMatch service MUST compute `eligible_package_ids` such that, for each `package_id ∈ request.package_ids`, the package is included in `eligible_package_ids` if and only if **all** of the following hold: + +1. **Audience eligibility.** Either the package has no audience requirement, OR there exists at least one audience identifier `a` such that `a` is in the package's required audience set AND `a` is in the audience-membership of at least one identity `i ∈ request.identities` (the union across the user's resolved identities intersects the package's required audiences). +2. **Frequency cap eligibility.** No `(identity, package)` cap-state entry exists for any identity `i ∈ request.identities` against the package. Cap-state entries are written by the buyer's impression tracker when it determines an impression has exhausted a cap and carry an expiration timestamp; an entry is "present" until that timestamp. The protocol does not constrain how the impression tracker counts impressions, evaluates windows, or decides when a cap fires — only the boundary contract (cap-fire entries flow into the cap-state store; the IdentityMatch service checks presence at query time). See [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation) for the boundary contract. +3. **Active state.** Packages or policies marked inactive MUST be treated as if absent. +4. **Audience freshness.** If the buyer's audience pipeline publishes a freshness deadline and the current time is past it, that audience-membership entry MUST NOT contribute to (1). +5. **Age eligibility** (experimental — applies only when `trusted_match.verified_identity` is in effect). Either the package requires no age policy, OR some identity `i ∈ request.identities` carries a **verified** `attestation` (per the [Verified Identity Attestation](#verified-identity-attestation) conformance rules) with an age claim ≥ the threshold resolved from `(the package's required age policy, request geo)`. An unverified or absent attestation does not satisfy this clause. When the feature is not in effect this clause is vacuously true, so core conformance is unchanged. + +The TMPX returned with the response MUST encode the resolved identities so the out-of-band impression tracker can update fcap policy state and signal cap-fire events to the IdentityMatch cap-state store — see § TMPX tokens and [Frequency-Cap Data Flow](/dist/docs/3.2.0-beta.4/trusted-match/identity-match-implementation). + +Storage backend (valkey, Aerospike, DynamoDB, in-memory, anything) is implementation. Two services with different storage backends that satisfy these invariants for the same inputs MUST return the same eligibility output. + +#### Consent + +Privacy consent signals for the identity match. Publishers MUST include consent information when operating in regulated jurisdictions (EU/EEA, California, etc.). Buyers MUST NOT process user tokens without consent information when required by applicable law. + +| Field | Type | Required | Description | +|---|---|---|---| +| `gdpr` | bool | No | Whether GDPR applies to this request. | +| `tcf_consent` | string | No | IAB TCF v2.2 consent string. Present when `gdpr` is true. | +| `gpp` | string | No | IAB Global Privacy Platform string. | +| `us_privacy` | string | No | US Privacy string (CCPA). Deprecated in favor of GPP but still widely used. | + +### Verified Identity Attestation + +**Experimental — declare `trusted_match.verified_identity` in `experimental_features`** (separate from `trusted_match.core`, so buyers can detect support independently). Lets a publisher — or a network/issuer acting as the relying party — carry a **verifiable** proof *about* a user (proof-of-personhood and/or age) so the buyer verifies the claim cryptographically rather than trusting an assertion. Issuer-agnostic: World ID is the first scheme; mDL / VC-style issuers use the same shape. Design rationale: `specs/tmp-verified-identity-attestation.md`. + +This widens `identity-match-request.json`, which is otherwise `additionalProperties: false`. The widening is deliberate: an attestation is proof on the **identity** side of the privacy boundary — not page context — so it does not breach the boundary the strict schema protects. + +#### Topologies + +| Topology | Relying party | Carrier | +|---|---|---| +| Publisher-as-RP | Publisher | `attestation` on an `identities[]` entry (per-publisher pseudonym) | +| Network-as-RP / issuer-as-RP | A network, or the issuer itself | `sealed_credentials[]` (HPKE-sealed to the audience's key) | + +#### Attestation + +Optional object on each `identities[]` entry. + +| Field | Type | Required | Description | +|---|---|---|---| +| `issuer` | BrandRef | Yes | Identity issuer / attestation authority as a vendor BrandRef (e.g. `{"domain": "world.org"}`) — the same shape AdCP uses for measurement/signals vendors. Domain is the anchor; `brand.json` hosting is optional. `scheme` selects the verifier version. | +| `scheme` | string | Yes | Proof scheme and version, e.g. `world_id_v4`. | +| `relying_party_id` | string | No | Relying-party id the proof was minted for. Checked against the `relying_party_id` owner's published `identity_relying_parties[]` in `brand.json` (provenance). | +| `action` | string | No | Issuer action/scope the proof was bound to. | +| `claims` | List\<enum\> | Yes | Closed, issuer-agnostic set: `unique_human`, `age_over_13`, `age_over_16`, `age_over_18`, `age_over_21`. See `attestation-claim` enum. | +| `verification_level` | enum | No | `orb` \| `device` \| `document`. Credential strength. | +| `signal_binding` | string | No | Hash of the signal the proof commits to (replay defense). | +| `proof` | object | Yes | Scheme-specific verifiable proof material; opaque to this schema. | +| `expires_at` | string (date-time) | No | Validity horizon; receivers MUST reject when past. | + +#### SealedCredential + +Entry in the top-level `sealed_credentials[]`. + +| Field | Type | Required | Description | +|---|---|---|---| +| `audience_kid` | string | Yes | Key id of the recipient (network / relying party) whose HPKE private key opens `payload`. | +| `payload` | string | Yes | HPKE-sealed attestation in the TMPX envelope format `kid.base64url_nopad(ciphertext)`. Opaque pass-through for the publisher. | + +#### Conformance invariants (verified attestation) + +A receiver that accepts attestations MUST: + +1. **Verify before trust.** Verify the proof for every `scheme` it accepts. An attestation that fails verification — or `signal_binding`, or `relying_party_id` provenance, or `expires_at` — MUST be treated as **absent** (no attestation), never as an asserted-true claim. +2. **No silent upgrade.** Never treat an unverified or unverifiable attestation as `true`. +3. **relying_party_id provenance.** Confirm the attestation's `relying_party_id` belongs to the entity claiming the traffic before trusting it. The owner's `brand.json` `identity_relying_parties[]` is the v1 discovery surface, but it is self-published over HTTPS — the authoritative root is the issuer's own relying-party registry (e.g. World ID's on-chain registry), against which `brand.json` is a cross-check. A receiver MUST NOT trust a `relying_party_id` solely because some `brand.json` lists it absent an issuer-side anchor; the bidirectional issuer-metadata cross-check is a tracked open item. +4. **Sealed credentials.** Decrypt only `sealed_credentials[]` entries whose `audience_kid` the receiver holds a key for; ignore the rest. +5. **Bound resources.** Bound attestation and sealed-credential count and size to prevent DoS. + +**Replay (v1 limitation).** Verifying a proof establishes that *a* credential holder produced it, not that it was produced for *this* impression. Without an enforced `signal_binding` freshness window and nullifier-reuse tracking — both left to the verifier in v1 (the freshness policy is WG-open) — this surface provides at most daily-epoch replay resistance (via `request_id` dedup). Receivers SHOULD bind `signal_binding` to a fresh, receiver-checkable value and track nullifier reuse, and MUST NOT over-trust an attestation as a per-impression liveness signal until they do. + +#### Router handling of `sealed_credentials[]` + +The router MUST forward each `sealed_credentials[]` entry only to the provider that owns its `audience_kid` (route-by-audience, not broadcast). The tamper-evidence and cache-partitioning rules are defined canonically in [Identity Match signed fields](#identity-match-signed-fields) and [Caching](#caching): `sealed_credentials` is folded into the per-provider re-signature canonical bytes (so an injected or swapped blob breaks the request signature) and `sealed_credentials_hash` is part of the dedup cache key (so a network-credential change repartitions the cache rather than serving a stale response). The same canonical-identities bytes already cover any per-identity `attestation`. + +#### Age as eligibility + +A verified age claim (`age_over_N`) resolves to `eligible_package_ids` — it is **never** carried as a cleartext age or date of birth. The verifying party maps `(required age policy, geo) → required threshold claim` and includes a package only when the attestation carries a claim ≥ the required threshold. The jurisdiction → threshold tables are maintained in the [AdCP Policy Registry](/dist/docs/3.2.0-beta.4/governance/policy-registry) (a package requires an age policy via `required_policies`); sub-country (e.g. US state) resolution happens where finer geo is available, since the Identity Match `country` field is coarse and stripped before forwarding. + +### Error Response + +Returned by a provider or router when a request cannot be processed. Distinct from an empty result — an empty `offers` array or empty `eligible_package_ids` list is a valid response meaning no matches, not an error. + +| Field | Type | Required | Description | +|---|---|---|---| +| `type` | string | Yes | `"error"`. Message type discriminator for deserialization. | +| `request_id` | string | Yes | Echo of the original request's `request_id`. | +| `code` | enum | Yes | Machine-readable error code: `invalid_request`, `unknown_package`, `seller_not_authorized`, `rate_limited`, `timeout`, `internal_error`, `provider_unavailable`. `seller_not_authorized` is returned at [package sync](#package-sync) time when an AvailablePackage declares a `seller_agent.agent_url` not present in the publisher's adagents.json. | +| `message` | string | No | Human-readable error description for debugging. | + +The router SHOULD exclude providers that return errors from the merged response for that request. The router MAY track error rates per provider and preemptively skip providers with sustained errors. + +## Provider Registration + +TMP providers are registered with the router via publisher configuration. The publisher specifies which providers the router should call, along with each provider's endpoint and supported capabilities. This is an operational relationship — the publisher trusts the provider to run code in their ad decisioning path. + +The standard registration path is **static configuration** — the publisher declares providers in their Prebid module config, router YAML, or equivalent surface-specific configuration. Dynamic registration (API-driven, database-backed) is an equally valid variant for publishers who manage many providers or need runtime updates. Both approaches use the same provider registration schema (`/schemas/trusted-match/provider-registration.json`). + +| Setting | Type | Required | Description | +|---|---|---|---| +| `provider_id` | string | Yes | Stable identifier for this provider registration. Used in logs, metrics, cache keys, as the key in `signals_by_provider` and publisher [`targeting_kv_mapping`](#publisher-targeting-kv-mapping) for Context Match, and as the key in `tmpx_providers` and publisher [`tmpx_macro_mapping`](#publisher-tmpx-macro-mapping) for Identity Match. Pattern: `^[A-Za-z0-9_]+$`, max length 64 — a safe alphanumeric/underscore charset so the value can appear in operational surfaces (logs, metrics, dashboards) without quoting. | +| `endpoint` | URL | Yes | Provider's base URL. The router appends `/context` or `/identity` when dispatching. | +| `context_match` | bool | No | Provider handles Context Match requests. At least one of `context_match` or `identity_match` must be true. | +| `identity_match` | bool | No | Provider handles Identity Match requests. At least one of `context_match` or `identity_match` must be true. | +| `countries` | List\<string\> | Conditional | ISO 3166-1 alpha-2 country codes this provider serves. MUST be present and non-empty when `identity_match` is true. | +| `uid_types` | List\<string\> | Conditional | Identity types this provider can resolve (from `uid-type` enum). The router selects providers whose `uid_types` overlaps with any `uid_type` in the request's `identities` array, and filters the forwarded `identities` to the intersection — providers MUST NOT receive tokens for types they did not declare. MUST be present and non-empty when `identity_match` is true. | +| `properties` | List\<UUID\> | No | Property RIDs this provider serves. When absent, the provider serves all properties. | +| `timeout_ms` | integer | No | Per-provider timeout in milliseconds. Must be ≤ the router's overall `latency_budget_ms`. Default: 50. | +| `priority` | integer | No | Provider ordering for Context Match offer conflicts. Lower values = higher priority; equal priorities are broken by first response received. Default: 0. Identity eligibility remains a responder-scoped union because silent omission is not a negative vote. | +| `tmpx_slots` | List\<string\> | No | Stable provider-local slot identifiers for the ordered TMPX chunks this provider mints — e.g. `["primary","secondary"]`. Slot IDs are opaque provider-namespaced tokens, NOT ad-server macro names; publishers map `(provider_id, slot_id)` → local destination via [`tmpx_macro_mapping`](#publisher-tmpx-macro-mapping), so the destination namespace stays publisher-owned. Distinct providers MAY reuse the same slot_id without collision (publisher lookup keys on `(provider_id, slot_id)`). Ordering carries the ordered-prefix invariant: a provider that emits fewer chunks than it registered MUST emit an ordered prefix — chunks are never shifted, sparse, or reordered. Pattern: `^[a-zA-Z][a-zA-Z0-9_]*$`, 1–64 chars, `uniqueItems`. Cap of 2 slots in v1; the cap MAY rise without a shape change. A provider that emits TMPX (populates `tmpx_chunks` on its identity-match response) MUST register this list. | +| `status` | enum | No | Provider lifecycle status: `active`, `inactive`, or `draining`. Default: `active`. | + +At least one of `context_match` or `identity_match` must be true — a provider that handles neither operation is invalid. When `identity_match` is true, `countries` and `uid_types` are **required** — the router cannot perform country-partitioned identity routing without them. The schema enforces both constraints. + +Providers MAY support any combination of `context_match` and `identity_match`. A provider that supports only `context_match` is a pure enrichment or contextual targeting provider. A provider that supports only `identity_match` is a frequency capping provider — the publisher evaluates context locally from the media buy's targeting rules and calls the buyer only for identity checks. + +### Provider lifecycle + +Providers have three lifecycle states: + +- **Active**: Provider receives requests normally. +- **Draining**: Provider stops receiving new requests. In-flight requests complete normally. Use this when taking a provider offline for maintenance — the router finishes current work without starting new fan-outs to this provider. +- **Inactive**: Provider is skipped entirely. Use this to disable a provider without removing its configuration. + +State transitions are immediate in static configuration (reload the config) and take effect within one refresh cycle in dynamic registration. + +### Publisher targeting KV mapping + +Context providers author targeting pairs in their own local vocabulary. The router preserves those pairs under the emitting provider's registered `provider_id` in `signals_by_provider`; the publisher then maps each `(provider_id, key)` tuple to the ad-server targeting destination it owns on that surface. The mapping never travels between provider and router, so neither party can select or overwrite a publisher-local destination name. + +The shape is captured by `/schemas/trusted-match/publisher-targeting-kv-config.json` and is authored alongside the publisher's surface-specific adapter configuration: + +```yaml +targeting_kv_mapping: + outdoor_media: + segment: adcp_seg + package: adcp_pkg + commerce_media: + segment: commerce_seg +``` + +Outer-map keys are publisher-assigned `provider_id` values. Inner-map keys are exact provider-local targeting keys; values are publisher-local ad-server destinations. Distinct providers MAY reuse the same local key, as `outdoor_media` and `commerce_media` do above, because lookup uses the full `(provider_id, key)` tuple. A publisher may map the same provider to different destinations across surfaces by carrying one instance of this configuration per surface. + +**Exact, own-property lookup.** Implementations MUST NOT add a prefix, separator, or case normalization before lookup. They MUST test both the provider and key as own properties of their respective mapping objects, rather than following an object prototype. This keeps legal object-like identifiers such as `constructor` from resolving an inherited property in JavaScript-family implementations. + +**Unmapped tuples are dropped independently.** If the mapping omits the provider or the exact provider-local key, the publisher MUST drop that tuple and MUST NOT fall back to using the provider-local key as an ad-server destination. Other mapped tuples from the same provider remain usable. Publishers SHOULD warn at startup when `targeting_kv_mapping` names an unregistered provider because that entry is dead configuration. + +**Destination aliases are multi-valued.** Multiple `(provider_id, key)` tuples MAY intentionally map to the same publisher destination. Every mapped input tuple contributes its value; the publisher MUST NOT silently select a first or last value, and exact duplicate values are preserved. The relative order of values contributed by different provider buckets is not significant because `signals_by_provider` is a map. An adapter serializes all contributed values using the surface's native multi-value mechanism, just as it does when one provider emits the same local key more than once. + +### Publisher TMPX macro mapping + +Where an identity provider's TMPX chunks land in the ad server is a deployment concern owned by the publisher. Providers declare their own slot contract as `tmpx_slots` on their registration entry (opaque provider-local IDs — see [Provider Registration](#provider-registration)); the identity-match response carries each chunk as a `{slot_id, value}` pair. The publisher maps each `(provider_id, slot_id)` to the ad-server macro name, GAM key-value, VAST URL macro, DOOH play-log field, or equivalent local destination for that surface. The mapping never travels between provider and router, so the router never accepts a destination name from an untrusted provider. + +The shape is captured by `/schemas/trusted-match/publisher-tmpx-config.json` and is authored by the publisher — the same operator who trafficks the corresponding ad-server line items — alongside the router configuration for that surface: + +```yaml +tmpx_macro_mapping: + provider_a: + primary: PIN_TMPX_1 + secondary: PIN_TMPX_2 + provider_b: + primary: NOVA_TMPX_1 +``` + +Inner-map keys are the provider's registered `slot_id`s; values are the local ad-server destination strings. Slot IDs are provider-local, so distinct providers MAY reuse the same slot_id (as `provider_a` and `provider_b` do above) with no collision — the publisher lookup keys on `(provider_id, slot_id)`. The same `provider_id` may map to different destinations across surfaces (GAM key-values on web, VAST URL macros on CTV, play-log fields on DOOH) by carrying one instance of this configuration per surface. Outer-map key charset matches `provider_id`; inner-map key charset matches `slot_id` — both enforced by `propertyNames` on the schema. + +**Startup validation.** Publishers use `tmpx_slots` from each provider's registration to validate the mapping at startup: +- Every `slot_id` a provider registered SHOULD have a corresponding entry in that provider's inner map. A missing entry is an operator misconfiguration — the provider is expected to emit that slot at serve time, and once it does the serve-time fail-closed rule below will suppress the whole provider's chunks on that impression. Publishers SHOULD surface missing entries as a startup warning so operators can add them before serve-time responses begin carrying the unmapped slot. +- Every provider present in `tmpx_macro_mapping` SHOULD have a registration; a mapping entry for an unregistered provider is dead configuration. + +**Serve-time fail-closed rule.** When a response carries a `slot_id` for a provider that this mapping has no entry for — the mapping is missing the whole provider, OR the provider is present but the specific `slot_id` is unknown to this surface — the publisher's adapter MUST fail closed for that provider on that impression: none of that provider's chunks are fired into the ad-serving path and the adapter logs a configuration error. Other providers on the same response are unaffected. A `provider_id` absent from the mapping entirely (e.g. a newly onboarded provider not yet trafficked on this surface) is the same case — the adapter drops that provider's chunks on this surface. This is a single rule with two detection stages: startup validation gives the operator a warning before responses begin carrying the unmapped slot; if the warning is not acted on, the serve-time rule catches it. + +Ordered position is preserved on the wire (chunks are an ordered prefix of the provider's registered `tmpx_slots`) but is not the identity key — `slot_id` is. That distinction is what makes this proposal not "macro name → slot id" rename: slot IDs stay provider-local and opaque, publisher destinations stay publisher-local, and the mapping between them lives only on the publisher side. Adopters gain startup drift detection and self-describing chunks; the router still never sees a destination name. + +### Provider registration security + +**Endpoint URL validation (SSRF).** Both static configuration and dynamic registration MUST validate provider `endpoint` URLs against the canonical [Webhook URL validation (SSRF)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) rules — HTTPS only in production, reserved IPv4 and IPv6 ranges rejected (including `::ffff:0:0/96` IPv4-mapped bypasses and the `169.254.169.254` / `fd00:ec2::254` cloud metadata addresses), no redirects. Because a router calls the provider on every request, DNS rebinding is the primary risk: routers MUST either pin the TCP connection to the IP that passed validation or re-validate the socket's post-handshake peer address before sending the request body. Re-resolving DNS without pinning is not sufficient. + +**Dynamic registration authentication.** The dynamic registration API is a privileged surface; unauthenticated registration lets an attacker point publisher traffic at arbitrary HTTPS endpoints. Routers exposing dynamic registration MUST authenticate callers (mTLS or short-lived OAuth 2.0 tokens; static API keys only with IP allow-listing) and SHOULD apply per-agent rate limits on mutations and a cap on total registered providers per publisher to bound registration-storm abuse. + +**Router-to-provider auth.** TMP does not define a credential profile for router-to-provider calls. Deployments MUST authenticate every provider request, and production providers MUST NOT accept anonymous calls. Static bearer tokens MAY be used only with IP allow-listing. + +**`/health` endpoint.** The `/health` endpoint providers are encouraged to expose for router liveness MAY be unauthenticated, but the response MUST NOT leak internal state. Providers SHOULD return `200` with body `{"status": "ok"}` when ready and `503` when not ready; other status codes are bugs. Providers MUST NOT differentiate status codes or response bodies by internal subsystem (for example, a distinct code when the database is down versus when the identity cache is down is a side-channel that maps external probing onto internal topology). Version strings, build hashes, internal hostnames, and dependency statuses MUST NOT appear in the body. Rate-limit the endpoint (recommended: 1 req/sec per source IP) so it doesn't become a DoS amplifier. + +## Product Integration + +Publishers declare TMP support on their products via the `trusted_match` field. Buyers see this on `get_products` and know what TMP capabilities are available. + +| Field | Type | Required | Description | +|---|---|---|---| +| `context_match` | bool | Yes | Product supports Context Match requests. | +| `identity_match` | bool | No | Product supports Identity Match requests. Default: false. | +| `response_types` | List\<string\> | No | What the publisher can accept back: `activation` (default), `catalog_items`, `creative`, `deal`. | +| `dynamic_brands` | bool | No | Whether the buyer can select a brand at match time. When false (default), brand must be on the media buy. When true, the buyer's offer can include any brand — the publisher applies approval rules at match time. Enables multi-brand agreements. | +| `providers` | List\<ProviderEntry\> | No | TMP providers integrated with this product's inventory. Each entry identifies a provider by `agent_url` (from the registry) and declares what match types it supports. The product-level `context_match` and `identity_match` booleans declare overall support; per-provider booleans declare which provider handles each. Enables buyer discovery. | + +#### ProviderEntry + +| Field | Type | Required | Description | +|---|---|---|---| +| `agent_url` | string (URI) | Yes | Provider's agent URL from the registry. Canonical identifier for this TMP provider. Compared against the router's provider registry using the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization), not byte-equality. | +| `context_match` | bool | No | Whether this provider handles context match for this product. Default: false. | +| `identity_match` | bool | No | Whether this provider handles identity match for this product. Default: false. | +| `countries` | List\<string\> | No | ISO 3166-1 alpha-2 country codes this provider serves. The router filters providers by the request's `country` field. Required when `identity_match` is true. | +| `uid_types` | List\<string\> | No | Identity types this provider can resolve (from `uid-type` enum). The router selects providers whose `uid_types` overlaps with any `uid_type` in the request's `identities` array, and filters the forwarded `identities` to the intersection — providers MUST NOT receive tokens for types they did not declare. Required when `identity_match` is true. | + +## Package Sync + +Package metadata is synced from seller agents to TMP providers at media buy creation time and whenever the media buy materially changes. Providers cache the `AvailablePackage` set per placement and use it at request time — no package metadata flows through `context_match_request` or `identity_match_request`. The sync transport, authentication, and batch-error shape are deployment-specific; this section defines the payload contract and the obligations each participant inherits. + +<Note> +`seller_agent` on `AvailablePackage` is required under the experimental `trusted_match.core` surface. Sellers running TMP in existing deployments must update their sync payloads to populate it — see the [experimental feature contract](/dist/docs/3.2.0-beta.4/reference/experimental-status) for the 3.x-to-3.x evolution policy. +</Note> + +### AvailablePackage + +| Field | Type | Required | Description | +|---|---|---|---| +| `package_id` | string | Yes | Unique identifier for the package. | +| `media_buy_id` | string | Yes | Media buy this package belongs to. | +| `seller_agent` | SellerAgentRef | Yes | Seller agent that owns this package. `agent_url` MUST match one of `authorized_agents[].url` in the adagents.json authoritative for every property this package may serve. See [Seller Agent Attribution](#seller-agent-attribution). | +| `format_options` | ProductFormatDeclaration[] | No | Canonical creative contracts eligible for this package. | +| `format_ids` | FormatId[] | No | Deprecated 3.x named-format compatibility projection. | +| `catalogs` | List\<Catalog\> | No | Buyer catalogs attached to this package, with selectors scoping which items are in play. Referenced by `catalog_id` against separately-synced catalog data. | + +#### SellerAgentRef + +| Field | Type | Required | Description | +|---|---|---|---| +| `agent_url` | string (URI) | Yes | The seller agent's API endpoint URL, exactly as declared in the property publisher's adagents.json `authorized_agents[].url`. HTTPS in production. | +| `id` | string | No | Reserved for a future registry-assigned stable seller identifier. Not used today; included so the reference can absorb an opaque ID layer later without a breaking rename. | + +### Seller Agent Attribution + +TMP providers cache packages from many seller agents against many publishers. The `seller_agent` field makes that provenance explicit on each cached `AvailablePackage` so providers — which have no access to a media-buy store — can attribute offers, apply per-seller observability, and resolve disputes without out-of-band lookups. + +The canonical seller identity in AdCP is the agent URL declared in the property publisher's [adagents.json](https://adcontextprotocol.org/schemas/3.2.0-beta.4/adagents.json) `authorized_agents[].url` entry. TMP reuses that URL directly rather than introducing a parallel identifier space. The `id` slot on `SellerAgentRef` is reserved for a future registry-assigned opaque identifier and is not used today. + +**Placement rationale.** Both `context_match_request` and `identity_match_request` carry `seller_agent_url`. It is the key the receiving agent uses to resolve the active package set it has registered for the asking seller: the provider on the context path, the buyer agent on the identity path. When `package_ids` is omitted, evaluation runs against that seller's full active set; a `seller_agent_url` the receiver has not synced packages for MUST yield an empty result rather than a fall-back to another seller's set. + +`seller_agent` also lives on the cached `AvailablePackage` (sync time) for attribution — that binding is the source of truth for which seller owns a package, and the offer echo below reads from it. The two carry different jobs: the request-side `seller_agent_url` selects which seller's set to evaluate; the package-side `seller_agent` attributes an individual package. Sync time remains when a provider first learns about a package; that binding is established once and reused for every subsequent evaluation. + +`seller_agent_url` does not interact with the [Package set decorrelation](#package-set-decorrelation) guarantee. That guarantee constrains data that varies per user — chiefly `package_ids`, whose composition MUST be independent of the current placement. `seller_agent_url` is a single stable value identifying the asking seller; it is identical for every user on a given placement and carries no user identity, so it adds no per-user signal on which context and identity requests could be correlated. This is receiver-side active-set scoping, not a per-user filter. + +**Offer echo.** `seller_agent` MAY appear on `offer.json` as an echo from the cached package, for publisher-side log pipelines that want one-hop attribution without rejoining to the media-buy store. The echo is non-authoritative — the cached `AvailablePackage` binding is source of truth. Providers and routers MUST overwrite a disagreeing echo with the cached binding before logging, forwarding, or emitting the offer downstream, and MUST NOT use the echo value in any field consumed for billing, reporting, or dispute resolution. A disagreement SHOULD be counted to a `seller_agent_echo_mismatch` metric for anomaly detection. Routers MAY stamp `seller_agent` on merge when providers omit it. + +### Sync-Time Validation + +Providers SHOULD validate `seller_agent.agent_url` against the property publisher's adagents.json at sync time: + +1. For each property the package may serve, fetch `/.well-known/adagents.json` on the property domain. If the file contains an `authoritative_location` pointer, follow it at most one hop to a same-scheme HTTPS URL; do not chain further. Both the initial fetch and the `authoritative_location` hop MUST apply the [Webhook URL validation (SSRF)](/dist/docs/3.2.0-beta.4/building/by-layer/L1/security#webhook-url-validation-ssrf) rules — HTTPS-only, reserved IPv4 and IPv6 ranges rejected (including `::ffff:0:0/96` IPv4-mapped bypasses and the `169.254.169.254` / `fd00:ec2::254` cloud metadata addresses), no transparent redirects, and the TCP connection pinned to the validated IP. The inbound-fetch rules referenced for [Provider registration security](#provider-registration-security) apply equally to this outbound fetch. +2. Confirm that `seller_agent.agent_url` appears in `authorized_agents[].url` and that any `property_ids`, `collections`, `placement_ids`, `placement_tags`, `countries`, `effective_from`, and `effective_until` constraints on that entry permit the package's scope. The URL comparison uses the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization) — canonicalize both values before matching, never byte-equality. Reject `seller_agent.agent_url` values that do not use the `https://` scheme with `seller_not_authorized`; non-HTTPS seller URLs have no transport-integrity guarantee and cannot be trusted as an authorization key. +3. On mismatch, reject the sync operation for that `AvailablePackage` with an `error` response using `code: seller_not_authorized`. Other packages in the same sync batch are unaffected. The exact wire shape of the sync error is deployment-specific; `code` is the machine-readable reason. + +**Cache and re-validation.** The validation result SHOULD be cached for at most 5 minutes, matching the recommended adagents.json cache window. Providers MUST re-validate on cache expiry and SHOULD surface sustained `seller_not_authorized` rejections to publisher operations — repeated failures usually indicate the publisher's adagents.json and the seller's sync pipeline have diverged. When an authorization's `effective_until` passes or the seller is removed from `authorized_agents`, providers MUST treat previously-cached packages from that seller as `unknown_package` at request time until they are re-synced and re-validated. + +**Fetch failures.** When validation cannot complete (fetch error, timeout, cert failure, malformed file), providers SHOULD reject the sync with `seller_not_authorized` rather than cache an unvalidated binding. Providers that fail-open MUST bound the unvalidated window to the 5-minute cache TTL and re-validate at the next opportunity; a binding that has never successfully validated MUST NOT remain cached past that window. + +**Bypass for pre-attested relationships.** Providers MAY skip the adagents.json check only when they can verify the same `agent_url → authorized_agents[].url` binding through an out-of-band onboarding process (e.g., a mutually authenticated provider-seller enrollment that carries the publisher's attestation), and SHOULD publish their enforcement mode (`enforcing` / `advisory`) in their conformance self-report so publishers can gate onboarding. This escape hatch is permitted for `trusted_match.core` v1 and will be removed in the first non-experimental TMP release, at which point the validation becomes MUST. + +### Participant Responsibilities + +| Actor | Sync time | Request time | +|---|---|---| +| **Seller agent** | Include its own adagents-registered `agent_url` as `seller_agent.agent_url` on every `AvailablePackage` it syncs. MUST be the URL the publisher has attested in `authorized_agents[].url`. | No new behavior. The offer MAY echo `seller_agent`; omitting it is fine — the router can stamp from cache. | +| **Publisher** | Keep `authorized_agents` in adagents.json accurate, including scope constraints (`property_ids`, `placement_ids`, `countries`, effective windows). | No new behavior. | +| **Router** | No new behavior. | MAY stamp `seller_agent` on offers that arrive without it, using its cached package→seller binding. Both `context_match_request` and `identity_match_request` carry `seller_agent_url` directly per their schemas; the router MUST forward it unchanged and MUST NOT use it to filter or re-route the request. | +| **Provider** | Validate `seller_agent.agent_url` against the property's adagents.json per [Sync-Time Validation](#sync-time-validation). Reject unauthorized packages with `seller_not_authorized`. Store the binding with the cached package. | Echo `seller_agent` on offers it produces. The cached binding is immutable for an in-flight decision, but providers MUST treat packages whose authorization has expired (removal from `authorized_agents` or `effective_until` passed) as `unknown_package` on subsequent requests until the package is re-synced. | + +### What This Is Not + +- **Not a per-user filter.** `seller_agent_url` selects which seller's registered active set the receiver evaluates — it is the same value for every user on a placement and carries no user identity. Publishers, routers, and providers MUST NOT use it as a per-user or per-request filter, nor to re-route the request; doing so would reintroduce the per-user variation [Package set decorrelation](#package-set-decorrelation) exists to prevent. The package-side `seller_agent` attribution likewise MUST NOT be used to scope or filter a request — it exists for offer attribution only. +- **Not a sellers.json bridge.** IAB sellers.json `seller_id` and TAG-IDs serve a distinct financial-audit identity space. They remain on `adagents.json` `contact` — TMP does not duplicate them. +- **Not a cryptographic attestation.** The binding is publisher-attested via adagents.json over HTTPS. Signed TMP seller claims are a future enhancement and can layer onto `SellerAgentRef` through the reserved `id` slot or an `ext` field without breaking changes. When a future release populates both `agent_url` and `id`, `agent_url` remains authoritative and `id` is advisory — a disagreement between the two MUST NOT be used to upgrade trust above what the URL's adagents.json binding provides. + +## Privacy Requirements + +The following requirements use RFC 2119 keywords (MUST, SHOULD, MAY). + +### Structural separation + +- Context Match requests MUST NOT contain user identity data (user tokens, device IDs, IP addresses, session tokens, or any data that could identify a specific user). +- Identity Match requests MUST NOT contain page context data (URLs, content hashes, topic IDs, content signals, or any data that could identify what the user is viewing). +- The TMP Router MUST process Context Match and Identity Match in structurally separate code paths with no shared state. +- Context Match and Identity Match request IDs MUST NOT be correlated or derivable from each other. + +### Package set decorrelation + +- Context Match MUST NOT be filtered by user identity or audience. The provider evaluates its synced package set for the placement — the same packages for every user. No per-request package list is sent, so the publisher cannot accidentally leak identity through package filtering. +- The publisher SHOULD omit `package_ids` from Identity Match and let the buyer evaluate against the full active set it has registered for `seller_agent_url`. When `package_ids` IS provided, its composition MUST be statistically independent of the current placement — sending only the page-specific subset would allow a buyer to correlate Identity Match with Context Match by comparing package sets. Two acceptable modes: + - **All-active.** Include every active package this buyer has at this publisher. + - **Fuzzed.** Include a random sample of active packages, optionally padded with synthetic non-existent IDs, drawn from a distribution that does not depend on the current placement. The silent-drop rule below makes synthetic-ID padding safe — unknown IDs do not affect response shape and cannot leak registry membership. +- When both `seller_agent_url` and `package_ids` are present, the buyer evaluates against the intersection of its registered active set and `package_ids`; unknown IDs in `package_ids` MUST be silently ignored (not error-surfaced) so the response does not leak registry membership back to the publisher. +- A publisher that maintains a cached list of all active package IDs per buyer MAY send the full set on every Identity Match request as a defense in depth, but the buyer-side resolution from `seller_agent_url` is the primary mechanism. +- The publisher performs the intersection of context match offers and identity match eligibility locally, after both responses arrive. + +### Temporal decorrelation + +- Publishers SHOULD introduce a random delay between Context Match and Identity Match requests. Recommended: 100-2000ms, uniformly distributed. +- Publishers SHOULD also randomize the order of Context Match and Identity Match: each opportunity SHOULD have a roughly equal probability of Context Match being sent first or Identity Match being sent first. A fixed order — e.g., Identity Match always after Context Match — leaks the pairing through ordering even when the delay is randomized. +- Publishers MAY batch Identity Match requests across multiple page views. +- Publishers MAY route Context Match and Identity Match through different network paths. + +### TEE attestation + +- The TMP Router SHOULD provide TEE attestation when available, proving the deployed binary matches the published source. +- Attestation documents SHOULD be available on request to publishers and auditors. +- Attestation SHOULD include measurements confirming service code integrity and isolation. + +### Consent handling + +- When `consent` is omitted from an Identity Match request, buyers MUST treat this as "consent status unknown" rather than "consent not required." +- Buyers in jurisdictions where consent is required MUST reject Identity Match requests that omit `consent`, not assume consent. + +### User token requirements + +- User tokens MUST be opaque to buyer agents. Tokens may originate from identity providers (ID5, LiveRamp, UID2) or be publisher-generated. +- User tokens MUST NOT contain PII or be reversible to PII by the buyer agent. + +## Request Authentication + +TMP requests carry a signature to prove the request originated from an authorized router. This prevents unauthorized parties from sending forged requests to providers to probe targeting logic, extract sponsored content, or manipulate frequency state. + +### Signing model + +The router signs all requests using Ed25519. Both Context Match and Identity Match requests are signed, but with different signed fields reflecting their different contents and caching characteristics. + +Signatures bind the request to a specific provider. The router signs a separate signature per fan-out target using the provider's endpoint URL from the router's provider registration. Providers MUST verify that the signed `provider_endpoint_url` matches their own advertised endpoint and reject the request otherwise. This prevents a captured signature from being replayed against a different provider in the registry within the epoch. + +Signatures also bind to `seller_agent_url`, the asking seller's agent URL. `seller_agent_url` selects which seller's registered active package set the receiver evaluates against (see [Seller Agent Attribution](#seller-agent-attribution)) and is the lookup key receivers use to resolve the publisher's signing keys for verification. Including it in the signed bytes prevents a captured signature from being replayed under a different seller's identity to read another seller's offers or active package set. + +The daily epoch provides replay protection — a captured signature is valid for at most ~48 hours (current + previous epoch accepted by verifiers). + +### Signature envelope + +The signature is transmitted via HTTP headers alongside the JSON body. + +| Header | Value | +|---|---| +| `X-AdCP-Signature` | Base64-encoded (URL-safe, no padding) Ed25519 signature | +| `X-AdCP-Key-Id` | Key identifier from the agent's `agent-signing-key.json` | + +#### Context Match signed fields + +Concatenated in this order, UTF-8, newline-separated: + +| Field | Source | +|---|---| +| `type` | `context_match_request` | +| `seller_agent_url` | From the request body, compared using the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization). Binds the signature to the asking seller — reusing a signature under a different `seller_agent_url` fails verification. | +| `property_rid` | From the request body | +| `placement_id` | From the request body | +| `package_ids` | Sorted, comma-separated list of active package IDs | +| `provider_endpoint_url` | Provider's registered endpoint URL (exact string match with provider registration, no trailing slash) | +| `daily_epoch` | `floor(unix_timestamp / 86400)` | + +When `package_ids` is absent from the request, the signature MUST use an empty string for that field in the signed payload. + +Because the signed fields are static per seller per placement per provider, the same signature can be cached and reused for all requests to the same `(seller_agent_url, placement_id, provider_endpoint_url)` triple within a 24-hour epoch. Cache keys MUST include `seller_agent_url` and `provider_endpoint_url` — reusing a signature across sellers or providers violates the binding and will fail verification. + +#### Identity Match signed fields + +The signed input is the hex-encoded SHA-256 of the [RFC 8785 JCS](https://datatracker.ietf.org/doc/html/rfc8785) serialization of the following canonical object. Using JCS eliminates delimiter-injection risk — raw `tcf_consent` / `gpp` / `us_privacy` / `package_id` values may contain any byte, but JSON string escaping in JCS renders any framing byte harmless. + +| Field | Source | +|---|---| +| `type` | `"identity_match_request"` | +| `request_id` | From the request body | +| `seller_agent_url` | From the request body, compared using the [AdCP URL canonicalization rules](/dist/docs/3.2.0-beta.4/reference/url-canonicalization). Binds the signature to the asking seller — reusing a signature under a different `seller_agent_url` fails verification. | +| `identities_hash` | Hex-encoded SHA-256 of the canonical `identities` bytes (see below) | +| `consent` | The request's `consent` object verbatim, or `null` when absent | +| `package_ids` | The request's `package_ids` sorted lexicographically by UTF-8 byte order | +| `sealed_credentials_hash` | Hex-encoded SHA-256 of the canonical `sealed_credentials` bytes (see below), or `null` when absent. **Experimental (`trusted_match.verified_identity`).** | +| `provider_endpoint_url` | Provider's registered endpoint URL (exact string match with provider registration, no trailing slash). Binds the signature to a specific provider — reusing a signature across providers fails verification. | +| `daily_epoch` | `floor(unix_timestamp / 86400)` as a JSON integer | + +**Canonical `identities` bytes:** deduplicate on `(uid_type, user_token)` using byte-exact match (no case folding, no trimming) — this collapses duplicate tokens only — sort entries by `uid_type` (UTF-8 byte order), then by `user_token` (UTF-8 byte order), then serialize the resulting array of **complete identity objects** as [RFC 8785 JCS](https://datatracker.ietf.org/doc/html/rfc8785). Each object is serialized in full, **including any `attestation`** — so the signature covers the attestation, and a stripped, swapped, or injected per-identity attestation breaks signature verification (the dedup key on `(uid_type, user_token)` is for collapsing duplicate tokens, not a statement that `attestation` is excluded from the hash). SHA-256 the UTF-8 bytes; hex-encode for the signed input, use raw bytes for cache keys (both conventions hash the same preimage). + +**Canonical `sealed_credentials` bytes** (experimental, `trusted_match.verified_identity`): sort entries by `audience_kid` (UTF-8 byte order), serialize the resulting array as [RFC 8785 JCS](https://datatracker.ietf.org/doc/html/rfc8785), SHA-256 the UTF-8 bytes. When the request carries no `sealed_credentials`, `sealed_credentials_hash` is `null`. Because `sealed_credentials` is part of the signed input, an injected or swapped sealed blob breaks signature verification; because `sealed_credentials_hash` is part of the dedup cache key (see [Caching](#caching)), a network-credential change repartitions the cache so stale eligibility is not served. The router re-signs over each provider's forwarded set after [route-by-`audience_kid`](#verified-identity-attestation) filtering. + +The router filters `identities` per provider before forwarding (see [Identity Match fan-out](/dist/docs/3.2.0-beta.4/trusted-match/router-architecture#identity-match-fan-out)). The signature is computed over each provider's filtered `identities` set — the router re-signs per outbound forward. The same filtered `identities_hash` value is used in the cache key (see [Caching](#caching)), so each provider has its own cache partition keyed on the subset it actually received. + +Identity Match signatures include `request_id` and `identities_hash`, so they are unique per request and cannot be cached. This is intentional — Identity Match responses affect buyer-side frequency state and must be idempotent. Buyers MUST deduplicate Identity Match requests by `request_id` within the daily epoch window. A repeated `request_id` MUST return the same response without updating frequency state. Buyers SHOULD dedupe by `hash(request_id)` rather than retaining the raw identifier. + +### Signature verification + +Each TMP router deployment **MUST** authenticate publisher requests before the router signs or fans them out. TMP does not define the publisher credential profile, publisher-facing endpoint URLs, or enforcement point; authentication may be enforced by the router, an API gateway, a service mesh, or another trusted ingress. When authentication is absent or fails at the actual publisher-facing HTTP endpoint for either Context Match or Identity Match, that endpoint **MUST** return `401` with a `WWW-Authenticate` challenge. TMP does not constrain the challenge scheme. A separate probe-only rejection path does not satisfy this requirement. A deployment whose admission control can only terminate the connection before an HTTP response (for example, strict mTLS with no HTTP authentication gate) also does not satisfy it. Because the rejection may occur before TMP request parsing, a TMP error body is not required. This prevents unauthenticated callers from using the router as a signing oracle. + +The router signs requests before fanning out. Providers verify signatures using the publisher's public key, obtained from the property registry. This proves the request originated from an authorized router — not a third party probing the provider's targeting logic. Providers SHOULD sample-verify rather than verify every request — Ed25519 verification adds ~30μs per request, which is small compared to the full pipeline but adds up at volume. A 5% sample rate detects fraudulent publishers within seconds while adding negligible overhead. + +On verification failure, the provider SHOULD suppress the property for a configurable period (recommended: 24 hours) and alert operations. + +### Key rotation + +Agents publish new signing keys via `agent-signing-key.json` at their well-known agent URL. Routers SHOULD cache keys with a 5-minute TTL. When a signature fails verification, the router SHOULD re-fetch the key before rejecting — the agent may have rotated. + +### Key revocation + +Rotation replaces a key; revocation kills one. Revocation is for the compromise case where a private key is known or suspected to have leaked. + +Publishers mark a compromised key by setting `revoked_at` (ISO 8601 timestamp) on the key entry in `agent-signing-key.json` and leaving the key in the trust anchor during a grace period so stale caches still find it. Verifiers MUST: + +- Reject any signature produced with a key where `revoked_at` is present and the signing epoch falls at or after the revocation timestamp. +- Re-fetch `agent-signing-key.json` on verification failure before rejecting the request, to pick up a revocation that propagated after the last cache refresh. +- Treat revocation as non-retryable for the offending request — there is no "maybe it'll work on retry" state. + +Keys may be removed from the trust anchor entirely once the cache TTL (recommended: 5 minutes) has elapsed across all verifiers. Removing the key earlier can produce a window where verifiers with a cached copy accept signatures that a fresh fetch would reject — keep the `revoked_at` marker in place until cache propagation completes. + +**Revocation limits.** Revocation propagates within 5 minutes (cache TTL) but does not retroactively invalidate signatures already accepted by providers before the revocation was observed. Captured signatures with a signing epoch before `revoked_at` remain verifiable for the remainder of the 48-hour replay window. Operators who suspect compromise SHOULD: + +- Rotate proactively on any suspicion, not only on confirmed leak. +- Keep signing keys in HSM or KMS rather than on disk to minimize compromise likelihood in the first place. +- Accept that a leaked key grants up to ~48 hours of forgery capability until daily-epoch rollover retires the signed payloads that contained it. Shorter custom epoch windows are a deployment option when this window is unacceptable. + +### Key distribution + +Publisher public keys are distributed via the property registry. Each property record includes the publisher's Ed25519 public key. Providers download the registry at startup and keep it current via incremental sync. + +## Wire Format + +Content type: `application/json` + +All TMP messages use JSON encoding. Field names and types follow the JSON Schema definitions in this specification. Implementations MUST support JSON. + +TMP messages are small (200-600 bytes per request/response). At these sizes, serialization format is less than 1% of total latency — the protocol's performance comes from smaller messages and structural separation, not encoding efficiency. JSON is universal, debuggable, and supported by every language and tool. + +## Country-Partitioned Identity + +Identity data is logically partitioned by country (ISO 3166-1 alpha-2). The protocol carries the country code on every Identity Match request and in every TMPX token (the buyer's read replica includes the country in the encrypted plaintext for data residency routing — this is buyer-internal and not visible to the publisher or router). How countries are physically grouped into database clusters is a deployment decision — the protocol does not constrain it. + +Publishers include a `country` field on Identity Match requests as a routing directive. The router uses it to select providers whose `countries` list includes that country code, then strips the field before forwarding. The buyer agent never sees the country — it is not an identity signal. + +Each provider entry declares which countries and identity types it serves via `countries` and `uid_types` fields. A multi-country buyer operates separate provider entries per cluster (e.g., one for US, one for EU countries). This enables buyers to comply with data residency requirements, subscribe publishers to only the countries they serve, and move countries between clusters without protocol changes. + +## TMPX Exposure Tokens + +TMP uses encrypted exposure tokens (TMPX) to close the frequency capping loop. The Identity Match read replica encrypts resolved identity tokens into an opaque TMPX macro that flows through creative tracking URLs. The buyer's impression pixel decrypts the token and logs per-user exposures. + +### Encryption + +TMPX uses HPKE (RFC 9180) with `mode_base`: + +| Parameter | Value | +|---|---| +| Mode | `mode_base` — encrypt with recipient's public key only | +| KEM | DHKEM(X25519, HKDF-SHA256) | +| KDF | HKDF-SHA256 | +| AEAD | ChaCha20-Poly1305 | + +The buyer's cluster master holds the recipient private key. Read replicas encrypt using the master's public key. Only the master can decrypt. Forging a TMPX token requires both the master's public key (published) and realistic identity tokens from identity providers (UID2, ID5, RampID) — fabricating these is harder than the fraud itself. Systematic frequency manipulation is detected at the IVT (Invalid Traffic) layer, not the encryption layer. + +### Binary format + +The TMPX plaintext is a compact binary structure. The type ID implicitly defines the token length — no length prefix is needed. + +**Header (16 bytes):** + +| Field | Size | Description | +|---|---|---| +| Version | 1 byte | Format version (`0x01`) | +| Timestamp | 4 bytes | uint32 Unix seconds — token creation time | +| Country | 2 bytes | ISO 3166-1 alpha-2, ASCII — identity data residency | +| Nonce | 8 bytes | Random — replay deduplication at the master | +| Count | 1 byte | Number of identity entries | + +**Entries (repeated, buyer-configured priority order):** + +| Field | Size | Description | +|---|---|---| +| Type ID | 1 byte | Fixed integer, defines token binary size | +| Token | N bytes | Raw binary identity token (size determined by Type ID) | + +**Type ID registry:** + +| ID | Token Type | Binary size | +|---|---|---| +| 1 | uid2 | 32 bytes | +| 2 | euid | 32 bytes | +| 3 | id5 | 32 bytes | +| 4 | rampid | 32 bytes | +| 5 | rampid_derived | 48 bytes | +| 6 | maid | 16 bytes | +| 7 | pairid | 32 bytes | +| 8 | hashed_email | 32 bytes | +| 9 | publisher_first_party | 32 bytes | +| 10 | world_id_nullifier | 48 bytes (16-byte relying-party digest + 32-byte nullifier) | + +Type IDs are stable — new types append, existing IDs never change. Tokens are stored in binary (UUIDs as 16 bytes, base64-encoded tokens decoded). RampID has two entries because maintained (XY, 32 bytes) and derived (Xi, 48 bytes) forms differ in size. + +`world_id_nullifier` is **relying-party-scoped**: its token is the 16-byte SHA-256 digest of the proof's `relying_party_id` followed by the 32-byte nullifier. This entry is produced only from a **verified** attestation — the verifier-derived nullifier under the receiver-confirmed `rp_id` (see [Verified Identity Attestation](#verified-identity-attestation)). A sender-asserted `world_id_nullifier` in `identities[]` carries no trust and is never resolved or sealed; it cannot even form this token, since it lacks a verified `rp_id`. Unlike `uid2`/`id5`/`rampid`, the entry is not a graph identifier the buyer resolves — it is a proof-of-personhood pseudonym, valid only with an accompanying verified attestation. A World ID nullifier is meaningful only within the `rp_id` it was minted for, and that `rp_id` rides the request-side `attestation`, which does not round-trip into the token. Carrying the `rp_id` digest in the token lets the out-of-band impression tracker attribute the nullifier to its relying party — by matching the digest against the relying parties it accepts — and key frequency state on the `(rp_id, nullifier)` pair, so a nullifier under one relying party never shares cap state with another. The token carries no `rp_id` cleartext, and the digest width is a working-group open item. + +If a parser encounters an unknown Type ID, it MUST stop parsing and treat the remaining entries as absent. The header Count field indicates total entries, but implementations MUST NOT assume all entries are parseable — forward compatibility requires graceful degradation when newer Type IDs are present. + +### Wire format + +The TMPX macro value uses the format `<kid>.<base64url_ciphertext>`. The ciphertext MUST use unpadded base64url encoding (RFC 4648 section 5, no `=` padding characters). Padding characters break URL query parameters where `=` is the key-value delimiter. The `kid` (key identifier, max 8 characters) is opaque — it MUST NOT encode geographic or deployment information. It maps to a cluster master private key internally. + +**Size budget (255-char GAM macro limit):** After HPKE overhead (48 bytes) and header (16 bytes), ~120 bytes remain for identity entries. Three 32-byte tokens = 99 bytes — fits comfortably. When the buyer resolves more identities than fit the budget, the TMPX plaintext is truncated to the highest-priority entries according to buyer deployment configuration. The priority order is a buyer-side configuration concern (not protocol-level), typically ranking deterministic graphs (UID2, RampID) above probabilistic or publisher-scoped identifiers. Buyers MUST configure an explicit priority list — the default implementation MUST NOT truncate arbitrarily — and the list SHOULD be documented in the buyer's operational runbook. + +### Key management + +One X25519 keypair per cluster: + +- The cluster master holds the **private key** for decryption. +- The **public key** is published in `encryption_keys` on agent authorization entries in `adagents.json`. +- Read replicas use the public key to encrypt. No per-replica key management. + +Key rotation follows the same pattern as TMP signing keys: 5-minute cache TTL, kid prefix for versioning, 30-day grace period for old master keys. + +### Replay protection + +The 8-byte random nonce enables deduplication at the master. The master stores nonces for a configurable window (recommended: 7 days) and rejects duplicates. The nonce is inside the AEAD-protected ciphertext — intermediaries cannot observe it. + +### Caching behavior + +The TMPX token is generated once per Identity Match evaluation and accompanies the eligibility response for the `serve_window_sec` window. All impressions on eligible packages within that window share the same TMPX value (same nonce, same tokens). + +The buyer's master MUST NOT deduplicate by TMPX value or nonce within a serve window — each pixel fire is one impression. Multiple ads served to the same user in a CTV pod or a web page with multiple ad units all produce distinct pixel fires with the same TMPX token. The nonce deduplication only prevents replay of the same TMPX token *after* the serve window expires — if the same nonce appears outside its original window, it is a replay and MUST be rejected. + +### Publisher obligations + +Publishers MUST NOT parse, decrypt, or make decisions based on TMPX values. The token is opaque pass-through data substituted into creative tracking URLs exactly like other macros. For DOOH inventory, the player MAY include the opaque TMPX value in play log records transmitted to the buyer for exposure reconciliation — the publisher MUST NOT retain TMPX values beyond the transmission window. + +### Inventory-specific behavior + +For each terminal surface the publisher trafficks the destinations named in its [`tmpx_macro_mapping`](#publisher-tmpx-macro-mapping) — those names (macros, GAM key-values, VAST URL macros, DOOH play-log fields) are the operational contract the ad-server line items target. At serve time, the publisher walks `tmpx_providers[provider_id].chunks[]` from the response and, for each chunk, substitutes `chunk.value` into `tmpx_macro_mapping[provider_id][chunk.slot_id]`. The legacy `{TMPX}` macro (from the deprecated singular `tmpx` field) remains supported for consumers that haven't migrated. + +- **Web, mobile, CTV (SSAI), audio (DAI):** Standard impression pixel — for each `chunk ∈ tmpx_providers[provider_id].chunks`, substitute `chunk.value` into the destination the publisher's mapping resolves for `(provider_id, chunk.slot_id)`. +- **CTV (client-side VAST):** Publisher performs the same per-chunk substitution before the VAST document reaches the player. +- **DOOH:** Play-log-based — TMPX values are logged by the DOOH player into the play-log fields the publisher's mapping resolves for `(provider_id, chunk.slot_id)` rather than pixel URLs. Play log records MUST carry `provider_id` alongside each `slot_id`/`value` pair so the buyer can route to the correct decryption master. + +## Transport + +- JSON over HTTP/2 POST. All implementations MUST use this transport. +- Each provider exposes two path-based endpoints under its base URL: `POST /context` for Context Match and `POST /identity` for Identity Match. The router dispatches requests by path, not by inspecting the message body. +- Each provider SHOULD expose `GET /health` at its base URL. The endpoint returns HTTP `200` with a JSON body `{"status": "ok"}` when the provider is ready to accept requests. Any non-`200` response or connection failure means the provider is not ready. Routers and operators use this for pre-flight checks and monitoring — it is not called in the request hot path. +- The `type` field in each message identifies the message for deserialization — routers and agents use it to select the correct schema, not for routing. Agents MUST validate that the `type` field matches the endpoint: `context_match_request` on `/context`, `identity_match_request` on `/identity`. A mismatch MUST be rejected with HTTP `400`. +- Connections SHOULD be reused via HTTP/2 multiplexing. +- The router SHOULD maintain a connection pool to each buyer agent. +- The [adcp-go](https://github.com/adcontextprotocol/adcp-go) SDK provides the reference client and server implementation. Conformance tests validate compatibility — implementations in other languages MUST pass the same test suite. + +### HTTP Status Codes + +TMP uses HTTP status codes for transport-level errors only. Application-level results (including TMP error responses) are always returned with HTTP `200`: + +| HTTP Status | Meaning | +|---|---| +| `200` | Request processed. Body contains the TMP response (success, empty result, or TMP error). | +| `400` | Malformed request (invalid JSON, missing `type` field). Not a TMP response — no body to parse. | +| `401` | Publisher authentication was absent or failed. The response MUST include `WWW-Authenticate`; TMP does not constrain the challenge scheme. No TMP error body is required because the deployment authentication gate may reject the request before TMP request parsing. | +| `503` | Provider temporarily unavailable. The router should retry or skip. | + +This means a `200` with an empty `offers` array is a valid "no matches" response, and a `200` with a TMP error body (`"type": "error"`) is a valid application error. The router handles one response format regardless of outcome. + +## Latency + +- TMP targets sub-50ms end-to-end latency (publisher → router → agents → router → publisher). +- The router SHOULD apply adaptive per-agent timeouts based on observed latency percentiles. +- Agents that exceed the timeout are excluded from the merged response for that request. +- The router MAY preemptively skip agents whose p95 latency consistently exceeds the budget. + +## Caching + +Context Match responses are cacheable because the same packages are evaluated for every user on a given placement. The recommended cache key is `{property_rid, placement_id, provider_id}`. + +- Routers SHOULD cache Context Match responses with a TTL of **5 minutes**. +- Providers MAY include a `cache_ttl` field (integer, seconds) in Context Match responses to override the default. Routers MUST respect this value when present. +- Identity Match responses are bound by `serve_window_sec` (per-package single-shot fcap, max 300s, default 60s). Routers MAY apply an internal deduplication cache keyed on `{identities_hash, provider_id, package_ids_hash, consent_hash, sealed_credentials_hash}`, where `identities_hash` is the SHA-256 of the canonical `identities` bytes defined in [Identity Match signed fields](#identity-match-signed-fields) (computed over the per-provider filtered subset); `package_ids_hash` is SHA-256 over the JCS serialization of the sorted `package_ids` array; `consent_hash` is SHA-256 over the JCS serialization of the request's `consent` object (or JCS `null` when the field is absent — this distinguishes "consent unknown" from an explicit-empty consent object); and `sealed_credentials_hash` (experimental, `trusted_match.verified_identity`) is the SHA-256 of the canonical `sealed_credentials` bytes defined in [Identity Match signed fields](#identity-match-signed-fields), or `null` when absent — so a network-credential change that shifts eligibility repartitions the cache rather than serving a stale response. JCS framing prevents delimiter-injection: raw consent strings or package IDs containing `|`, `,`, or `\n` cannot collide two distinct inputs. Including the identity set ensures that adding or removing tokens produces a distinct cache entry. Including the package list hash ensures cached responses are invalidated when the active package set changes (e.g., a new media buy activates). Including the consent hash prevents eligibility decisions taken under one consent state from being served under another. The publisher's binding contract is the serve-window throttle, not the router's internal cache window. +- When a provider's targeting configuration changes (new packages, updated targeting rules), the provider SHOULD return `"cache_ttl": 0` (Context Match) or `"serve_window_sec": 1` (Identity Match) until the change has propagated, then resume normal values. +- `cache_ttl` (Context Match) has a schema-enforced maximum of 86400 seconds. `serve_window_sec` is bounded at 300 seconds — longer windows make per-package fcap too coarse for typical campaigns, shorter than the IdentityMatch round-trip wastes the throttle. + +## Conformance Levels + +### TMP Buyer Agent (Basic) + +- Supports `context_match` capability +- Responds to ContextMatchRequest with valid ContextMatchResponse +- Meets latency budget (p95 < 30ms for agent-side processing) +- Respects privacy constraints (does not log or correlate requests with identity data from other sources) + +### TMP Buyer Agent (Full) + +All of Basic, plus: +- Supports `identity_match` capability +- Responds to IdentityMatchRequest with valid IdentityMatchResponse (eligible package IDs + TTL) +- Supports rich offers (brand, price, summary, creative manifest) when the product declares matching `response_types` + +### TMP Router (Basic) + +- Configured with provider endpoints +- Fans out Context Match and Identity Match to authorized providers +- Merges responses +- Meets end-to-end latency budget (p95 < 50ms) +- Its actual publisher-facing Context Match and Identity Match endpoints return `401` with `WWW-Authenticate` when publisher authentication is absent or fails +- For each Context Match request in a multi-publisher deployment, binds the authenticated publisher principal to its allowed `property_rid` values and rejects unauthorized values before signing or fan-out; single-publisher deployments satisfy this requirement trivially +- Operator documentation identifies the authentication mechanism and where it is enforced (router, gateway, service mesh, or other trusted ingress) + +### TMP Router (Trusted) + +All of Basic, plus: +- Runs in a TEE-attested environment (e.g., AWS Nitro Enclaves) +- Provides attestation documents on request, proving the deployed binary matches the published source +- Structural separation between context and identity code paths is verifiable via attestation measurements diff --git a/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants.mdx b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants.mdx new file mode 100644 index 0000000000..0230bfbeb0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants.mdx @@ -0,0 +1,181 @@ +--- +title: TMP for AI Assistants +description: How TMP enables monetization of AI chat and assistant surfaces without traditional ad servers. +"og:title": "AdCP TMP for AI Assistants" +--- + +# TMP for AI Assistants + +AI assistants represent a fundamentally new ad surface. There is no impression in the traditional sense — sponsored content is woven into conversational responses. There is no ad server — the platform's language model generates the response. And there is no standard protocol for asking buyers "what should be sponsored in this conversation?" + +TMP provides that protocol. + +## How It Works Today + +Most AI platforms that monetize conversations either: + +- Partner with a single ad network and delegate all monetization decisions +- Build proprietary sponsorship logic tied to specific advertisers +- Don't monetize conversations at all + +There is no standard way for an AI platform to discover which buyer agents have relevant packages, ask them what to activate for a given conversation context, and incorporate their preferences into the response — all while protecting user privacy. + +## Context Match + +When a user sends a message in a conversation, the AI platform sends a Context Match request before generating the response: + +```json +{ + "type": "context_match_request", + "request_id": "ctx-a1b2c3d4", + "property_rid": "01916f3a-f8cb-7000-8000-000000000050", + "property_id": "chatplatform-assistant", + "property_type": "ai_assistant", + "placement_id": "chat-inline-recommendation", + "seller_agent_url": "https://chatplatform.example", + "artifact_refs": [ + { "type": "custom", "value": "turn:b3c9e2" } + ], + "context_signals": { + "topics": ["479", "483", "592"], + "taxonomy_source": "iab", + "taxonomy_id": 7, + "sentiment": "positive", + "keywords": ["sneakers", "running", "recommendations"], + "language": "en", + "content_policies": ["csbs"], + "summary": "User asking for sneaker recommendations for running and casual wear" + }, + "geo": { "country": "US" } +} +``` + +Conversation turns are ephemeral — there's no public reference a buyer could independently resolve, so `artifact_refs` are typically limited to opaque turn identifiers (e.g., `turn:b3c9e2`). The platform sends `context_signals` with pre-computed classifier outputs (topics, sentiment, keywords, summary) so the buyer can evaluate relevance without seeing the raw conversation. No user identity is present. Platforms can also send the full conversation as an `artifact` for buyers that evaluate content directly — the same artifact schema used for content standards evaluation. + +The buyer agent responds with an offer: + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-a1b2c3d4", + "offers": [ + { + "package_id": "pkg-sneaker-reco", + "brand": { "domain": "apexathletics.example.com", "brand_id": "apex_runners" }, + "price": { "amount": 12.50, "currency": "USD", "model": "cpm" }, + "summary": "Apex Classic Low + Runner X — free shipping this month", + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "title": { "asset_type": "text", "content": "Trending for spring" }, + "body_text": { "asset_type": "text", "content": "Apex Classic Low — clean lines, tons of colorways. Free shipping this month." }, + "source_catalog": { "asset_type": "catalog", "catalog_id": "catalog-sneakers" }, + "landing_page_url": { "asset_type": "url", "url": "https://apexathletics.example.com/classic-low?utm_source=chatplatform" } + } + } + } + ], + "signals": { + "segments": ["sneaker_enthusiast"], + "targeting_kvs": [{ "key": "product_affinity", "value": "sneakers" }] + } +} +``` + +This buyer response uses the provider-hop `provider-context-match-response.json` shape, where `signals.targeting_kvs` contains provider-local keys. The router moves those pairs unchanged into its router-authored `signals_by_provider` buckets; it never forwards this flattened list to the publisher. + +The buyer's offer includes `package_id` (required) along with optional fields: `brand`, `price`, `summary`, `creative_manifest`, and `creative_data`. For an AI assistant, the creative manifest is small enough to send inline in the real-time path. The manifest carries the text the platform can weave into the conversation and the catalog items to reference. The `summary` helps the platform judge relevance before deciding whether to incorporate the sponsored content. + +## Identity Match + +The platform sends an Identity Match request with a session token and the platform's `seller_agent_url`. The buyer resolves its active package set from `seller_agent_url`; when the platform sends `package_ids` explicitly (as below), composition MUST be independent of the current page — either all-active (every active package for this buyer on the platform) or fuzzed (a random sample padded with synthetic non-existent IDs the buyer silently drops). The page-specific subset is forbidden — it would let the buyer correlate this request with the context match by comparing package sets: + +```json +{ + "type": "identity_match_request", + "request_id": "id-e5f6g7h8", + "seller_agent_url": "https://ai-assistant.example", + "identities": [ + { "user_token": "tok_session_k2f8", "uid_type": "publisher_first_party" } + ], + "package_ids": ["pkg-sneaker-reco", "pkg-fashion-native", "pkg-athletic-wear", "pkg-outdoor-gear", "pkg-accessories-promo", "pkg-seasonal-sale"] +} +``` + +The buyer responds with the IDs of eligible packages and a TTL. The buyer computes eligibility from frequency caps, audience membership, and other signals — the reasons are opaque to the publisher. + +```json +{ + "type": "identity_match_response", + "request_id": "id-e5f6g7h8", + "eligible_package_ids": [ + "pkg-sneaker-reco", + "pkg-athletic-wear", + "pkg-outdoor-gear", + "pkg-seasonal-sale" + ], + "serve_window_sec": 120 +} +``` + +The platform intersects these results locally: only packages that appeared in both the context match offers and the `eligible_package_ids` list are activated. + +## Activation + +The AI platform incorporates the TMP result into its response generation: + +- The offer's creative manifest (headline, body text, catalog items) becomes part of the context available to the language model. The manifest is inline in the offer — no separate fetch needed. +- The platform's own relevance model decides **how** to integrate the sponsored content — as a direct recommendation, a subtle mention, or a separate sponsored card, depending on conversational flow and editorial policy. +- Ineligible packages (from Identity Match) are excluded from the generation context. +- The offer `summary` helps the platform's relevance model decide if the sponsored content fits the conversation. + +TMP tells the platform **what** sponsored content is available and relevant. The platform decides **how** to present it. This is the correct separation of concerns — the buyer knows their campaign; the platform knows their user experience. + +## Why This Matters + +AI assistants are a new ad surface that lacks the infrastructure web and mobile have built over decades. TMP provides: + +- **Standard buyer integration**: Any buyer agent that speaks TMP can activate packages on any AI platform that supports TMP. No bespoke integrations per platform. +- **Privacy by default**: The conversation content never leaves the platform as raw text. The buyer sees classified signals and topic IDs. The user's identity is handled in a separate request. +- **Platform editorial control**: The platform decides how to weave sponsored content into the conversation. TMP provides inputs; the platform controls the experience. +- **Multi-buyer support**: A platform can have packages from multiple buyer agents active simultaneously. The TMP Router handles fan-out. The platform handles selection. + +## Example Flow + +``` +User message: "What are the best sneakers for spring?" + → Platform classifies: topic=shopping.fashion.sneakers, sentiment=positive + → Platform sends Context Match to TMP Router + → Router fans out to buyer agents + → Apex Athletics agent: offer for Classic Low + Runner X, free shipping, inline creative manifest + → Spring Retailer agent: no offers (context doesn't match fashion-native targeting) + → Router returns merged response + + → (300ms later) Platform sends Identity Match with ALL buyer's active packages + → Response: eligible_package_ids includes pkg-sneaker-reco, serve_window_sec: 120 + → Router caches eligibility + + → Platform joins: pkg-sneaker-reco offer is eligible + → Platform includes offer's creative manifest in generation context + → Language model generates response: + "Great question! The Apex Classic Low is trending for spring — + clean lines, tons of colorways, and they're offering free + shipping right now. The Runner X is also a solid pick + if you want more cushion..." + → Sponsored content label applied per platform policy +``` + +## Billing and Measurement + +**Impression definition.** An impression occurs when the platform's LLM incorporates a creative manifest into its response to the user. This is analogous to a viewable impression on web — the content was rendered and presented. + +**Engagement events.** Follow-up questions about the sponsored product ("where can I buy those?", "what colors are available?") are engagement events. The platform tracks these and reports them via `get_media_buy_delivery`. + +**Click-through.** If the response includes a product URL and the user navigates to it, this is a click event. The platform tracks click-throughs using the URLs from the creative manifest's assets. + +**Billing model.** Most AI assistant packages use CPM (cost per thousand impressions) or CPA (cost per action). The platform reports delivery via `get_media_buy_delivery` like any other surface. + +**Measurement challenges.** Unlike web where viewability is standardized (MRC), AI assistant impressions don't have an industry-standard viewability definition yet. AdCP defines an impression as "creative manifest content presented to the user in the LLM's response." + +**Frequency counting.** Each impression counts toward the package's cross-publisher frequency cap. The platform reports impressions via delivery reporting; the buyer agent updates its exposure store. A user who sees a recommendation in an AI assistant and then visits a web page will have that AI impression reflected in the Identity Match eligibility check — provided the buyer's exposure store is current. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv.mdx b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv.mdx new file mode 100644 index 0000000000..457369c699 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv.mdx @@ -0,0 +1,213 @@ +--- +title: TMP for CTV +description: How TMP activates packages for CTV pod composition with creative variant selection. +"og:title": "AdCP TMP for CTV" +--- + +# TMP for CTV + +Connected TV apps compose ad pods — sequences of ads that fill commercial breaks during streaming content. Pod composition means activating multiple packages simultaneously while respecting competitive separation, frequency limits, and duration constraints. TMP handles package activation and identity eligibility; the broadcaster's ad server handles pod assembly. + +## How It Works Today + +Broadcasters manage CTV deals through their ad server (FreeWheel, Google Ad Manager, SpringServe). Each deal is configured with targeting rules, competitive separation constraints, and creative rotation logic. Pod composition is handled by the ad server's pod optimization engine. There is no standard way for buyer agents to provide real-time input on which packages to activate or which creative variants to prefer for a specific pod. + +## The Four Messages + +A CTV ad break involves four TMP messages: a context match request and response (what content is playing, which packages match), then an identity match request and response (is this household eligible). The publisher joins the results locally to compose the pod. + +### Context Match Request + +When a pod break approaches, the broadcaster sends a context match request. The `placement_id` identifies the ad break position (e.g., `pre_roll`, `mid_roll_1`, `pod_break_2`). The `artifact_refs` reference the show and episode, which buyer agents use for content-level targeting. No package list is sent — the provider uses its synced package set for this placement. + +```json +{ + "type": "context_match_request", + "request_id": "ctx-9f3a-e7b2", + "property_rid": "01916f3a-a1d3-7000-8000-000000000020", + "property_id": "riverview-streaming", + "property_type": "ctv_app", + "placement_id": "mid_roll_1", + "seller_agent_url": "https://riverview.example", + "artifact_refs": [ + { "type": "gracenote", "value": "SH032541890000" }, + { "type": "eidr", "value": "10.5240/B1A2-C3D4-E5F6-7890-1234-X" } + ] +} +``` + +Key points: + +- **Artifacts reference show and episode by industry ID.** The buyer agent can match on the show ("The Night Kitchen" is a cooking drama, good fit for food brands) via its Gracenote ID, the specific episode via its EIDR, or both. +- **No package list is sent per request.** The provider evaluates all eligible packages for this placement using its synced package set from media buy setup. The same packages are evaluated for every household — filtering by household happens in identity match. +- **Creative support is declared on the product's `trusted_match` config.** When a product's config includes creative response types, buyer agents return creative manifests so the broadcaster can render directly. + +### Context Match Response + +Each buyer agent evaluates the content context and responds with offers for packages it wants to activate. The router merges all responses. Here two buyers activated: + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-9f3a-e7b2", + "offers": [ + { + "package_id": "pkg-sparklean-30s", + "brand": { "domain": "sparklean.example.com" }, + "summary": "Kitchen cleaning product — contextual fit with cooking drama", + "creative_manifest": { + "format_kind": "video_vast", + "assets": { + "vast_tag": { + "asset_type": "vast", + "delivery_type": "url", + "url": "https://creatives.sparklean.example/vast/kitchen-30s.xml" + } + } + } + }, + { + "package_id": "pkg-greenleaf-15s", + "summary": "Organic grocery — recipe content alignment", + "creative_manifest": { + "format_kind": "video_vast", + "assets": { + "vast_tag": { + "asset_type": "vast", + "delivery_type": "url", + "url": "https://creatives.greenleaf.example/vast/spring-15s.xml" + } + } + } + } + ] +} +``` + +Vaultline (financial services) and Driftmoto (motorcycle brand) did not match the cooking drama context and are absent from the offers. + +For CTV creatives, the `creative_manifest` typically references a VAST URL rather than including the creative inline. Video assets are large; the manifest points to the external asset and the broadcaster's ad server fetches it at render time. + +### Identity Match Request + +Separately, the broadcaster sends an identity match request with a household token and the broadcaster's `seller_agent_url`. The buyer resolves its active package set from `seller_agent_url`. When the broadcaster sends `package_ids` explicitly (as below), composition MUST be independent of the current pod break — either all-active (every active package for that buyer at this broadcaster) or fuzzed (a random sample padded with synthetic non-existent IDs the buyer silently drops). The pod-break-specific subset is forbidden — it would let the buyer correlate the identity request with a specific context request by comparing package sets. + +```json +{ + "type": "identity_match_request", + "request_id": "id-7k2m-p4w1", + "seller_agent_url": "https://broadcaster.example", + "identities": [ + { "user_token": "tok_household_q7w2", "uid_type": "publisher_first_party" }, + { "user_token": "ID5*mN4pQ...", "uid_type": "id5" } + ], + "consent": { + "us_privacy": "1YNN" + }, + "package_ids": [ + "pkg-sparklean-30s", + "pkg-sparklean-display-web", + "pkg-sparklean-native-mobile", + "pkg-greenleaf-15s", + "pkg-greenleaf-display-web", + "pkg-vaultline-30s", + "pkg-vaultline-audio", + "pkg-driftmoto-15s", + "pkg-driftmoto-30s" + ] +} +``` + +The list includes packages from other surfaces (web display, mobile native, audio). The example uses all-active mode — the broadcaster maintains a cached list of all active packages per buyer and sends the full set every time. Fuzzed mode (random sample padded with synthetic IDs) is the equivalent privacy guarantee for broadcasters that prefer not to maintain that cache. + +### Identity Match Response + +Each buyer agent evaluates the household token against its own data (frequency caps, audience membership, purchase history) and returns the IDs of eligible packages plus a TTL. The buyer does not disclose the reasons — the publisher only needs to know whether the household qualifies. + +```json +{ + "type": "identity_match_response", + "request_id": "id-7k2m-p4w1", + "eligible_package_ids": [ + "pkg-sparklean-30s", + "pkg-sparklean-display-web", + "pkg-greenleaf-15s", + "pkg-greenleaf-display-web", + "pkg-vaultline-30s", + "pkg-vaultline-audio", + "pkg-driftmoto-30s" + ], + "serve_window_sec": 90 +} +``` + +The response covers all packages, not just CTV ones. The `serve_window_sec: 90` covers the duration of the ad break — the router uses cached eligibility to fill all pod slots without re-querying. The publisher extracts only the package IDs relevant to the current pod. + +## Pod Composition + +The broadcaster now has two sets of results and composes the pod locally: + +1. **Filter by context activation.** Only packages with offers from context match are candidates: Sparklean (30s) and Greenleaf (15s). Vaultline and Driftmoto did not activate. +2. **Filter by identity eligibility.** Of the context-activated packages, check household eligibility: Sparklean is eligible, Greenleaf is eligible. Both pass. +3. **Rank eligible offers.** Use the ad server's own priority and pacing rules to rank the eligible offers. +4. **Apply competitive separation.** The broadcaster's ad server enforces competitive separation rules — two brands in the same advertiser category cannot appear in the same pod. Sparklean (cleaning) and Greenleaf (grocery) are in different categories, so no conflict. +5. **Assemble the pod.** Fill the available duration. A typical mid-roll pod might be 60 seconds: + - Slot 1 (30s): Sparklean — context match, household eligible + - Slot 2 (15s): Greenleaf — context match, household eligible + - Remaining 15s: filled by other demand sources (programmatic, house ads) + +Competitive separation is the publisher's responsibility. TMP provides the activation and eligibility signals; the broadcaster's ad server applies business rules about which brands can appear together. This keeps the protocol simple and avoids encoding category taxonomies into TMP messages. + +## SSAI Integration + +Server-side ad insertion (SSAI) is the dominant CTV delivery model. The TMP Router runs server-side alongside the SSAI engine, keeping the entire activation flow off the client device. + +- **Flow.** The SSAI engine receives a pod break signal from the content stream, queries the TMP Router for context and identity matches, receives offers, and stitches VAST creatives into the stream before delivery. +- **Creative delivery.** The `creative_manifest` in Context Match responses includes VAST URLs that the SSAI engine can fetch and splice directly. No client-side ad loading is required. +- **Latency budget.** The SSAI engine's overall ad insertion budget is typically 200-500ms (larger than client-side insertion), since stitching happens before stream delivery. The TMP Router still targets sub-50ms for its portion; the extra budget gives the SSAI engine time for VAST fetching and stream stitching. +- **Companion ads.** If the VAST response includes companion creatives, the SSAI engine can pass them to the CTV app's display layer for rendering alongside the video content. + +## Show and Episode Artifact Refs + +CTV artifacts typically reference both a show and a specific episode using industry-standard identifiers: + +```json +"artifact_refs": [ + { "type": "gracenote", "value": "SH032541890000" }, + { "type": "eidr", "value": "10.5240/B1A2-C3D4-E5F6-7890-1234-X" } +] +``` + +EIDR (Entertainment Identifier Registry) provides globally unique IDs for shows, seasons, and episodes. Gracenote TMS IDs are equally valid. The key requirement: the identifier must be publicly resolvable so buyers can independently look up metadata. + +A buyer agent can use these at different granularities: + +- **Show-level targeting.** "Activate on any episode of The Night Kitchen" — the agent checks whether the Gracenote show ID is in its targeting rules. +- **Episode-level targeting.** "Activate only on the season premiere" — the agent checks the specific EIDR episode ID. +- **Genre or topic targeting.** The agent resolves genre and topic metadata from its cached artifact data. This works for broad category targeting without hard-coding specific show IDs in targeting rules. + +## Example Flow + +``` +Mid-roll break in "The Night Kitchen" S02E07 + + Context Match + --> Broadcaster sends request: show + episode artifacts, placement context + --> Sparklean agent: activate pkg-sparklean-30s (VAST creative, cooking context fit) + --> Greenleaf agent: activate pkg-greenleaf-15s (VAST creative, food content) + --> Vaultline agent: no activation (financial services, no context fit) + --> Driftmoto agent: no activation (motorcycle brand, no context fit) + + Identity Match (after temporal decorrelation — random delay + random order) + --> Broadcaster sends request: all 9 active packages across all buyers + --> Response: eligible_package_ids includes Sparklean, Greenleaf, Vaultline, Driftmoto-30s + --> serve_window_sec: 90 (covers the ad break) + + Pod Assembly (broadcaster's ad server) + --> Join: Sparklean and Greenleaf both activated and eligible + --> Competitive separation: different categories, no conflict + --> Pod: Sparklean 30s + Greenleaf 15s + 15s backfill + --> Fetch VAST creatives from manifest URLs + --> Serve pod during commercial break +``` diff --git a/dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile.mdx b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile.mdx new file mode 100644 index 0000000000..8bbac586d0 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile.mdx @@ -0,0 +1,273 @@ +--- +title: TMP for Mobile Apps +description: How TMP integrates with mobile mediation SDKs to activate pre-negotiated AdCP packages alongside programmatic demand. +"og:title": "AdCP TMP for Mobile Apps" +--- + +# TMP for Mobile Apps + +Mobile apps use mediation layers to select which ad network serves each impression. The mediator evaluates demand sources — ad networks, bidding partners, direct deals — and picks the winner. TMP integrates as an additional demand source within this model. It activates pre-negotiated AdCP packages that compete alongside existing network demand in the mediator's auction or waterfall. + +## How It Works Today + +A mobile publisher configures their mediation SDK with ad networks, waterfall priorities or in-app bidding rules, and placement definitions. When an ad opportunity arises, the mediator selects the best source based on expected revenue. AdCP packages have no path into this decision — they exist in the AdCP system but the mediation layer has no way to evaluate them. + +TMP bridges this gap. The publisher's app includes a TMP SDK that calls the TMP Router when an ad opportunity arises. Activated packages are passed to the mediation layer as custom demand sources with pre-negotiated CPMs. The mediator evaluates them alongside network bids using its standard selection logic. + +## Integration Model + +The TMP SDK sits between the app and the mediation layer. It does not replace the mediator — it feeds packages into it. + +``` +Ad opportunity + -> TMP SDK sends Context Match (content signals, placement context) + -> TMP SDK sends Identity Match (device token, all buyer packages) + -> TMP SDK joins results locally + -> Eligible, activated packages passed to mediator as demand sources + -> Mediator runs its auction / waterfall as usual + -> Winner serves +``` + +Two integration patterns cover most mobile ad formats: + +- **Activation**: The buyer activates a package by ID. The TMP SDK passes the package to the mediator with its pre-negotiated CPM. The mediator fetches the creative through its standard rendering path. This is the typical pattern for interstitials, rewarded video, and banners served through mediation. The product's `trusted_match` config declares activation as a supported response type. + +- **Creative**: The buyer returns a full creative manifest inline. The app renders the ad directly without going through the mediator. This is the typical pattern for native in-feed ads where the app controls the rendering. The product's `trusted_match` config declares creative as a supported response type. + +## Context Match + +When an ad opportunity arises, the TMP SDK sends a Context Match request to the router. The request describes the content context for the placement. + +### Interstitial Example + +A fitness app triggers an interstitial after a workout completes: + +#### Request + +```json +{ + "type": "context_match_request", + "request_id": "ctx-mob-7f3a91", + "property_rid": "01916f3a-b4e7-7000-8000-000000000030", + "property_id": "pulsefit-ios", + "property_type": "mobile_app", + "placement_id": "interstitial_main", + "seller_agent_url": "https://pulsefit.example", + "artifact_refs": [ + { "type": "custom", "value": "screen:workout-complete" }, + { "type": "custom", "value": "screen:workout-summary" } + ] +} +``` + +No package list is sent per request. The provider evaluates all eligible packages for the `interstitial_main` placement using its synced package set from media buy setup. The same packages are evaluated for every user — filtering by user would leak identity into the context path. + +#### Response + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-mob-7f3a91", + "offers": [ + { + "package_id": "pkg-sports-inter-01" + }, + { + "package_id": "pkg-nutrition-inter-02", + "summary": "Post-workout recovery shake promo" + } + ] +} +``` + +Two packages activated. The sports gear and nutrition packages match the fitness content context. The telecom and auto packages did not match and are absent from the offers list. When the product's `trusted_match` config declares activation as the response type, offers carry just the `package_id` (plus an optional summary). The mediator will handle creative fetching. + +### Native Feed Example + +A recipe app shows sponsored content cards in its recipe feed: + +#### Request + +```json +{ + "type": "context_match_request", + "request_id": "ctx-mob-b2c419", + "property_rid": "01916f3a-c5f8-7000-8000-000000000031", + "property_id": "tastecraft-android", + "property_type": "mobile_app", + "placement_id": "banner_feed", + "seller_agent_url": "https://tastecraft.example", + "artifact_refs": [ + { "type": "url", "value": "https://tastecraft.example.com/weeknight-pasta-recipes" } + ] +} +``` + +#### Response + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-mob-b2c419", + "offers": [ + { + "package_id": "pkg-grocery-native-01", + "brand": { "domain": "freshmart.example.com" }, + "price": { "amount": 6.50, "currency": "USD", "model": "cpm" }, + "summary": "Pasta night ingredients — 20% off with in-app coupon", + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "title": { "asset_type": "text", "content": "Everything for pasta night" }, + "body_text": { "asset_type": "text", "content": "Fresh basil, San Marzano tomatoes, and artisan pasta. 20% off your next order." }, + "main_image": { "asset_type": "image", "url": "https://cdn.freshmart.example/campaigns/pasta-night-card.jpg", "width": 1200, "height": 628 }, + "cta": { "asset_type": "text", "content": "Shop Now" } + } + }, + "creative_data": { + "campaign_ref": "fm-pasta-2026q2", + "promo_code": "PASTA20" + } + }, + { + "package_id": "pkg-kitchenware-native-02", + "brand": { "domain": "ironpan.example.com", "brand_id": "ironpan" }, + "summary": "Cast iron skillet — pairs with pasta recipes", + "creative_manifest": { + "format_kind": "native_in_feed", + "assets": { + "title": { "asset_type": "text", "content": "The only pan you need" }, + "body_text": { "asset_type": "text", "content": "Pre-seasoned 12-inch cast iron. Free shipping this week." }, + "main_image": { "asset_type": "image", "url": "https://cdn.ironpan.example/campaigns/skillet-card.jpg", "width": 1200, "height": 628 }, + "cta": { "asset_type": "text", "content": "Learn More" } + } + } + } + ] +} +``` + +When the product's `trusted_match` config declares creative as the response type, the buyer returns full creative details inline. The app has everything it needs to render the native card without a separate creative fetch. The meal kit package (`pkg-meal-native-03`) did not match and is absent from the response. + +## Identity Match + +The TMP SDK sends an Identity Match request with a publisher-scoped device token and the publisher's `seller_agent_url`. This request is structurally separate from Context Match — it carries no content signals and is sent with temporal decorrelation: a random delay of 100-2000ms, plus randomized order (each opportunity has roughly equal probability of Context Match or Identity Match being sent first). + +The buyer resolves its active package set from `seller_agent_url`. When the SDK sends `package_ids` explicitly (as below), composition MUST be independent of the current placement — either all-active (every active package for the buyer at this publisher) or fuzzed (a random sample padded with synthetic non-existent IDs the buyer silently drops). The placement-specific subset is forbidden — it would let the buyer correlate Identity Match with Context Match by comparing package sets. + +#### Request + +```json +{ + "type": "identity_match_request", + "request_id": "id-mob-e4d782", + "seller_agent_url": "https://mobile-publisher.example", + "identities": [ + { "user_token": "tok_idfv_a9c3e7", "uid_type": "publisher_first_party" }, + { "user_token": "A1B2C3D4-E5F6-7890-1234-567890ABCDEF", "uid_type": "maid" } + ], + "consent": { + "gpp": "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA" + }, + "package_ids": [ + "pkg-sports-inter-01", + "pkg-nutrition-inter-02", + "pkg-telecom-inter-03", + "pkg-auto-inter-04", + "pkg-sports-banner-05", + "pkg-nutrition-banner-06", + "pkg-sports-rewarded-07" + ] +} +``` + +Seven package IDs — the example uses all-active mode (every active package for this buyer across every placement and format, not just the two that were activated by Context Match). A fuzzed list of similar size, padded with synthetic non-existent IDs the buyer silently drops, would satisfy the same privacy invariant. + +#### Response + +```json +{ + "type": "identity_match_response", + "request_id": "id-mob-e4d782", + "eligible_package_ids": [ + "pkg-sports-inter-01", + "pkg-nutrition-inter-02", + "pkg-auto-inter-04", + "pkg-sports-banner-05", + "pkg-sports-rewarded-07" + ], + "serve_window_sec": 60 +} +``` + +Only eligible packages are listed. The buyer computes eligibility from frequency caps, audience membership, purchase history, and any other identity-based signals. The reasons are opaque to the publisher. The publisher does not learn why `pkg-telecom-inter-03` is ineligible — just that it is absent from the list. + +The `serve_window_sec` tells the router how long to cache this response. During the TTL window, the router uses cached eligibility to fill interstitials, banners, and rewarded ads without re-querying the buyer. + +## Joining and Activation + +The TMP SDK joins Context Match and Identity Match results locally. Only packages that appear in both responses — activated by context and eligible by identity — proceed to the mediator. + +### Interstitial Activation + +From the interstitial example above: + +| Package | Context Match | Identity Match | Result | +|---|---|---|---| +| `pkg-sports-inter-01` | Activated | Eligible | Passed to mediator | +| `pkg-nutrition-inter-02` | Activated | Eligible | Passed to mediator | +| `pkg-telecom-inter-03` | Not activated | Ineligible | Skipped | +| `pkg-auto-inter-04` | Not activated | Eligible | Skipped (no context match) | + +Two packages pass: `pkg-sports-inter-01` and `pkg-nutrition-inter-02`. The TMP SDK registers them as custom demand sources in the mediation layer with their pre-negotiated CPMs. + +``` +Mediation auction: + Network A bid: $6.50 CPM + Network B bid: $5.20 CPM + pkg-sports-inter-01: $8.00 CPM (pre-negotiated) + pkg-nutrition-inter-02: $7.00 CPM (pre-negotiated) + +Winner: pkg-sports-inter-01 at $8.00 CPM + -> Mediator serves the sports gear interstitial +``` + +If no AdCP package wins, the mediator serves a network ad as usual. TMP ensures AdCP packages were considered — it does not override the mediator's selection logic. + +### Native Feed Activation + +For native ads where the product's `trusted_match` config declares creative as the response type, the app renders directly from the creative manifest returned in the Context Match response. The mediator is not involved. The app intersects the context match offers with `eligible_package_ids` from the identity match, picks the best eligible offer using its own ranking logic, and renders the native card using the `creative_manifest` assets. + +## Rewarded Video + +Rewarded video follows the same activation pattern as interstitials. The placement identifies the reward slot: + +```json +{ + "type": "context_match_request", + "request_id": "ctx-mob-c8f201", + "property_rid": "01916f3a-d6a9-7000-8000-000000000032", + "property_id": "puzzlequest-ios", + "property_type": "mobile_app", + "placement_id": "rewarded_video", + "seller_agent_url": "https://puzzlequest.example", + "artifact_refs": [ + { "type": "custom", "value": "screen:level-complete-42" } + ] +} +``` + +The mediator handles rewarded video completion callbacks and reward granting. TMP activates packages; the mediator manages the reward lifecycle. + +## Privacy Considerations + +Mobile TMP follows the same structural separation as all surfaces: + +- **Context Match** carries content signals and placement data. No device identifiers, no user tokens, no IDFA/IDFV in the request. +- **Identity Match** carries only a publisher-scoped device token and the full list of buyer package IDs. No content signals, no screen names, no topic IDs. +- **Temporal decorrelation** between the two requests prevents timing- and order-based correlation. The TMP SDK introduces a random delay (100-2000ms) AND randomizes which request is sent first — each opportunity has roughly equal probability of Context Match or Identity Match going first. +- **Package set decorrelation**: Context Match sends no package list — the provider evaluates the same synced package set for every user on a placement. Identity Match sends all packages for the buyer. Neither path reveals which packages are relevant to the current opportunity. + +The publisher performs the intersection locally after both responses arrive. The buyer never sees the joined result. diff --git a/dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media.mdx b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media.mdx new file mode 100644 index 0000000000..bb0883f5fb --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media.mdx @@ -0,0 +1,125 @@ +--- +title: TMP for Retail Media +description: How TMP activates sponsored product packages with GTIN-level catalog refinement. +"og:title": "AdCP TMP for Retail Media" +--- + +# TMP for Retail Media + +Retailers manage sponsored product placements across search results, category pages, and carousels. TMP's catalog refinement capabilities make it a natural fit — buyers can specify which products to feature, which promotions to highlight, and which items to suppress, all within the bounds of pre-negotiated packages. + +## How It Works Today + +Retail media networks use internal recommendation engines to decide which sponsored products appear. Buyers set campaign-level targeting (keywords, categories, budgets) but have limited real-time control over which specific products appear in which contexts. Each retailer has its own API and optimization logic. + +## Context Match + +When a shopper views a search results page or category page, the retailer sends a Context Match request: + +```json +{ + "type": "context_match_request", + "request_id": "ctx-retail-8f3a", + "property_rid": "01916f3a-e7ba-7000-8000-000000000040", + "property_id": "grocery-retailer-web", + "property_type": "website", + "placement_id": "search-results-sponsored", + "seller_agent_url": "https://grocery-retailer.example", + "artifact_refs": [ + { "type": "custom", "value": "search:beverages-coffee" } + ] +} +``` + +The buyer responds with an offer: + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-retail-8f3a", + "offers": [ + { + "package_id": "pkg-coffee-sponsored", + "brand": { "domain": "coldbrew.example.com", "brand_id": "coldbrew" }, + "price": { "amount": 2.50, "currency": "USD", "model": "cpc" }, + "summary": "Cold brew and iced latte — buy 2 get 1 free promotion", + "creative_manifest": { + "format_kind": "sponsored_placement", + "assets": { + "source_catalog": { + "asset_type": "catalog", + "catalog_id": "coldbrew-products" + }, + "promo_banner": { + "asset_type": "image", + "url": "https://cdn.example.com/banners/b2g1.png", + "width": 728, + "height": 90 + } + } + } + } + ] +} +``` + +The buyer's offer summary helps the retailer judge relevance. The creative manifest is included inline with the offer, specifying which catalog items to feature, promotion badges, and rendering assets. For large creatives, the manifest references external assets via URLs rather than embedding them directly. + +## Identity Match + +The retailer sends an Identity Match request with the shopper's loyalty token and the retailer's `seller_agent_url`. The buyer resolves its active package set from `seller_agent_url`; when the retailer sends `package_ids` explicitly (as below), composition MUST be independent of the current page — either all-active (every active package for this buyer at the retailer) or fuzzed (a random sample padded with synthetic non-existent IDs the buyer silently drops). The page-specific subset is forbidden — it would let the buyer correlate this request with the context match by comparing package sets: + +```json +{ + "type": "identity_match_request", + "request_id": "id-retail-c7b2", + "seller_agent_url": "https://retailer.example", + "identities": [ + { "user_token": "tok_loyalty_m3p7", "uid_type": "publisher_first_party" }, + { "user_token": "a1b2c3d4e5f67890abcdef...", "uid_type": "hashed_email" } + ], + "package_ids": ["pkg-coffee-sponsored", "pkg-snacks-display", "pkg-dairy-promo", "pkg-bakery-seasonal", "pkg-frozen-meals", "pkg-household-q1"] +} +``` + +The buyer responds with the IDs of eligible packages and a TTL: + +```json +{ + "type": "identity_match_response", + "request_id": "id-retail-c7b2", + "eligible_package_ids": [ + "pkg-coffee-sponsored", + "pkg-snacks-display", + "pkg-bakery-seasonal", + "pkg-frozen-meals" + ], + "serve_window_sec": 60 +} +``` + +The publisher does not need to know why a user is or isn't eligible — just whether they are. Catalog items to display come from the creative manifest in the Context Match offer, not from the Identity Match response. + +## Activation + +The retailer joins both responses: + +- Accept the coffee sponsored offer +- Use the inline creative manifest from the offer for catalog items, promotion badges, and rendering assets +- Check Identity Match: is the package in `eligible_package_ids`? +- The retailer's own recommendation engine integrates the sponsored results alongside organic results + +## Example Flow + +``` +Shopper searches "cold brew" + → Retailer sends Context Match: coffee sponsored package available + → Buyer: offer with creative manifest (cold brew + iced latte items, promo banner, badges) + + → (fuzzed) Retailer sends Identity Match: loyalty token + all active package IDs + → Buyer: eligible_package_ids includes pkg-coffee-sponsored, serve_window_sec: 60 + + → Retailer joins: accept offer, render items from creative manifest + → Render sponsored carousel in search results +``` diff --git a/dist/docs/3.2.0-beta.4/trusted-match/surfaces/web.mdx b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/web.mdx new file mode 100644 index 0000000000..e0025d1b45 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/trusted-match/surfaces/web.mdx @@ -0,0 +1,296 @@ +--- +title: TMP for Web Publishers +description: How TMP activates pre-negotiated packages on web pages using Prebid and GAM. +"og:title": "AdCP TMP for Web Publishers" +--- + +# TMP for Web Publishers + +Web publishers typically run an ad server (GAM, Kevel, FreeWheel) that manages line items, targeting rules, and ad selection. TMP integrates with this infrastructure through a Prebid module — it tells the ad server which deals to activate, it does not replace the ad server. + +## How It Works Today + +A publisher running Prebid with AdCP deals has packages defined through `create_media_buy`. To activate them, the publisher manually creates corresponding line items or PMP deals in their ad server. A vendor-specific RTD module injects targeting signals by sending the full OpenRTB BidRequest to the vendor's API. This works but requires per-vendor integration and sends unnecessary data. + +TMP replaces vendor-specific RTD modules with a single Prebid module that speaks a standard protocol. Buyer agents evaluate context and identity separately, and the publisher joins the results locally before passing instructions to GAM. + +## Context Match + +When a page loads, the TMP Prebid module sends a Context Match request to the router. The request includes the page context. No package list is sent — the provider uses its synced package set for this placement. + +### Context Match Request + +```json +{ + "type": "context_match_request", + "request_id": "ctx-7f2a-oakwood-91b3", + "property_rid": "01916f3a-9c4e-7000-8000-000000000010", + "property_id": "oakwood-publishing-main", + "property_type": "website", + "placement_id": "article-sidebar-300x250", + "seller_agent_url": "https://oakwood.example", + "artifact_refs": [ + { "type": "url", "value": "https://oakwood.example.com/sustainable-kitchen-2026-03" } + ] +} +``` + +Key points: + +- No package list is sent per request. The provider evaluates all eligible packages for this placement using its synced package set from media buy setup. The same packages are evaluated for every user, preventing identity leakage into the context path and enabling response caching. +- `artifact_refs` references content by type and value. The buyer agent resolves artifact metadata from its cache — no inline signals needed on the request. + +### Context Match Response + +The router fans out to each buyer agent and merges the responses. Each buyer returns offers for packages whose targeting matched the content context, plus response-level signals that flow through to GAM as key-values. + +```json +{ + "status": "completed", + "type": "context_match_response", + "request_id": "ctx-7f2a-oakwood-91b3", + "offers": [ + { "package_id": "pkg-display-0041" }, + { "package_id": "pkg-native-0078" } + ], + "signals": { + "segments": ["sustainability", "home_cooking"] + }, + "signals_by_provider": { + "outdoor_media": { + "targeting_kvs": [ + { "key": "segment", "value": "sustainability" }, + { "key": "segment", "value": "home_cooking" }, + { "key": "package", "value": "pkg-display-0041" }, + { "key": "package", "value": "pkg-native-0078" } + ] + } + } +} +``` + +Key points: + +- `offers` contains one entry per activated package. The provider's synced set for this placement included three packages — these two matched the kitchen/sustainability context, the third (`pkg-display-0103`) did not and is absent. +- For web/GAM activation, offers are simple — just `package_id`. Richer fields (`brand`, `price`, `summary`, `creative_manifest`, `creative_data`) are available for integrations that need them but are not required. +- `signals_by_provider` preserves which provider emitted each targeting pair. The Prebid module resolves each `(provider_id, key)` through the publisher's [`targeting_kv_mapping`](/dist/docs/3.2.0-beta.4/trusted-match/specification#publisher-targeting-kv-mapping) before setting the resulting GAM key. Unmapped tuples are dropped. + +## Identity Match + +Separately, the TMP Prebid module sends an Identity Match request with the user's identity tokens and the publisher's `seller_agent_url`. This request carries no page context. The buyer resolves its active package set from `seller_agent_url`; when the module sends `package_ids` explicitly (as below), composition MUST be independent of the current page — either all-active (every active package for that buyer at this publisher) or fuzzed (a random sample padded with synthetic non-existent IDs the buyer will silently drop). The page-specific subset is forbidden. + +### Identity Match Request + +```json +{ + "type": "identity_match_request", + "request_id": "id-3k9p-oakwood-d4f1", + "seller_agent_url": "https://oakwood.example", + "identities": [ + { "user_token": "tok_uid2_8f2a3b7c", "uid_type": "uid2" }, + { "user_token": "XY1a2b3c4d5e6f7g8h9i0jKlMnOpQrSt", "uid_type": "rampid" }, + { "user_token": "ID5*aB3xY9kL...", "uid_type": "id5" } + ], + "package_ids": [ + "pkg-display-0041", + "pkg-display-0042", + "pkg-display-0043", + "pkg-native-0078", + "pkg-native-0079", + "pkg-display-0103", + "pkg-display-0104", + "pkg-video-0201" + ] +} +``` + +Key points: + +- `request_id` is unrelated to the context match `request_id`. The two must not be derivable from each other. +- `package_ids` example shows all-active mode: every active package for the buyer across the entire site, not just the three that were on this placement's context match. The page-specific subset is forbidden — it would let the buyer correlate identity with context by comparing package sets. Fuzzed mode (a random sample padded with synthetic IDs the buyer silently drops) is also acceptable. +- `identities` carries every token the publisher has available (UID2, ID5, LiveRamp, hashed email, publisher first-party). Each token is opaque — the buyer cannot reverse it to PII. Sending the full set maximizes match rate because different buyers resolve on different graphs. + +### Identity Match Response + +The buyer evaluates the user against all requested packages and returns the IDs of eligible packages, plus a TTL defining how long the router can cache this response. + +```json +{ + "type": "identity_match_response", + "request_id": "id-3k9p-oakwood-d4f1", + "eligible_package_ids": [ + "pkg-display-0041", + "pkg-display-0042", + "pkg-native-0078", + "pkg-native-0079", + "pkg-display-0104" + ], + "serve_window_sec": 60 +} +``` + +Key points: + +- Only eligible packages are listed. Packages absent from the list (e.g., `pkg-display-0043`, `pkg-display-0103`, `pkg-video-0201`) are ineligible. The buyer computes eligibility from frequency caps, audience membership, purchase history, and any other identity-based signals. The reasons are opaque to the publisher. +- `serve_window_sec` tells the router how long to cache this response. During that window, the router returns cached eligibility without re-querying the buyer. The publisher uses cached eligibility to allocate across all placements on the page. +- There is no `frequency_capped`, `audience_match`, or `recency` field. The buyer's internal reasons stay with the buyer. + +## Activation: Joining Context and Identity + +The publisher joins context match and identity match locally. This is where the two halves come together — the router never sees both at the same time. + +### Step 1: Intersect + +Take the offers from context match and filter by identity match eligibility. + +| Package | Context Match | Identity Match | Result | +|---|---|---|---| +| `pkg-display-0041` | Offered | Eligible | Activate | +| `pkg-native-0078` | Offered | Eligible | Activate | +| `pkg-display-0103` | Not offered | Not eligible | Skip | + +Only two packages survive: `pkg-display-0041` and `pkg-native-0078`. + +### Step 2: Set GAM Targeting + +The Prebid module resolves the context match `signals_by_provider` tuples through the publisher's [`targeting_kv_mapping`](/dist/docs/3.2.0-beta.4/trusted-match/specification#publisher-targeting-kv-mapping): + +```yaml +targeting_kv_mapping: + outdoor_media: + segment: adcp_seg + package: adcp_pkg +``` + +That configuration produces: + +``` +adcp_seg = sustainability, home_cooking +adcp_pkg = pkg-display-0041, pkg-native-0078 +``` + +GAM line items are pre-configured to target on `adcp_pkg` values. When the ad request arrives with `adcp_pkg=pkg-display-0041`, GAM matches it to the corresponding line item and serves the creative. + +### Step 3: GAM Selects + +GAM applies its own priority rules, competitive exclusions, and pacing logic across all eligible line items — including both TMP-activated deals and other demand sources. TMP does not override GAM's ad selection; it provides the inputs. + +## GAM Line Item Configuration + +For each active package, the publisher creates a GAM line item targeting `adcp_pkg = <package_id>`. This is the link between TMP activation and GAM ad selection. + +- **Line item type.** Sponsorship or Standard, depending on deal terms from `create_media_buy`. Guaranteed deals use Sponsorship; non-guaranteed deals use Standard. +- **Priority.** Set based on deal type. Guaranteed deals at priority 4-8, non-guaranteed at priority 12-16. This determines how TMP demand competes with other line items in GAM's selection logic. +- **Creative assignment.** Reference pre-synced creatives from `sync_creatives`, or use the creative manifest from the Context Match response if the buyer provides one. +- **Lifecycle.** When a media buy ends or is cancelled, deactivate the corresponding line item. The router stops including the package in Identity Match within 1 hour. +- **Automation.** Publishers can automate line item creation by listening for new `create_media_buy` completions and mapping package details to GAM API calls. The package ID, deal type, priority, and creative references are all available from the media buy response. + +## Prebid Integration + +The first TMP integration can be delivered as a Real-Time Data (RTD) submodule +that follows Prebid's established RTD interface. This is the **present-day +compatibility profile**: it provides a practical route to a pilot and can +replace vendor-specific RTD modules without waiting for a new Prebid.js module +boundary. + +The [TMP Prebid proposal](/specs/prebid-tmp-proposal) defines the **target +architecture**: a dedicated optional TMP module that is a peer to RTD, rather +than an RTD submodule. Moving from the bridge to that peer changes Prebid.js +registration and configuration ownership, but not the TMP wire protocol, +split-request privacy model, router, or local join described below. Publishers +should follow the configuration for the implementation included in their +Prebid.js build. + +Both profiles handle the full flow: + +1. **On auction init**: Send Context Match request to the TMP router for each placement on the page. +2. **On context match response**: Store offers and targeting signals. +3. **After temporal decorrelation**: Send Identity Match request with the user's identity tokens and ALL active package IDs for each buyer. Decorrelation has two parts — a random 100-2000ms delay AND randomized order: each auction has roughly equal probability of the Identity Match request being sent first or the Context Match request being sent first. +4. **On identity match response**: Join with context match results. Set targeting key-values on the ad unit. +5. **On bid request**: GAM receives the enriched ad request with TMP targeting keys and selects line items as normal. + +The temporal decorrelation between context and identity requests is a privacy measure. Random delay alone is insufficient — fixed ordering (Identity always after Context) leaks the pairing through ordering. The module randomizes both the delay and which request is sent first. + +### Impression ID Substitution + +In the web/Prebid surface the **Prebid TMP module is the decision layer** in the three-layer [`{IMPRESSION_ID}` minting hierarchy](/dist/docs/3.2.0-beta.4/creative/universal-macros#impression-identification) — publisher first, decision layer second, buyer-at-TMPX-decode last. The module checks whether the publisher has already supplied an impression_id (via `adUnit.tmp.impressionId` or an equivalent first-party hook); if so, it passes that value through. If not, the module mints its own. Either way, it exposes the value on the GAM ad request as the targeting key `tmp_impression_id`. This is the value the buyer's impression pixel uses as the cross-identity dedup key — essential for context-only impressions where `{TMPX}` is absent, and useful even when `{TMPX}` is present so the buyer's dedup path stays uniform. + +**Format is implementation choice.** The Prebid module MAY use ULID, UUID (any version), or any collision-resistant identifier scheme — the protocol does not pin a format. + +**Optional optimization.** When Prebid's `enableTIDs` config is `true`, the module MAY reuse `adUnit.transactionId` as the impression_id rather than minting a separate one. Since `enableTIDs` is opt-out in Prebid.js 8+ (for privacy reasons), most deployments need to mint their own. + +```javascript +import { ulid } from 'ulid'; + +// In the TMP Prebid module, at auctionInit. +// Resolve the impression_id in priority order: +// 1. publisher pre-mint (e.g., server-side, attached as adUnit.tmp.impressionId) +// 2. Prebid transactionId (decision-layer reuse) when enableTIDs is on +// 3. fresh decision-layer mint (ULID, UUID, or any collision-resistant scheme) +function resolveImpressionId(adUnit) { + if (adUnit.tmp?.impressionId) { + return adUnit.tmp.impressionId; // publisher-side mint — highest priority + } + if (pbjs.getConfig('enableTIDs') && adUnit.transactionId) { + return adUnit.transactionId; // reuse Prebid's tid when available + } + return ulid(); // decision-layer fresh mint +} +const impId = resolveImpressionId(adUnit); +pbjs.setTargeting(adUnit.code, { tmp_impression_id: impId }); +``` + +The buyer's creative tracking URL, trafficked through GAM, references the targeting key via the standard GAM macro: + +``` +https://buyer.example/imp + ?imp_id=%%PATTERN:tmp_impression_id%% + &tmpx=%%PATTERN:tmp_tmpx%% + &cb=%%CACHEBUSTER%% +``` + +At render, GAM substitutes the KVs and the buyer's impression tracker receives the impression_id as an opaque string. The KV name `tmp_impression_id` deliberately avoids the `hb_*` prefix (Prebid's own namespace) and mirrors the `adcp_*` convention used elsewhere on this page for TMP-emitted targeting. + +## Sequence Diagram + +``` +Page Load + | + |-- Prebid TMP Module ---> TMP Router (Context) + | |-- fan out --> Buyer Agent A + | |-- fan out --> Buyer Agent B + | |<- merge <--- offers + signals + |<--- Context Match Response -- + | + | (100-2000ms random delay; Context/Identity order randomized + | per auction — diagram shows Context-first; Identity-first + | runs the two phases in reverse) + | + |-- Prebid TMP Module ---> TMP Router (Identity) + | |-- fan out --> Buyer Agent A + | |-- fan out --> Buyer Agent B + | |<- merge <--- eligibility + |<--- Identity Match Response -- + | + |-- Join locally: intersect offers with eligibility + |-- Set targeting KVs on GAM ad request + |-- GAM selects and serves ad +``` + +## Coexistence with OpenRTB + +Most publishers run TMP alongside Prebid header bidding, which sources demand via OpenRTB. The two systems are complementary. + +- **TMP as additional demand.** TMP packages appear as line items in GAM, competing with Prebid line items on priority and price. GAM handles the yield decision — TMP does not replace Prebid, it adds pre-negotiated demand. +- **Competitive exclusion.** Configure GAM competitive exclusion rules to prevent conflicting brands from appearing together across TMP and Prebid demand sources. +- **Revenue attribution.** TMP-activated impressions are tracked via `get_media_buy_delivery`, while Prebid impressions flow through existing SSP reporting. Publishers reconcile in their BI layer. +- **Timeout independence.** TMP and Prebid requests run in parallel. TMP timeout (50ms) is typically faster than Prebid timeout (1000-1500ms), so TMP results are ready before GAM needs them. + +## Privacy Constraints for Web + +These constraints apply to all surfaces but are worth restating for the web case: + +- **Context match carries no user data.** No cookies, no user tokens, no IP addresses. The provider evaluates the same synced package set for every user on a placement. +- **Identity match carries no page data.** No URLs, no content signals, no placement IDs. The `package_ids` list, when sent, has composition independent of the current page (all-active or fuzzed) — never the page-specific subset. +- **The publisher joins locally.** The router never sees both context and identity for the same impression. Only the publisher, who already has both the page context and the user identity, performs the intersection. +- **Temporal decorrelation.** A random delay between the two requests AND a randomized order (Context Match or Identity Match equally likely to be sent first) prevent timing- and order-based correlation at the network level. Random delay alone is insufficient because a fixed order leaks the pairing through ordering. diff --git a/dist/docs/3.2.0-beta.4/verification/overview.mdx b/dist/docs/3.2.0-beta.4/verification/overview.mdx new file mode 100644 index 0000000000..8fc2081794 --- /dev/null +++ b/dist/docs/3.2.0-beta.4/verification/overview.mdx @@ -0,0 +1,261 @@ +--- +title: Seller verification +sidebarTitle: Seller verification +"og:image": /images/walkthrough/verification-01-unfamiliar-counter.png +description: "How a buyer verifies an unfamiliar seller end-to-end — brand.json, adagents.json, and request signing as one chain, with bounded honesty about what the chain does not prove." +"og:title": "AdCP — Seller verification" +--- + +<img src="/images/walkthrough/verification-01-unfamiliar-counter.png" alt="Sam stands at a wide marble counter facing a confident agent in a sharp blazer holding a clipboard of glossy ad placements — but the counter behind the agent is empty, with no logo, no signage, and no one else in sight" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +A `get_products` response just hit Sam's orchestrator. The seller — Northwind Media — quoted CTV inventory across StreamHaus, a sports network Acme Outdoor wants to be on. The CPMs look fair, the avails fit the flight, and the response arrived in under a second. + +Sam has never transacted with Northwind. He has no idea whether the agent that signed this response is actually authorized to sell StreamHaus inventory, whether StreamHaus is a real publisher under a parent house he recognizes, or whether a clever attacker registered `northw1nd.example` last week and is about to walk away with \$25,000. + +He doesn't need Northwind to convince him with a sales deck. He needs the protocol to make the chain verifiable in code — every link from the signing key on the response, through Northwind's brand identity, to StreamHaus's authorization, back to a parent house he can recognize. His buyer agent walks the chain automatically; Sam reads the verdict. + +This walkthrough follows that chain through Sam's eyes. + +<Note> +**What this verifies and what it doesn't.** The chain answers *who is authorized to sell*. It does not answer *who the legal entity behind the agent is* (KYC, real operator), *whether the avails reflect reality at delivery time* (catalog accuracy, CPM, delivery), or *whether the hosting infrastructure can be trusted* (DNS, CDN, registrar). The [bounded-honesty step](#step-5-know-what-the-chain-does-not-prove) names every limit explicitly. This is the C2PA "claim-not-certification" posture applied to inventory — the protocol carries the authorization claim and makes it verifiable, and stops there. +</Note> + +## The chain at a glance + +Three discoverable surfaces and one cryptographic check. Sam's agent runs them in whatever order is convenient: + +| Surface | Source | Question it answers | +|---|---|---| +| RFC 9421 signature | Response headers | "Did this response come from the key it claims?" | +| `brand.json` | `northwind.example/.well-known/brand.json` | "Who is Northwind, and what is it claiming to represent?" | +| `adagents.json` | `streamhaus.example/.well-known/adagents.json` | "Does the publisher authorize Northwind to sell its inventory?" | +| Mutual assertion | Both `brand.json` files cross-referencing | "Do the two sides of the relationship agree?" | + +The chain is bilateral by design: each fact is asserted by exactly the party with authority over it. The publisher decides who can sell its inventory. The brand owner decides what it owns. The seller decides which key signs its responses. No third-party registry adjudicates between them — a misbehaving authorized seller is remediated by the publisher revoking the `adagents.json` entry, not by an in-protocol claim check. + +Only one of the four steps below is cryptographically grounded (the signature). The other three are integrity-checked discoveries — string-equality matches against authoritative files at well-known locations. The chain is only as strong as the publisher's and seller's control of their own DNS, hosting, and well-known endpoints. See [Step 5](#step-5-know-what-the-chain-does-not-prove) for what that implies. + +## Step 1: Verify the response signature + +<img src="/images/walkthrough/verification-02-signature.png" alt="Sam holds a paper response up to a lamp — a wax seal in the corner glows under the light, revealing a cryptographic pattern that matches a key card he pulls from a folder labeled adagents.json" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +The `get_products` response carries an RFC 9421 `Signature` and `Signature-Input` header. The `keyid` parameter points at a JWK in Northwind's published JWKS. Sam's client verifies the signature before parsing the body: + +```javascript +const response = await fetch("https://northwind.example/mcp", { /* get_products call */ }); + +const verified = await verifyMessageSignature(response, { + fetchJwks: (keyid) => fetchJwksForAgent("northwind.example", keyid), + requiredFields: ["@method", "@target-uri", "content-digest", "@authority"], + requireCreated: true, // RFC 9421 `created` parameter MUST be present + maxAge: 300, // seconds — receiver MUST enforce a window +}); + +if (!verified) throw new Error("signature failed — discard response"); +``` + +A pass tells Sam one narrow thing: the entity holding the private key paired with `keyid` produced this response, and the response has not been tampered with in transit. It does not yet tell him that `keyid` belongs to the legitimate Northwind. That binding comes from `adagents.json` in step 3. + +<Accordion title="Why signature verification comes first"> + +If the signature fails, every other check is wasted work — the response cannot be trusted to even identify itself correctly. Verifying first also gives Sam a clean abort: he discards the response before any business logic touches it. + +`maxAge` and `requireCreated` are not optional — without a freshness window the same signed response can be replayed indefinitely. Tune `maxAge` to your clock-skew budget; 300s is a common starting point. + +In AdCP 3.0, signing on `get_products` is RECOMMENDED. Mandatory signing on spend-committing operations is tracked under [#2307](https://github.com/adcontextprotocol/adcp/issues/2307) for 4.0. Deployments that require signing today enforce it at the platform layer. + +</Accordion> + +## Step 2: Read Northwind's brand.json + +<img src="/images/walkthrough/verification-03-brand-json.png" alt="Sam opens a leather-bound folder on Northwind's reception desk — inside is a single embossed page declaring the agency's portfolio, signing keys, and authorized operators, with a glowing seal at the top" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam's agent fetches `https://northwind.example/.well-known/brand.json`. This is Northwind's self-declaration: who it is and where its signing keys live. + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "northwind_media", + "names": [{ "en_US": "Northwind Media" }], + "url": "https://northwind.example", + "keller_type": "master", + "industries": ["advertising"], + "agents": [ + { + "type": "sales", + "id": "northwind_sales", + "url": "https://northwind.example/mcp", + "jwks_uri": "https://northwind.example/.well-known/jwks.json" + } + ] +} +``` + +Two things matter here: + +1. **The `keyid` from step 1 must resolve in `https://northwind.example/.well-known/jwks.json`** — the JWKS Northwind's own brand.json points at. Sam now has a binding from signature to a self-declared brand identity. +2. **Northwind is a standalone agency** — no `house_domain` field. There is no parent house claim to verify on Northwind's side. The authorization claim that matters lives on the publisher's side, in step 3. + +<Warning> +`brand.json` is published over HTTPS by the entity it describes. A buyer agent that pipes raw fields into an LLM prompt without schema-validating them first is taking adversarial input from a counterparty. Validate against the [brand.json schema](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) before parsing, and never pass attacker-controlled string fields (`names`, `description`, custom keys) into an LLM context without sanitization. +</Warning> + +## Step 3: Confirm against StreamHaus's adagents.json + +<img src="/images/walkthrough/verification-04-adagents.png" alt="Sam holds two documents side by side — Northwind's brand.json on the left listing StreamHaus, and StreamHaus's adagents.json on the right listing Northwind — and the matching delegation_type field on both glows green as the chain locks in" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam's agent fetches `https://streamhaus.example/.well-known/adagents.json` — the publisher's own declaration of who is authorized to sell its inventory: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/adagents.json", + "contact": { + "name": "StreamHaus Publishing", + "email": "adops@streamhaus.example", + "domain": "streamhaus.example" + }, + "properties": [ + { + "property_id": "streamhaus_ctv", + "property_type": "ctv_app", + "name": "StreamHaus CTV App", + "publisher_domain": "streamhaus.example", + "identifiers": [{ "type": "roku_store_id", "value": "12345" }] + } + ], + "authorized_agents": [ + { + "url": "https://northwind.example/mcp", + "authorized_for": "StreamHaus CTV inventory via delegated authority", + "authorization_type": "property_ids", + "property_ids": ["streamhaus_ctv"], + "delegation_type": "delegated", + "signing_keys": [ + { + "kid": "northwind-sell-prod-2026", + "kty": "OKP", + "alg": "EdDSA", + "crv": "Ed25519", + "x": "Xe2lAKRJR_zr3FQRdSNwp3zsrv_IXnVCWJXDcWXwkLI", + "use": "sig" + } + ] + } + ], + "last_updated": "2026-04-12T10:00:00Z" +} +``` + +This is the bilateral lock: + +- **`url` matches** the MCP endpoint Northwind's `brand.json` named in `agents[].url`. Same agent on both sides. +- **`delegation_type: "delegated"`** declares the commercial relationship — Northwind is authorized to sell on StreamHaus's behalf. The enum is `direct | delegated | ad_network`; the publisher chooses which fits. +- **`signing_keys[]`** contains the JWK whose `kid` matches the one used in step 1's signature. This is the link Sam was missing: StreamHaus, the publisher, attests in its own file that this specific public key may sign on its behalf. + +Now Sam has the answer to "who is authorized to sell": **the entity that signed this response is named in the publisher's own authorization file, with a matching commercial relationship and an explicit signing-key authorization**. The chain is closed. + +<Accordion title="The five-state trust signal"> + +The brand-protocol [mutual-assertion model](https://github.com/adcontextprotocol/adcp/issues/3533) produces a discrete signal Sam's downstream logic can act on: + +| State | Meaning | Buyer action | +|---|---|---| +| `inline` | The seller is the brand owner — no delegation involved | Proceed; nothing to delegate | +| `mutual_assertion` | Both sides published matching declarations | Proceed | +| `one_sided_brand` | The seller's brand.json claims a publisher; the publisher hasn't reciprocated | **Do not treat as authorization.** Any domain can claim any publisher unilaterally. | +| `one_sided_house` | The publisher's adagents.json names the seller; the seller's brand.json doesn't acknowledge | Hold for human review | +| `standalone` | Neither side publishes — bearer-token trust only | Out-of-band authorization or refuse | + +Sam's chain resolves to `mutual_assertion` — the strongest state short of inline. Only `inline` and `mutual_assertion` close the chain. + +</Accordion> + +## Step 4: Walk the parent house + +<img src="/images/walkthrough/verification-05-parent-house.png" alt="Sam stands in front of a wall display showing a brand-portfolio hierarchy — a large parent-house emblem at top, with the publisher emblem below it connected by a glowing teal line, and other sibling sub-brand emblems branching off the parent" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Acme Outdoor's inclusion list resolves at the parent-house level — they trust Sportshaus Holdings' family of brands. StreamHaus is a sub-brand, so Sam's agent walks one hop further. + +StreamHaus's own brand.json declares its parent: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "id": "streamhaus", + "names": [{ "en_US": "StreamHaus" }], + "url": "https://streamhaus.example", + "house_domain": "sportshaus-holdings.example", + "keller_type": "endorsed", + "industries": ["media", "broadcasting"] +} +``` + +Then the parent's brand.json reciprocates: + +```json +{ + "$schema": "/schemas/3.2.0-beta.4/brand.json", + "version": "1.0", + "house": { + "domain": "sportshaus-holdings.example", + "name": "Sportshaus Holdings", + "architecture": "branded_house" + }, + "brand_refs": [ + { "domain": "streamhaus.example", "brand_id": "streamhaus", "effective_at": "2025-01-01T00:00:00Z" }, + { "domain": "courtsidehq.example", "brand_id": "courtsidehq" } + ] +} +``` + +The reciprocity rule: **StreamHaus's `house_domain` ↔ Sportshaus Holdings' `brand_refs[].domain`**. Both sides agree. + +Two distinct concepts ride along this step, and the doc is careful not to conflate them: + +- **The `keller_type` on the child** (`endorsed`) describes the brand-architecture relationship — how the sub-brand is positioned beside the parent. It is Keller-architecture metadata, not a commercial authorization. +- **The commercial relationship that lets Northwind sell** is `delegation_type: "delegated"` from step 3, which lives on the publisher (StreamHaus), not on the parent house. + +Sportshaus Holdings is on Acme Outdoor's inclusion list. The chain Sam's agent just walked is: signed response → Northwind's `brand.json` → StreamHaus's `adagents.json` → StreamHaus's and Sportshaus Holdings' mutual `brand.json` declarations. Four discoverable surfaces, one cryptographic anchor, zero phone calls for the authorization question. + +## Step 5: Know what the chain does not prove + +<img src="/images/walkthrough/verification-06-bounded-honesty.png" alt="Sam sits at his desk with the sealed document beside him, holding his phone to his ear — the technical chain is complete, and now he's calling a person at the publisher to confirm the human-layer details the protocol cannot attest" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +The authorization chain is closed. Northwind is for the first time a counterparty Acme Outdoor will actually transact with at meaningful spend, so Sam picks up the phone. Not for the protocol's sake — the chain told him what it can tell him. For everything the chain can't. + +| The chain proves | The chain does not prove | +|---|---| +| Northwind is authorized to sell StreamHaus inventory under a `delegated` relationship | A real human at Northwind operates this agent and answers for it | +| The signing key is named by both the seller and the publisher | The operator behind that key has been KYC'd by anyone Sam trusts | +| StreamHaus declares Sportshaus Holdings as its parent, and the parent reciprocates | The legal counterparty matches who Sam thinks he's transacting with | +| The response was not tampered with in transit | The avails in the response will be available on the flight start date, or the CPM quoted will hold | +| Northwind's domain controls the signing key today | The key cannot be rotated to an attacker tomorrow — first-encounter trust is TOFU until [key transparency](https://github.com/adcontextprotocol/adcp/issues/3925) lands in 4.0 | + +Three named gaps live on the right side of that table. + +**The human-layer gap.** AdCP does not carry an operator/human KYC primitive. The cryptographic chain says "this domain is authorized to sell, and this key signed this response" — it does not say "a verified human at a verified company is on the other side of this agent." KYC is the membership and account layer. For a new counterparty above Acme's threshold, Sam still escalates to a human check, exactly as he would for any meaningful new vendor. + +**The hosting-layer gap.** The chain trusts whoever controls `northwind.example`, its DNS, TLS, and CDN. A registrar takeover, a CDN compromise, or a mis-issued TLS certificate substitutes the entire chain — the attacker serves attacker-controlled `brand.json`, `adagents.json`, and JWKS over a valid-looking pipeline. There is no public key-transparency log in 3.x; first-encounter trust is trust-on-first-use, and revocation is detectable only by re-fetching. A buyer client that has previously transacted with Northwind pins the seen `kid`s and warns on rotation; a buyer client on first encounter does not have that signal. See [#3925](https://github.com/adcontextprotocol/adcp/issues/3925). + +**The delivery-time gap.** Catalog accuracy is not protocol-attested. Publishers do not sign individual product entries, and per-product attestation does not match how inventory operates in production — forecasts drift, prices move, supply is dynamic. A misbehaving authorized seller is remediated by the publisher revoking the `adagents.json` entry, not by an in-protocol claim check. Delivery-time truth lives in [measurement](https://github.com/adcontextprotocol/adcp/issues/2391) and billing reconciliation. + +This is the C2PA "claim-not-certification" posture. The protocol carries the authorization claim and makes it cryptographically verifiable. It does not — and at the protocol layer should not — replace the human-layer, hosting-layer, or delivery-layer checks a buyer would do for any meaningful new counterparty. + +## What Sam does next + +Sam's client logs the verification result with the `get_products` response — including the captured `brand.json`, `adagents.json`, and JWKS bytes at decision time, not just pointers to live files. Months from now, an auditor can re-verify the signature against those captured artifacts and reproduce Sam's decision exactly. Re-fetching the live `.well-known/` files is not sufficient — they are mutable, and a single key rotation or domain transfer would invalidate a naive replay. + +The verification result and the five-state trust signal travel with the candidate plan into Sam's [governance flow](/dist/docs/3.2.0-beta.4/governance/overview), where Jordan's governance agent applies Acme's policy checks before any spend is committed. + +## Where to go from here + +- [brand.json reference](/dist/docs/3.2.0-beta.4/brand-protocol/brand-json) — full schema for self-declarations, parent-house portfolios, and Keller architecture metadata +- [Seller setup](/dist/docs/3.2.0-beta.4/brand-protocol/seller-setup) — how publishers, networks, and SSPs publish seller identity and authorization files +- [adagents.json reference](/dist/docs/3.2.0-beta.4/governance/property/adagents) — publisher-side authorization, the `authorization_type` discriminator, and the `signing_keys[]` JWK shape +- [verify_brand_claim](/dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim) — Tier-2 implementer guide for delegating verification to a brand agent +- [Security model](/dist/docs/3.2.0-beta.4/building/concepts/security-model) — three-party governance and trust posture +- [Request signing](/dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing) — RFC 9421 details, key rotation, transparency-log roadmap +- [Trust & Security](/dist/docs/3.2.0-beta.4/trust) — CISO-facing surface map; this walkthrough is the buyer-facing companion +- [AAO Verified](/dist/docs/3.2.0-beta.4/building/verification/aao-verified) — continuous behavioral conformance attestation, layered on top of the identity chain above diff --git a/docs.json b/docs.json index a821066ed3..d306e792d9 100644 --- a/docs.json +++ b/docs.json @@ -751,66 +751,66 @@ { "group": "Getting Started", "pages": [ - "dist/docs/3.2.0-beta.3/intro", - "dist/docs/3.2.0-beta.3/quickstart" + "dist/docs/3.2.0-beta.4/intro", + "dist/docs/3.2.0-beta.4/quickstart" ] }, { "group": "Building with AdCP", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/index", - "dist/docs/3.2.0-beta.3/building/schemas-and-sdks", + "dist/docs/3.2.0-beta.4/building/index", + "dist/docs/3.2.0-beta.4/building/schemas-and-sdks", { "group": "Release notes & migration", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/reference/whats-new-in-v3", - "dist/docs/3.2.0-beta.3/reference/whats-new-in-3-1", - "dist/docs/3.2.0-beta.3/reference/whats-new-in-3-2", - "dist/docs/3.2.0-beta.3/reference/3-2-beta", - "dist/docs/3.2.0-beta.3/reference/migration/v3-readiness", - "dist/docs/3.2.0-beta.3/reference/migration/index", - "dist/docs/3.2.0-beta.3/reference/migration/3-0-to-3-1", - "dist/docs/3.2.0-beta.3/reference/migration/3-1-to-3-2", - "dist/docs/3.2.0-beta.3/reference/migration/prerelease-upgrades", - "dist/docs/3.2.0-beta.3/reference/migration/channels", - "dist/docs/3.2.0-beta.3/reference/migration/pricing", - "dist/docs/3.2.0-beta.3/reference/migration/geo-targeting", - "dist/docs/3.2.0-beta.3/reference/migration/creatives", - "dist/docs/3.2.0-beta.3/reference/migration/creative-transformers", - "dist/docs/3.2.0-beta.3/reference/migration/catalogs", - "dist/docs/3.2.0-beta.3/reference/migration/optimization-goals", - "dist/docs/3.2.0-beta.3/reference/migration/brand-identity", - "dist/docs/3.2.0-beta.3/reference/migration/signals", - "dist/docs/3.2.0-beta.3/reference/migration/audiences", - "dist/docs/3.2.0-beta.3/reference/migration/attribution", - "dist/docs/3.2.0-beta.3/reference/migration/media-buy-status", - "dist/docs/3.2.0-beta.3/reference/migration/targeting-aware-discovery", - "dist/docs/3.2.0-beta.3/reference/migration/asset-access", - "dist/docs/3.2.0-beta.3/reference/migration/cross-role-governance-enforcement" + "dist/docs/3.2.0-beta.4/reference/whats-new-in-v3", + "dist/docs/3.2.0-beta.4/reference/whats-new-in-3-1", + "dist/docs/3.2.0-beta.4/reference/whats-new-in-3-2", + "dist/docs/3.2.0-beta.4/reference/3-2-beta", + "dist/docs/3.2.0-beta.4/reference/migration/v3-readiness", + "dist/docs/3.2.0-beta.4/reference/migration/index", + "dist/docs/3.2.0-beta.4/reference/migration/3-0-to-3-1", + "dist/docs/3.2.0-beta.4/reference/migration/3-1-to-3-2", + "dist/docs/3.2.0-beta.4/reference/migration/prerelease-upgrades", + "dist/docs/3.2.0-beta.4/reference/migration/channels", + "dist/docs/3.2.0-beta.4/reference/migration/pricing", + "dist/docs/3.2.0-beta.4/reference/migration/geo-targeting", + "dist/docs/3.2.0-beta.4/reference/migration/creatives", + "dist/docs/3.2.0-beta.4/reference/migration/creative-transformers", + "dist/docs/3.2.0-beta.4/reference/migration/catalogs", + "dist/docs/3.2.0-beta.4/reference/migration/optimization-goals", + "dist/docs/3.2.0-beta.4/reference/migration/brand-identity", + "dist/docs/3.2.0-beta.4/reference/migration/signals", + "dist/docs/3.2.0-beta.4/reference/migration/audiences", + "dist/docs/3.2.0-beta.4/reference/migration/attribution", + "dist/docs/3.2.0-beta.4/reference/migration/media-buy-status", + "dist/docs/3.2.0-beta.4/reference/migration/targeting-aware-discovery", + "dist/docs/3.2.0-beta.4/reference/migration/asset-access", + "dist/docs/3.2.0-beta.4/reference/migration/cross-role-governance-enforcement" ] }, - "dist/docs/3.2.0-beta.3/protocol/architecture", - "dist/docs/3.2.0-beta.3/protocol/design-principles", - "dist/docs/3.2.0-beta.3/protocol/language-and-localization", - "dist/docs/3.2.0-beta.3/protocol/capabilities-explorer", - "dist/docs/3.2.0-beta.3/spec-guidelines", - "dist/docs/3.2.0-beta.3/protocol/required-tasks", - "dist/docs/3.2.0-beta.3/protocol/calling-an-agent", - "dist/docs/3.2.0-beta.3/protocol/format-references", - "dist/docs/3.2.0-beta.3/protocol/snapshot-and-log", + "dist/docs/3.2.0-beta.4/protocol/architecture", + "dist/docs/3.2.0-beta.4/protocol/design-principles", + "dist/docs/3.2.0-beta.4/protocol/language-and-localization", + "dist/docs/3.2.0-beta.4/protocol/capabilities-explorer", + "dist/docs/3.2.0-beta.4/spec-guidelines", + "dist/docs/3.2.0-beta.4/protocol/required-tasks", + "dist/docs/3.2.0-beta.4/protocol/calling-an-agent", + "dist/docs/3.2.0-beta.4/protocol/format-references", + "dist/docs/3.2.0-beta.4/protocol/snapshot-and-log", { "group": "Concepts", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/concepts/index", - "dist/docs/3.2.0-beta.3/building/concepts/protocol-comparison", - "dist/docs/3.2.0-beta.3/building/concepts/adcp-vs-openrtb", - "dist/docs/3.2.0-beta.3/building/concepts/how-agents-communicate", - "dist/docs/3.2.0-beta.3/building/concepts/security-model", - "dist/docs/3.2.0-beta.3/building/concepts/industry-landscape", - "dist/docs/3.2.0-beta.3/building/concepts/managing-response-size" + "dist/docs/3.2.0-beta.4/building/concepts/index", + "dist/docs/3.2.0-beta.4/building/concepts/protocol-comparison", + "dist/docs/3.2.0-beta.4/building/concepts/adcp-vs-openrtb", + "dist/docs/3.2.0-beta.4/building/concepts/how-agents-communicate", + "dist/docs/3.2.0-beta.4/building/concepts/security-model", + "dist/docs/3.2.0-beta.4/building/concepts/industry-landscape", + "dist/docs/3.2.0-beta.4/building/concepts/managing-response-size" ] }, { @@ -819,59 +819,59 @@ { "group": "L4 — Business logic", "pages": [ - "dist/docs/3.2.0-beta.3/building/by-layer/L4/index", - "dist/docs/3.2.0-beta.3/building/by-layer/L4/choose-your-sdk", - "dist/docs/3.2.0-beta.3/building/by-layer/L4/build-an-agent", - "dist/docs/3.2.0-beta.3/building/by-layer/L4/build-a-caller", - "dist/docs/3.2.0-beta.3/building/by-layer/L4/migrate-from-hand-rolled" + "dist/docs/3.2.0-beta.4/building/by-layer/L4/index", + "dist/docs/3.2.0-beta.4/building/by-layer/L4/choose-your-sdk", + "dist/docs/3.2.0-beta.4/building/by-layer/L4/build-an-agent", + "dist/docs/3.2.0-beta.4/building/by-layer/L4/build-a-caller", + "dist/docs/3.2.0-beta.4/building/by-layer/L4/migrate-from-hand-rolled" ] }, { "group": "L3 — Protocol semantics", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/by-layer/L3/index", - "dist/docs/3.2.0-beta.3/building/by-layer/L3/task-lifecycle", - "dist/docs/3.2.0-beta.3/building/by-layer/L3/async-operations", - "dist/docs/3.2.0-beta.3/building/by-layer/L3/webhooks", - "dist/docs/3.2.0-beta.3/building/by-layer/L3/error-handling", - "dist/docs/3.2.0-beta.3/building/by-layer/L3/comply-test-controller" + "dist/docs/3.2.0-beta.4/building/by-layer/L3/index", + "dist/docs/3.2.0-beta.4/building/by-layer/L3/task-lifecycle", + "dist/docs/3.2.0-beta.4/building/by-layer/L3/async-operations", + "dist/docs/3.2.0-beta.4/building/by-layer/L3/webhooks", + "dist/docs/3.2.0-beta.4/building/by-layer/L3/error-handling", + "dist/docs/3.2.0-beta.4/building/by-layer/L3/comply-test-controller" ] }, { "group": "L2 — Auth & registry", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/by-layer/L2/index", - "dist/docs/3.2.0-beta.3/building/by-layer/L2/authentication", - "dist/docs/3.2.0-beta.3/building/by-layer/L2/account-state", - "dist/docs/3.2.0-beta.3/building/by-layer/L2/accounts-and-agents", - "dist/docs/3.2.0-beta.3/building/by-layer/L2/context-sessions" + "dist/docs/3.2.0-beta.4/building/by-layer/L2/index", + "dist/docs/3.2.0-beta.4/building/by-layer/L2/authentication", + "dist/docs/3.2.0-beta.4/building/by-layer/L2/account-state", + "dist/docs/3.2.0-beta.4/building/by-layer/L2/accounts-and-agents", + "dist/docs/3.2.0-beta.4/building/by-layer/L2/context-sessions" ] }, { "group": "L1 — Identity & signing", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/by-layer/L1/index", - "dist/docs/3.2.0-beta.3/building/by-layer/L1/security", - "dist/docs/3.2.0-beta.3/building/by-layer/L1/request-signing", - "dist/docs/3.2.0-beta.3/building/by-layer/L1/webhook-verifier-tuning" + "dist/docs/3.2.0-beta.4/building/by-layer/L1/index", + "dist/docs/3.2.0-beta.4/building/by-layer/L1/security", + "dist/docs/3.2.0-beta.4/building/by-layer/L1/request-signing", + "dist/docs/3.2.0-beta.4/building/by-layer/L1/webhook-verifier-tuning" ] }, { "group": "L0 — Wire & transport", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/by-layer/L0/index", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/schemas", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/mcp-guide", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/a2a-guide", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/a2a-response-format", - "dist/docs/3.2.0-beta.3/protocol/get_adcp_capabilities", - "dist/docs/3.2.0-beta.3/protocol/sync_agent_notification_configs", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/mcp-response-extraction", - "dist/docs/3.2.0-beta.3/building/by-layer/L0/a2a-response-extraction" + "dist/docs/3.2.0-beta.4/building/by-layer/L0/index", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/schemas", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-guide", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-guide", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-format", + "dist/docs/3.2.0-beta.4/protocol/get_adcp_capabilities", + "dist/docs/3.2.0-beta.4/protocol/sync_agent_notification_configs", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/mcp-response-extraction", + "dist/docs/3.2.0-beta.4/building/by-layer/L0/a2a-response-extraction" ] } ] @@ -880,50 +880,50 @@ "group": "Cross-cutting", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/cross-cutting/sdk-stack", - "dist/docs/3.2.0-beta.3/building/cross-cutting/version-adaptation", - "dist/docs/3.2.0-beta.3/building/cross-cutting/known-ambiguities" + "dist/docs/3.2.0-beta.4/building/cross-cutting/sdk-stack", + "dist/docs/3.2.0-beta.4/building/cross-cutting/version-adaptation", + "dist/docs/3.2.0-beta.4/building/cross-cutting/known-ambiguities" ] }, { "group": "Verification & trust", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/verification/conformance", - "dist/docs/3.2.0-beta.3/building/verification/compliance-catalog", - "dist/docs/3.2.0-beta.3/building/verification/storyboards-vs-scenarios", - "dist/docs/3.2.0-beta.3/building/verification/how-grading-works", - "dist/docs/3.2.0-beta.3/building/verification/validate-your-agent", - "dist/docs/3.2.0-beta.3/building/verification/validate-with-mock-fixtures", - "dist/docs/3.2.0-beta.3/building/verification/addie-socket-mode", - "dist/docs/3.2.0-beta.3/building/verification/grading", - "dist/docs/3.2.0-beta.3/building/verification/get-test-ready", - "dist/docs/3.2.0-beta.3/building/verification/aao-verified" + "dist/docs/3.2.0-beta.4/building/verification/conformance", + "dist/docs/3.2.0-beta.4/building/verification/compliance-catalog", + "dist/docs/3.2.0-beta.4/building/verification/storyboards-vs-scenarios", + "dist/docs/3.2.0-beta.4/building/verification/how-grading-works", + "dist/docs/3.2.0-beta.4/building/verification/validate-your-agent", + "dist/docs/3.2.0-beta.4/building/verification/validate-with-mock-fixtures", + "dist/docs/3.2.0-beta.4/building/verification/addie-socket-mode", + "dist/docs/3.2.0-beta.4/building/verification/grading", + "dist/docs/3.2.0-beta.4/building/verification/get-test-ready", + "dist/docs/3.2.0-beta.4/building/verification/aao-verified" ] }, { "group": "Operating", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/building/operating/operating-an-agent", - "dist/docs/3.2.0-beta.3/building/operating/orchestrator-design", - "dist/docs/3.2.0-beta.3/building/operating/transport-errors", - "dist/docs/3.2.0-beta.3/building/operating/seller-integration", - "dist/docs/3.2.0-beta.3/building/operating/storyboard-troubleshooting", - "dist/docs/3.2.0-beta.3/building/operating/support-recovery-runbooks" + "dist/docs/3.2.0-beta.4/building/operating/operating-an-agent", + "dist/docs/3.2.0-beta.4/building/operating/orchestrator-design", + "dist/docs/3.2.0-beta.4/building/operating/transport-errors", + "dist/docs/3.2.0-beta.4/building/operating/seller-integration", + "dist/docs/3.2.0-beta.4/building/operating/storyboard-troubleshooting", + "dist/docs/3.2.0-beta.4/building/operating/support-recovery-runbooks" ] }, { "group": "Accounts", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/accounts/overview", - "dist/docs/3.2.0-beta.3/accounts/provisioning-walkthrough", - "dist/docs/3.2.0-beta.3/accounts/tasks/sync_accounts", - "dist/docs/3.2.0-beta.3/accounts/tasks/list_accounts", - "dist/docs/3.2.0-beta.3/accounts/tasks/report_usage", - "dist/docs/3.2.0-beta.3/accounts/tasks/sync_governance", - "dist/docs/3.2.0-beta.3/accounts/tasks/get_account_financials" + "dist/docs/3.2.0-beta.4/accounts/overview", + "dist/docs/3.2.0-beta.4/accounts/provisioning-walkthrough", + "dist/docs/3.2.0-beta.4/accounts/tasks/sync_accounts", + "dist/docs/3.2.0-beta.4/accounts/tasks/list_accounts", + "dist/docs/3.2.0-beta.4/accounts/tasks/report_usage", + "dist/docs/3.2.0-beta.4/accounts/tasks/sync_governance", + "dist/docs/3.2.0-beta.4/accounts/tasks/get_account_financials" ] } ] @@ -936,33 +936,33 @@ "group": "Media Buy", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/index", - "dist/docs/3.2.0-beta.3/media-buy/commerce-media", + "dist/docs/3.2.0-beta.4/media-buy/index", + "dist/docs/3.2.0-beta.4/media-buy/commerce-media", { "group": "Concepts", "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/index", - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/brief-expectations", - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/example-briefs", - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/media-products", - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/collections-and-installments", - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/proposal-negotiation", - "dist/docs/3.2.0-beta.3/media-buy/media-buys/index", - "dist/docs/3.2.0-beta.3/media-buy/media-buys/lifecycle", - "dist/docs/3.2.0-beta.3/media-buy/media-buys/indicators", - "dist/docs/3.2.0-beta.3/media-buy/media-buys/optimization-reporting", - "dist/docs/3.2.0-beta.3/media-buy/media-buys/policy-compliance", - "dist/docs/3.2.0-beta.3/media-buy/creatives/index", - "dist/docs/3.2.0-beta.3/media-buy/conversion-tracking/index", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/pricing-models", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/targeting", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/accountability", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/billing-authority", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/index", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/brief-expectations", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/example-briefs", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/media-products", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/collections-and-installments", + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/proposal-negotiation", + "dist/docs/3.2.0-beta.4/media-buy/media-buys/index", + "dist/docs/3.2.0-beta.4/media-buy/media-buys/lifecycle", + "dist/docs/3.2.0-beta.4/media-buy/media-buys/indicators", + "dist/docs/3.2.0-beta.4/media-buy/media-buys/optimization-reporting", + "dist/docs/3.2.0-beta.4/media-buy/media-buys/policy-compliance", + "dist/docs/3.2.0-beta.4/media-buy/creatives/index", + "dist/docs/3.2.0-beta.4/media-buy/conversion-tracking/index", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/pricing-models", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/targeting", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accountability", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/billing-authority", { "group": "3.x compatibility", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/product-discovery/refinement" + "dist/docs/3.2.0-beta.4/media-buy/product-discovery/refinement" ] } ] @@ -970,40 +970,40 @@ { "group": "Building", "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/capability-discovery/index", - "dist/docs/3.2.0-beta.3/media-buy/capability-discovery/implementing-standard-formats", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/agentic-execution-engine", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/accounts-and-security", - "dist/docs/3.2.0-beta.3/media-buy/advanced-topics/sandbox" + "dist/docs/3.2.0-beta.4/media-buy/capability-discovery/index", + "dist/docs/3.2.0-beta.4/media-buy/capability-discovery/implementing-standard-formats", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/agentic-execution-engine", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/accounts-and-security", + "dist/docs/3.2.0-beta.4/media-buy/advanced-topics/sandbox" ] }, { "group": "Reference", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/specification", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/index", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/list_products", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/request_proposals", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/refine_proposals", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/decline_proposals", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/buy_products", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/accept_proposal", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/control_media_buy", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/sync_catalogs", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/get_media_buys", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/get_media_buy_delivery", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/provide_performance_feedback", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/sync_event_sources", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/log_event", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/sync_audiences", + "dist/docs/3.2.0-beta.4/media-buy/specification", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/index", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/list_products", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/request_proposals", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/refine_proposals", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/decline_proposals", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/buy_products", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/accept_proposal", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/control_media_buy", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_catalogs", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buys", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/get_media_buy_delivery", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/provide_performance_feedback", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_event_sources", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/log_event", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/sync_audiences", { "group": "3.x compatibility", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/media-buy/task-reference/get_products", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/create_media_buy", - "dist/docs/3.2.0-beta.3/media-buy/task-reference/update_media_buy" + "dist/docs/3.2.0-beta.4/media-buy/task-reference/get_products", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/create_media_buy", + "dist/docs/3.2.0-beta.4/media-buy/task-reference/update_media_buy" ] } ] @@ -1014,73 +1014,73 @@ "group": "Creative", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/creative/index", + "dist/docs/3.2.0-beta.4/creative/index", { "group": "Concepts", "pages": [ - "dist/docs/3.2.0-beta.3/creative/key-concepts", - "dist/docs/3.2.0-beta.3/creative/ai-creative-overview", - "dist/docs/3.2.0-beta.3/creative/generative-creative", - "dist/docs/3.2.0-beta.3/creative/creative-libraries", - "dist/docs/3.2.0-beta.3/creative/catalogs", - "dist/docs/3.2.0-beta.3/creative/catalog-schemas" + "dist/docs/3.2.0-beta.4/creative/key-concepts", + "dist/docs/3.2.0-beta.4/creative/ai-creative-overview", + "dist/docs/3.2.0-beta.4/creative/generative-creative", + "dist/docs/3.2.0-beta.4/creative/creative-libraries", + "dist/docs/3.2.0-beta.4/creative/catalogs", + "dist/docs/3.2.0-beta.4/creative/catalog-schemas" ] }, { "group": "Building Creative Agents", "pages": [ - "dist/docs/3.2.0-beta.3/creative/implementing-creative-agents", - "dist/docs/3.2.0-beta.3/creative/sales-agent-creative-capabilities", - "dist/docs/3.2.0-beta.3/creative/multi-agent-orchestration", - "dist/docs/3.2.0-beta.3/creative/creative-manifests", - "dist/docs/3.2.0-beta.3/creative/private-assets", - "dist/docs/3.2.0-beta.3/creative/buyer-attached-inputs" + "dist/docs/3.2.0-beta.4/creative/implementing-creative-agents", + "dist/docs/3.2.0-beta.4/creative/sales-agent-creative-capabilities", + "dist/docs/3.2.0-beta.4/creative/multi-agent-orchestration", + "dist/docs/3.2.0-beta.4/creative/creative-manifests", + "dist/docs/3.2.0-beta.4/creative/private-assets", + "dist/docs/3.2.0-beta.4/creative/buyer-attached-inputs" ] }, { "group": "Formats and Assets", "pages": [ - "dist/docs/3.2.0-beta.3/creative/formats", - "dist/docs/3.2.0-beta.3/creative/asset-types", - "dist/docs/3.2.0-beta.3/creative/template-format-ids", - "dist/docs/3.2.0-beta.3/creative/universal-macros" + "dist/docs/3.2.0-beta.4/creative/formats", + "dist/docs/3.2.0-beta.4/creative/asset-types", + "dist/docs/3.2.0-beta.4/creative/template-format-ids", + "dist/docs/3.2.0-beta.4/creative/universal-macros" ] }, { "group": "Channel Guides", "pages": [ - "dist/docs/3.2.0-beta.3/creative/channels/video", - "dist/docs/3.2.0-beta.3/creative/channels/ctv", - "dist/docs/3.2.0-beta.3/creative/channels/broadcast", - "dist/docs/3.2.0-beta.3/creative/channels/display", - "dist/docs/3.2.0-beta.3/creative/channels/audio", - "dist/docs/3.2.0-beta.3/creative/channels/radio", - "dist/docs/3.2.0-beta.3/creative/channels/dooh", - "dist/docs/3.2.0-beta.3/creative/channels/print", - "dist/docs/3.2.0-beta.3/creative/channels/carousels", - "dist/docs/3.2.0-beta.3/creative/channels/social-native" + "dist/docs/3.2.0-beta.4/creative/channels/video", + "dist/docs/3.2.0-beta.4/creative/channels/ctv", + "dist/docs/3.2.0-beta.4/creative/channels/broadcast", + "dist/docs/3.2.0-beta.4/creative/channels/display", + "dist/docs/3.2.0-beta.4/creative/channels/audio", + "dist/docs/3.2.0-beta.4/creative/channels/radio", + "dist/docs/3.2.0-beta.4/creative/channels/dooh", + "dist/docs/3.2.0-beta.4/creative/channels/print", + "dist/docs/3.2.0-beta.4/creative/channels/carousels", + "dist/docs/3.2.0-beta.4/creative/channels/social-native" ] }, { "group": "Compliance", "pages": [ - "dist/docs/3.2.0-beta.3/creative/accessibility", - "dist/docs/3.2.0-beta.3/creative/provenance" + "dist/docs/3.2.0-beta.4/creative/accessibility", + "dist/docs/3.2.0-beta.4/creative/provenance" ] }, { "group": "Reference", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/creative/specification", - "dist/docs/3.2.0-beta.3/creative/task-reference/build_creative", - "dist/docs/3.2.0-beta.3/creative/task-reference/preview_creative", - "dist/docs/3.2.0-beta.3/creative/task-reference/preview_creative-advanced", - "dist/docs/3.2.0-beta.3/creative/task-reference/list_creative_formats", - "dist/docs/3.2.0-beta.3/creative/task-reference/list_transformers", - "dist/docs/3.2.0-beta.3/creative/task-reference/list_creatives", - "dist/docs/3.2.0-beta.3/creative/task-reference/sync_creatives", - "dist/docs/3.2.0-beta.3/creative/task-reference/get_creative_delivery" + "dist/docs/3.2.0-beta.4/creative/specification", + "dist/docs/3.2.0-beta.4/creative/task-reference/build_creative", + "dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative", + "dist/docs/3.2.0-beta.4/creative/task-reference/preview_creative-advanced", + "dist/docs/3.2.0-beta.4/creative/task-reference/list_creative_formats", + "dist/docs/3.2.0-beta.4/creative/task-reference/list_transformers", + "dist/docs/3.2.0-beta.4/creative/task-reference/list_creatives", + "dist/docs/3.2.0-beta.4/creative/task-reference/sync_creatives", + "dist/docs/3.2.0-beta.4/creative/task-reference/get_creative_delivery" ] } ] @@ -1089,28 +1089,28 @@ "group": "Governance", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/governance/overview", - "dist/docs/3.2.0-beta.3/governance/rfc-process", - "dist/docs/3.2.0-beta.3/governance/embedded-human-judgment", - "dist/docs/3.2.0-beta.3/governance/policy-registry", - "dist/docs/3.2.0-beta.3/governance/policy-registry-sync", - "dist/docs/3.2.0-beta.3/governance/policy-attribution", - "dist/docs/3.2.0-beta.3/governance/annex-iii-obligations", - "dist/docs/3.2.0-beta.3/governance/working-group-charter", + "dist/docs/3.2.0-beta.4/governance/overview", + "dist/docs/3.2.0-beta.4/governance/rfc-process", + "dist/docs/3.2.0-beta.4/governance/embedded-human-judgment", + "dist/docs/3.2.0-beta.4/governance/policy-registry", + "dist/docs/3.2.0-beta.4/governance/policy-registry-sync", + "dist/docs/3.2.0-beta.4/governance/policy-attribution", + "dist/docs/3.2.0-beta.4/governance/annex-iii-obligations", + "dist/docs/3.2.0-beta.4/governance/working-group-charter", { "group": "Property Governance", "pages": [ - "dist/docs/3.2.0-beta.3/governance/property/index", - "dist/docs/3.2.0-beta.3/governance/property/adagents", - "dist/docs/3.2.0-beta.3/governance/property/managed-networks", - "dist/docs/3.2.0-beta.3/governance/property/authorized-properties", - "dist/docs/3.2.0-beta.3/governance/property/specification", + "dist/docs/3.2.0-beta.4/governance/property/index", + "dist/docs/3.2.0-beta.4/governance/property/adagents", + "dist/docs/3.2.0-beta.4/governance/property/managed-networks", + "dist/docs/3.2.0-beta.4/governance/property/authorized-properties", + "dist/docs/3.2.0-beta.4/governance/property/specification", { "group": "Tasks", "pages": [ - "dist/docs/3.2.0-beta.3/governance/property/tasks/index", - "dist/docs/3.2.0-beta.3/governance/property/tasks/property_lists", - "dist/docs/3.2.0-beta.3/governance/property/tasks/validate_property_delivery" + "dist/docs/3.2.0-beta.4/governance/property/tasks/index", + "dist/docs/3.2.0-beta.4/governance/property/tasks/property_lists", + "dist/docs/3.2.0-beta.4/governance/property/tasks/validate_property_delivery" ] } ] @@ -1118,26 +1118,26 @@ { "group": "Collection Governance", "pages": [ - "dist/docs/3.2.0-beta.3/governance/collection/index", - "dist/docs/3.2.0-beta.3/governance/collection/tasks/collection_lists" + "dist/docs/3.2.0-beta.4/governance/collection/index", + "dist/docs/3.2.0-beta.4/governance/collection/tasks/collection_lists" ] }, { "group": "Content Standards", "pages": [ - "dist/docs/3.2.0-beta.3/governance/content-standards/index", - "dist/docs/3.2.0-beta.3/governance/content-standards/artifacts", - "dist/docs/3.2.0-beta.3/governance/content-standards/implementation-guide", + "dist/docs/3.2.0-beta.4/governance/content-standards/index", + "dist/docs/3.2.0-beta.4/governance/content-standards/artifacts", + "dist/docs/3.2.0-beta.4/governance/content-standards/implementation-guide", { "group": "Tasks", "pages": [ - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/list_content_standards", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/get_content_standards", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/create_content_standards", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/update_content_standards", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/calibrate_content", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/get_media_buy_artifacts", - "dist/docs/3.2.0-beta.3/governance/content-standards/tasks/validate_content_delivery" + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/list_content_standards", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_content_standards", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/create_content_standards", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/update_content_standards", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/calibrate_content", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/get_media_buy_artifacts", + "dist/docs/3.2.0-beta.4/governance/content-standards/tasks/validate_content_delivery" ] } ] @@ -1145,28 +1145,28 @@ { "group": "Creative Governance", "pages": [ - "dist/docs/3.2.0-beta.3/governance/creative/index", - "dist/docs/3.2.0-beta.3/governance/creative/get_creative_features", - "dist/docs/3.2.0-beta.3/governance/creative/provenance-verification" + "dist/docs/3.2.0-beta.4/governance/creative/index", + "dist/docs/3.2.0-beta.4/governance/creative/get_creative_features", + "dist/docs/3.2.0-beta.4/governance/creative/provenance-verification" ] }, { "group": "Campaign Governance", "pages": [ - "dist/docs/3.2.0-beta.3/governance/campaign/index", - "dist/docs/3.2.0-beta.3/governance/campaign/responsibilities", - "dist/docs/3.2.0-beta.3/governance/campaign/safety-model", - "dist/docs/3.2.0-beta.3/governance/campaign/specification", - "dist/docs/3.2.0-beta.3/governance/campaign/audit-trail", + "dist/docs/3.2.0-beta.4/governance/campaign/index", + "dist/docs/3.2.0-beta.4/governance/campaign/responsibilities", + "dist/docs/3.2.0-beta.4/governance/campaign/safety-model", + "dist/docs/3.2.0-beta.4/governance/campaign/specification", + "dist/docs/3.2.0-beta.4/governance/campaign/audit-trail", { "group": "Tasks", "pages": [ - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/index", - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/sync_plans", - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/report_plan_outcome", - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/report_plan_adjustment", - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/check_governance", - "dist/docs/3.2.0-beta.3/governance/campaign/tasks/get_plan_audit_logs" + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/index", + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/sync_plans", + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_outcome", + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/report_plan_adjustment", + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/check_governance", + "dist/docs/3.2.0-beta.4/governance/campaign/tasks/get_plan_audit_logs" ] } ] @@ -1177,35 +1177,35 @@ "group": "Sponsored Intelligence", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/sponsored-intelligence/overview", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/monetizing-ai", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/overview", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/monetizing-ai", { "group": "Concepts", "pages": [ - "dist/docs/3.2.0-beta.3/sponsored-intelligence/product-spectrum", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/networks", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/workflow", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/measurement" + "dist/docs/3.2.0-beta.4/sponsored-intelligence/product-spectrum", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/networks", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/workflow", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/measurement" ] }, { "group": "SI Chat Protocol", "pages": [ - "dist/docs/3.2.0-beta.3/sponsored-intelligence/si-chat-protocol", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/implementing-si-agents", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/implementing-si-hosts" + "dist/docs/3.2.0-beta.4/sponsored-intelligence/si-chat-protocol", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-agents", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/implementing-si-hosts" ] }, { "group": "Reference", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/sponsored-intelligence/specification", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/tasks/index", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/tasks/si_get_offering", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/tasks/si_initiate_session", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/tasks/si_send_message", - "dist/docs/3.2.0-beta.3/sponsored-intelligence/tasks/si_terminate_session" + "dist/docs/3.2.0-beta.4/sponsored-intelligence/specification", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/index", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_get_offering", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_initiate_session", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_send_message", + "dist/docs/3.2.0-beta.4/sponsored-intelligence/tasks/si_terminate_session" ] } ] @@ -1214,25 +1214,25 @@ "group": "Brand", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/brand-protocol/index", - "dist/docs/3.2.0-beta.3/brand-protocol/key-concepts", - "dist/docs/3.2.0-beta.3/brand-protocol/walkthrough-rights-licensing", - "dist/docs/3.2.0-beta.3/brand-protocol/for-advertisers", - "dist/docs/3.2.0-beta.3/brand-protocol/for-rights-holders", - "dist/docs/3.2.0-beta.3/brand-protocol/seller-setup", - "dist/docs/3.2.0-beta.3/brand-protocol/brand-json", - "dist/docs/3.2.0-beta.3/brand-protocol/building-a-brand-agent", - "dist/docs/3.2.0-beta.3/brand-protocol/ui-guidance", + "dist/docs/3.2.0-beta.4/brand-protocol/index", + "dist/docs/3.2.0-beta.4/brand-protocol/key-concepts", + "dist/docs/3.2.0-beta.4/brand-protocol/walkthrough-rights-licensing", + "dist/docs/3.2.0-beta.4/brand-protocol/for-advertisers", + "dist/docs/3.2.0-beta.4/brand-protocol/for-rights-holders", + "dist/docs/3.2.0-beta.4/brand-protocol/seller-setup", + "dist/docs/3.2.0-beta.4/brand-protocol/brand-json", + "dist/docs/3.2.0-beta.4/brand-protocol/building-a-brand-agent", + "dist/docs/3.2.0-beta.4/brand-protocol/ui-guidance", { "group": "Tasks", "pages": [ - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/search_brands", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/get_brand_identity", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/verify_brand_claim", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/verify_brand_claims", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/get_rights", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/acquire_rights", - "dist/docs/3.2.0-beta.3/brand-protocol/tasks/update_rights" + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/search_brands", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_brand_identity", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claim", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/verify_brand_claims", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/get_rights", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/acquire_rights", + "dist/docs/3.2.0-beta.4/brand-protocol/tasks/update_rights" ] } ] @@ -1241,17 +1241,17 @@ "group": "Signals", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/signals/overview", - "dist/docs/3.2.0-beta.3/signals/key-concepts", - "dist/docs/3.2.0-beta.3/signals/ecosystem", - "dist/docs/3.2.0-beta.3/signals/data-providers", + "dist/docs/3.2.0-beta.4/signals/overview", + "dist/docs/3.2.0-beta.4/signals/key-concepts", + "dist/docs/3.2.0-beta.4/signals/ecosystem", + "dist/docs/3.2.0-beta.4/signals/data-providers", { "group": "Reference", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/signals/specification", - "dist/docs/3.2.0-beta.3/signals/tasks/get_signals", - "dist/docs/3.2.0-beta.3/signals/tasks/activate_signal" + "dist/docs/3.2.0-beta.4/signals/specification", + "dist/docs/3.2.0-beta.4/signals/tasks/get_signals", + "dist/docs/3.2.0-beta.4/signals/tasks/activate_signal" ] } ] @@ -1260,24 +1260,24 @@ "group": "Trusted Match", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/trusted-match/index", - "dist/docs/3.2.0-beta.3/trusted-match/ai-mediation", - "dist/docs/3.2.0-beta.3/trusted-match/buyer-guide", - "dist/docs/3.2.0-beta.3/trusted-match/execution-gap", - "dist/docs/3.2.0-beta.3/trusted-match/context-and-identity", - "dist/docs/3.2.0-beta.3/trusted-match/specification", - "dist/docs/3.2.0-beta.3/trusted-match/router-architecture", - "dist/docs/3.2.0-beta.3/trusted-match/privacy-architecture", - "dist/docs/3.2.0-beta.3/trusted-match/data-protection-roles", - "dist/docs/3.2.0-beta.3/trusted-match/migration-from-axe", + "dist/docs/3.2.0-beta.4/trusted-match/index", + "dist/docs/3.2.0-beta.4/trusted-match/ai-mediation", + "dist/docs/3.2.0-beta.4/trusted-match/buyer-guide", + "dist/docs/3.2.0-beta.4/trusted-match/execution-gap", + "dist/docs/3.2.0-beta.4/trusted-match/context-and-identity", + "dist/docs/3.2.0-beta.4/trusted-match/specification", + "dist/docs/3.2.0-beta.4/trusted-match/router-architecture", + "dist/docs/3.2.0-beta.4/trusted-match/privacy-architecture", + "dist/docs/3.2.0-beta.4/trusted-match/data-protection-roles", + "dist/docs/3.2.0-beta.4/trusted-match/migration-from-axe", { "group": "Surface Guides", "pages": [ - "dist/docs/3.2.0-beta.3/trusted-match/surfaces/web", - "dist/docs/3.2.0-beta.3/trusted-match/surfaces/ctv", - "dist/docs/3.2.0-beta.3/trusted-match/surfaces/mobile", - "dist/docs/3.2.0-beta.3/trusted-match/surfaces/retail-media", - "dist/docs/3.2.0-beta.3/trusted-match/surfaces/ai-assistants" + "dist/docs/3.2.0-beta.4/trusted-match/surfaces/web", + "dist/docs/3.2.0-beta.4/trusted-match/surfaces/ctv", + "dist/docs/3.2.0-beta.4/trusted-match/surfaces/mobile", + "dist/docs/3.2.0-beta.4/trusted-match/surfaces/retail-media", + "dist/docs/3.2.0-beta.4/trusted-match/surfaces/ai-assistants" ] } ] @@ -1287,28 +1287,28 @@ { "group": "Using AAO", "pages": [ - "dist/docs/3.2.0-beta.3/aao/connect-addie", - "dist/docs/3.2.0-beta.3/aao/users", - "dist/docs/3.2.0-beta.3/aao/org-admins", - "dist/docs/3.2.0-beta.3/aao/addie-tools", - "dist/docs/3.2.0-beta.3/aao/directory-api" + "dist/docs/3.2.0-beta.4/aao/connect-addie", + "dist/docs/3.2.0-beta.4/aao/users", + "dist/docs/3.2.0-beta.4/aao/org-admins", + "dist/docs/3.2.0-beta.4/aao/addie-tools", + "dist/docs/3.2.0-beta.4/aao/directory-api" ] }, { "group": "FAQ", "pages": [ - "dist/docs/3.2.0-beta.3/faq" + "dist/docs/3.2.0-beta.4/faq" ] }, { "group": "Trust & Security", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/trust", - "dist/docs/3.2.0-beta.3/verification/overview", - "dist/docs/3.2.0-beta.3/ai-disclosure", - "dist/docs/3.2.0-beta.3/reference/privacy-considerations", - "dist/docs/3.2.0-beta.3/reference/known-limitations" + "dist/docs/3.2.0-beta.4/trust", + "dist/docs/3.2.0-beta.4/verification/overview", + "dist/docs/3.2.0-beta.4/ai-disclosure", + "dist/docs/3.2.0-beta.4/reference/privacy-considerations", + "dist/docs/3.2.0-beta.4/reference/known-limitations" ] }, { @@ -1319,102 +1319,102 @@ "group": "Registry API", "openapi": { "source": "https://agenticadvertising.org/openapi/registry.yaml", - "directory": "dist/docs/3.2.0-beta.3/registry/api-reference" + "directory": "dist/docs/3.2.0-beta.4/registry/api-reference" }, "pages": [ - "dist/docs/3.2.0-beta.3/registry/index", - "dist/docs/3.2.0-beta.3/registry/registering-an-agent", - "dist/docs/3.2.0-beta.3/registry/maintaining-your-agent" + "dist/docs/3.2.0-beta.4/registry/index", + "dist/docs/3.2.0-beta.4/registry/registering-an-agent", + "dist/docs/3.2.0-beta.4/registry/maintaining-your-agent" ] }, - "dist/docs/3.2.0-beta.3/reference/gmsf-reference", - "dist/docs/3.2.0-beta.3/reference/media-channel-taxonomy", - "dist/docs/3.2.0-beta.3/measurement/taxonomy", - "dist/docs/3.2.0-beta.3/reference/roadmap", - "dist/docs/3.2.0-beta.3/reference/versions", - "dist/docs/3.2.0-beta.3/reference/versioning", - "dist/docs/3.2.0-beta.3/reference/specification-lifecycle", - "dist/docs/3.2.0-beta.3/reference/url-canonicalization", - "dist/docs/3.2.0-beta.3/reference/verifying-protocol-tarballs", - "dist/docs/3.2.0-beta.3/reference/test-vectors/index", - "dist/docs/3.2.0-beta.3/reference/experimental-status", - "dist/docs/3.2.0-beta.3/reference/schema-extensions", - "dist/docs/3.2.0-beta.3/reference/v2-sunset", - "dist/docs/3.2.0-beta.3/reference/release-notes", - "dist/docs/3.2.0-beta.3/reference/changelog", - "dist/docs/3.2.0-beta.3/reference/implementor-faq", - "dist/docs/3.2.0-beta.3/reference/glossary", - "dist/docs/3.2.0-beta.3/community/working-group", - "dist/docs/3.2.0-beta.3/community/joining-slack" + "dist/docs/3.2.0-beta.4/reference/gmsf-reference", + "dist/docs/3.2.0-beta.4/reference/media-channel-taxonomy", + "dist/docs/3.2.0-beta.4/measurement/taxonomy", + "dist/docs/3.2.0-beta.4/reference/roadmap", + "dist/docs/3.2.0-beta.4/reference/versions", + "dist/docs/3.2.0-beta.4/reference/versioning", + "dist/docs/3.2.0-beta.4/reference/specification-lifecycle", + "dist/docs/3.2.0-beta.4/reference/url-canonicalization", + "dist/docs/3.2.0-beta.4/reference/verifying-protocol-tarballs", + "dist/docs/3.2.0-beta.4/reference/test-vectors/index", + "dist/docs/3.2.0-beta.4/reference/experimental-status", + "dist/docs/3.2.0-beta.4/reference/schema-extensions", + "dist/docs/3.2.0-beta.4/reference/v2-sunset", + "dist/docs/3.2.0-beta.4/reference/release-notes", + "dist/docs/3.2.0-beta.4/reference/changelog", + "dist/docs/3.2.0-beta.4/reference/implementor-faq", + "dist/docs/3.2.0-beta.4/reference/glossary", + "dist/docs/3.2.0-beta.4/community/working-group", + "dist/docs/3.2.0-beta.4/community/joining-slack" ] }, { "group": "Certification", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/learning/overview", - "dist/docs/3.2.0-beta.3/learning/instructional-design", - "dist/docs/3.2.0-beta.3/learning/failure-mode-scope", + "dist/docs/3.2.0-beta.4/learning/overview", + "dist/docs/3.2.0-beta.4/learning/instructional-design", + "dist/docs/3.2.0-beta.4/learning/failure-mode-scope", { "group": "Basics (free)", "pages": [ - "dist/docs/3.2.0-beta.3/learning/foundations/a1-agentic-advertising", - "dist/docs/3.2.0-beta.3/learning/foundations/a2-protocol-architecture", - "dist/docs/3.2.0-beta.3/learning/foundations/a2b-testing-your-first-agent", - "dist/docs/3.2.0-beta.3/learning/foundations/a3-ecosystem-governance" + "dist/docs/3.2.0-beta.4/learning/foundations/a1-agentic-advertising", + "dist/docs/3.2.0-beta.4/learning/foundations/a2-protocol-architecture", + "dist/docs/3.2.0-beta.4/learning/foundations/a2b-testing-your-first-agent", + "dist/docs/3.2.0-beta.4/learning/foundations/a3-ecosystem-governance" ] }, { "group": "For decision-makers", "pages": [ - "dist/docs/3.2.0-beta.3/learning/decision-makers/overview", - "dist/docs/3.2.0-beta.3/learning/decision-makers/l1-agentic-advertising", - "dist/docs/3.2.0-beta.3/learning/decision-makers/l2-data-brand-governance", - "dist/docs/3.2.0-beta.3/learning/decision-makers/l3-deciding-and-leading", - "dist/docs/3.2.0-beta.3/learning/decision-makers/explaining-agentic-advertising" + "dist/docs/3.2.0-beta.4/learning/decision-makers/overview", + "dist/docs/3.2.0-beta.4/learning/decision-makers/l1-agentic-advertising", + "dist/docs/3.2.0-beta.4/learning/decision-makers/l2-data-brand-governance", + "dist/docs/3.2.0-beta.4/learning/decision-makers/l3-deciding-and-leading", + "dist/docs/3.2.0-beta.4/learning/decision-makers/explaining-agentic-advertising" ] }, { "group": "Role tracks", "pages": [ - "dist/docs/3.2.0-beta.3/learning/tracks/publisher", - "dist/docs/3.2.0-beta.3/learning/tracks/buyer", - "dist/docs/3.2.0-beta.3/learning/tracks/platform" + "dist/docs/3.2.0-beta.4/learning/tracks/publisher", + "dist/docs/3.2.0-beta.4/learning/tracks/buyer", + "dist/docs/3.2.0-beta.4/learning/tracks/platform" ] }, { "group": "Specialist modules", "pages": [ - "dist/docs/3.2.0-beta.3/learning/specialist/media-buy", - "dist/docs/3.2.0-beta.3/learning/specialist/creative", - "dist/docs/3.2.0-beta.3/learning/specialist/signals", - "dist/docs/3.2.0-beta.3/learning/specialist/governance", - "dist/docs/3.2.0-beta.3/learning/specialist/sponsored-intelligence", - "dist/docs/3.2.0-beta.3/learning/specialist/security", - "dist/docs/3.2.0-beta.3/learning/specialist/brand" + "dist/docs/3.2.0-beta.4/learning/specialist/media-buy", + "dist/docs/3.2.0-beta.4/learning/specialist/creative", + "dist/docs/3.2.0-beta.4/learning/specialist/signals", + "dist/docs/3.2.0-beta.4/learning/specialist/governance", + "dist/docs/3.2.0-beta.4/learning/specialist/sponsored-intelligence", + "dist/docs/3.2.0-beta.4/learning/specialist/security", + "dist/docs/3.2.0-beta.4/learning/specialist/brand" ] }, { "group": "Supplements", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/learning/supplements/buyer-briefs-and-get-products", - "dist/docs/3.2.0-beta.3/learning/supplements/governance-protocol-by-role", - "dist/docs/3.2.0-beta.3/learning/supplements/creative-agent-workflows" + "dist/docs/3.2.0-beta.4/learning/supplements/buyer-briefs-and-get-products", + "dist/docs/3.2.0-beta.4/learning/supplements/governance-protocol-by-role", + "dist/docs/3.2.0-beta.4/learning/supplements/creative-agent-workflows" ] }, { "group": "Policies", "expanded": false, "pages": [ - "dist/docs/3.2.0-beta.3/learning/policies/nondiscrimination", - "dist/docs/3.2.0-beta.3/learning/policies/learner-records", - "dist/docs/3.2.0-beta.3/learning/policies/recertification", - "dist/docs/3.2.0-beta.3/learning/policies/complaints", - "dist/docs/3.2.0-beta.3/learning/policies/conflict-of-interest", - "dist/docs/3.2.0-beta.3/learning/policies/intellectual-property", - "dist/docs/3.2.0-beta.3/learning/policies/personnel-qualifications", - "dist/docs/3.2.0-beta.3/learning/policies/refund" + "dist/docs/3.2.0-beta.4/learning/policies/nondiscrimination", + "dist/docs/3.2.0-beta.4/learning/policies/learner-records", + "dist/docs/3.2.0-beta.4/learning/policies/recertification", + "dist/docs/3.2.0-beta.4/learning/policies/complaints", + "dist/docs/3.2.0-beta.4/learning/policies/conflict-of-interest", + "dist/docs/3.2.0-beta.4/learning/policies/intellectual-property", + "dist/docs/3.2.0-beta.4/learning/policies/personnel-qualifications", + "dist/docs/3.2.0-beta.4/learning/policies/refund" ] } ]